Chatfuel

Chatfuel Wizard Modules: What Each Part of the App Does

The modules the Chatfuel wizard can install, what each adds to your app, which ones you must ask for, and how to pick them with --modules.

Last updated on

A module is one part of the app the Chatfuel wizard writes: the inbox, the CRM, bookings, the AI Agent settings and so on. You pick modules before anything is written to disk, and modules you leave out leave no code behind. Each module brings its screens, the GraphQL operations it uses and a skill that teaches your coding agent how that part of the Public API behaves.

Which modules the wizard offers

Every module below is installed by default when you accept the picker as it is, except auth and admin. The name in bold is the module ID that --modules takes; the label after it is the name in the app's sidebar.

  • livechat (Inbox): the operator inbox with the conversation list, the message thread and the composer, updated live. Operators take over a conversation and return it to the bot.
  • contacts (Contacts): a CRM over Chatfuel contacts with a record table, saved views, attribute filters, inline editing, a full record page, the bot's field catalog and CSV import and export.
  • deals (Deals): a kanban board, a table and a forecast over contacts grouped by sales stage. A deal is a contact, so deals requires contacts.
  • bookings (Bookings): a calendar with drag and drop, the appointments list, staff with weekly hours and Google Calendar sync, the services catalog, AI booking settings and insights.
  • knowledge-base (Knowledge Base): everything the AI Agent knows about the business: business profile and opening hours, business notes, FAQs, products, import from a file and the questions the AI handed to a human.
  • automations (AI Agent): the AI Agent settings for every channel and entry point, custom rules with inheritance, and a test chat that is always open.
  • flow-builder (Flow Builder): a visual flow editor with a canvas, block and connection editing and an inspector for each element.
  • ads-optimization (Ads Optimization): conversion events for click-to-WhatsApp ads, sent back to Meta over the Conversions API.
  • publishing (Publishing): Instagram feed photos, Reels, Stories and carousels, published right away or queued, with a calendar and a library of what is already posted.
  • broadcasts (Broadcasts): WhatsApp campaigns from approved templates, with an audience builder, a live recipient count and sending now, later or on a repeat.
  • channels (Channels): the WhatsApp number, Instagram and TikTok accounts, Facebook Pages and website widget connected to the bot, with connect, refresh access and disconnect.
  • auth (Team): sign-in for the people who use the app, on your own Supabase project, with workspaces, owner, admin and member roles and invite links. Opt-in.
  • admin (Admin): a panel for the account behind the app's token: every workspace and bot, their channels and a health page, behind a password. Opt-in.

One more module, core, is installed with every app and has no screen of its own. It carries the transport, the proxy rules, pagination and the operation validator that the other modules build on.

Which modules you have to ask for

The auth and admin modules need credentials the wizard cannot create on its own, so they are never installed by --yes and are marked opt-in in the picker:

  • auth needs a Supabase project for sign-in. The wizard asks for it during the run. Install auth whenever people outside your team will open the app; deploy your app explains why.
  • admin needs a password of at least 16 characters, stored as ADMIN_PASSWORD in the server environment. The panel opens at /admin and has no item in the sidebar.

Name them to get them:

npx @chatfuel/wizard --modules livechat,contacts,deals,auth

How modules depend on each other

Only one module requires another: deals requires contacts, and picking deals adds contacts with a note. Other modules recommend companions, and the wizard offers them in a second list, Recommended with your selection — add any?:

  • livechat and flow-builder recommend contacts.
  • bookings recommends knowledge-base and contacts.
  • knowledge-base recommends automations and bookings.
  • automations recommends knowledge-base, livechat and bookings.
  • ads-optimization recommends automations and contacts.
  • broadcasts recommends contacts and channels.
  • publishing recommends auth, admin and automations, because its queue lives in the app's own database.
  • admin recommends auth.

Modules do not import each other's code. When one hands work to another, it links to that module's address, for example from a contact to its conversation in the inbox.

How to pick modules from the command line

--modules takes module IDs separated by commas and refuses an ID it does not know:

npx @chatfuel/wizard --modules livechat,contacts,bookings

--yes without --modules installs every module except auth and admin. To add a module to an app later, run npx @chatfuel/wizard --embed in the app and pick it.

What a module is made of

Each module is a directory in the wizard repository under content/modules/<id>/ with:

  • a manifest that names its dependencies and the environment variables it reads;
  • the screens, copied into your app under src/modules/<id>/;
  • the GraphQL operations it sends. The app's proxy forwards only these documents to Chatfuel and refuses any other;
  • a skill, installed as chatfuel-<id> for your coding agent, and a handoff note added to the agent's setup checklist. Coding agents and skills covers both.

On this page