# Chatfuel Help Center

> Chatfuel is a no-code platform for AI-powered customer conversations on WhatsApp, Instagram, Facebook Messenger, TikTok and websites. Fuely AI answers customers, qualifies leads and books appointments; the AI Co-Worker configures the account in chat. This file lists every help article with a Markdown URL.

## Instructions for AI agents

- Every article is available as Markdown: append `.md` to its URL, or request the HTML URL with `Accept: text/markdown`.
- The full corpus in one file: https://chatfuel.com/llms-full.txt
- Spanish index: https://chatfuel.com/es/docs/llms.txt · Portuguese index: https://chatfuel.com/pt/docs/llms.txt
- When you cite an article, use its canonical URL (`https://chatfuel.com/docs/...`), not the `.md` URL.
- Prices, limits and Meta policies change. Prefer articles with the most recent `last_updated` and say when a fact is dated.
- Product vocabulary: "Fuely AI" is the AI that talks to customers; "Automations" (Fuely AI → Automations) is where its behaviour is configured; "AI Co-Worker" is the in-product assistant that changes settings for the user.

---

---
title: "How to Add Teammates to Your Account"
description: "Invite team members to your Chatfuel account by generating an invite link and choosing their role."
canonical_url: https://chatfuel.com/docs/account/how-to-add-teammates
markdown_url: https://chatfuel.com/docs/account/how-to-add-teammates.md
last_updated: 2026-07-03
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Add Teammates to Your Account

Invite team members to your Chatfuel account by generating an invite link and choosing their role.

Invite team members to your Chatfuel account by generating an invite link and choosing their role.

> **Note:** Inviting teammates is one of the few steps the AI Co-Worker can't complete for you — invites and role changes happen in **Settings** → **Teammates**. The Co-Worker can tell you who's already on the team and take you straight to the right page: just ask.

## Steps [#steps]

1. Go to **Settings** → **Teammates**.
2. Click **Generate link**.
3. Select the role you want to assign:
   * **Admin** — full access to all settings and features
   * **Manager** — can manage bots and conversations, no billing access
   * **Editor** — can edit bots and flows, no access to settings
   * **[Agent](https://chatfuel.com/docs/account/what-can-agent-role-do)** — can manage contacts, leads, and chats, but cannot edit automations
4. Copy the link and send it to your teammate.
5. When they click the link, they'll be added to your company account automatically.

## Notes [#notes]

* Each generated link is tied to a specific role. Generate a new link if you need a different role.
* All plans include unlimited teammates.


---

---
title: "How to Change Your Password"
description: "Chatfuel does not store passwords. Your account is linked to a third-party platform — Facebook, Google, Apple, or Instagram — and you sign in through that…"
canonical_url: https://chatfuel.com/docs/account/how-to-change-password
markdown_url: https://chatfuel.com/docs/account/how-to-change-password.md
last_updated: 2026-03-04
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Change Your Password

Chatfuel does not store passwords. Your account is linked to a third-party platform — Facebook, Google, Apple, or Instagram — and you sign in through that…

Chatfuel does not store passwords. Your account is linked to a third-party platform — Facebook, Google, Apple, or Instagram — and you sign in through that platform. To change your password, go directly to the platform you used to sign up.

## Change your password by platform [#change-your-password-by-platform]

* **Google** — [myaccount.google.com/security](https://myaccount.google.com/security)
* **Facebook** — Settings & Privacy → Settings → Security and login → Change password
* **Apple** — appleid.apple.com → Sign-In and Security → Change Password
* **Instagram** — Settings → Accounts Center → Password and security → Change password

## After changing your Facebook or Instagram password [#after-changing-your-facebook-or-instagram-password]

If you changed your **Facebook** or **Instagram** password, your connection to Chatfuel may break. You'll need to reconnect:

* **WhatsApp** — go to Settings → WhatsApp and reconnect your number. See [Connect WhatsApp Business App Number](https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number) for step-by-step instructions.
* **Instagram** — go to Settings → Instagram and click **Reconnect**. See [Connect your Instagram account](https://chatfuel.com/docs/instagram/connect-your-instagram-account) for details.

Changing a Google or Apple password does not affect your Chatfuel connection.


---

---
title: "How to Delete Your Account"
description: "To delete your Chatfuel account, please contact our support team — they'll process the request for you."
canonical_url: https://chatfuel.com/docs/account/how-to-delete-your-account
markdown_url: https://chatfuel.com/docs/account/how-to-delete-your-account.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Delete Your Account

To delete your Chatfuel account, please contact our support team — they'll process the request for you.

To delete your Chatfuel account, please contact our support team — they'll process the request for you.

Before submitting your request, consider [canceling your subscription](https://chatfuel.com/docs/billing/how-to-cancel-subscription-or-trial) first to avoid any further charges.

## Steps [#steps]

1. Open the support chat from the **Support** button in the bottom-right corner of your Chatfuel dashboard.
2. Let them know you'd like to delete your account.
3. Our team will confirm the deletion and let you know once it's done.


---

---
title: "How to Install the Chatfuel Mobile App"
description: "Yes — Chatfuel is available as a mobile app for both iOS and Android."
canonical_url: https://chatfuel.com/docs/account/how-to-install-chatfuel-mobile-app
markdown_url: https://chatfuel.com/docs/account/how-to-install-chatfuel-mobile-app.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Install the Chatfuel Mobile App

Yes — Chatfuel is available as a mobile app for both iOS and Android.

Yes — Chatfuel is available as a mobile app for both iOS and Android. You can manage your automations, view conversations, and stay connected with your customers on the go.

## Download Links [#download-links]

* **iOS (iPhone/iPad):** [Download from the App Store](https://apps.apple.com/us/app/chatfuel-auto-reply-ai-for-wa/id6751035108)
* **Android:** [Download from Google Play](https://play.google.com/store/apps/details?id=com.chatfuel.awesome)

## Getting Started [#getting-started]

1. Download the app using one of the links above.
2. Open the app and sign in with your existing Chatfuel account credentials.
3. Once logged in, you can access your connected channels — including [WhatsApp](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp), [Instagram](https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram), and [Facebook](https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook) — directly from your phone.

## What You Can Do in the Mobile App [#what-you-can-do-in-the-mobile-app]

* Monitor and reply to customer conversations in real time
* Review AI-handled chats and take over when needed — for example, you can [stop AI and handle a conversation manually](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations)
* Manage your account settings and [invite teammates](https://chatfuel.com/docs/account/how-to-add-teammates)
* Receive push notifications so you never miss an important message

## Requirements [#requirements]

* iOS 15.0 or later / Android 8.0 or later
* A **Panel account** (the current platform). If you have a Legacy account, the app won't show your data — see [why the mobile app doesn't show my account](https://chatfuel.com/docs/account/why-mobile-app-does-not-show-my-account).


---

---
title: "How to Manage Multiple Companies"
description: "If you're an agency or freelancer working with several clients, Chatfuel lets you create and switch between multiple companies from a single account."
canonical_url: https://chatfuel.com/docs/account/how-to-manage-multiple-companies
markdown_url: https://chatfuel.com/docs/account/how-to-manage-multiple-companies.md
last_updated: 2026-09-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Manage Multiple Companies

If you're an agency or freelancer working with several clients, Chatfuel lets you create and switch between multiple companies from a single account.

If you're an agency or freelancer working with several clients, Chatfuel lets you create and switch between multiple companies from a single account. Each company has its own bots, channels, contacts, and settings — completely separate from one another. If you run an agency, the [agency → clients model](https://chatfuel.com/docs/for-agencies/agency-clients-model) explains how to structure a client roster this way.

## How to create a new company [#how-to-create-a-new-company]

1. Click the **company name** at the bottom of the left sidebar.
2. Click **Workspaces** (or open [panel.chatfuel.com/workspaces](https://panel.chatfuel.com/workspaces)).
3. Open your workspace and go to the **Companies** tab.
4. Click **Create company**.

Your new company appears in the list right away. You can switch between companies at any time by returning to the **Companies** tab of your workspace.

## How switching works [#how-switching-works]

When you select a company from the list, the entire dashboard switches to that company's workspace. All bots, connected channels, conversations, and settings belong to that specific company.

To go back, click the company name at the bottom of the sidebar again, open **Workspaces → Companies**, and pick a different one.

## Tips for agencies and freelancers [#tips-for-agencies-and-freelancers]

* **One plan per workspace** — all companies in a workspace share one [plan and one pool of AI credits](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing), so you pay once and clients never see billing.
* **Separate teams** — you can [invite different teammates](https://chatfuel.com/docs/account/how-to-add-teammates) to each company, giving clients or collaborators access only to the workspace they need.
* **Companies limit depends on the plan** — Free fits one company; Business and Agency plans allow more, some Agency options are unlimited.


---

---
title: "What Can a Teammate with the Agent Role Do?"
description: "The Agent role is designed for sales reps and support agents who work directly with customers."
canonical_url: https://chatfuel.com/docs/account/what-can-agent-role-do
markdown_url: https://chatfuel.com/docs/account/what-can-agent-role-do.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What Can a Teammate with the Agent Role Do?

The Agent role is designed for sales reps and support agents who work directly with customers.

The Agent role is designed for sales reps and support agents who work directly with customers. Agents can manage contacts, [leads](https://chatfuel.com/docs/leads/leads), and chats — but cannot edit automations or AI settings.

## What Agents can do [#what-agents-can-do]

* View and reply to customer chats
* Manage contacts and contact details
* Work the [leads pipeline](https://chatfuel.com/docs/leads/leads) — move leads between stages, assign leads, close deals
* [Take over conversations from AI](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) to handle customers manually
* View [calendar](https://chatfuel.com/docs/calendar/calendar) bookings and appointments
* Use filters to find their assigned leads and chats

## What Agents cannot do [#what-agents-cannot-do]

* Edit or create [automations](https://chatfuel.com/docs/ai-features/automations), flows, or AI instructions
* Change AI settings or the [AI's persona](https://chatfuel.com/docs/ai-features/how-to-set-up-fuely-ai-profile)
* Access billing or account settings
* [Add or remove teammates](https://chatfuel.com/docs/account/how-to-add-teammates)

## When to use the Agent role [#when-to-use-the-agent-role]

Assign the Agent role to team members who only need to handle customer conversations — for example, sales agents working the [Selling stage](https://chatfuel.com/docs/leads/leads) or support reps responding to incoming chats. This keeps your automations safe from accidental edits while giving agents everything they need to do their job.


---

---
title: "Why the Mobile App Doesn't Show My Account"
description: "If you installed the Chatfuel mobile app, logged in, and it looks like you're starting from scratch — your existing account data is missing, no conversations…"
canonical_url: https://chatfuel.com/docs/account/why-mobile-app-does-not-show-my-account
markdown_url: https://chatfuel.com/docs/account/why-mobile-app-does-not-show-my-account.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Why the Mobile App Doesn't Show My Account

If you installed the Chatfuel mobile app, logged in, and it looks like you're starting from scratch — your existing account data is missing, no conversations…

If you installed the Chatfuel mobile app, logged in, and it looks like you're starting from scratch — your existing account data is missing, no conversations, no settings — the most likely reason is that you have a **Legacy account**, not a Panel account.

## Why this happens [#why-this-happens]

The Chatfuel mobile app only works with the &#x2A;*current platform (Panel)**. If your account was created on [Chatfuel Legacy, it is a separate account](https://chatfuel.com/docs/getting-started/is-legacy-account-same-as-panel-account) from Panel and the mobile app cannot access it.

When you open the app and sign in, it connects to the Panel platform. If you've never set up a Panel account, the app creates a new empty one — which is why it looks like you're starting from scratch.

## How to confirm this is your situation [#how-to-confirm-this-is-your-situation]

* Open Chatfuel in a **web browser**. If you see a drag-and-drop flow builder with blocks, you're on Legacy.
* If the web version shows your data but the mobile app doesn't, that confirms your web account is Legacy and the app is looking at Panel.

## What to do [#what-to-do]

You have two options:

1. **Set up a Panel account.** You can [test the new platform](https://chatfuel.com/docs/getting-started/how-to-test-before-migrating-from-legacy) with a 7-day free trial without affecting your Legacy bots. Once your Panel account is active, the mobile app will show all your Panel data.
2. **Continue using Legacy via web only.** Legacy accounts are fully functional in the browser — just not supported by the mobile app.

## Can I use the mobile app with my Legacy account? [#can-i-use-the-mobile-app-with-my-legacy-account]

No. The mobile app is built exclusively for the current Panel platform. There are no plans to add Legacy support to the app.


---

---
title: "AI Autonomy Levels"
description: "Autonomy levels control how much freedom Fuely AI has when handling booking conversations."
canonical_url: https://chatfuel.com/docs/ai-features/ai-autonomy-levels
markdown_url: https://chatfuel.com/docs/ai-features/ai-autonomy-levels.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# AI Autonomy Levels

Autonomy levels control how much freedom Fuely AI has when handling booking conversations.

## What are autonomy levels? [#what-are-autonomy-levels]

Autonomy levels control how much freedom Fuely AI has when handling booking conversations. You can choose how far the AI goes on its own before involving a human — from simply collecting the customer's intent all the way to completing the entire booking without any human intervention.

The level is part of the **Booking rules** setting on each [automation](https://chatfuel.com/docs/ai-features/automations) — set it on **Main bot** to apply everywhere, or override it on one source. By default, the maximum autonomy level (**Full**) is set for new bots.

## The four levels [#the-four-levels]

### Intent Collection [#intent-collection]

The AI identifies what the customer wants (which service, when, etc.) and immediately hands the conversation to a human operator. No booking is created — your team takes it from there.

Best for: businesses that want AI to greet and qualify, but prefer a human to close every booking.

### Booking with Human Approval [#booking-with-human-approval]

The AI collects all the necessary data from the customer — service, preferred time, specialist — but does **not** create the booking. Instead, it passes the conversation to a human for final confirmation and booking creation.

Best for: businesses that want AI to handle the back-and-forth but need a human to approve before anything is scheduled.

### Booking with Human Review [#booking-with-human-review]

The AI collects the data **and** creates the booking automatically. After that, it notifies a human so they can review what was booked and step in if something needs to change.

Best for: businesses that trust AI to book but want a human to review each appointment after the fact.

### Full [#full]

The AI handles the entire flow: collecting information, creating the booking, and confirming with the customer. No human is involved unless the customer explicitly asks for one. This includes rescheduling and cancellations.

Best for: businesses that want maximum automation with minimal manual work.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the automation for the channel or post you want (or **Main bot** to change it everywhere).
3. Open the **Booking rules** setting and select the autonomy level you want.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"I want human approval before bookings are created."*

It applies the change and confirms what it set.

## How levels affect rescheduling [#how-levels-affect-rescheduling]

| Level                       | Can AI reschedule?                     |
| --------------------------- | -------------------------------------- |
| Intent Collection           | No — hands off to human immediately    |
| Booking with Human Approval | No — collects data, then hands off     |
| Booking with Human Review   | Yes — reschedules, then notifies human |
| Full                        | Yes — reschedules autonomously         |

## Which level should I choose? [#which-level-should-i-choose]

* **Just getting started?** Start with **Booking with Human Review** — you get automation while keeping oversight.
* **High volume, trusted setup?** Use **Full** to let AI handle everything.
* **Complex or high-value services?** Use **Booking with Human Approval** so your team always confirms.
* **Want AI only for lead capture?** Use **Intent Collection**.

You can change the level at any time without affecting existing bookings. For the full [autobooking setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking), make sure your services, specialists, and schedules are configured first.


---

---
title: "Automations"
description: "Automations control where Fuely AI talks to your customers and how it behaves in each place."
canonical_url: https://chatfuel.com/docs/ai-features/automations
markdown_url: https://chatfuel.com/docs/ai-features/automations.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Automations

Automations control where Fuely AI talks to your customers and how it behaves in each place.

Automations control where [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) talks to your customers and how it behaves in each place. Every channel and every traffic source — Instagram DMs, comments under a specific post, Facebook Messenger, leads from a WhatsApp ad, your website widget — has its own automation with its own settings. You can keep one shared behavior everywhere or fine-tune each source separately.

You manage automations in two equal ways: in the **Automations** section of the dashboard, or by asking the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) in chat. Both do the same thing — use whichever is faster for you.

## Where to find Automations [#where-to-find-automations]

1. Go to **Fuely AI** → **Automations**.
2. You'll see **Main bot** at the top and an automation for every source below it, grouped by channel.

Or ask the AI Co-Worker: &#x2A;"Show me my automations"* — it will list what you have and can open the page for you.

## How automations are organized [#how-automations-are-organized]

Automations follow your traffic:

* **Main bot** — the top level. Its settings are the defaults for everything, and its toggle is the master switch: turn Main bot off and Fuely AI stops replying everywhere.
* **Channels and their sources** — each channel breaks down into the places a conversation can start:
  * **Instagram** — direct messages, post & reel comments, ad comments, story replies, ig.me links, ads that click to Instagram
  * **Facebook** — [incoming messages in Messenger, comments under Page posts, m.me links, ads that click to Messenger](https://chatfuel.com/docs/facebook/facebook-tasks)
  * **WhatsApp** — direct messages, ads that click to WhatsApp, posts that click to WhatsApp
  * **TikTok** — direct messages, comments, ads that click to TikTok
  * **Website** — the [chat widget](https://chatfuel.com/docs/website/set-up-chat-widget-for-website)

Each source has a **base automation** — it's always there, and it can't be renamed or deleted. Main bot is on by default; every other base automation starts off, so [turning AI on for a channel](https://chatfuel.com/docs/ai-features/can-i-enable-ai-for-one-channel-but-not-another) means enabling that source's automation.

On comment, ad, story, and link sources you can also add [custom automations](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) — named rules that react only to specific content: certain keywords, particular posts or ads, selected stories, or an ig.me link. When several automations could answer the same message, [a priority order decides which one replies](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment).

## What you can configure on each automation [#what-you-can-configure-on-each-automation]

Every automation carries the same set of settings:

* **Incoming messages** — whether the AI replies here, and the **Additional instructions** that shape how it talks (tone, language, greeting, rules). This is [where the AI's persona lives](https://chatfuel.com/docs/ai-features/how-to-set-up-fuely-ai-profile).
* **When AI replies** — always, or only [outside your working hours](https://chatfuel.com/docs/ai-features/how-to-configure-working-hours).
* **Message delays** — a [natural typing pause](https://chatfuel.com/docs/ai-features/how-to-add-a-pause-between-messages) before replies.
* **Catalog images** — [how many product photos the AI sends and when](https://chatfuel.com/docs/ai-features/how-to-configure-photo-sending-settings).
* **Booking rules** — [how autonomously the AI books appointments](https://chatfuel.com/docs/ai-features/ai-autonomy-levels).
* **Switch to human** — [when the AI hands a chat to your team](https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules).
* **Follow-ups** — whether the AI [re-engages customers who go quiet](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups).
* **Collect contact info** — which [customer details the AI saves](https://chatfuel.com/docs/ai-features/how-to-collect-contact-info) to the contact card.

Custom automations on comment sources add reply controls on top: a **Public reply** (the answer under the comment) and a **Private reply** (the DM that follows), plus targeting like keywords and lists of posts or ads.

> **Note:** Business facts — your company info, FAQ, catalog, working hours — live in the [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base). Automations decide *where and how* the AI behaves; the Knowledge Base decides *what it knows*.

## Inheritance: set once, override where needed [#inheritance-set-once-override-where-needed]

Every setting on an automation is either **inherited** from Main bot or **overridden** locally. Out of the box everything inherits, so changing a setting on Main bot changes it everywhere at once. When one source needs different behavior — say, [follow-ups only in Instagram DMs](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups), or a different tone for ad leads — override just that setting on that automation. Everything you don't override keeps following Main bot.

Custom automations work the same way: they inherit from their source's base automation until you override a setting.

## Testing [#testing]

Every automation has a **Test chat** — a sidebar that simulates a conversation with exactly that source's settings, so you can [check how the AI will answer before going live](https://chatfuel.com/docs/ai-features/how-to-test-your-automation).

## If a channel isn't connected yet [#if-a-channel-isnt-connected-yet]

You can configure everything before connecting the channel — the setup is saved and goes live the moment the channel is connected. This is handy when you want to [prepare WhatsApp automations before migrating your number](https://chatfuel.com/docs/whatsapp/can-i-test-before-connecting-whatsapp-number).


---

---
title: "Can AI Find Something in Flows"
description: "No. The AI Co-Worker cannot search, read, or navigate inside flows."
canonical_url: https://chatfuel.com/docs/ai-features/can-ai-find-something-in-flows
markdown_url: https://chatfuel.com/docs/ai-features/can-ai-find-something-in-flows.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can AI Find Something in Flows

No. The AI Co-Worker cannot search, read, or navigate inside flows.

No. The AI Co-Worker cannot search, read, or navigate inside flows. It has no access to flow contents — it cannot look up specific blocks, find conditions, check what a flow does, or locate where something is configured within a flow.

## What AI Can Do [#what-ai-can-do]

The only thing AI can do with flows is **open them**. If you ask "open my welcome flow," it will take you to the flow editor. From there, you're on your own — browsing, editing, and debugging the flow is fully manual.

## Why AI Can't Work with Flows [#why-ai-cant-work-with-flows]

The Co-Worker is built around [automations](https://chatfuel.com/docs/ai-features/automations), not the legacy flow builder. Automations are the current system for automating conversations — you describe what you need, and the AI configures it. Flows are a separate, older system that the AI was never designed to read or modify. For more background, see [why the Co-Worker can't edit flows](https://chatfuel.com/docs/ai-features/why-co-worker-cant-edit-flows).

## What to Do Instead [#what-to-do-instead]

If you're trying to find something specific — like where a certain message is sent or how a condition works — you'll need to open the flow editor and look through it yourself. Ask the AI to open the flow, then navigate manually.

If the goal behind your search is to change how your automation works, consider describing the outcome you want to the AI instead. In most cases, [automations replace flows entirely](https://chatfuel.com/docs/getting-started/why-there-is-no-flows-button) and are easier to set up and maintain.


---

---
title: "Can AI Read Data From a Google Sheet?"
description: "No. Fuely AI cannot connect to or read data from Google Sheets, Excel files, or any external spreadsheet."
canonical_url: https://chatfuel.com/docs/ai-features/can-ai-read-from-google-sheets
markdown_url: https://chatfuel.com/docs/ai-features/can-ai-read-from-google-sheets.md
last_updated: 2026-03-13
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can AI Read Data From a Google Sheet?

No. Fuely AI cannot connect to or read data from Google Sheets, Excel files, or any external spreadsheet.

No. Fuely AI cannot connect to or read data from Google Sheets, Excel files, or any external spreadsheet. The AI works exclusively from the [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) — the structured data you fill in directly inside Chatfuel.

## Why it works this way [#why-it-works-this-way]

Fuely AI needs structured, reliable data to give accurate answers. A live spreadsheet can change at any time, contain formatting issues, or have ambiguous column names — all of which would lead to inconsistent or wrong responses. By keeping everything inside the Knowledge Base, Chatfuel ensures the AI always works with clean, verified information.

## What to do instead [#what-to-do-instead]

If you have business data in a Google Sheet (products, prices, FAQs, business hours), transfer it manually into the appropriate Knowledge Base section:

1. Go to **Knowledge Base** in the left sidebar.
2. Open the section that matches your data:
   * **About** — business name, contacts, hours, address, payment options.
   * **Catalog** — products or services with descriptions and pricing.
   * **FAQ** — common questions and answers.
3. Type or paste the information from your spreadsheet into the relevant fields.
4. Changes take effect immediately — [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) will start using the updated data in new conversations.

For a complete walkthrough of what goes where, see the [definitive setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide).

## Tips [#tips]

* Keep your Catalog under 50 items for best results.
* Paste FAQ answers as short, clear text (1-3 lines) — don't copy raw spreadsheet rows with column headers.
* If you [uploaded files during registration](https://chatfuel.com/docs/ai-features/how-to-manage-uploaded-company-information), that data was already extracted into the Knowledge Base. Check it before adding duplicates.
* Review and update the Knowledge Base regularly as your business information changes.


---

---
title: "Can AI Send PDFs or Files?"
description: "No. Fuely AI cannot send PDFs, documents, or arbitrary files to customers."
canonical_url: https://chatfuel.com/docs/ai-features/can-ai-send-pdfs
markdown_url: https://chatfuel.com/docs/ai-features/can-ai-send-pdfs.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can AI Send PDFs or Files?

No. Fuely AI cannot send PDFs, documents, or arbitrary files to customers.

No. Fuely AI cannot send PDFs, documents, or arbitrary files to customers. The AI communicates through text messages only — it cannot attach or deliver files in a conversation.

The one exception is **product photos**: if you upload images to your catalog items, Fuely AI can send those to customers. See [how to configure photo sending settings](https://chatfuel.com/docs/ai-features/how-to-configure-photo-sending-settings) for how to control when and how many it sends.

## Why it works this way [#why-it-works-this-way]

Messaging platforms (WhatsApp, Instagram, Facebook, TikTok) have strict rules about what automated bots can send. Attaching files adds complexity around file size limits, format compatibility, and delivery reliability. Keeping Fuely AI text-only ensures every response is delivered consistently across all channels.

## What to do instead [#what-to-do-instead]

If you need customers to access a PDF or document, upload the file to a cloud storage service and give Fuely AI the link:

1. Upload your file to Google Drive, Dropbox, or any file hosting service.
2. Make sure the file link is publicly accessible (or accessible to anyone with the link).
3. Add the link to your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) — in the relevant **FAQ** answer, **Catalog** description, or **About** section.
4. Fuely AI will share the link with customers when the topic comes up in conversation.

For example, if customers often ask for your price list, add an FAQ entry like:

* **Question:** Can I see your price list?
* **Answer:** Yes! You can view our full price list here: [https://drive.google.com/your-price-list-link](https://drive.google.com/your-price-list-link)

## Tips [#tips]

* Use short, memorable file names so the link looks trustworthy to customers.
* Double-check that your link works in an incognito browser window — if you can't open it without logging in, customers won't be able to either.
* The same approach works for [sharing videos](https://chatfuel.com/docs/ai-features/can-ai-send-videos) — upload to YouTube or Vimeo and add the link to your Knowledge Base.
* If you [uploaded files during registration](https://chatfuel.com/docs/ai-features/how-to-manage-uploaded-company-information), that content was extracted as text into your Knowledge Base — the original files are not stored or sent to customers.


---

---
title: "Can AI Send Videos?"
description: "No. Fuely AI cannot send video files to customers. The AI communicates through text messages only — it cannot attach, upload, or play videos within a…"
canonical_url: https://chatfuel.com/docs/ai-features/can-ai-send-videos
markdown_url: https://chatfuel.com/docs/ai-features/can-ai-send-videos.md
last_updated: 2026-03-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can AI Send Videos?

No. Fuely AI cannot send video files to customers. The AI communicates through text messages only — it cannot attach, upload, or play videos within a…

No. Fuely AI cannot send video files to customers. The AI communicates through text messages only — it cannot attach, upload, or play videos within a conversation.

## What to do instead [#what-to-do-instead]

If you want customers to see a video showing how your product works, upload it to a video hosting platform and give Fuely AI the link:

1. Upload your video to YouTube, Vimeo, or any video hosting service.
2. Copy the video link (make sure it's publicly accessible or unlisted — not private).
3. Add the link to your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) — in the relevant **FAQ** answer, **Catalog** description, or **About** section.
4. Fuely AI will share the link with customers when the topic comes up in conversation.

For example, if customers often ask how your product works, add an FAQ entry like:

* **Question:** How does your product work?
* **Answer:** Here's a short video walkthrough: [https://youtube.com/your-demo-video](https://youtube.com/your-demo-video)

This works the same way as sharing [documents or PDFs](https://chatfuel.com/docs/ai-features/can-ai-send-pdfs) — upload to an external platform, then add the link to your Knowledge Base.

## Tips [#tips]

* Use YouTube for the widest compatibility — most messaging platforms show a clickable preview with a thumbnail.
* Keep videos short (under 2 minutes) for the best engagement in a chat context.
* Double-check that your link works in an incognito browser window to make sure customers can access it without logging in.


---

---
title: "Can I Add Menu Buttons, Quick Replies, or Numbered Options?"
description: "No — Chatfuel does not support button menus, quick reply buttons, numbered option lists, or interactive menu trees."
canonical_url: https://chatfuel.com/docs/ai-features/can-i-add-menu-buttons-or-quick-replies
markdown_url: https://chatfuel.com/docs/ai-features/can-i-add-menu-buttons-or-quick-replies.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Add Menu Buttons, Quick Replies, or Numbered Options?

No — Chatfuel does not support button menus, quick reply buttons, numbered option lists, or interactive menu trees.

No — Chatfuel does not support button menus, quick reply buttons, numbered option lists, or interactive menu trees. This is by design: [AI conversations outperform button-based bots](https://chatfuel.com/docs/ai-features/why-chatfuel-does-not-use-buttons) in every metric that matters for your business.

## Why There Are No Buttons [#why-there-are-no-buttons]

Traditional chatbot platforms let you build flows like "Press 1 for Menu, Press 2 for Orders." These feel familiar, but they break the moment a customer asks something outside the script. They also require constant maintenance every time your business changes.

Chatfuel takes a different approach. [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) reads and understands what your customers write — in any language, in any order — and responds the way a trained team member would. No decision trees. No dead ends.

## What to Do Instead [#what-to-do-instead]

If you want your bot to handle common topics like "see the menu," "place an order," or "find our address," you don't need buttons. You need to give AI the right information.

**1. Add your business info to the [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base)**

Fill in your catalog, FAQ, working hours, and address. When a customer asks about any of these, AI pulls the answer automatically — no numbered options required.

**2. Turn on the right [automations](https://chatfuel.com/docs/ai-features/automations)**

Automations control where Fuely AI talks to your customers — direct messages, comments, story replies — and how it behaves in each place. The AI answers questions, recommends products, and books appointments using your Knowledge Base data.

**3. Write a clear AI prompt**

Your [AI setup](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide) defines tone, behavior, and priorities. A well-written prompt ensures AI guides conversations toward the outcomes you care about — bookings, sales, support — without forcing customers through a rigid menu.

## Common Scenarios [#common-scenarios]

| What you want                          | How to do it in Chatfuel                                                                                                                        |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| "Show customers a menu of options"     | Add your products/services to the Knowledge Base catalog — AI presents them when asked                                                          |
| "Let customers pick 1, 2, or 3"        | Not needed — customers just type what they want and AI understands                                                                              |
| "Quick reply buttons after a greeting" | Configure your AI greeting prompt — AI naturally asks how it can help                                                                           |
| "A button to talk to a human"          | Customers can ask to speak to a person; AI [hands off to live chat](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) automatically |

## Still Have Questions? [#still-have-questions]

If you're migrating from a platform that used buttons and aren't sure how to replicate a specific flow, reach out to support. In most cases, the answer is simpler than you expect: add the information to your Knowledge Base and let AI handle the conversation.


---

---
title: "Can I Customize the Message Before Handoff to a Human?"
description: "No. When Fuely AI hands a conversation over to a human agent, it generates the handoff message automatically."
canonical_url: https://chatfuel.com/docs/ai-features/can-i-customize-the-handoff-message
markdown_url: https://chatfuel.com/docs/ai-features/can-i-customize-the-handoff-message.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Customize the Message Before Handoff to a Human?

No. When Fuely AI hands a conversation over to a human agent, it generates the handoff message automatically.

## Short answer [#short-answer]

No. When Fuely AI [hands a conversation over to a human agent](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide), it generates the handoff message automatically. There is no setting to write or customize this message yourself.

## Why it works this way [#why-it-works-this-way]

The AI composes the handoff message based on the conversation context — it summarizes what the customer needs and why the chat is being escalated. Because every conversation is different, a static pre-written message would often feel out of place or miss important details.

By letting AI generate the message dynamically, the transition feels natural to the customer, and the receiving agent gets a brief summary of what was discussed.

## What you can control [#what-you-can-control]

While you cannot set the exact handoff message, you can influence the overall behavior:

* **Escalation rules** — define when a handoff should happen (customer asks for a human, complex request) in the [Switch to human](https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules) settings on each automation.
* **AI tone and style** — adjust how the AI communicates overall through **Additional instructions** on your [automation](https://chatfuel.com/docs/ai-features/automations). The handoff message will follow the same tone.
* **Team assignment** — choose who receives the chat when it's escalated, so the right person picks it up. Learn more about [how chat assignment works](https://chatfuel.com/docs/leads/how-does-chat-assignment-work).


---

---
title: "Can I Enable AI for One Channel but Not Another?"
description: "Yes — natively. Every channel source (Instagram DMs, Facebook Messenger, WhatsApp DMs, TikTok comments, the website widget, and so on) has its own automation…"
canonical_url: https://chatfuel.com/docs/ai-features/can-i-enable-ai-for-one-channel-but-not-another
markdown_url: https://chatfuel.com/docs/ai-features/can-i-enable-ai-for-one-channel-but-not-another.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Enable AI for One Channel but Not Another?

Yes — natively. Every channel source (Instagram DMs, Facebook Messenger, WhatsApp DMs, TikTok comments, the website widget, and so on) has its own automation…

Yes — natively. Every channel source (Instagram DMs, Facebook Messenger, WhatsApp DMs, TikTok comments, the website widget, and so on) has its own [automation](https://chatfuel.com/docs/ai-features/automations) with its own toggle. Turning a source's automation on or off is exactly how you enable or disable AI there, and you can go as granular as a single post or ad.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Find the source you want in the list — automations are grouped by channel.
3. Toggle that source's automation on or off.

A few things to know:

* **Main bot is the master switch.** Turn it off and Fuely AI stops replying everywhere, no matter what the individual sources are set to.
* **Every source except Main bot starts off.** Activating AI on a channel means enabling that source's automation — nothing replies until you do.
* **Custom automations count too.** Turning off a source's base automation doesn't silence the source if an enabled [custom automation](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) still matches — disable those as well if you want full silence there.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Answer all WhatsApp messages, but don't reply to Instagram DMs."*

It applies the change and confirms what it set.

## How this plays with sessions [#how-this-plays-with-sessions]

The AI's decision to answer follows where the conversation started. A reply opens a 24-hour session tied to that source, and only answered interactions keep it alive — if you turn a source off mid-session, the AI simply goes quiet and the session expires. See [how Fuely AI sessions work](https://chatfuel.com/docs/ai-features/how-fuely-ai-sessions-work) for the full rules.

## Example [#example]

You have WhatsApp connected and AI answers all direct messages there. Now you connect Instagram, but only want AI handling ad comment replies. In Automations, leave WhatsApp DMs on, keep Instagram DMs off, and enable the Instagram ad comments automation — or tell the Co-Worker: &#x2A;"On Instagram, only handle leads from ads."* WhatsApp keeps working as before, and on Instagram AI only engages contacts coming from your ads.

Excluding a single specific contact from AI is a different scenario — see [how to exclude specific contacts from AI](https://chatfuel.com/docs/ai-features/how-to-exclude-specific-contacts-from-ai).


---

---
title: "Can I Integrate ChatGPT with Chatfuel?"
description: "You don't need to — ChatGPT is already built in. Fuely AI, Chatfuel's AI assistant, runs on OpenAI's GPT-5.2 model."
canonical_url: https://chatfuel.com/docs/ai-features/can-i-integrate-chatgpt-with-chatfuel
markdown_url: https://chatfuel.com/docs/ai-features/can-i-integrate-chatgpt-with-chatfuel.md
last_updated: 2026-03-10
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Integrate ChatGPT with Chatfuel?

You don't need to — ChatGPT is already built in. Fuely AI, Chatfuel's AI assistant, runs on OpenAI's GPT-5.2 model.

You don't need to — ChatGPT is already built in. [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai), Chatfuel's AI assistant, runs on OpenAI's GPT-5.2 model. Every conversation your customers have with the bot is already powered by the same technology behind ChatGPT.

## What this means for you [#what-this-means-for-you]

* You get the full power of GPT without any extra setup or integration.
* Chatfuel handles the AI infrastructure — model access, prompt management, and response generation — so you can focus on your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) and business rules.
* There is no option to plug in your own OpenAI API key. Chatfuel manages the connection to ensure reliability, safety, and optimized performance for messaging use cases.

## What if I want to connect an external API? [#what-if-i-want-to-connect-an-external-api]

If your use case requires calling a custom backend, CRM, or any third-party service during a conversation, you can use the [JSON API plugin](https://chatfuel.com/docs/integrations/how-to-integrate-with-json-api). It lets you send and receive data from external endpoints inside your flows.

## Quick summary [#quick-summary]

| Question                                   | Answer                                      |
| ------------------------------------------ | ------------------------------------------- |
| Does Chatfuel use ChatGPT?                 | Yes — Fuely AI runs on GPT-5.2              |
| Do I need to integrate ChatGPT separately? | No — it's already built in                  |
| Can I use my own OpenAI API key?           | No — Chatfuel manages the AI infrastructure |
| Can I connect other external services?     | Yes — via the JSON API plugin               |


---

---
title: "Can the Bot Send Scheduled Follow-Ups?"
description: "Yes — Fuely AI automatically follows up with customers who stop responding."
canonical_url: https://chatfuel.com/docs/ai-features/can-the-bot-send-scheduled-follow-ups
markdown_url: https://chatfuel.com/docs/ai-features/can-the-bot-send-scheduled-follow-ups.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can the Bot Send Scheduled Follow-Ups?

Yes — Fuely AI automatically follows up with customers who stop responding.

Yes — Fuely AI automatically follows up with customers who stop responding. You don't need to schedule anything manually: enable follow-ups on an [automation](https://chatfuel.com/docs/ai-features/automations) and the bot handles the rest.

## How It Works [#how-it-works]

When a customer goes quiet during an active conversation, Fuely AI sends **two follow-up messages** to nudge them back. The timing is automatic — Fuely AI decides when to send each follow-up based on the conversation context, and you cannot set a custom delay or schedule.

What the follow-ups *say* is up to you: each automation has a follow-up message prompt you can edit, so different sources can nudge customers in different ways.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the automation for the channel or post you want (or **Main bot** to change it everywhere).
3. Open the **Follow-ups** setting, turn it on, and adjust the message prompt if you like.

See [How to Set Up Follow-Ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups) for the full walkthrough.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Turn on follow-ups for customers who stop replying."*

It applies the change and confirms what it set.

## Good to Know [#good-to-know]

* Follow-ups work on all connected channels — WhatsApp, Instagram, Facebook, TikTok, and website.
* You can enable follow-ups everywhere via Main bot, or only on some sources.
* On WhatsApp, follow-ups only go out within the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window). If the window has closed, use [re-engage messages](https://chatfuel.com/docs/whatsapp/how-to-create-re-engage-messages) instead.
* If a human agent [takes over the conversation](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations), follow-ups stop automatically.


---

---
title: "How AI Works with Voice Messages"
description: "When customers send voice messages, our AI system listens to the audio and provides helpful text responses to their questions."
canonical_url: https://chatfuel.com/docs/ai-features/how-ai-works-with-voice-messages
markdown_url: https://chatfuel.com/docs/ai-features/how-ai-works-with-voice-messages.md
last_updated: 2026-07-03
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How AI Works with Voice Messages

When customers send voice messages, our AI system listens to the audio and provides helpful text responses to their questions.

When customers send voice messages, our AI system listens to the audio and provides helpful text responses to their questions.

## How It Works [#how-it-works]

The AI processes voice messages through a simple workflow:

1. **Receives the voice message** - The customer records and sends a voice message through the messaging platform
2. **Listens to the audio** - The AI uses advanced speech recognition to understand what the customer is saying
3. **Understands the question** - Natural language processing identifies the customer's intent and query
4. **Responds with text** - The AI generates and sends back a helpful text message answer

## Key Benefits [#key-benefits]

* **Convenience for customers** - Users can ask questions by speaking instead of typing
* **Quick responses** - AI provides immediate answers without waiting for human agents
* **Accessibility** - Helps users who prefer voice communication or have difficulty typing

## Example Interaction [#example-interaction]

**Customer sends voice message:**
"What are your business hours?"

**AI responds with text message:**
"Our business hours are Monday through Friday, 9 AM to 6 PM EST. We're closed on weekends and major holidays."

## Supported Features [#supported-features]

* Multiple language support
* Clear audio transcription
* Context-aware responses
* Integration with existing help systems


---

---
title: "How Fuely AI Sessions Work"
description: "A session is the window during which Fuely AI stays active for one contact and keeps answering their messages."
canonical_url: https://chatfuel.com/docs/ai-features/how-fuely-ai-sessions-work
markdown_url: https://chatfuel.com/docs/ai-features/how-fuely-ai-sessions-work.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How Fuely AI Sessions Work

A session is the window during which Fuely AI stays active for one contact and keeps answering their messages.

A **session** is the window during which [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) stays active for one contact and keeps answering their messages. Understanding sessions explains why the bot sometimes keeps a conversation going and other times stays silent.

## What a session is [#what-a-session-is]

When Fuely AI answers a contact, it opens a session — a **24-hour window** during which the bot continues responding to that contact instead of treating each new message as a stranger. The timer is what lets a conversation flow naturally across several messages.

## When a session opens [#when-a-session-opens]

A session opens only when **both** of these are true:

1. **The source is enabled.** The contact reached you through a source you've turned on — a direct message, a comment on a post or reel, a comment on an ad, a story reply, or a message after clicking an ad. You control these through your [automations](https://chatfuel.com/docs/ai-features/automations). Each source carries its own [source properties](https://chatfuel.com/docs/instagram/instagram-tasks) so you can see where a contact came from.
2. **An automation actually replied.** An automation matched the contact's message — [priority rules decide which one](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment) — and Fuely AI sent a reply.

If a contact interacts but nothing matches — for example, a comment that triggers no keyword or rule — **no session opens and the bot stays silent**. Simply interacting isn't enough; the bot has to actually have something to say.

## The source a session is tied to [#the-source-a-session-is-tied-to]

Each session belongs to the source that opened it — a comment session, a DM session, and so on. Two rules follow from this:

* **Sessions don't replace each other.** If a contact has an active comment session and then sends you a DM, that DM is still handled under the comment session's settings and keeps that session going. A new source doesn't override the one already running.
* **The session type stays the same** until the session ends.

## How a session is extended [#how-a-session-is-extended]

The 24-hour timer resets **only when Fuely AI answers again** under that session's rules. An interaction the bot doesn't answer changes nothing — the timer doesn't move and the session type doesn't change.

The bot will **not** extend a session — and stays silent — when:

* The source that opened the session has since been **turned off**. The bot goes quiet there, and the session isn't kept alive.
* A new interaction **matches no automation**. The session is left untouched.
* The chat is **being handled manually**. While a chat is assigned to you or you've replied yourself, Fuely AI stays quiet even if the session is still alive — see [how to take over from AI](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations).

## Manual replies don't open or extend sessions [#manual-replies-dont-open-or-extend-sessions]

Replying to a contact yourself from the Chats tab does **not** open or extend a Fuely AI session. Manual conversations follow the longer 7-day live-chat window and the [chat auto-return timeout](https://chatfuel.com/docs/ai-features/how-to-automatically-return-chat-to-ai) instead — see the [Instagram messaging rules](https://chatfuel.com/docs/instagram/messaging-rules-for-instagram) for how the AI and live-chat windows differ.

## When a session ends [#when-a-session-ends]

A session ends when either of these happens:

* **24 hours pass** with no answered interaction.
* **You close the chat** — moving a lead to Won or Lost ends the active session, so the bot won't keep replying off an earlier interaction. See [how to close live chat](https://chatfuel.com/docs/leads/how-to-close-live-chat).

Once a session ends, the next interaction is judged from scratch: a fresh session opens only if the source is still enabled and an automation matches again.


---

---
title: "How to Add a Pause Between Messages"
description: "If your customers tend to send several short messages in a row, you might want the AI to wait before replying — so it responds to the full thought, not just…"
canonical_url: https://chatfuel.com/docs/ai-features/how-to-add-a-pause-between-messages
markdown_url: https://chatfuel.com/docs/ai-features/how-to-add-a-pause-between-messages.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Add a Pause Between Messages

If your customers tend to send several short messages in a row, you might want the AI to wait before replying — so it responds to the full thought, not just…

If your customers tend to send several short messages in a row, you might want the AI to wait before replying — so it responds to the full thought, not just the first message. That's what the **Message delays** setting on each [automation](https://chatfuel.com/docs/ai-features/automations) does.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the automation for the channel or post you want (or **Main bot** to change it everywhere).
3. Open the **Message delays** setting and turn it on.

When enabled, Fuely AI waits a few seconds after the customer's first message before responding. This gives the customer time to finish typing, and the AI replies to all their messages at once instead of answering each one separately.

During the delay, the customer sees a ["Typing..." animation](https://chatfuel.com/docs/ai-features/how-to-enable-typing-animation) — so they know a reply is on its way and the conversation feels natural.

Like every automation setting, Message delays is inherited from Main bot unless you override it — so you can keep one behavior everywhere or slow down just one source.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Make the AI wait until the customer finishes typing before replying."*

It applies the change and confirms what it set.

## Flow Builder [#flow-builder]

Flow Builder does not support delays between messages. Message delays are a Fuely AI feature — if you need a pause, use the automation setting described above.


---

---
title: "How to Automatically Return Chat to AI"
description: "When a human agent takes over a conversation from AI, the chat stays assigned to that agent."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-automatically-return-chat-to-ai
markdown_url: https://chatfuel.com/docs/ai-features/how-to-automatically-return-chat-to-ai.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Automatically Return Chat to AI

When a human agent takes over a conversation from AI, the chat stays assigned to that agent.

## What is Chat Timeout? [#what-is-chat-timeout]

When a human agent [takes over a conversation from AI](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations), the chat stays assigned to that agent. Chat Timeout automatically returns the conversation to Fuely AI after a set period of inactivity, so you don't have to reassign it manually.

This is useful when agents handle a chat but forget to hand it back — the timeout ensures AI picks up the conversation again without any gaps.

## Set it up in Settings [#set-it-up-in-settings]

1. Go to **Settings** in the sidebar.
2. Open the **Chats** section.
3. Find the **Chat timeout** option.
4. Choose the timeout period — this is how long the system waits after the last agent message before returning the chat to AI.

Once enabled, any chat assigned to a human agent will automatically switch back to Fuely AI after the chosen period of inactivity.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Return chats to AI after 30 minutes of agent inactivity."*

It applies the change and confirms what it set.

## How it works [#how-it-works]

* The timer starts after the last message sent by the human agent in that chat.
* If the agent sends another message, the timer resets.
* When the timer expires, the chat is reassigned to Fuely AI and automation resumes.
* If the agent [closes the chat](https://chatfuel.com/docs/leads/how-to-close-live-chat) before the timeout, the timer is cancelled — closed chats are not returned to AI.

## When to use it [#when-to-use-it]

* **Small teams** where agents handle multiple chats and may forget to reassign back to AI.
* **After-hours coverage** — if an agent replies late in the day and leaves, AI takes over again automatically.
* **High-volume inboxes** where manual reassignment slows things down.

## Tips [#tips]

* Start with a longer timeout (e.g., 30 minutes or 1 hour) to avoid AI jumping back in while the agent is still helping the customer.
* If your team typically wraps up conversations quickly, a shorter timeout works well.
* Chat Timeout works alongside your [Switch to human rules](https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules) — it does not override them, it only applies when a chat was already assigned to an agent.


---

---
title: "How to Change Greeting by Specialist"
description: "Chatfuel does not support setting different greetings for different specialists."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-change-greeting-by-specialist
markdown_url: https://chatfuel.com/docs/ai-features/how-to-change-greeting-by-specialist.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Change Greeting by Specialist

Chatfuel does not support setting different greetings for different specialists.

Chatfuel does not support setting different greetings for different specialists. The greeting is part of the AI's persona, and the greeting fires before any specialist is involved in the conversation.

What you *can* do is set different greetings per **source**: each [automation](https://chatfuel.com/docs/ai-features/automations) carries its own **Additional instructions**, so Instagram DMs can open with one greeting and your WhatsApp ads with another.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open **Main bot** to change the greeting everywhere, or the automation for one channel or post to change it just there.
3. Open the **Incoming messages** setting and describe the greeting in **Additional instructions** — for example: &#x2A;Greet new customers with "Hi! Welcome to Glow Studio 👋 Are you here to book, ask about prices, or something else?"*

The greeting is part of the [AI's persona](https://chatfuel.com/docs/ai-features/how-to-set-up-fuely-ai-profile), so you can shape its tone, language, and wording in the same place.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Change the greeting my AI sends to new customers."*

It applies the change and confirms what it set. Remember: greetings can differ per source, but not per specialist.

## Why there is no per-specialist greeting [#why-there-is-no-per-specialist-greeting]

Fuely AI greets every customer before any routing happens. The conversation may later be [assigned to a team member](https://chatfuel.com/docs/leads/how-does-chat-assignment-work), but at the moment of the greeting there is no specialist context yet — so there is nothing to vary the greeting by.

## How to make the greeting feel personalized [#how-to-make-the-greeting-feel-personalized]

Even without per-specialist greetings, you can make each greeting work well:

* **Keep it short and friendly** — a warm one-liner works better than a paragraph.
* **Mention your business name** — so the customer knows who they are talking to.
* **Offer quick options** — list 2–3 common reasons customers reach out, so the AI can route the conversation to the right specialist faster.
* **Match the greeting to the source** — a customer replying to an ad expects a different opener than one writing a cold DM. Override Additional instructions on that source's automation.

The greeting reaches customers on any [connected channel](https://chatfuel.com/docs/getting-started/supported-channels) — WhatsApp, Instagram, Facebook, TikTok, or your website widget.


---

---
title: "How to Collect Contact Info Automatically"
description: "Fuely AI can save customer details it learns during a conversation — name, phone, email, city, budget, anything you tell it to watch for — straight to the…"
canonical_url: https://chatfuel.com/docs/ai-features/how-to-collect-contact-info
markdown_url: https://chatfuel.com/docs/ai-features/how-to-collect-contact-info.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Collect Contact Info Automatically

Fuely AI can save customer details it learns during a conversation — name, phone, email, city, budget, anything you tell it to watch for — straight to the…

Fuely AI can save customer details it learns during a conversation — name, phone, email, city, budget, anything you tell it to watch for — straight to the contact card in your [Leads](https://chatfuel.com/docs/leads/leads) pipeline. You choose what to collect with the **Collect contact info** setting on an [automation](https://chatfuel.com/docs/ai-features/automations).

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open **Main bot** to collect the same details everywhere, or a specific source to collect different details there.
3. Open **Collect contact info*&#x2A; and add the fields you want — each one is a short description of what to capture, for example &#x2A;"the customer's email address"&#x2A; or &#x2A;"which service they're interested in"*.

The AI doesn't interrogate the customer — it fills the fields in naturally as the details come up in conversation. If you want it to actively ask, say so in the automation's **Additional instructions** (for example, "always ask for a phone number before booking").

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Save the customer's email and city from every conversation"*

It adds the fields and confirms what it set.

## Where the data goes [#where-the-data-goes]

Collected details appear on the contact card in [Leads](https://chatfuel.com/docs/leads/leads), visible to your whole team. Your team can also see them mid-conversation when [taking over a chat](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations).

> **Note:** Like every automation setting, Collect contact info is [inherited from Main bot](https://chatfuel.com/docs/ai-features/automations) unless you override it — so leads from one ad campaign can get extra qualification fields while the rest of your traffic keeps the defaults.


---

---
title: "How to Configure Photo Sending Settings"
description: "You can control whether and how Fuely AI sends product photos from your catalog during a conversation."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-configure-photo-sending-settings
markdown_url: https://chatfuel.com/docs/ai-features/how-to-configure-photo-sending-settings.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Configure Photo Sending Settings

You can control whether and how Fuely AI sends product photos from your catalog during a conversation.

You can control whether and how Fuely AI sends product photos from your catalog during a conversation. Two settings under **Automations** decide how many images the AI sends per product and at what moment it shares them.

## Where to find the settings [#where-to-find-the-settings]

1. Go to **Fuely AI** → **Automations**.
2. Find the **Images per product** and **When Fuely AI shows images** controls.
3. Adjust both settings to fit your business.
4. Save your changes.

Like every automation setting, this one is inherited from **Main bot** unless you override it — change it on Main bot to apply everywhere, or on one source's automation for just that source.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Send up to three photos per product as soon as a product is mentioned."*

It applies the change and confirms what it set.

## Images per product [#images-per-product]

Choose how many photos the AI can send for a single product — **None**, or any number from **1 to 10**.

This caps how many images the AI picks when an item in your [catalog has multiple photos attached](https://chatfuel.com/docs/catalog/how-to-attach-photos-to-services-or-products). Setting it to **None** stops the AI from sending product images at all, even if photos are uploaded.

## When Fuely AI shows images [#when-fuely-ai-shows-images]

Choose the moment the AI sends product images to customers:

* **Never** — the AI never sends images, regardless of the per-product limit.
* **When products or services are first mentioned** — the AI shares images proactively, as soon as a relevant product or service comes up in the conversation.
* **When asked** — the AI only sends images when the customer explicitly asks to see them.

## Common questions [#common-questions]

**Why does Fuely AI send photos only when a customer asks?** Because **When Fuely AI shows images** is set to **When asked**. Switch it to **When products or services are first mentioned** to have the AI send photos proactively.

**How do I make Fuely AI send photos right away / immediately / automatically?** Set **When Fuely AI shows images** to **When products or services are first mentioned**. The AI will then share images as soon as a product or service comes up, without waiting for the customer to ask.

**How do I stop Fuely AI from sending photos?** Set **When Fuely AI shows images** to **Never**, or set **Images per product** to **None**. Either one keeps the AI from sending product images.

**Why isn't the AI sending product images at all?** Check that **Images per product** is not set to **None**, that **When Fuely AI shows images** is not set to **Never**, and that your catalog items actually have photos uploaded.

## Tips [#tips]

* If your business relies on visuals (beauty, real estate, food), set images to show **when products or services are first mentioned** — customers expect to see what they are buying.
* For text-heavy services (consulting, legal), choose **When asked** so the conversation stays focused.
* These settings only control delivery — they do not generate images. Make sure your catalog items actually have photos uploaded first. See [how to attach photos to catalog items](https://chatfuel.com/docs/catalog/how-to-attach-photos-to-services-or-products).
* Sending fewer photos per product keeps the chat clean and avoids overwhelming the customer. Start with 2–3 and adjust based on feedback.


---

---
title: "How to Control When Fuely AI Responds (Working Hours)"
description: "You can decide whether Fuely AI answers customers around the clock or only when your business is closed."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-configure-working-hours
markdown_url: https://chatfuel.com/docs/ai-features/how-to-configure-working-hours.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Control When Fuely AI Responds (Working Hours)

You can decide whether Fuely AI answers customers around the clock or only when your business is closed.

You can decide whether Fuely AI answers customers around the clock or only when your business is closed. Two things work together here: your **working hours** (a business fact that lives in the [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base)) and the **When AI replies** setting on each [automation](https://chatfuel.com/docs/ai-features/automations) (which decides whether the AI answers always or only after hours).

Because **When AI replies** is set per automation, different channels can behave differently — for example, WhatsApp replies 24/7 while Instagram only answers after hours.

## Set your working hours [#set-your-working-hours]

Working hours tell Fuely AI when your team is open, so it knows what counts as "after hours." They are part of your business information in the Knowledge Base — set or update them there, alongside your company info and FAQ. Leave a day empty if you are closed that day.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the automation for the channel you want (or **Main bot** to change it everywhere).
3. Open the **When AI replies** setting and pick one of two options:
   * **Always** — the AI replies to every customer message. This is the default.
   * **Outside working hours** — the AI replies only when your business is closed. During working hours your team handles chats; outside them, the AI takes over.

> **Note:** There is no "Never" option. If you want the AI to stay silent on a channel entirely, [turn that channel's automation off](https://chatfuel.com/docs/ai-features/can-i-enable-ai-for-one-channel-but-not-another) instead.

**Edge case:** if you pick **Outside working hours** but haven't defined any working hours, the AI responds **always** — with no hours set, there is no "open" window for your team to cover.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Set my working hours to 9am–6pm Monday to Friday, and only answer customers outside those hours."*

It applies the change and confirms what it set.

## At a glance [#at-a-glance]

| Goal                                                      | What to set                                                                               |
| --------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| The AI answers every message, 24/7                        | **When AI replies** → **Always** on Main bot                                              |
| The AI answers only after hours, team handles the workday | Working hours in the Knowledge Base, plus **When AI replies** → **Outside working hours** |
| One channel 24/7, another only after hours                | Override **When AI replies** on each channel's automation                                 |
| The AI stays silent on a channel                          | Turn that channel's automation off                                                        |


---

---
title: "How to Create a Custom Automation"
description: "Create a custom automation in Fuely AI → Automations to give a specific post, ad, story, keyword or link its own instructions instead of the base automation."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation
markdown_url: https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Create a Custom Automation

Create a custom automation in Fuely AI → Automations to give a specific post, ad, story, keyword or link its own instructions instead of the base automation.

A custom automation is a named rule that reacts only to specific content — comments with a certain keyword, a particular post or ad, selected stories, or an ig.me link. It sits on top of the source's base [automation](https://chatfuel.com/docs/ai-features/automations): when a message matches your custom rule, the custom answers; everything else falls through to the base.

Custom automations are available on comment, ad, story, and link sources — for example Instagram post comments, Instagram ad comments, story replies, ig.me links, Facebook post comments, m.me links, WhatsApp ads, TikTok comments. Direct-message sources and Main bot don't take custom automations; to change behavior there, edit the source's own settings. You can have up to 30 custom automations per source.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the source you want the rule on — for example **Instagram** → post & reel comments.
3. Add a new automation and give it a name you'll recognize later — the keyword it reacts to or the campaign it serves, like &#x2A;"Price"&#x2A; or &#x2A;"Reels discount"*.
4. Set the targeting: [keywords, specific posts, ads, or stories](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads).
5. Set how it replies — on comment sources that's the **Public reply** under the comment and the **Private reply** sent to DMs.
6. Turn the automation on.

A new custom automation starts turned off and inherits its settings from the source's base — nothing goes live until you enable it.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"When someone comments 'price' on my reels, reply publicly and send the price list in DM"*

It creates the rule, names it, sets the keyword and replies, and asks before turning it on.

## Turning off vs. deleting [#turning-off-vs-deleting]

* **Turn off** when you might need the rule again — a paused promo, a seasonal campaign. The settings stay saved.
* **Delete** only when you're sure: deleting is permanent and removes the rule's targeting and reply settings with it.

You can rename a custom automation at any time. Base automations can't be renamed or deleted — they are each source's permanent catch-all.

> **Note:** If you turn off a source's base automation and have no enabled custom rules there, that source goes silent — nothing will answer. Check [which automation replies to what](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment) if you're not sure what's active.


---

---
title: "How to Enable 'Typing...' Animation"
description: "Turn on the \"Typing…\" indicator in Fuely AI → Automations → Message delays, or ask the AI Co-Worker to enable it for a channel or for the Main bot."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-enable-typing-animation
markdown_url: https://chatfuel.com/docs/ai-features/how-to-enable-typing-animation.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Enable 'Typing...' Animation

Turn on the "Typing…" indicator in Fuely AI → Automations → Message delays, or ask the AI Co-Worker to enable it for a channel or for the Main bot.

Want your customers to see a "Typing..." indicator while the AI prepares a reply? This is built into the [Message delays](https://chatfuel.com/docs/ai-features/how-to-add-a-pause-between-messages) setting — no separate toggle needed.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the automation for the channel or post you want (or **Main bot** to change it everywhere).
3. Open the **Message delays** setting and turn it on.

That's it. While the delay is active, customers see a "Typing..." animation in the chat — just like when a real person is composing a message. This makes the conversation feel more natural and lets customers know a reply is coming.

Like every setting on an [automation](https://chatfuel.com/docs/ai-features/automations), Message delays is inherited from Main bot unless you override it on a specific source.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Show a typing animation while the AI replies."*

It applies the change and confirms what it set.

## What the delay actually does [#what-the-delay-actually-does]

Message delays serve two purposes at once:

* **Bundles multiple messages** — if a customer sends several short messages in a row, the AI waits and responds to all of them together instead of replying to each one separately.
* **Shows a typing indicator** — during the wait, the customer sees "Typing..." so the chat doesn't feel silent.

There is no way to show the typing animation without the delay, and no way to have the delay without the animation — they are the same setting.


---

---
title: "How to Exclude Specific Contacts from AI"
description: "There is currently no way to prevent Fuely AI from responding to specific contacts."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-exclude-specific-contacts-from-ai
markdown_url: https://chatfuel.com/docs/ai-features/how-to-exclude-specific-contacts-from-ai.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Exclude Specific Contacts from AI

There is currently no way to prevent Fuely AI from responding to specific contacts.

## Short answer [#short-answer]

There is currently no way to prevent Fuely AI from responding to specific contacts. This feature is on our roadmap and we are actively working on it.

## What you can do right now [#what-you-can-do-right-now]

While contact-level exclusions aren't available yet, here are workarounds:

* **Take over the conversation manually.** When a contact you don't want AI to handle writes in, [assign yourself in Live Chat](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) to stop AI immediately and reply yourself.
* **Use Switch to human rules.** If the contact always mentions a specific keyword or topic, add a [Switch to human rule](https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules) on the relevant [automation](https://chatfuel.com/docs/ai-features/automations) to route those chats to a human automatically.

## What's coming [#whats-coming]

We plan to add the ability to exclude individual contacts from AI responses so that Fuely AI skips them entirely. Once available, you'll be able to mark specific contacts and AI will never reply to their messages.

We'll update this article when the feature launches.


---

---
title: "How to Make AI Send a Payment Link"
description: "You want the AI to share a payment link so customers can pay or book right inside the chat — without waiting for a team member to send it manually."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-make-ai-send-payment-link
markdown_url: https://chatfuel.com/docs/ai-features/how-to-make-ai-send-payment-link.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Make AI Send a Payment Link

You want the AI to share a payment link so customers can pay or book right inside the chat — without waiting for a team member to send it manually.

## The problem [#the-problem]

You want the AI to share a payment link so customers can pay or book right inside the chat — without waiting for a team member to send it manually.

## Set it up in Automations [#set-it-up-in-automations]

Payment-link behavior is written as an instruction in the [automation](https://chatfuel.com/docs/ai-features/automations) that handles the conversation. This tells Fuely AI when and how to share your payment link.

1. Go to **Fuely AI** → **Automations**.
2. Open the automation for the channel or source where customers pay (or **Main bot** to apply it everywhere).
3. Open the **Incoming messages** setting and scroll to **Additional instructions**.
4. Add a line like one of the examples below, replacing the URL with your actual payment link.

### Example instructions [#example-instructions]

**Simple — send the link when a customer is ready to pay:**

```
When the customer is ready to book or pay, send this payment link: https://your-payment-link.com
```

**With context — explain what happens next:**

```
When the customer confirms they want to proceed with the service, send the payment link: https://your-payment-link.com
After sending the link, ask the customer to let you know once the payment is complete.
```

**For booking deposits:**

```
After the customer picks a service and preferred time, ask them to pay the deposit using this link: https://your-payment-link.com
Once they confirm payment, connect them with a manager to finalize the booking.
```

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Have the AI send my Stripe link when a customer is ready to pay."*

It applies the change and confirms what it set. Keep in mind the AI only shares the link — it can't process the payment itself.

## Where to get your payment link [#where-to-get-your-payment-link]

Use whatever payment tool your business already works with — Stripe, PayPal, Square, or any other provider that gives you a shareable link. Paste that link directly into the instruction.

If you accept bank transfers or other non-link payment methods instead, you can describe the payment flow in your [knowledge base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) and tell the AI to [verify the receipt image](https://chatfuel.com/docs/payments/how-to-connect-payments) after the customer pays.

## Tips [#tips]

* Keep the instruction specific — tell the AI exactly *when* to send the link (after service selection, after confirmation, etc.), not just "send a payment link."
* If you offer multiple services with different prices, add the link to each relevant item's description in your Catalog, or use separate links per service in the instruction.
* If only one channel should send payment links, add the instruction on that channel's automation instead of Main bot.
* Test the full flow in the [Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) before going live to make sure the link appears at the right moment.


---

---
title: "How to Manage Uploaded Company Information"
description: "During registration, you may have uploaded files (PDFs, documents, images) with information about your business."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-manage-uploaded-company-information
markdown_url: https://chatfuel.com/docs/ai-features/how-to-manage-uploaded-company-information.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Manage Uploaded Company Information

During registration, you may have uploaded files (PDFs, documents, images) with information about your business.

During registration, you may have uploaded files (PDFs, documents, images) with information about your business. Chatfuel doesn't store those files as downloadable documents. Instead, the information from your files is extracted and saved directly into your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) — the structured data that powers [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai).

This means all the data from your uploaded files already lives in one of three Knowledge Base sections: **About**, **Catalog**, or **FAQ**. The Knowledge Base holds business facts — what the AI knows. How the AI behaves on each channel is configured separately, in [Automations](https://chatfuel.com/docs/ai-features/automations).

## Manage it in the Knowledge Base [#manage-it-in-the-knowledge-base]

### Where to find your data [#where-to-find-your-data]

To view the information that was extracted from your files, go to **Knowledge Base** in the left sidebar. Your data is organized across three sections:

* **About** — company name, contacts, business hours, address, website, payment options, and any additional business details.
* **Catalog** — your products or services with descriptions and pricing.
* **FAQ** — common questions and answers about your business.

Everything you uploaded during registration was distributed into these sections based on the type of information it contained.

### How to edit or update your data [#how-to-edit-or-update-your-data]

Since all information is stored as structured data in the Knowledge Base, you can edit it directly:

1. Go to **Knowledge Base** in the left sidebar.
2. Open the section you want to update (**About**, **Catalog**, or **FAQ**).
3. Edit any field — change text, update prices, fix business hours, or rewrite answers.
4. Changes are saved and take effect immediately. Fuely AI will start using the updated information in new conversations.

### How to delete information [#how-to-delete-information]

To remove information that was imported from your files:

1. Go to **Knowledge Base** in the left sidebar.
2. Find the entry you want to remove — whether it's a catalog item, an FAQ entry, or a detail in the About section.
3. Delete the entry or clear the field.

For example, if your uploaded file contained a product you no longer sell, find it in **Catalog** and delete that item.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Delete the old price list info from my knowledge base."*

*"Update my business hours in the knowledge base."*

It applies the change and confirms what it set.

## Can I re-upload files? [#can-i-re-upload-files]

You can add new information to the Knowledge Base at any time by editing the sections directly. There is no need to re-upload files — simply type or paste the updated information into the relevant section. This gives you more control over how your data is organized and what Fuely AI knows about your business.

## Tips [#tips]

* Review your Knowledge Base after registration to make sure the extracted data is accurate and complete.
* If something from your original files is missing, add it manually to the appropriate section.
* Keep your Knowledge Base up to date — Fuely AI can only work with the information you provide. See the [definitive setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide) for best practices on maintaining your Knowledge Base.


---

---
title: "How to Set Up AI Autobooking"
description: "Fuely AI can book appointments automatically — it handles the entire scheduling conversation with your customers and creates bookings in your Calendar without…"
canonical_url: https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking
markdown_url: https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Set Up AI Autobooking

Fuely AI can book appointments automatically — it handles the entire scheduling conversation with your customers and creates bookings in your Calendar without…

## Overview [#overview]

Fuely AI can book appointments automatically — it handles the entire scheduling conversation with your customers and creates bookings in your [Calendar](https://chatfuel.com/docs/calendar/calendar) without any manual work. To make this work, you need to set up your services, add your specialists with their availability, and then enable booking in your [automations](https://chatfuel.com/docs/ai-features/automations).

## Step 1: Set Up Your Services [#step-1-set-up-your-services]

AI needs to know what can be booked before it can schedule anything.

1. Go to **Your Business** → **Catalog** → **Services**.
2. Click **Add service**.
3. Fill in the service name, duration, and any other details.
4. Save when done.

Repeat for each service you offer. AI will use these service details when suggesting options to customers.

## Step 2: Add Specialists [#step-2-add-specialists]

Specialists are the people customers can book with. AI matches a specialist to each appointment based on the service and their availability.

1. Go to **Your Business** → **Specialists**.
2. Click **Add specialist**.

### 2.1 Enter General Info [#21-enter-general-info]

Fill in the specialist's name and any other profile details. This information may be shown to customers during the booking flow.

### 2.2 Assign Services [#22-assign-services]

Select which services this specialist can perform. A specialist will only appear as an option for bookings that match their assigned services.

### 2.3 Set Their Schedule [#23-set-their-schedule]

Define when the specialist is available:

1. Open the specialist's profile.
2. Go to the **Schedule** section.
3. Set their working days and hours.
4. Save.

AI will only offer time slots that fall within the specialist's schedule.

## Set it up in Automations [#set-it-up-in-automations]

Once your catalog and specialists are ready, turn on booking.

1. Go to **Fuely AI** → **Automations**.
2. Open the automation for the channel or post you want (or **Main bot** to enable booking everywhere).
3. Open the **Booking rules** setting and enable booking.
4. Choose how much of the flow the AI handles on its own — see [AI Autonomy Levels](https://chatfuel.com/docs/ai-features/ai-autonomy-levels).

Like every automation setting, Booking rules is inherited from Main bot unless you override it — so you can let the AI book everywhere, or only on some sources.

From this point, Fuely AI will handle incoming booking requests automatically — asking for the service, preferred time, and specialist, then confirming the appointment.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Set up appointment booking: I have two stylists working Tue–Sat."*

It applies the change — services, specialists, schedules, and booking rules — and confirms what it set.

## Testing Your Setup [#testing-your-setup]

1. Send a message to your connected channel asking to book an appointment, or use the automation's [Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) to simulate the conversation.
2. Follow the AI's prompts and complete a test booking.
3. Verify the appointment appears in your calendar or booking list.
4. Check that the specialist and time slot match what you configured.

If AI doesn't offer booking options, confirm that at least one specialist has services assigned and a schedule set.

## Important Notes [#important-notes]

* **At least one specialist required** — autobooking won't work if no specialists are added.
* **Service must be assigned** — a specialist with no assigned services won't appear during booking.
* **Schedule gaps** — if a specialist has no available slots for the requested time, AI will suggest the next available opening.
* **Human takeover** — agents can step into any booking conversation at any time. See [How to stop AI during active conversations](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations).
* **Autonomy control** — you can choose how much the AI handles on its own, from just collecting intent to fully autonomous booking, in the same Booking rules setting.


---

---
title: "How to set up AI: The definitive guide"
description: "Fuely AI is Chatfuel's AI agent designed to help service businesses respond instantly, book appointments, qualify leads, and route conversations to the right…"
canonical_url: https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide
markdown_url: https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to set up AI: The definitive guide

Fuely AI is Chatfuel's AI agent designed to help service businesses respond instantly, book appointments, qualify leads, and route conversations to the right…

## 1. What is Fuely AI (and why it matters) [#1-what-is-fuely-ai-and-why-it-matters]

Fuely AI is Chatfuel's AI agent designed to help service businesses respond instantly, [book appointments](https://chatfuel.com/docs/calendar/calendar), [qualify leads](https://chatfuel.com/docs/leads/leads), and route conversations to the right place. Instead of missing customer messages or relying on slow manual replies, Fuely AI acts as a smart assistant that engages prospects the moment they reach out.

The AI works from structured business data — company details, catalog of services or products, FAQ entries — plus the instructions you write that define how it should behave. For small and medium service providers, this means fewer missed opportunities, faster bookings, and higher-quality leads that arrive pre-qualified before a human ever joins the conversation.

Imagine a local beauty salon that normally struggles to keep up with WhatsApp inquiries. With Fuely AI, every new customer who writes in instantly receives a friendly greeting, can browse the salon's price list, and select an appointment time from available slots. If the client has a unique request — like needing a stylist with specific expertise — the AI gathers the details and seamlessly [passes the conversation to a team member](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations). The result is a smoother customer journey, less workload for staff, and more confirmed bookings without the back-and-forth delays.

## 2. Two equal ways to do everything in this guide [#2-two-equal-ways-to-do-everything-in-this-guide]

You can complete every step below in two ways: in the dashboard, or by asking the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) in chat. Both do the same thing — use whichever suits you. The Co-Worker can fill your Knowledge Base, build your catalog, write instructions, set handoff rules, and configure any automation. For example:

* *"Set up my AI assistant for my salon from scratch."*
* *"Add my services and FAQs, and hand chats to my team when someone asks for a human."*

Connecting a channel is one of the few steps the AI Co-Worker can't complete for you — authorization happens in your own Meta or TikTok account. The Co-Worker can take you straight to the right page: just ask. Test conversations are also yours to run — the Co-Worker can open the Test chat for you, but you play the customer.

## 3. How Fuely AI works: Channels, Knowledge Base, and Automations [#3-how-fuely-ai-works-channels-knowledge-base-and-automations]

Before diving into setup, it's helpful to understand the core building blocks of Fuely AI. Think of it as an employee who operates based on specific knowledge, instructions, and rules.

### Channels [#channels]

Fuely AI talks to customers on [WhatsApp](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp), [Instagram](https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram), [Facebook](https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook), TikTok, and your [website chat widget](https://chatfuel.com/docs/website/set-up-chat-widget-for-website). You can configure everything before a channel is connected — the setup is saved as a draft and goes live the moment the channel connects.

### Knowledge Base [#knowledge-base]

The [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) is where the AI learns about your business. It has three main sections:

* **About Company** — your business profile (name, contact details, hours, address, payment options, website, short description).
* **Catalog** — a focused list of services or products, each with a name, price, and availability toggle.
* **FAQ** — quick question–answer pairs for common customer queries.

### Automations [#automations]

[Automations](https://chatfuel.com/docs/ai-features/automations) control where the AI talks and how it behaves in each place. At **Fuely AI** → **Automations** you'll find **Main bot** at the top — its settings are the defaults for everything, and its toggle is the master switch for all AI — and below it an automation for every traffic source, grouped by channel: Instagram DMs, post & reel comments, story replies, Facebook Messenger and post comments, WhatsApp ads, TikTok comments, the website widget, and so on.

Every source's automation starts off (only Main bot is on by default), so activating AI on a channel means enabling that source's automation. On comment, ad, story, and link sources you can also add [custom automations](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) — named rules that react only to [specific posts, ads, or keywords](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads). When several rules could answer the same message, [a priority order decides which one replies](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment).

Each automation carries the same set of settings — message delays, [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups), booking rules, catalog images, and more — and every setting is either inherited from Main bot or overridden locally. Set things once on Main bot, then override only where a source needs different behavior.

A simple rule of thumb: &#x2A;*the Knowledge Base is what the AI knows; Automations are where and how it behaves.**

### Additional instructions (the AI's "brain") [#additional-instructions-the-ais-brain]

Every automation has an **Incoming messages** setting: whether the AI replies there, and the **Additional instructions** — the prompt that shapes how it talks. Write instructions on **Main bot** to apply them everywhere, or on a specific automation to shape just that source. This is where you define the AI's role, the steps it should follow, the output format, and example outputs.

> **Note:** If you used Fuely AI before: the separate Profile fields (agent name, chat language, custom greeting, fallback message, message length, emoji frequency) no longer exist. All of that is now written as plain instructions in **Additional instructions*&#x2A; — e.g. &#x2A;"Your name is Sofia. Speak Spanish. Keep messages under 2 lines and use at most one emoji per message."*

### Handoff to humans [#handoff-to-humans]

If a customer explicitly asks for a real person, or if a request falls outside the catalog, Fuely AI routes the conversation to your team. This is controlled by the **Switch to human** setting on each automation. Separately, the **When AI replies** setting decides whether the AI answers at all — always, or only outside your working hours.

In short, Fuely AI works by combining structured business data, clear instructions, and per-source automations so your assistant knows when to answer, when to book, and when to hand over.

## 4. Quick start checklist [#4-quick-start-checklist]

Before you configure Fuely AI in detail, here's a simple checklist to get your first assistant live:

* [ ] Connect your channel — WhatsApp, Instagram, Facebook, TikTok, or the website widget.
* [ ] Fill in "About Company" — add business name, email, phone, hours, address, payment methods, and website.
* [ ] Build your Catalog — add your main services or products (name + price + availability). Keep it under \~50 items to keep the AI focused.
* [ ] Write 10–25 FAQ entries — capture the most common customer questions. Keep answers short (1–3 lines each).
* [ ] Write **Additional instructions** on Main bot — define the assistant's task steps, output format, and example outputs. Use friendly style (short messages, numbered options, clear confirmations).
* [ ] Enable the automations for the sources you want the AI to cover — every source starts off.
* [ ] Configure **Switch to human** rules — decide when the AI should escalate: human requested, sensitive or complex cases.
* [ ] Test in the Test chat — run 3–5 typical scenarios: booking a service, asking a FAQ, requesting a human.
* [ ] Go live and monitor — watch early conversations. Add new FAQs and refine instructions as you go.

## 5. Step-by-step setup [#5-step-by-step-setup]

Now that you have the big picture, let's go through the setup in detail. Each part of the Knowledge Base plays a specific role, and keeping them clean ensures Fuely AI works reliably.

### 5.1 About Company [#51-about-company]

Your official business profile. This is where the AI gets essential company info.

**What to include:**

* Company name
* Email and phone number
* Opening hours
* Address
* Website
* Payment methods
* Short "About" description

**Best practices:**

* Keep this section factual and concise.
* Don't overload it with services, FAQs, or sales copy — that belongs in the Catalog or FAQ.
* Remember: About Company = who you are, not everything you do.

### 5.2 Catalog [#52-catalog]

A structured list of your services or products. Each item has a name, price, [images](https://chatfuel.com/docs/catalog/how-to-attach-photos-to-services-or-products), and availability.

**What to include:**

* Core services (e.g., "Haircut – $30")
* Packages or promotions (optional)
* Only what you actually want customers to book or ask about

**Best practices:**

* Stay focused: under \~50 items for clarity.
* One service = one item (avoid duplicates).
* Never paste your catalog into Additional instructions or About Company — it wastes token space and breaks AI context.

### 5.3 FAQ [#53-faq]

The "ready-to-go answers" section for your most common questions.

**What to include:**

* Shipping/delivery details
* Prices or deposits (if not already in Catalog)
* Booking and cancellation rules
* Location and parking details

**Best practices:**

* Keep answers short (1–3 lines).
* Phrase questions exactly as customers ask them.
* Don't add long explanations; let the AI expand if needed.
* Never copy FAQ into Additional instructions or About Company — duplication makes the assistant inconsistent.

### 5.4 Additional instructions [#54-additional-instructions]

The master instruction set that tells the AI how to behave. This is where you define its role, tasks, output style, and example responses.

**Where to write them:**

1. Go to **Fuely AI** → **Automations**.
2. Open **Main bot** (to shape the AI everywhere) or a specific automation (to shape one source).
3. Open the **Incoming messages** setting and fill in **Additional instructions**.

**What to include:**

* Role: "You are a WhatsApp assistant for a \[business type]."
* Task: Step-by-step flow (greet → collect info → offer options → confirm).
* Output format: WhatsApp-friendly (short, numbered options, emojis optional).
* Example output: A real sample chat message so the AI mirrors the style.

**Best practices:**

* Keep instructions focused on behavior and format, not raw data.
* Don't paste Catalog or FAQ here (they already live in the Knowledge Base).
* Use the Role → Task → Output Format → Example Output skeleton for clarity.
* Write on Main bot first; override on a specific automation only when that source really needs different behavior.

**Together, About Company, Catalog, FAQ, and Additional instructions form the AI's complete context:**

* About Company = your identity
* Catalog = what you offer
* FAQ = quick answers
* Additional instructions = how the AI talks and acts

## 6. Writing prompts that work [#6-writing-prompts-that-work]

Additional instructions are the assistant's brain. A sloppy prompt makes your AI vague, repetitive, or too wordy. A clear prompt makes it sharp, predictable, and aligned with your business.

### 6.1 Bad vs. good prompts [#61-bad-vs-good-prompts]

**Bad prompt:**

```
Answer customer questions and be nice.
```

Problems:

* Too vague → AI may over-explain.
* No structure → inconsistent replies.
* No style → doesn't sound like WhatsApp.

**Good prompt:**

```
### Task
1. Greet the customer warmly.
2. Ask what service they want.
3. Ask when customer wants to come.
4. Confirm the booking.

### Output Format
- Short WhatsApp-style messages (max 2 lines each).
- Always offer numbered options.
- Always confirm before finishing.

#### Example Output
- Welcome to our salon!
- Which service would you like to book today? 💇 Haircut, 💅 Manicure
  or 💆 Spa?
- When do you want to come?
- Got it — you'd like [service] on [date and time]. Do I understand correctly
  that everything is fine, and I can invite the manager to confirm the meeting?
```

Why it works: clear steps, WhatsApp style, sample message.

### 6.2 Multi-step flows & one-shot examples [#62-multi-step-flows--one-shot-examples]

For flows that need reasoning (like lead qualification), break them into steps. Always show the expected answer style with an example output.

**Example: Real Estate Lead Capture**

```
### Role
You are a WhatsApp assistant for a real estate agency.

### Task
1. Greet the lead.
2. Ask which property they're interested in.
3. Ask for budget range.
4. Ask when they'd like to schedule a viewing.
5. Confirm and offer to connect with an agent.

### Output Format
- Each step = one short WhatsApp message.
- Use numbered options when possible.
- Confirm details in the end.

#### Example Output
- 👋 Hi, thanks for reaching out to City Realty!
  Which property are you interested in?
  1) Apartment on Main Street
  2) House in Green Valley
  3) New downtown condos

- (After reply) Great! What's your budget range?
```

### 6.3 Prompt skeleton [#63-prompt-skeleton]

Here's a reusable template for any business:

```
### Task
1. Greet the customer.
2. Collect needed details (service/product, time, preferences).
3. Ask when customer wants to come.
4. Confirm and offer to connect with a manager.

### Output Format
- WhatsApp-style messages (max 2 lines).
- Numbered options for easy replies.
- End every message with the next step.

#### Example Output
- 👋 Hi! Thanks for contacting <Business Name>.
  How can I help today?
  1) 📅 Book a service
  2) 💳 Prices
  3) 👩‍💼 Talk to a team member
```

The key takeaway:

* **Bad prompts = vague and wordy.**
* **Good prompts = task steps, output rules, example output.**

This ensures Fuely AI behaves consistently across every chat.

## 7. Handover to humans: Switch to human [#7-handover-to-humans-switch-to-human]

AI is powerful, but it should never try to handle everything. Fuely AI gives you fine control over when to escalate a conversation and who it should go to. This is managed in the **Switch to human** setting on each automation — set it on Main bot for one shared behavior everywhere, or override it per source.

### 7.1 Rules (when to escalate) [#71-rules-when-to-escalate]

You can define up to 20 rules — the conditions that trigger a handover. Common ones include:

* Customer explicitly requests a real person ("I need to speak with someone," "Can I talk to a manager?").
* Customer's request falls outside AI's scope (refunds, legal/medical/financial issues).
* Customer provides confusing input several times in a row.

### 7.2 Where handed-over chats land [#72-where-handed-over-chats-land]

By default, handed-over chats go to your shared team inbox, where anyone on the [team](https://chatfuel.com/docs/account/how-to-add-teammates) can pick them up. Each rule can instead route the chat to a specific person — for example, sales questions to Seller A, complaints to Support. See [how to set up chat assignment rules](https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules).

**Best practice:** For time-sensitive topics, assign a responsible teammate in the rule so the chat has a clear owner instead of waiting in the shared inbox.

### 7.3 Deciding when the AI replies at all [#73-deciding-when-the-ai-replies-at-all]

Separate from handoff rules, the **When AI replies** setting controls whether the AI answers in the first place. It has two options:

* **Always** — the AI replies to every message (default).
* **Outside working hours** — the AI replies only when your business is closed, [based on your business hours](https://chatfuel.com/docs/ai-features/how-to-configure-working-hours); during the workday your team handles chats.

There is no "never reply" option. If you want a channel handled entirely by your team, turn that channel's automation off in **Fuely AI** → **Automations** — a disabled automation stays silent, and its settings are kept for when you switch it back on.

### 7.4 Where prompt writing fits [#74-where-prompt-writing-fits]

* **Don't write prompts inside Switch to human rules.** They are purely for escalation logic. Prompts (Role, Task, Output Format, Example Output) belong in Additional instructions.
* **Why:** Mixing prompts into Switch to human creates confusion. The AI will treat them as escalation conditions rather than behavior guidelines.

Think of it this way:

* **Additional instructions** = how the AI should talk.
* **Switch to human** = when the AI should stop talking.

### 7.5 Best practices recap [#75-best-practices-recap]

* Keep escalation triggers specific ("I want to speak to a person").
* Assign time-sensitive rules to the right teammate; let the shared inbox catch the rest.
* Write prompts only in Additional instructions, not here.

With rules and assignees set correctly, your AI knows exactly when to handle a customer and when to gracefully hand off.

## 8. Testing & iteration: making your assistant smarter [#8-testing--iteration-making-your-assistant-smarter]

Launching your assistant isn't the end — it's the start of a cycle of testing, learning, and improving. Fuely AI makes this simple with the **Test chat** and real conversations.

### 8.1 Use the Test chat before going live [#81-use-the-test-chat-before-going-live]

Every automation has a **Test chat** — a sidebar that [simulates a conversation with exactly that automation's settings](https://chatfuel.com/docs/ai-features/how-to-test-your-automation). Open the automation you want to check (a channel's DMs, a comment rule for a specific post, or Main bot) and write as if you were the customer. This is the safest way to check if:

* Messages are short and clear (WhatsApp style).
* FAQs and Catalog answers show up correctly.
* Handoff rules trigger when they should.
* The source you're testing behaves the way you set it — including any settings you overrode there.

### 8.2 Core flows to test [#82-core-flows-to-test]

1. **Booking a service/product** — Can the AI guide the user step by step? Does it confirm before finishing?
2. **Answering a FAQ** — Does the answer match what you wrote? Is it short (1–3 lines) or too long?
3. **Human request** — Does "I want to talk to a real person" trigger escalation?
4. **Edge cases** — Typos ("haicut" instead of "haircut"), incomplete input ("Tuesday" with no time), repeated vague answers.

### 8.3 Iteration cycle [#83-iteration-cycle]

1. **Test** with the Test chat and real conversations.
2. **Spot issues:**
   * AI says "I'm not sure" → add to FAQ.
   * AI loops → simplify task steps in Additional instructions.
   * AI gives too-long answers → tighten Output Format.
3. **Update the Knowledge Base** (About, Catalog, FAQ).
4. **Refine instructions** (add clear steps, examples).
5. **Re-test.**

This cycle is continuous: every real customer conversation is free training data for improving your assistant.

### 8.4 Best practices [#84-best-practices]

* **Start small:** Launch with your top 5 services + 10 FAQs. Add more only after the basics work.
* **Keep messages human:** If it feels like email, rewrite it.
* **Review handoffs weekly:** Make sure escalation happens at the right moments.
* **Update monthly:** Hours, prices, services, FAQs.

By running quick tests and iterating, you ensure Fuely AI feels less like a "bot" and more like a real team assistant — fast, reliable, and human-friendly.

## 9. Industry templates [#9-industry-templates]

These ready-to-use prompts give you a head start. Just paste them into **Additional instructions** (in the Incoming messages setting on Main bot, or on the automation you're shaping) and adapt details to your business.

### 9.1 Salon / Beauty Booking Assistant [#91-salon--beauty-booking-assistant]

```
### Task
1. Greet the customer.
2. Ask what service they want (haircut, manicure, spa).
3. Ask when they would like to come.
4. Confirm and offer to connect with a manager.

### Output Format
- Short WhatsApp messages (max 2 lines).
- Use numbered options for service selection.
- Always confirm before escalating.

#### Example Output
👋 Hi Anna! Thanks for reaching out to Glamour Salon.
Which service would you like today?
1) 💇 Haircut
2) 💅 Manicure
3) 💆 Spa

(After reply) Great! When would you like to come?
(After reply) Perfect, I'll connect you with our manager to confirm your booking ✅
```

### 9.2 Clinic / Healthcare Assistant [#92-clinic--healthcare-assistant]

```
### Task
1. Collect the patient's name.
2. Ask which doctor or specialty they want.
3. Ask when they'd like to visit.
4. Confirm and connect with a manager.

### Output Format
- Each step = one short WhatsApp message.
- Numbered options for specialties.
- Always confirm before escalating.

#### Example Output
👋 Welcome to City Health Clinic. May I have your full name, please?
(After reply) Thank you, [Name]. Which service do you need?
1) 🦷 Dentist
2) 👩‍⚕️ General Practitioner
3) 👶 Pediatrician

(After reply) When would you like to come in?
(After reply) Got it ✅ I'll connect you with our team to confirm your appointment.
```

### 9.3 Real Estate Lead Assistant [#93-real-estate-lead-assistant]

```
### Task
1. Greet the customer.
2. Ask which property they're interested in.
3. Ask for their budget.
4. Ask when they'd like to view it.
5. Confirm and connect with a manager.

### Output Format
- Short WhatsApp-style steps.
- Numbered options for properties.
- Confirm before escalating.

#### Example Output
👋 Hi! Thanks for contacting City Realty. Which property would you like to see?
1) Apartment in La Candelaria ($500)
2) House in Altavista ($120,000)
3) Studio in Sabana Grande ($350)

(After reply) Great! What's your budget range?
(After reply) When would you like to schedule a viewing?
(After reply) Perfect ✅ I'll connect you with our manager to confirm.
```

### 9.4 Fitness / Gym Assistant [#94-fitness--gym-assistant]

```
### Task
1. Greet the customer.
2. Ask what class or training they're interested in.
3. Ask when they'd like to come.
4. Confirm and connect with a manager.

### Output Format
- Short WhatsApp replies.
- Numbered options for classes.
- Always confirm before escalating.

#### Example Output
💪 Welcome to PowerFit Studio!
Which option interests you today?
1) 📅 Group classes
2) 🏋️ Personal training
3) 🎟 Free trial

(After reply) Great! When would you like to come?
(After reply) Got it ✅ I'll connect you with our team to confirm your spot.
```

### 9.5 Delivery / Dispatch Assistant [#95-delivery--dispatch-assistant]

```
### Task
1. Ask for the pickup address.
2. Ask for the drop-off address.
3. Ask when the delivery is needed.
4. Confirm and connect with a manager.

### Output Format
- Each step = one short WhatsApp message.
- Confirm before escalating.

#### Example Output
🚚 Hi! Thanks for choosing FastGo Delivery.
Please share your pickup address.

(After reply) Got it ✅ Now, what's the drop-off address?
(After reply) When do you need the delivery?
(After reply) Perfect, I'll connect you with our dispatcher to confirm.
```

This way, Fuely AI collects all key details (service/product + time) but never pretends to know schedules or availability. The human manager always does the final confirmation.

## 10. Maintenance: keeping your assistant fresh [#10-maintenance-keeping-your-assistant-fresh]

Launching Fuely AI is just the beginning. To stay effective, the assistant needs regular updates. A business that updates hours, prices, and answers monthly will feel trustworthy. A business that leaves outdated info will quickly frustrate customers.

### 10.1 What to update regularly [#101-what-to-update-regularly]

1. **Catalog** — Add or remove services/products as your business changes. Update prices if they change — AI should never invent them.
2. **FAQ** — Add new questions that come up in chats. Remove irrelevant or outdated answers. Keep answers short (1–3 lines).
3. **Additional instructions** — Review your Role → Task → Output Format → Example Output. Adjust tone, flow, or escalation steps if needed.
4. **Automations** — Pause custom rules for finished campaigns, add rules for new posts or ads, enable new sources as you expand to more channels.

### 10.2 Using real conversations to improve [#102-using-real-conversations-to-improve]

* Review chats weekly.
* Spot where AI says "I'm not sure" → add that question to FAQ.
* Notice long back-and-forth before handoff → simplify the Task in your instructions.
* See repeated typos (e.g., "haicut") → add synonyms or alternate phrasing in FAQ.

### 10.3 Iteration rhythm [#103-iteration-rhythm]

* **Weekly:** Review conversations for gaps. Adjust FAQs, instructions, or escalation rules.
* **Monthly:** Update Catalog. Add new services or remove inactive ones.
* **Quarterly:** Review the entire instruction structure. Check tone of voice consistency. Run test scenarios in the Test chat.

### 10.4 Best practices [#104-best-practices]

* **Start lean:** 10–20 FAQ entries, 5–15 Catalog items. Expand gradually.
* **Avoid duplication:** Never paste FAQ or Catalog into Additional instructions or About Company.
* **Keep it WhatsApp-sized:** Rewrite long explanations into short, friendly messages.
* **Train by example:** If you want a certain style, add an Example Output.

### 10.5 Maintenance mindset [#105-maintenance-mindset]

Think of Fuely AI as a new team member:

* It gets better the more guidance you give it.
* It needs fresh info to stay useful.
* It can't guess — so keep its Knowledge Base clean and updated.

## 11. Troubleshooting: common pitfalls & how to fix them [#11-troubleshooting-common-pitfalls--how-to-fix-them]

Even a well-built assistant may run into issues. Here are the most common ones you'll see, why they happen, and how to solve them.

| Problem                                              | Likely Cause                                                | How to Fix                                                                                  |
| ---------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| AI doesn't reply on one channel or source            | That source's automation is off — every source starts off   | Enable the source's automation in Fuely AI → Automations                                    |
| AI doesn't reply anywhere                            | Main bot is toggled off — it's the master switch for all AI | Turn Main bot back on                                                                       |
| AI is silent during the day but replies at night     | **When AI replies** is set to **Outside working hours**     | Switch it to **Always** (or keep it — that may be exactly what you want)                    |
| Wrong reply under a specific post or ad              | A custom automation outranks the one you expected           | Check the priority order and adjust the rules' targeting and keywords                       |
| AI loops or repeats questions                        | Additional instructions are unclear or too long             | Rewrite the Task into short, numbered steps; add an Example Output                          |
| AI says "I'm not sure" too often                     | Missing FAQ or Catalog item                                 | Add the missing question/answer or service to the Knowledge Base                            |
| AI gives long paragraphs                             | No Output Format in the instructions                        | Add "Short WhatsApp-style messages, max 2 lines" to Output Format                           |
| AI promises unavailable times                        | Instructions incorrectly include availability               | Remove time slots from the instructions → instead ask "When would you like to come?"        |
| AI makes up prices or discounts                      | Price info not in Catalog or FAQ                            | Add correct prices to Catalog; never rely on AI memory                                      |
| Escalation doesn't happen when user asks for a human | No Switch to human rules set                                | Add rules in the **Switch to human** setting with keywords like "human," "agent," "manager" |
| Handoffs sit unclaimed in the shared inbox           | Rules don't assign a specific teammate                      | Assign time-sensitive rules to a person so each chat has an owner                           |
| AI mixes Catalog/FAQ with its instructions           | Duplicate info pasted into Additional instructions or About | Remove Catalog/FAQ from the instructions; keep them only in the Knowledge Base              |
| AI ignores customer typos                            | FAQ only includes one phrasing                              | Add alternate phrasings or synonyms into FAQ questions                                      |
| AI too formal or robotic                             | Tone of voice not defined in the instructions               | Add a style guide to Output Format (e.g. "friendly, warm, short messages")                  |
| AI confirms bookings instead of manager              | Instructions don't specify escalation                       | Rewrite the Task: collect details → ask for preferred time → confirm → escalate             |

### 11.1 General debugging flow [#111-general-debugging-flow]

When something feels off:

1. **Check the automation** — is the source's automation on? Is Main bot on? Is **When AI replies** set the way you expect? Is another rule outranking this one?
2. **Check the Knowledge Base** (Catalog, FAQ, About).
3. **Check Additional instructions** (clear steps + output style?).
4. **Check Switch to human** (rules + assignees).
5. **Test in the Test chat** to replicate the problem, fix, and re-test until the flow feels natural.

With these fixes, most issues can be solved in minutes.

## 12. Checklists [#12-checklists]

### 12.1 Launch checklist [#121-launch-checklist]

Before going live, confirm you've done the following:

* [ ] Connected your channel (WhatsApp, Instagram, Facebook, TikTok, or website)
* [ ] Filled out About Company with correct hours, address, and contacts
* [ ] Built a Catalog (≤50 items, accurate prices)
* [ ] Added 10–25 FAQ entries (clear, short answers)
* [ ] Wrote Additional instructions with Role → Task → Output Format → Example Output
* [ ] Enabled the automations for every source you want the AI to cover
* [ ] Configured Switch to human rules and assigned owners where needed
* [ ] Chose the right **When AI replies** option (Always, or Outside working hours with business hours filled in)
* [ ] Tested flows in the Test chat: booking, FAQ, after-hours, handoff
* [ ] Drafted after-hours and escalation messages

### 12.2 Update checklist [#122-update-checklist]

Run this monthly or quarterly:

* [ ] Update business hours (holidays, seasonal changes)
* [ ] Refresh Catalog (new services, removed items, updated prices)
* [ ] Add new FAQs based on recent chats
* [ ] Remove irrelevant or outdated FAQs
* [ ] Review Additional instructions for clarity and tone consistency
* [ ] Check Switch to human rules: still correct? Assigned to right people?
* [ ] Review which automations are enabled: pause finished campaigns, cover new posts and ads
* [ ] Test the Test chat again with 3–5 flows
* [ ] Review customer feedback and adjust messages accordingly

With these checklists your team can launch quickly, stay consistent, and maintain a professional AI assistant without confusion.


---

---
title: "How to Set Up Automation for Specific Posts or Ads"
description: "Point a custom automation at selected posts, ads, stories or an ig.me/m.me link so that content gets its own AI instructions, keywords and replies."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads
markdown_url: https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Set Up Automation for Specific Posts or Ads

Point a custom automation at selected posts, ads, stories or an ig.me/m.me link so that content gets its own AI instructions, keywords and replies.

You can point a [custom automation](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) at specific content — selected posts, ads, stories, or an ig.me or m.me link — so different content gets different treatment: one reply style for your launch post, another for a discount reel, a dedicated greeting for leads from a particular ad campaign.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the source the content belongs to — Instagram post & reel comments, ad comments, story replies, ig.me links, [Facebook posts](https://chatfuel.com/docs/facebook/facebook-autoreply), m.me links, or a click-to-ad source on WhatsApp, Instagram, Facebook, or TikTok.
3. Create a custom automation (or open an existing one) and set its targeting:
   * **List of posts** — pick the posts or reels the rule applies to.
   * **List of ads** — enter the ad. Paste the ad ID from Meta Ads Manager, or simply paste the full Ads Manager URL — Chatfuel extracts the ad ID from the link automatically.
   * **List of stories** — pick the stories.
   * **Ref links** — for ig.me and m.me links, so each link can start a different conversation.
4. Optionally add **keywords** to narrow it further — for example, react only to comments containing "price" on those posts.
5. Set the replies and turn the rule on.

You can target up to 50 posts, ads, or stories per rule.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"For comments on this ad — \[paste the Ads Manager link] — reply publicly with a thank-you and DM the catalog"*

It creates the rule targeted at that ad and confirms what it set.

## What happens to everything else [#what-happens-to-everything-else]

Content you didn't target falls through the [priority order](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment): first any general custom rules on the source, then the base automation. So a post-specific rule never turns off replies elsewhere — it just takes over its own posts.

> **Note:** A rule targeted at specific content beats every general rule on that content — even a general rule with a more precise keyword.


---

---
title: "How to Set Up Chat Assignment Rules"
description: "Assignment rules let Fuely AI automatically route chats to the right team member based on conditions you define — like the customer's city, language, or any…"
canonical_url: https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules
markdown_url: https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Set Up Chat Assignment Rules

Assignment rules let Fuely AI automatically route chats to the right team member based on conditions you define — like the customer's city, language, or any…

Assignment rules let Fuely AI automatically route chats to the right team member based on conditions you define — like the customer's city, language, or any other detail from the conversation. They live in the **Switch to human** setting on each [automation](https://chatfuel.com/docs/ai-features/automations).

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the automation for the channel or post you want (or **Main bot** to change it everywhere).
3. Open the **Switch to human** setting.
4. Add your rules — each rule is a condition, and you can assign a specific teammate to it. Up to **20 rules** per automation.

By default, escalated chats go to the shared team inbox, where any teammate can pick them up. Assign a teammate on a rule when you want those chats routed to a specific person instead.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"When a lead says they're from Bogotá, assign the chat to Seller A."*

*"Route Spanish-speaking customers to Maria, everyone else to me."*

It applies the change and confirms what it set. You can change or remove rules later the same way.

## How rules work [#how-rules-work]

Each rule is a condition that tells Fuely AI when to hand a chat to your team, and optionally to whom. When a customer matches a condition, the chat is switched to the teammate you specified for that rule — or to the shared team inbox if no one is assigned.

For example:

* If the lead says they are from **Bogotá** → assign to **Seller A**
* If the lead says they are from **Medellín** → assign to **Seller B**

Fuely AI reads the conversation and checks customer details against your rules, then routes the chat accordingly.

## Tips [#tips]

* Make your conditions clear and specific so Fuely AI can match them reliably.
* Set the rules on **Main bot** to apply them everywhere, or override **Switch to human** on one source if that channel needs different routing.
* Make sure your [knowledge base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) includes relevant information so Fuely AI can gather the details it needs (like city or product interest) before applying rules.
* For how assignment works once a chat reaches your team, see [how chat assignment works](https://chatfuel.com/docs/leads/how-does-chat-assignment-work).


---

---
title: "How to Set Up Follow-Ups"
description: "Fuely AI can automatically send follow-up messages to clients who haven't responded."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups
markdown_url: https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Set Up Follow-Ups

Fuely AI can automatically send follow-up messages to clients who haven't responded.

Fuely AI can automatically send follow-up messages to clients who haven't responded. This keeps conversations moving without you having to remember to check back manually.

Follow-ups are a setting on each [automation](https://chatfuel.com/docs/ai-features/automations): enable them everywhere at once on **Main bot**, or only for some sources — say, Instagram DMs but not comments. You can also adjust the follow-up message prompt per automation, so ad leads and regular DMs get nudged differently.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the automation for the channel or post you want (or **Main bot** to change it everywhere).
3. Open the **Follow-ups** setting and turn it on.
4. Optionally, edit the follow-up message prompt to shape what the reminder says.

Like every automation setting, Follow-ups is inherited from Main bot unless you override it — so a source you don't touch keeps following Main bot's behavior.

Once enabled, Fuely AI will automatically follow up with clients who stop responding, helping you re-engage leads and close more conversations. To reach contacts whose messaging window has already closed, use [re-engage messages](https://chatfuel.com/docs/whatsapp/how-to-create-re-engage-messages) instead.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Turn on follow-ups for clients who stop responding — but only in Instagram DMs."*

It applies the change and confirms what it set.

## When Follow-Ups Are Sent [#when-follow-ups-are-sent]

Follow-ups are triggered when a client goes quiet after an active conversation. Fuely AI waits a set period before sending a reminder message to nudge the client back into the conversation.

## Important Notes [#important-notes]

* **Works across channels** — follow-ups apply to conversations on any connected messaging platform.
* **Respects messaging limits** — Fuely AI won't send follow-ups outside of allowed messaging windows. On WhatsApp, for example, follow-ups must fall within the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window).
* **Human takeover** — agents can [stop AI and take over the conversation](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) at any time, including during follow-up sequences.


---

---
title: "How to Set Up Fuely AI Profile"
description: "Fuely AI needs a persona to talk to customers well — a name, a language, a tone, a way of greeting people."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-set-up-fuely-ai-profile
markdown_url: https://chatfuel.com/docs/ai-features/how-to-set-up-fuely-ai-profile.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Set Up Fuely AI Profile

Fuely AI needs a persona to talk to customers well — a name, a language, a tone, a way of greeting people.

[Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) needs a persona to talk to customers well — a name, a language, a tone, a way of greeting people. There is no longer a separate Profile page for this. Everything that shaped the AI's persona now lives in **Additional instructions**, part of the **Incoming messages** setting on each [automation](https://chatfuel.com/docs/ai-features/automations). Write the instructions on **Main bot** to shape the persona everywhere, or on one source's automation to give that channel its own voice.

## Where the old Profile fields went [#where-the-old-profile-fields-went]

If you used the old Profile page, here is where each field lives now:

| Old Profile field    | Where it is now                                                                                            |
| -------------------- | ---------------------------------------------------------------------------------------------------------- |
| Name                 | **Additional instructions** — tell the AI what to call itself                                              |
| Language             | **Additional instructions** — tell the AI what language to speak                                           |
| Welcome message      | **Additional instructions** — describe how to greet new customers                                          |
| Fallback message     | **Additional instructions** — say what to answer when it doesn't know                                      |
| Length of messages   | **Additional instructions** — e.g. "keep replies short"                                                    |
| Emoji usage          | **Additional instructions** — e.g. "use at most one emoji per message"                                     |
| Message delay        | The [**Message delays** setting](https://chatfuel.com/docs/ai-features/how-to-add-a-pause-between-messages) on each automation |
| Respond to customers | The [**When AI replies** setting](https://chatfuel.com/docs/ai-features/how-to-configure-working-hours) on each automation     |

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open **Main bot** to set the persona everywhere, or the automation for one channel or post to change it just there.
3. Open the **Incoming messages** setting and edit **Additional instructions**.
4. Describe the persona in plain language. One block can cover everything the old Profile fields did:

> *Your name is Sofia. Speak Spanish. Keep replies short and friendly, with at most one emoji per message. Greet new customers with: "¡Hola! Soy Sofia 👋 ¿En qué te puedo ayudar hoy?" If you don't know the answer, say you'll check with the team and offer to connect them with a human.*

Anything you want the AI to do or avoid — tone, phrases, topics, rules — goes in the same place.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Rename the AI to Sofia, make it speak Spanish, and use fewer emojis."*

It applies the change and confirms what it set.

> **Note:** Additional instructions shape how the AI *behaves*. What it *knows* — your company info, FAQ, catalog, working hours — lives in the [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base). For the full setup walkthrough, see the [definitive AI setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide).


---

---
title: "How to Set Up Knowledge Base"
description: "Think of the Knowledge Base as Fuely AI's brain. Without it, Fuely won't know anything about your business — your products, services, working hours, or how to…"
canonical_url: https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base
markdown_url: https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Set Up Knowledge Base

Think of the Knowledge Base as Fuely AI's brain. Without it, Fuely won't know anything about your business — your products, services, working hours, or how to…

Think of the Knowledge Base as [Fuely AI's](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) brain. Without it, Fuely won't know anything about your business — your products, services, working hours, or how to help customers. The more information you add here, the better Fuely can help your customers.

Different jobs need different sections:

* Want Fuely to recommend products? Fill in your **Catalog**
* Need help with bookings? Set up **Orders and bookings**
* Looking for customer support? Add your **FAQ**

You can start with just one section if you want to test one thing first. But remember — the more Fuely knows about your business, the better it can help your customers. So it's worth taking time to fill in as much as you can.

The Knowledge Base holds your business facts — what the AI knows. How and where the AI behaves on each channel (tone, greetings, reply rules) lives in [Automations](https://chatfuel.com/docs/ai-features/automations).

## Set it up in the Knowledge Base [#set-it-up-in-the-knowledge-base]

Open **Knowledge Base** in the left sidebar and fill in the sections below.

### About [#about]

This is where you tell Fuely AI the basics about your business. Fill in as much as you can — this information helps Fuely answer questions about your company, location, and business hours accurately.

| Field           | What to add                                                                                 |
| --------------- | ------------------------------------------------------------------------------------------- |
| Company name    | Your business name as customers know it                                                     |
| Email           | Address customers can reach you at                                                          |
| Phone           | Number they can contact you at                                                              |
| Business hours  | When you're open (like Mon–Fri, 9–19)                                                       |
| Address         | Your physical location if you have one                                                      |
| Website         | Your company website                                                                        |
| Additional info | Special features of your business, return policies, anything else customers often ask about |

**Orders and bookings**

| Field                | What to add                                                                                                        |
| -------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Placing orders       | How customers can order (like via phone, WhatsApp, or Instagram)                                                   |
| Payment options      | Available payment methods (like PayPal, Stripe, credit card)                                                       |
| Delivery             | Shipping options                                                                                                   |
| Booking requirements | What you need from customers to complete a booking (like address, contact info, product selection, payment method) |
| How to book          | Where customers can make bookings (like your booking link or website)                                              |

### Catalog [#catalog]

Catalog is where you add your products or services. Keep your catalog under 50 items — this helps Fuely AI give more accurate recommendations to your customers.

Catalog is **required** if you want the AI to recommend products or [book appointments](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking).

For each product you can add:

| Field              | What to add                                                                                                                                                                                                 |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Product or service | Name of what you're selling (like Premium T-shirt)                                                                                                                                                          |
| Description        | Details about your product or service, including: what it is and what it's made of, available options (sizes, colors, etc.), pricing, what's included, benefits, characteristics, wait time or availability |
| Photos             | Up to 10 images per item — the AI will [send these photos](https://chatfuel.com/docs/catalog/how-to-attach-photos-to-services-or-products) to customers when they ask about the product or service                              |

### FAQ [#faq]

This is where you add common questions and answers about your business. The more questions you add, the better Fuely AI can help your customers with basic inquiries.

FAQ is **required** if you want the AI to handle customer support questions.

For each question you can add:

| Field    | What to add                                                                                                                                                                                                                                                                                                                        |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Question | Common customer questions about: specific use cases (Can I order a custom design?), special situations (What happens if I miss my appointment?), policies beyond basics (Do you offer student discounts?), process details (How long do changes in order usually take?), common troubleshooting (What if my size is out of stock?) |
| Answer   | Clear and complete answers that Fuely can use to help customers                                                                                                                                                                                                                                                                    |

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Add my business hours, address, and top 10 FAQs to the knowledge base."*

*"Add a new service to my catalog: gel manicure, $35, 45 minutes."*

It applies the change and confirms what it set.

## Tips [#tips]

* Start with the sections that match what you want the AI to do first.
* Add as much detail as you can — it helps Fuely give better answers.
* Keep your catalog under 50 items for best results.


---

---
title: "How to Stop AI During Active Conversations"
description: "When AI is actively chatting with a customer, agents can take over the conversation at any time using two simple methods."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations
markdown_url: https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Stop AI During Active Conversations

When AI is actively chatting with a customer, agents can take over the conversation at any time using two simple methods.

When AI is actively chatting with a customer, agents can take over the conversation at any time using two simple methods.

Taking over a chat is something you do yourself — by design, a human stepping in is a manual action. What the [AI Co-Worker](/docs/ai-features/what-the-ai-co-worker-can-do-for-you&#x29; can set up for you is the automation around it: for example, ask it to &#x2A;"return chats to AI automatically after 30 minutes of silence"* and it will configure the [Chat Timeout](https://chatfuel.com/docs/ai-features/how-to-automatically-return-chat-to-ai) for you.

## Methods to stop AI manually [#methods-to-stop-ai-manually]

### Method 1: Assign Yourself in Live Chat [#method-1-assign-yourself-in-live-chat]

1. Navigate to the Live Chat interface
2. Find the conversation where AI is currently responding
3. Click on the **Assignee** field
4. Select yourself as the assignee
5. AI will immediately stop responding and transfer control to you

### Method 2: Direct Reply in Chat [#method-2-direct-reply-in-chat]

1. Open the conversation where AI is active
2. Simply type and send a message directly in the chat
3. AI will automatically detect agent intervention
4. The AI will stop and let you handle the conversation

## What Happens When You Take Over [#what-happens-when-you-take-over]

* **Immediate handoff** - AI stops responding instantly
* **Seamless transition** - Customer continues conversation without interruption
* **Full context preserved** - You can see the entire conversation history
* **No notification needed** - The takeover happens automatically

## Best Practices [#best-practices]

* Review the conversation history before responding
* Check what the AI was discussing to maintain continuity
* Use either method based on your workflow preference
* The AI will not re-engage unless manually reactivated

## When to Take Over from AI [#when-to-take-over-from-ai]

* Customer requests human assistance
* Complex issues beyond AI capabilities
* Sensitive situations requiring human judgment
* Technical problems that need manual resolution
* VIP customers requiring personal attention

## "Automation stopped — someone used the app" [#automation-stopped--someone-used-the-app]

Automation pauses automatically whenever an agent replies through the native messaging app (Instagram, Facebook Messenger, WhatsApp, or any other connected channel). The platform detects the human reply and Chatfuel stops AI to avoid talking over you.

This is normal behavior — it protects the customer from receiving conflicting replies from AI and a human at the same time.

### How to resume automation [#how-to-resume-automation]

To hand the conversation back to AI, open the chat in Chatfuel and set **Fuely AI** as the assignee. Automation will resume immediately for that contact.

### Hybrid service [#hybrid-service]

You can mix human and AI replies in the same conversation on any channel:

1. Reply to the customer from the native app whenever you need to handle something personally.
2. When you're done, open the chat in Chatfuel and assign it to **Fuely AI**.
3. AI picks up where you left off and continues handling the conversation.

This lets you step in for complex questions and hand routine follow-ups back to AI without toggling any [automations](https://chatfuel.com/docs/ai-features/automations) on or off.

## Reactivating AI [#reactivating-ai]

After taking over, you can reactivate AI assistance when needed:

* Set **Fuely AI** as the assignee — automation resumes immediately
* Remove yourself as assignee to allow AI to resume
* Transfer the chat back to the AI queue
* Or let the Chat Timeout return it automatically after a period of inactivity

## Tips [#tips]

* Both methods work instantly — no delay in stopping AI
* Choose the method that fits your current workflow
* Replying from the native app (Instagram, WhatsApp, etc.) always pauses automation — assign Fuely AI to restart it


---

---
title: "How to Test Your Automation"
description: "Before an automation goes live — or after you change its settings — try it in the Test chat."
canonical_url: https://chatfuel.com/docs/ai-features/how-to-test-your-automation
markdown_url: https://chatfuel.com/docs/ai-features/how-to-test-your-automation.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Test Your Automation

Before an automation goes live — or after you change its settings — try it in the Test chat.

Before an [automation](https://chatfuel.com/docs/ai-features/automations) goes live — or after you change its settings — try it in the **Test chat**. It simulates a conversation using exactly the settings of the automation you picked, so you see what a customer coming from that source would get.

## Test in Automations [#test-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the automation you want to check — a channel's direct messages, a comment rule for a specific post, Main bot.
3. Open the **Test chat** sidebar and write as if you were the customer.

The Test chat uses that automation's own settings — its instructions, delays, booking rules, handoff rules. If a setting is inherited from Main bot, you're testing the inherited value; if it's overridden, you're testing the override. This makes it easy to check that [the right rule answers the right content](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment) before a campaign starts.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Open the test chat for my Instagram ad comments automation"*

It takes you straight there.

## What the Test chat does and doesn't simulate [#what-the-test-chat-does-and-doesnt-simulate]

* It **does** use your real [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base), catalog, and the automation's settings — answers match what customers will get.
* It **doesn't** message any real customer, appear in your [Leads](https://chatfuel.com/docs/leads/leads) pipeline, or count against channel messaging limits.
* Channel-side rules (like Instagram's messaging windows) don't apply in a test — they only matter in real conversations.

> **Note:** You can test automations for a channel that isn't connected yet — the configuration works as a draft and [goes live once the channel is connected](https://chatfuel.com/docs/whatsapp/can-i-test-before-connecting-whatsapp-number).


---

---
title: "Tasks Have Become Automations"
description: "If you're looking for the Tasks page — it has been replaced by Automations, at Fuely AI → Automations."
canonical_url: https://chatfuel.com/docs/ai-features/tasks
markdown_url: https://chatfuel.com/docs/ai-features/tasks.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Tasks Have Become Automations

If you're looking for the Tasks page — it has been replaced by Automations, at Fuely AI → Automations.

If you're looking for the Tasks page — it has been replaced by [Automations](https://chatfuel.com/docs/ai-features/automations), at **Fuely AI** → **Automations**. Everything Tasks did lives there now, organized by channel and source instead of by category.

## What moved where [#what-moved-where]

* **Task toggles** → each channel source now has its own automation with its own on/off toggle. Turning AI on for Instagram DMs, comments, Facebook Messenger, or WhatsApp is [a per-source switch](https://chatfuel.com/docs/ai-features/can-i-enable-ai-for-one-channel-but-not-another).
* **Gear settings on a task** → the settings now sit directly on each automation: [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups), [booking rules](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking), [switch to human](https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules), [message delays](https://chatfuel.com/docs/ai-features/how-to-add-a-pause-between-messages), and more — configurable per source, or once on Main bot for everywhere.
* **Comment tasks** → comment replies are automations on the comment sources, including [named custom rules for specific posts, ads, and keywords](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation). See [Instagram](https://chatfuel.com/docs/instagram/instagram-comment-autoreply), [Facebook](https://chatfuel.com/docs/facebook/facebook-autoreply), and [TikTok](https://chatfuel.com/docs/tiktok/tiktok-comment-autoreply).
* **Broadcasts** → broadcasts have their own **Broadcasts** tab in the main menu; they are no longer grouped with automation settings.

Your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) still plays the same role: it's what the AI knows. If it's empty, the AI has nothing to work with — fill it out first. The [definitive setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide) walks through the whole setup in order.

## How to manage automations [#how-to-manage-automations]

Two equal ways:

* Open **Fuely AI** → **Automations** and configure them in the dashboard.
* Ask the [AI Co-Worker](/docs/ai-features/what-the-ai-co-worker-can-do-for-you&#x29; in chat — &#x2A;"turn on comment replies for my reels"* — and it makes the change for you.


---

---
title: "What Fuely AI Can Do for Your Business"
description: "Fuely AI is your always-on business assistant. It works across WhatsApp, Instagram, Facebook, TikTok, and your website — handling sales, customer support…"
canonical_url: https://chatfuel.com/docs/ai-features/what-fuely-ai-can-do-for-your-business
markdown_url: https://chatfuel.com/docs/ai-features/what-fuely-ai-can-do-for-your-business.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What Fuely AI Can Do for Your Business

Fuely AI is your always-on business assistant. It works across WhatsApp, Instagram, Facebook, TikTok, and your website — handling sales, customer support…

Fuely AI is your always-on business assistant. It works across WhatsApp, Instagram, Facebook, TikTok, and your website — handling sales, customer support, appointments, follow-ups, and more. No buttons, no menus, just natural conversation.

Here is what it actually does for you, day and night.

## Talk to Every Customer, Instantly [#talk-to-every-customer-instantly]

Fuely AI replies to messages the moment they come in — on [WhatsApp](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp), [Instagram](https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram), [Facebook](https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook), TikTok, and your [website chat widget](https://chatfuel.com/docs/website/set-up-chat-widget-for-website). It understands free-text questions, handles multiple topics in a single conversation, and even [processes voice messages](https://chatfuel.com/docs/ai-features/how-ai-works-with-voice-messages). No scripted menus. Customers write whatever they want, and Fuely figures out what they need.

It answers questions about your products, services, pricing, working hours, location — anything you put in the [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base). Think of it as an employee who actually read every page of your company handbook.

## Sell for You [#sell-for-you]

Fuely AI is not just a support bot. It is a sales agent. It recommends products and services from your catalog, explains the differences, and guides customers toward a purchase — all through natural conversation.

When a lead comes in, Fuely automatically qualifies them and moves them through your [sales pipeline](https://chatfuel.com/docs/leads/leads). You get a clear view of who is at which stage: Captured, Sorting, Qualified, Selling, or Closed. No manual data entry.

## Book Appointments Without You Lifting a Finger [#book-appointments-without-you-lifting-a-finger]

Got a service business? Fuely AI handles the entire booking flow. It checks your specialists' availability, suggests open time slots, confirms the appointment, and saves it to the [calendar](https://chatfuel.com/docs/calendar/calendar). Customers get automatic confirmation and reminder messages before their visit.

You set up the services and schedules — Fuely handles the rest. Learn more in the [autobooking guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking).

## Follow Up Automatically [#follow-up-automatically]

When a customer goes quiet mid-conversation, Fuely sends a [follow-up message](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups) to bring them back. This happens automatically — no reminders for you to check, no leads slipping through the cracks.

On WhatsApp, it respects the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) so your account stays in good standing.

## Send Proactive Messages When It Matters [#send-proactive-messages-when-it-matters]

Fuely does not wait around. It can send [re-engagement messages](https://chatfuel.com/docs/whatsapp/how-to-create-re-engage-messages) to customers whose conversation window has closed, bringing them back with targeted offers or updates. You can also run [ads that click straight to WhatsApp](https://chatfuel.com/docs/whatsapp/create-ads-that-click-to-whatsapp) or Instagram, and Fuely picks up the conversation from there.

Something going well in your business? Something going wrong? Fuely keeps the communication flowing so your customers always hear from you at the right time.

## Handle Comments on Social Media [#handle-comments-on-social-media]

On Instagram, Fuely automatically replies to comments on your posts, reels, and ads — both publicly and via DM. It can use keywords to trigger specific responses or share links to your products. The same applies to TikTok comments.

You set the rules — including [separate rules for specific posts or ads](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads) — and Fuely makes sure no comment goes unanswered. See details for [Instagram comment replies](https://chatfuel.com/docs/instagram/instagram-comment-autoreply), [Facebook comment replies](https://chatfuel.com/docs/facebook/facebook-autoreply), and [TikTok automations](https://chatfuel.com/docs/tiktok/tiktok-tasks).

## Act as Your Personal Assistant [#act-as-your-personal-assistant]

Beyond customer-facing work, Fuely helps you run your business:

* **Reminders** — appointment confirmations and follow-ups go out automatically through the [calendar system](https://chatfuel.com/docs/calendar/calendar)
* **Answer your questions** — ask Fuely about your leads, bookings, or how a feature works, and it will help
* **Manage your pipeline** — the [Leads board](https://chatfuel.com/docs/leads/leads) gives you and your team a live view of every deal in progress, with automatic assignment and tracking
* **Team coordination** — [add teammates](https://chatfuel.com/docs/account/how-to-add-teammates) with different access levels so everyone sees what they need

## Work Across Every Channel from One Place [#work-across-every-channel-from-one-place]

You do not need to switch between apps. Fuely operates on WhatsApp, Instagram, Facebook, TikTok, and your website — all managed from a single Chatfuel dashboard. If you run [multiple businesses](https://chatfuel.com/docs/account/how-to-manage-multiple-companies), each gets its own workspace with separate channels, contacts, and billing.

## Hand Off to a Human When Needed [#hand-off-to-a-human-when-needed]

Fuely knows its limits. When a conversation needs a personal touch, it [hands the chat to a human agent](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) based on rules you set. The agent gets the full conversation history, so the customer never has to repeat themselves.

## Get Started in Minutes [#get-started-in-minutes]

You do not need to code anything or build complex flows. Set up your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base), write the [AI's instructions](https://chatfuel.com/docs/ai-features/how-to-set-up-fuely-ai-profile), and turn on the [automations](https://chatfuel.com/docs/ai-features/automations) you want Fuely to handle. The [definitive setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide) walks you through everything step by step.

Fuely AI is built for business owners, marketers, and teams who want to grow without hiring more people. It handles the repetitive work so you can focus on what matters.


---

---
title: "What is Fuely AI?"
description: "AI agents are smart helpers that can do entire jobs on their own."
canonical_url: https://chatfuel.com/docs/ai-features/what-is-fuely-ai
markdown_url: https://chatfuel.com/docs/ai-features/what-is-fuely-ai.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What is Fuely AI?

AI agents are smart helpers that can do entire jobs on their own.

## What are AI agents? [#what-are-ai-agents]

AI agents are smart helpers that can do entire jobs on their own. Think Alexa, Siri or Google Assistant. All you need to do is tell them what you need and they act as your virtual assistants.

AI agents use advanced language technology that allows them to communicate with humans in a natural, conversational way, while still being an artificial intelligence (AI) program.

## What is Fuely AI? [#what-is-fuely-ai]

Chatfuel has its own AI agent called Fuely AI and it performs tasks related to business goals. Like most AI agents it uses large language models like ChatGPT.

But Fuely AI takes it a step further by combining language AI with Chatfuel's deep expertise in conversational marketing and sales. Trained on real-world examples, Fuely is an AI assistant tailored for business use cases right out-of-the-box.

Here are a few examples of what Fuely can do:

* **Sales** – act as your sales person.
* **Customer support** – answer questions, connect to [human agents](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) if needed.
* **E-commerce associate** – recommend products and help with orders.

Currently Fuely AI supports GPT-5.2 — the same model behind ChatGPT, [already built in](https://chatfuel.com/docs/ai-features/can-i-integrate-chatgpt-with-chatfuel) with no extra setup needed.

## Fuely AI talks without script [#fuely-ai-talks-without-script]

Fuely will talk to people on its own, [without a script](https://chatfuel.com/docs/ai-features/why-chatfuel-does-not-use-buttons). You just provide it with enough info and set up [automations](https://chatfuel.com/docs/ai-features/automations) — rules for where it talks and how it behaves in different situations. Let's take a look at its customer support skill for example.

All you need to do is add some common questions in the [settings for Fuely](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide). It will then provide first-line customer support and answer FAQs. And in case a customer demands to talk to a human, Fuely will send them to Live chat.


---

---
title: "What the AI Co-Worker Can Do for You"
description: "The AI Co-Worker is the assistant you chat with inside Chatfuel."
canonical_url: https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you
markdown_url: https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What the AI Co-Worker Can Do for You

The AI Co-Worker is the assistant you chat with inside Chatfuel.

The AI Co-Worker is the assistant you chat with inside Chatfuel. It's different from [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai), the agent that talks to your customers: the Co-Worker works for *you* — it configures your account, manages your data, and answers questions about the product. Everything it configures you can also change yourself in the dashboard — the Co-Worker and the settings pages are two equal ways to the same result. Use whichever is faster for the moment.

## What it does for you directly [#what-it-does-for-you-directly]

Ask in plain language and the Co-Worker makes the change itself (each of these also lives in the dashboard, mostly under **Fuely AI** → **Automations**):

* **Automations** — everything in [Automations](https://chatfuel.com/docs/ai-features/automations): turn AI on or off [per channel and source](https://chatfuel.com/docs/ai-features/can-i-enable-ai-for-one-channel-but-not-another), [create, rename, and delete custom rules](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) for keywords, [specific posts and ads](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads), and tell you [which rule will answer a given comment](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment).
* **AI behavior and personality** — the [Additional instructions](https://chatfuel.com/docs/ai-features/how-to-set-up-fuely-ai-profile) that set name, language, greeting, and tone; [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups); [message delays](https://chatfuel.com/docs/ai-features/how-to-add-a-pause-between-messages); [working-hours behavior](https://chatfuel.com/docs/ai-features/how-to-configure-working-hours); the [chat timeout](https://chatfuel.com/docs/ai-features/how-to-automatically-return-chat-to-ai); [collecting contact info](https://chatfuel.com/docs/ai-features/how-to-collect-contact-info).
* **Knowledge Base** — add, edit, or delete your [company info and FAQs](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) so the AI answers customers correctly.
* **Human handoff** — set up [switch-to-human rules](https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules) so the right conversations reach the right teammate.
* **Bookings** — set up [autobooking](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking): services, specialists, schedules, and the [autonomy level](https://chatfuel.com/docs/ai-features/ai-autonomy-levels). It can also create, move, or cancel individual bookings for you.
* **Catalog** — add or update products and services, including [a whole price list pasted in chat](https://chatfuel.com/docs/catalog/can-i-upload-a-price-list).
* **Leads** — move leads between [pipeline stages](https://chatfuel.com/docs/leads/leads), close chats as won or lost, and pull summaries or [insights from your conversations](https://chatfuel.com/docs/leads/can-i-export-chats).
* **Comment replies** — set up [Instagram](https://chatfuel.com/docs/instagram/instagram-comment-autoreply), [Facebook](https://chatfuel.com/docs/facebook/facebook-autoreply), and [TikTok](https://chatfuel.com/docs/tiktok/tiktok-comment-autoreply) comment automations, including public replies and DMs.
* **Instagram publishing** — create and publish images, carousels, reels, and stories to your connected account.
* **Integrations** — connect popular tools like Slack, Google Sheets, Notion, or HubSpot for you via a secure authorization link.

## Where it helps, but you finish the step [#where-it-helps-but-you-finish-the-step]

* **Connecting channels** — adding a [WhatsApp number](https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number), [Instagram](https://chatfuel.com/docs/instagram/connect-your-instagram-account), [Facebook Page](https://chatfuel.com/docs/facebook/how-to-connect-a-facebook-fanpage), or TikTok account requires authorizing with the platform in your own account. The Co-Worker takes you straight to the right page and guides you through.
* **Billing** — it checks your subscription status and shows upgrade options, but payments are completed in Billing yourself.
* **Chat takeover** — [stepping into a live conversation](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) is a manual action by design; the Co-Worker configures the automation around it.

## What it can't do [#what-it-cant-do]

* **Build or edit flows** — the visual [Flow Builder is managed manually](https://chatfuel.com/docs/ai-features/why-co-worker-cant-edit-flows); the Co-Worker works through automations instead.
* **Send broadcasts** — broadcast and re-engage campaigns are set up in the **Broadcasts** tab.
* **Answer off-topic questions** — it's focused on your Chatfuel account and your business automation.

If you're not sure whether the Co-Worker can do something — just ask it. It will either do it or tell you exactly where to do it yourself.


---

---
title: "Which Automation Replies to a Message or Comment"
description: "When several automations could react to the same comment or message, Chatfuel picks exactly one."
canonical_url: https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment
markdown_url: https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Which Automation Replies to a Message or Comment

When several automations could react to the same comment or message, Chatfuel picks exactly one.

When several [automations](https://chatfuel.com/docs/ai-features/automations) could react to the same comment or message, Chatfuel picks exactly one. Here is the order it checks.

## The priority order [#the-priority-order]

Within a source, the winner is decided top-down:

1. **Custom automations targeted at the specific content** — rules tied to [that exact post, ad, or story](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads). A rule aimed at the post always beats a general rule, even if the general rule's keyword is a closer match.
2. **General custom automations** — rules on the whole source, not tied to specific content.
3. **The base automation** — the source's permanent catch-all.

Within steps 1 and 2, keyword precision breaks ties: a rule matching the **exact** text beats a rule matching **contains**, which beats a catch-all rule that reacts to any comment. If two rules still tie, the older one wins.

Automations that are turned off never compete — they're skipped entirely.

## A worked example [#a-worked-example]

Say you have three rules on Instagram post & reel comments:

* *"Price"* — replies when a comment contains "price", on any post
* *"Launch post"* — replies to any comment, but only on your launch post
* The base automation — answers everything else

A comment "what's the price?" under the launch post gets answered by &#x2A;"Launch post"&#x2A; — it targets that specific post, so it outranks the keyword rule. The same comment under any other post gets &#x2A;"Price"*. A comment "love this!" under a regular post falls through to the base automation.

## Two things that surprise people [#two-things-that-surprise-people]

* **Turning off the base doesn't silence the source.** If an enabled custom rule matches, it still replies even while the base is off. The base is only the fallback for whatever nothing else caught. If you turn off the base *and* have no enabled customs, the source goes fully quiet.
* **Main bot is the master switch.** If [Main bot](https://chatfuel.com/docs/ai-features/automations) is off, nothing replies anywhere — no source, no custom rule, regardless of their own toggles.

## Not sure which rule will fire? [#not-sure-which-rule-will-fire]

Ask the [AI Co-Worker](/docs/ai-features/what-the-ai-co-worker-can-do-for-you&#x29;: &#x2A;"Which automation will answer a comment saying 'how much' on my latest reel?"* — it checks your rules and names the winner. You can also open the rule in **Fuely AI** → **Automations** and [try it in the Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation).


---

---
title: "Why Chatfuel Does Not Process Audio Messages"
description: "Chatfuel can listen to and respond to voice messages, but only when two conditions are met:"
canonical_url: https://chatfuel.com/docs/ai-features/why-chatfuel-does-not-process-audio-messages
markdown_url: https://chatfuel.com/docs/ai-features/why-chatfuel-does-not-process-audio-messages.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Why Chatfuel Does Not Process Audio Messages

Chatfuel can listen to and respond to voice messages, but only when two conditions are met:

## The short answer [#the-short-answer]

Chatfuel can [listen to and respond to voice messages](https://chatfuel.com/docs/ai-features/how-ai-works-with-voice-messages), but only when two conditions are met:

1. **The automation for that source is turned on** — every channel source has its own [automation](https://chatfuel.com/docs/ai-features/automations), and every one except Main bot starts off. Main bot itself must also be on: it's the master switch for all AI.
2. **The AI is set to reply there** — the **Incoming messages** setting on the automation is what tells Fuely AI to respond to customer messages, including audio.

If either of these is missing, Chatfuel will receive the audio but will not process or reply to it.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Make sure **Main bot** is toggled on.
3. Open the automation for the source where the voice messages arrive — for example WhatsApp direct messages — and make sure it's enabled.
4. In the **Incoming messages** setting, check that the AI is set to reply to messages there.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"My bot isn't replying to voice messages on WhatsApp — check that AI answering is on."*

It applies the change and confirms what it set.

## Why it works this way [#why-it-works-this-way]

Fuely AI uses speech recognition to transcribe audio messages and then processes them like any other text message. This requires the AI to be active and listening on that source — which is exactly what an enabled automation with **Incoming messages** turned on provides. When the automation is off, nothing is listening, so free-form audio can't be interpreted or answered.

## Still not working? [#still-not-working]

If both settings are enabled and audio is still not being processed:

* Make sure your [knowledge base is filled out](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) — Fuely AI needs business context to generate responses.
* Check that the channel (WhatsApp, Instagram, etc.) is properly connected.
* Check that **When AI replies** on the automation isn't limiting answers to outside working hours — during the workday the AI would stay silent on purpose.
* Test with a short, clear voice message in the [Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) to rule out audio quality issues.


---

---
title: "Why Chatfuel Doesn't Use Buttons"
description: "If you're looking for a way to build button-based menus or decision trees in Chatfuel — we don't offer that, and here's why."
canonical_url: https://chatfuel.com/docs/ai-features/why-chatfuel-does-not-use-buttons
markdown_url: https://chatfuel.com/docs/ai-features/why-chatfuel-does-not-use-buttons.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Why Chatfuel Doesn't Use Buttons

If you're looking for a way to build button-based menus or decision trees in Chatfuel — we don't offer that, and here's why.

If you're looking for a way to build button-based menus or decision trees in Chatfuel — we don't offer that, and here's why. For a quick answer on [menu buttons, quick replies, and numbered options](https://chatfuel.com/docs/ai-features/can-i-add-menu-buttons-or-quick-replies), see the FAQ.

## Buttons Were a Workaround, Not a Solution [#buttons-were-a-workaround-not-a-solution]

Button-based bots were born out of necessity. Early chatbot technology couldn't understand what people actually typed, so platforms forced conversations into rigid, pre-scripted flows: tap Button A, get Response A, tap Button B, get Response B.

The result? Conversations that felt like navigating a phone menu. Customers got frustrated when their real question didn't match any of the options on screen. Businesses spent weeks mapping out every possible path — only to rebuild it all when a single product or policy changed.

That era is over.

## AI Conversations Convert Better [#ai-conversations-convert-better]

Chatfuel is built on [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) — a conversational engine that reads, understands, and replies to your customers the way a trained team member would.

Here's what that means in practice:

* **No dead ends.** A button bot fails the moment a customer asks something outside the script. AI handles unexpected questions, follow-ups, and topic switches naturally.
* **Faster resolutions.** Instead of tapping through five screens to find an answer, customers just ask. AI responds in seconds with the right information pulled from your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base).
* **Higher engagement.** Open-ended conversation keeps customers talking. Businesses using AI-driven chat see significantly more replies per conversation than those using button flows.
* **Personalized responses.** AI adapts its tone and detail level to each customer. Buttons give everyone the same generic path.
* **Works across channels.** The same AI handles [Instagram DMs](https://chatfuel.com/docs/instagram/instagram-tasks), [Facebook Messenger](https://chatfuel.com/docs/facebook/facebook-tasks), [WhatsApp messages](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp), and even [voice messages](https://chatfuel.com/docs/ai-features/how-ai-works-with-voice-messages) — no separate flows to maintain per platform.

## What AI Can Do That Buttons Never Could [#what-ai-can-do-that-buttons-never-could]

| Capability                                                                        | Buttons               | Fuely AI                                                                                             |
| --------------------------------------------------------------------------------- | --------------------- | ---------------------------------------------------------------------------------------------------- |
| Understand free-text questions                                                    | No                    | Yes                                                                                                  |
| Handle multiple topics in one conversation                                        | No                    | Yes                                                                                                  |
| [Book appointments automatically](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking) | Limited               | Full scheduling with availability checks                                                             |
| [Follow up with inactive clients](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups)     | Manual setup per path | Automatic, timing-aware                                                                              |
| Process voice messages                                                            | No                    | [Yes — transcribes and responds](https://chatfuel.com/docs/ai-features/how-ai-works-with-voice-messages)                 |
| Learn from your business knowledge                                                | No                    | Yes — reads your docs, FAQs, and policies                                                            |
| Hand off to a human smoothly                                                      | Awkward               | [Seamless with full context preserved](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) |

## You Won't Miss Buttons [#you-wont-miss-buttons]

Every feature that button bots tried to deliver — lead qualification, FAQ handling, appointment booking, product recommendations — AI does better, faster, and without the maintenance overhead.

There's no flow to map. No decision tree to debug. You set up your Knowledge Base, turn on your [automations](https://chatfuel.com/docs/ai-features/automations), and AI handles the rest.

If you're migrating from another platform that used buttons, your setup time with Chatfuel will actually be shorter. Instead of rebuilding hundreds of button paths, you give AI your business information and it figures out how to answer customers on its own.

## Get Started [#get-started]

Ready to see the difference? Start with the [complete AI setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide) or jump straight to your preferred channel:

* Activate AI on [Instagram](https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram)
* Activate AI on [WhatsApp](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp)


---

---
title: "Why the AI Co-Worker Can't Edit Flows"
description: "If you asked the AI Co-Worker to set something up and it told you it can't do it inside a flow — that's expected."
canonical_url: https://chatfuel.com/docs/ai-features/why-co-worker-cant-edit-flows
markdown_url: https://chatfuel.com/docs/ai-features/why-co-worker-cant-edit-flows.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Why the AI Co-Worker Can't Edit Flows

If you asked the AI Co-Worker to set something up and it told you it can't do it inside a flow — that's expected.

If you asked the AI Co-Worker to set something up and it told you it can't do it inside a flow — that's expected. The Co-Worker works with [automations](https://chatfuel.com/docs/ai-features/automations), not with the flow builder.

## Automations vs. Flows [#automations-vs-flows]

Chatfuel has two ways to automate conversations:

* **Automations** — the current approach. Fuely AI holds the conversation on its own, guided by your settings per channel, post, or ad. You manage automations in the dashboard at **Fuely AI** → **Automations**, or by describing what you need to the Co-Worker — both work the same. This covers sales, support, [appointment booking](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking), [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups), [comment replies](https://chatfuel.com/docs/instagram/instagram-comment-autoreply), and more.
* **Flows** — the legacy approach where you manually build conversation paths by connecting blocks. The Co-Worker cannot create or modify flows.

## What to do instead [#what-to-do-instead]

Instead of asking the Co-Worker to change a flow, describe the outcome you want. For example:

* Instead of "Add a block to my flow that asks for the customer's phone number" — say "I want the AI to [collect the customer's phone number](https://chatfuel.com/docs/ai-features/how-to-collect-contact-info) before booking."
* Instead of "Edit my welcome flow" — say "I want to change how the AI greets new customers."

The Co-Worker will set this up as an automation, which handles the conversation dynamically without a fixed script — and you can review or adjust the result yourself in **Fuely AI** → **Automations**.

## What if you still need flows [#what-if-you-still-need-flows]

If you have an existing flow that you need to keep using, you can access it through the flow editor manually. But for most use cases, [automations replace flows entirely](https://chatfuel.com/docs/getting-started/why-there-is-no-flows-button) and are faster to set up and maintain.

If you're unsure whether your use case needs a flow or an automation, just describe what you want to the Co-Worker — it will guide you to the right approach.


---

---
title: "Why Fuely Replies to Each Message Separately"
description: "Fuely AI replies to every incoming message individually by default."
canonical_url: https://chatfuel.com/docs/ai-features/why-fuely-replies-to-each-message-separately
markdown_url: https://chatfuel.com/docs/ai-features/why-fuely-replies-to-each-message-separately.md
last_updated: 2026-03-18
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Why Fuely Replies to Each Message Separately

Fuely AI replies to every incoming message individually by default.

Fuely AI replies to every incoming message individually by default. If your customers tend to send several short messages in a row, you can turn on [message delay](https://chatfuel.com/docs/ai-features/how-to-add-a-pause-between-messages) so that Fuely waits and responds to the full thought at once.

Even with message delay enabled, you may still see separate replies. The most likely reason is the time gap between the customer's messages.

## How message delay works [#how-message-delay-works]

When message delay is **off**, Fuely AI generates a reply to every message as soon as it arrives — each message gets its own response.

When message delay is **on**, Fuely AI waits **8 to 12 seconds** after receiving a message before generating a reply. During this window it collects all incoming messages and responds to them as a single batch.

If the customer sends their next message **within** that 8–12 second window, Fuely bundles it with the previous ones and replies once.

If the customer sends their next message **after** the window has closed, Fuely has already started (or finished) generating a reply to the earlier messages. The new message is treated as a fresh input and gets its own response.

## Why it can look like the delay is not working [#why-it-can-look-like-the-delay-is-not-working]

Customers sometimes pause for 15–20 seconds (or longer) between messages — for example, while thinking or switching apps. That pause exceeds the delay window, so Fuely replies to whatever it has received so far. When the customer sends the next message, Fuely replies again. From the customer's perspective it looks like the bot is "not waiting," but it did wait the full 8–12 seconds each time.

## What you can do [#what-you-can-do]

* **Let customers know the bot is listening.** The [typing animation](https://chatfuel.com/docs/ai-features/how-to-enable-typing-animation) shows automatically during the delay, signaling that a reply is coming. This encourages customers to send all their thoughts before the window closes.
* **Check the timestamps.** In the chat log, compare the time of the customer's messages. If there is more than \~12 seconds between them, the separate replies are expected behavior — not a bug.


---

---
title: "Do I Have to Pay Only by Card?"
description: "No. Chatfuel accepts several payment methods for your subscription:"
canonical_url: https://chatfuel.com/docs/billing/accepted-payment-methods
markdown_url: https://chatfuel.com/docs/billing/accepted-payment-methods.md
last_updated: 2026-03-18
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Do I Have to Pay Only by Card?

No. Chatfuel accepts several payment methods for your subscription:

No. Chatfuel accepts several payment methods for your subscription:

## Accepted payment methods [#accepted-payment-methods]

* **Credit or debit card** — Visa, Mastercard, and other major cards
* **Apple Pay**
* **Google Pay**

You can choose any of these options when subscribing or updating your payment details under **Billing** → **Manage billing**.

## Managing your payment method [#managing-your-payment-method]

To add or change a payment method, go to **Billing** → **Manage billing** and select the option that works best for you. If you need to [remove an old card](https://chatfuel.com/docs/billing/how-to-remove-a-card), you can do so from the same screen.


---

---
title: "Can I Get a Plan for Just One Feature?"
description: "No — Chatfuel does not sell individual features like flow automation, AI replies, or appointment booking separately."
canonical_url: https://chatfuel.com/docs/billing/can-i-get-a-plan-for-just-one-feature
markdown_url: https://chatfuel.com/docs/billing/can-i-get-a-plan-for-just-one-feature.md
last_updated: 2026-08-17
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Get a Plan for Just One Feature?

No — Chatfuel does not sell individual features like flow automation, AI replies, or appointment booking separately.

No — Chatfuel does not sell individual features like flow automation, AI replies, or appointment booking separately. Every plan includes every feature.

## Why features aren't sold separately [#why-features-arent-sold-separately]

Chatfuel is built as an all-in-one AI sales and support platform. Features like messaging automation, [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups), [calendar booking](https://chatfuel.com/docs/calendar/calendar), and the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) are designed to work together. Splitting them into separate plans would limit the value you get and make setup harder.

Every [plan](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing) gives you full access to every feature — no add-ons, no per-feature pricing. Plans differ in how many credits and bots they include, not in what the product can do.

## What if I only need flow automation? [#what-if-i-only-need-flow-automation]

Even if you only plan to use one feature today, having full access means you can expand into other use cases anytime — without switching plans to unlock anything. Most users who start with one feature end up using several others as they see what's possible.

## Try it free first [#try-it-free-first]

Not sure if it's worth the price? Start with a [free 7-day trial](https://chatfuel.com/docs/billing/why-do-i-see-a-paywall) — you get full access to everything with no charge upfront. If budget is a concern, check if there's a [discount available](https://chatfuel.com/docs/billing/not-ready-to-buy-yet).


---

---
title: "Chatfuel Affiliate Program"
description: "The Chatfuel Affiliate Program lets you earn recurring revenue by referring new customers."
canonical_url: https://chatfuel.com/docs/billing/chatfuel-affiliate-program
markdown_url: https://chatfuel.com/docs/billing/chatfuel-affiliate-program.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Chatfuel Affiliate Program

The Chatfuel Affiliate Program lets you earn recurring revenue by referring new customers.

The Chatfuel Affiliate Program lets you earn recurring revenue by referring new customers. Share your unique referral link or [promo code](https://chatfuel.com/docs/billing/where-to-enter-promo-code), and get a revenue share from every paying customer you bring in — month after month.

## Revenue share tiers [#revenue-share-tiers]

| Level | Paying referrals | Revenue share |
| ----- | ---------------- | ------------- |
| Start | Up to 300        | 30%           |
| Mid   | 300–400          | 35%           |
| Top   | 400+             | 40%           |

Leads only count when the referral makes their first payment after the trial period ends.

## How to join [#how-to-join]

1. Visit the affiliate landing page at [chatfuel.com/affiliate-program](https://chatfuel.com/affiliate-program), or find the link in your Chatfuel account.
2. You'll be redirected to the registration page at [affiliate.chatfuel.com](https://affiliate.chatfuel.com/), powered by FirstPromoter.
3. During registration, review and accept the [Terms & Conditions](https://affiliate.chatfuel.com/profile/agreements).
4. After registering, you'll receive a unique referral link and/or promo code to share.

## Tracking your referrals [#tracking-your-referrals]

Use the [FirstPromoter dashboard](https://affiliate.chatfuel.com/) to monitor clicks, signups, and conversions in real time.

## Getting paid [#getting-paid]

* Commissions are validated monthly. Referrals that don't meet program rules will be rejected.
* Payouts happen **once a month*&#x2A; (at the end of the month), starting from a **$50 minimum**, via **PayPal**.
* Payments are currently processed manually, so expect a few days' delay — this is normal.
* Make sure your billing address and PayPal details are filled in on your [FirstPromoter profile](https://affiliate.chatfuel.com/). Without payment details on file, we can't send your commission. Entering data in W-8 and W-9 forms is not required.

## Advertising assets [#advertising-assets]

Download banners, logos, and other creative materials at [affiliate.chatfuel.com/my-assets](https://affiliate.chatfuel.com/my-assets).

## Need help? [#need-help]

If you experience technical difficulties with the FirstPromoter platform, contact their support team directly.


---

---
title: "Chatfuel Plans and Pricing"
description: "Every Chatfuel plan is two things at once: a subscription that gives you the platform, and a wallet — a balance in US dollars that covers what you actually use."
canonical_url: https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing
markdown_url: https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Chatfuel Plans and Pricing

Every Chatfuel plan is two things at once: a subscription that gives you the platform, and a wallet — a balance in US dollars that covers what you actually use.

Every Chatfuel plan is two things at once: a subscription that gives you the platform, and a [wallet](https://chatfuel.com/docs/billing/how-your-wallet-and-credits-work) — a balance in US dollars that covers what you actually use. Each plan arrives with credits already loaded into that wallet.

Your subscription price never changes with your traffic. The wallet is what moves.

## The plans [#the-plans]

| Plan          | Price / month | Credits included | Bots                                               |
| ------------- | ------------- | ---------------- | -------------------------------------------------- |
| **Free**      | $0            | —                | Comment replies on Instagram, Facebook, and TikTok |
| **Business**  | $20           | $20              | 1                                                  |
| **Agency**    | $100          | $100             | Up to 3                                            |
| **Agency S**  | $225          | $250             | Unlimited                                          |
| **Agency M**  | $440          | $500             | Unlimited                                          |
| **Agency L**  | $850          | $1,000           | Unlimited                                          |
| **Agency XL** | $2,050        | $2,500           | Unlimited                                          |

On the Agency plans, one wallet sits behind every bot in the workspace, so you top up in one place instead of chasing balances per client. The larger the plan, the more credits you get for the price. Annual billing is available on every paid plan at a discount.

## What comes out of the wallet [#what-comes-out-of-the-wallet]

* **AI replies** — every message the [AI agent](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) reads and answers
* **WhatsApp templates** — the [messages you send outside the 24-hour window](https://chatfuel.com/docs/whatsapp/how-to-send-messages-outside-24-hour-window)
* **WhatsApp messages Meta charges for** — from 1 October, [Meta bills service messages too](https://chatfuel.com/docs/whatsapp/how-much-does-meta-charge-for-whatsapp-messages), and those charges run through your wallet as well

Credits are granted for the month and don't carry over, so there's nothing to be gained by holding them back. If you run through them, auto-top-up refills the wallet from your card by an amount you set yourself — see [plan usage notifications](https://chatfuel.com/docs/billing/plan-usage-notifications) for how the warnings work.

## What's included at no extra charge [#whats-included-at-no-extra-charge]

Everything that isn't a per-use cost is simply part of the plan:

* **Every channel** — WhatsApp, Instagram, Facebook, TikTok, and your website
* **Unlimited contacts** — grow your audience without watching a counter
* **Unlimited teammates** — [add your whole team](https://chatfuel.com/docs/account/how-to-add-teammates) at no extra cost
* **Every feature** — [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups), [appointment booking](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking), [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base), [comment autoreplies](https://chatfuel.com/docs/instagram/instagram-comment-autoreply), [re-engagement messages](https://chatfuel.com/docs/whatsapp/how-to-create-re-engage-messages), [lead management](https://chatfuel.com/docs/leads/leads), [calendar](https://chatfuel.com/docs/calendar/calendar), live chat

There are no seat fees, no per-channel fees, and no feature add-ons.

## Trying it first [#trying-it-first]

The [free 7-day trial](https://chatfuel.com/docs/billing/how-long-is-the-free-trial) gives you the full product plus $15 in credits to spend on AI and messaging. It's the same platform paying customers use — no watered-down demo. If budget is the blocker, check whether there's a [discount available](https://chatfuel.com/docs/billing/not-ready-to-buy-yet), and if you're wondering why the [paywall appeared](https://chatfuel.com/docs/billing/why-do-i-see-a-paywall), that page explains it.

For billing cycle details, cancellation, and the refund policy, see the [Pricing FAQ](https://chatfuel.com/docs/billing/pricing-faq).

*Prices are in US dollars, and your wallet is billed in US dollars regardless of where you are. To see subscription prices in your local currency, check the Billing tab in your account.*


---

---
title: "What Happens to My Data If I Pause Payment and Come Back Later?"
description: "If you stop paying now and decide to resume later — a month, three months, or further down the line — here's what to expect with your data and AI agent…"
canonical_url: https://chatfuel.com/docs/billing/data-retention-after-non-payment
markdown_url: https://chatfuel.com/docs/billing/data-retention-after-non-payment.md
last_updated: 2026-04-13
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What Happens to My Data If I Pause Payment and Come Back Later?

If you stop paying now and decide to resume later — a month, three months, or further down the line — here's what to expect with your data and AI agent…

If you stop paying now and decide to resume later — a month, three months, or further down the line — here's what to expect with your data and AI agent training.

## The 60-day rule [#the-60-day-rule]

We keep your account data for **60 days** after your subscription lapses. This includes your AI agent training, flows, audience, and conversation history.

* **Return within 60 days** → everything is restored as it was. Your AI agent picks up with the same training, and your automations keep running the moment you reactivate.
* **Return after 60 days** → your data is wiped. You'll need to set up your AI agent and flows from scratch.

## Example [#example]

If your last payment was in May and you come back in August (about 3 months later), your data will already be gone. To preserve your setup during a pause, make sure to reactivate within the 60-day window.

## How to avoid losing data [#how-to-avoid-losing-data]

The simplest way is to keep your subscription active, even on the lowest plan. If you need to pause, plan your return within 60 days.

If you've already [cancelled](https://chatfuel.com/docs/billing/how-to-cancel-subscription-or-trial) or your [payment was postponed](https://chatfuel.com/docs/billing/i-postponed-my-payment), the 60-day countdown starts from the end of your last paid period. Reactivating before then keeps everything intact.


---

---
title: "How Long Is the Free Trial?"
description: "Chatfuel's free trial lasts 7 days. During that time you get full, unrestricted access to every feature — the same experience paying customers have."
canonical_url: https://chatfuel.com/docs/billing/how-long-is-the-free-trial
markdown_url: https://chatfuel.com/docs/billing/how-long-is-the-free-trial.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How Long Is the Free Trial?

Chatfuel's free trial lasts 7 days. During that time you get full, unrestricted access to every feature — the same experience paying customers have.

Chatfuel's free trial lasts **7 days**. During that time you get full, unrestricted access to every feature — the same experience paying customers have.

## How to start the trial [#how-to-start-the-trial]

When you see the [paywall screen](https://chatfuel.com/docs/billing/why-do-i-see-a-paywall), enter your card details to activate the trial. There is no charge upfront — your card is only billed after the 7 days end.

## What happens after 7 days [#what-happens-after-7-days]

* If you keep your subscription, the [plan you picked](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing) starts and your card is charged automatically.
* If you [cancel before the trial ends](https://chatfuel.com/docs/billing/how-to-cancel-subscription-or-trial), you won't be charged at all.
* If you cancel after the trial, your plan stays active until the end of the billing period, then your account reverts to the free Trial limits.

## What's included in the trial [#whats-included-in-the-trial]

* Full access to Fuely AI across WhatsApp, Instagram, Facebook, TikTok, and website
* $15 in credits to spend on AI and messaging — see [how the wallet works](https://chatfuel.com/docs/billing/how-your-wallet-and-credits-work)
* AI-powered replies, follow-ups, and appointment booking
* No feature limits or restrictions

## Not ready yet? [#not-ready-yet]

No pressure — you can [start the trial whenever you're ready](https://chatfuel.com/docs/billing/not-ready-to-buy-yet). If you're migrating from Legacy, you can also [test the new platform](https://chatfuel.com/docs/getting-started/how-to-test-before-migrating-from-legacy) without affecting your existing bots.


---

---
title: "How to Cancel Your Subscription or Trial"
description: "You can cancel your Chatfuel subscription or free trial at any time from the Billing section of your account."
canonical_url: https://chatfuel.com/docs/billing/how-to-cancel-subscription-or-trial
markdown_url: https://chatfuel.com/docs/billing/how-to-cancel-subscription-or-trial.md
last_updated: 2026-07-03
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Cancel Your Subscription or Trial

You can cancel your Chatfuel subscription or free trial at any time from the Billing section of your account.

You can cancel your Chatfuel subscription or free trial at any time from the Billing section of your account.

> **Note:** Cancelling a subscription is one of the few steps the AI Co-Worker can't complete for you — you confirm the cancellation yourself in **Billing** → **Manage billing**. The Co-Worker can check your subscription status and take you straight to the right page: just ask.

## Steps to cancel [#steps-to-cancel]

1. Click **Billing** in the left navigation bar.
2. Click **Manage billing**.
3. Click **Cancel subscription**.

## What happens after cancellation [#what-happens-after-cancellation]

* Your plan stays active until the end of the current billing period — you won't lose access immediately.
* Once the period ends, your account reverts to the free Trial limits.
* You won't be charged again unless you start a new plan. For a full overview of [what happens to billing after cancellation](https://chatfuel.com/docs/billing/what-happens-to-billing-after-cancellation), see the dedicated article.

If you want to compare what's included in each plan before deciding, see [Chatfuel plans and pricing](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing).


---

---
title: "How to Remove an Old or Expired Card"
description: "If you have an old or expired payment card on file, you can remove it directly from your billing settings."
canonical_url: https://chatfuel.com/docs/billing/how-to-remove-a-card
markdown_url: https://chatfuel.com/docs/billing/how-to-remove-a-card.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Remove an Old or Expired Card

If you have an old or expired payment card on file, you can remove it directly from your billing settings.

If you have an old or expired payment card on file, you can remove it directly from your billing settings.

## Steps to remove a card [#steps-to-remove-a-card]

1. Click **Billing** in the left navigation bar.
2. Click **Manage billing**.
3. Find the card you want to remove and click **Delete**.

The card will be removed immediately. If you need to add a new card, you can do so from the same Manage billing screen.

If you're thinking about cancelling your plan entirely, see [how to cancel your subscription or trial](https://chatfuel.com/docs/billing/how-to-cancel-subscription-or-trial).


---

---
title: "How Your Wallet and Credits Work"
description: "Your plan carries a wallet: a single balance in US dollars that everything you use draws from."
canonical_url: https://chatfuel.com/docs/billing/how-your-wallet-and-credits-work
markdown_url: https://chatfuel.com/docs/billing/how-your-wallet-and-credits-work.md
last_updated: 2026-08-17
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How Your Wallet and Credits Work

Your plan carries a wallet: a single balance in US dollars that everything you use draws from.

Your [plan](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing) carries a wallet: a single balance in US dollars that everything you use draws from. Instead of separate invoices for AI, for messaging, and for Meta, there's one balance and one bill.

## What draws from the wallet [#what-draws-from-the-wallet]

* **AI replies** — every message the [AI agent](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) reads and answers
* **WhatsApp templates** — the [messages you send once the 24-hour window has closed](https://chatfuel.com/docs/whatsapp/how-to-send-messages-outside-24-hour-window)
* **WhatsApp messages Meta charges for** — from 1 October, Meta charges for service messages as well, and [those charges](https://chatfuel.com/docs/whatsapp/how-much-does-meta-charge-for-whatsapp-messages) come out of the same wallet

Every charge is itemised on your billing page by day and by type, so you can see exactly what your traffic cost you and where it went.

## Credits, and what happens when they run out [#credits-and-what-happens-when-they-run-out]

The credits included in your plan land in the wallet at the start of each billing cycle. They're granted for that cycle and **don't carry over**, so there's no advantage in holding them back.

When the balance runs low, auto-top-up charges your card by an amount you choose and puts it straight into the wallet, so conversations don't stop mid-sentence. If the balance ever reaches zero, all processing stops until the wallet is funded again — see [what to do when you hit your limit](https://chatfuel.com/docs/billing/what-to-do-when-you-hit-your-limit).

## Set it up in Billing [#set-it-up-in-billing]

1. Go to the **Billing** tab.
2. Check your card under payment methods — [these are the cards we accept](https://chatfuel.com/docs/billing/accepted-payment-methods).
3. Turn on **auto-top-up** and set the amount you want us to add each time.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"How much have I spent this month, and is auto-top-up on?"*

It shows your balance and your recent spend, and points you to the right place in Billing.

> **Note:** Adding or changing a card is one of the few steps the AI Co-Worker can't complete for you — that part you finish in the **Billing** tab.

## The credit line with Meta [#the-credit-line-with-meta]

WhatsApp message costs are charged by Meta, not by us. So that you never have to set up billing with Meta directly, we attach our credit line to your WhatsApp Business Account when you [connect your number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number). Meta then invoices us for what your account sends, and it comes out of your wallet like everything else.

Two things have to be true for this to work:

* Your WhatsApp Business Account has to be set to **US dollars**.
* It must not already have another payment method or another provider's credit line attached to it. If it does, the number needs a fresh WhatsApp Business Account — [connecting a new number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number) walks through that.

If you detach our credit line yourself in Meta Business Manager, Meta blocks messaging on that WhatsApp Business Account until billing is set up again. If you're planning to move your number elsewhere, tell us first so your number keeps working through the switch.

## If you're on a Legacy account [#if-youre-on-a-legacy-account]

The credit line is part of the current platform. [Legacy accounts](https://chatfuel.com/docs/getting-started/is-legacy-account-same-as-panel-account) don't get it, which means Meta charges the payment method attached to your own WhatsApp Business Account instead. If you'd rather have one bill, you can [test the current platform](https://chatfuel.com/docs/getting-started/how-to-test-before-migrating-from-legacy) without touching anything you already have running.


---

---
title: "I Postponed My Payment — What Should I Do?"
description: "If you see that your payment has been postponed or delayed by a few days, there's nothing to worry about."
canonical_url: https://chatfuel.com/docs/billing/i-postponed-my-payment
markdown_url: https://chatfuel.com/docs/billing/i-postponed-my-payment.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# I Postponed My Payment — What Should I Do?

If you see that your payment has been postponed or delayed by a few days, there's nothing to worry about.

If you see that your payment has been postponed or delayed by a few days, there's nothing to worry about. This can happen when a scheduled charge doesn't go through on the expected date — for example, due to a temporary card issue or a bank delay.

## Set it up in Billing [#set-it-up-in-billing]

1. Go to the **Billing** tab in your Chatfuel account.
2. Click the button to pay or retry the charge.
3. That's it — your [plan](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing) continues as normal.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) what you want in chat:

*"My payment was postponed — am I still active?"*

It checks your subscription and tells you where things stand.

> **Note:** Completing the payment is one of the few steps the AI Co-Worker can't do for you — that part you finish in the **Billing** tab.

## Will I lose access? [#will-i-lose-access]

No. Chatfuel gives you a grace period when a payment is postponed. Your account stays fully active during this time, so your AI, [automations](https://chatfuel.com/docs/ai-features/automations), and live chat keep working without interruption.

## What if I don't pay? [#what-if-i-dont-pay]

If the payment remains unpaid after the grace period, your account will eventually be restricted. To avoid this, simply go to Billing and complete the payment as soon as you can.

## Need help? [#need-help]

If you're having trouble with your card or the payment isn't going through, contact our support team — we'll sort it out quickly.


---

---
title: "I Was Just Researching and Can't Afford It Right Now"
description: "That's completely fine — there's no pressure to start right away."
canonical_url: https://chatfuel.com/docs/billing/not-ready-to-buy-yet
markdown_url: https://chatfuel.com/docs/billing/not-ready-to-buy-yet.md
last_updated: 2026-03-17
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# I Was Just Researching and Can't Afford It Right Now

That's completely fine — there's no pressure to start right away.

That's completely fine — there's no pressure to start right away. Chatfuel will be here when you're ready.

## Try it free first [#try-it-free-first]

You don't need to commit to anything today. Chatfuel offers a [free 7-day trial](https://chatfuel.com/docs/billing/why-do-i-see-a-paywall) with full access to every feature — no restrictions, no watered-down demo. You can connect your channels, set up AI, and see real results before spending anything.

## Get $39 off with a special coupon [#get-39-off-with-a-special-coupon]

If pricing is the main concern, we have a **ChatfuelCS2026*&#x2A; coupon that gives you **$39 off**. That brings the [Fuely Super plan](/docs/billing/chatfuel-plans-and-pricing&#x29; down to just **$30/mo** — less than the cost of a single customer support hour in most industries.

To apply it, enter **ChatfuelCS2026** in the [promo code field](https://chatfuel.com/docs/billing/where-to-enter-promo-code) on the Stripe checkout page when you're ready to subscribe.

## No rush [#no-rush]

You can always come back later, start your free trial, and apply the coupon at checkout. Your discount code won't expire immediately, but we recommend using it soon to lock in the rate.

If you'd like someone to walk you through the platform first, you can [book a free demo](https://chatfuel.com/docs/getting-started/how-to-book-a-platform-demo) with a Chatfuel expert.


---

---
title: "Plan Usage Notifications"
description: "Yes — Chatfuel tells you when your wallet is running low, so you're never caught off guard."
canonical_url: https://chatfuel.com/docs/billing/plan-usage-notifications
markdown_url: https://chatfuel.com/docs/billing/plan-usage-notifications.md
last_updated: 2026-08-17
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Plan Usage Notifications

Yes — Chatfuel tells you when your wallet is running low, so you're never caught off guard.

Yes — Chatfuel tells you when your [wallet](https://chatfuel.com/docs/billing/how-your-wallet-and-credits-work) is running low, so you're never caught off guard.

## When you'll be notified [#when-youll-be-notified]

We notify you when the balance drops toward zero, and again if a top-up fails. Notifications go to the email address on your Chatfuel account and appear inside the app, so keep your billing email current.

## Why this matters [#why-this-matters]

Your plan includes a set amount of credits each billing cycle, and everything you use draws from that balance — AI replies, WhatsApp templates, and the [messages Meta charges for](https://chatfuel.com/docs/whatsapp/how-much-does-meta-charge-for-whatsapp-messages). Most businesses never come close to spending it all, but traffic can climb quickly: a viral post, a seasonal campaign, a new ad. The warning is your cue to act before the balance reaches zero.

## What happens if you ignore it [#what-happens-if-you-ignore-it]

At zero, processing stops. Your automations stop replying and messages stop going out until the wallet is funded again. Your account, contacts, conversation history, and live chat are untouched — see [what to do when you hit your limit](https://chatfuel.com/docs/billing/what-to-do-when-you-hit-your-limit) to get running again in a couple of minutes.

The reliable way to avoid this is auto-top-up: you set the amount, and we add it to the wallet from your card before the balance runs out.

## Set it up in Billing [#set-it-up-in-billing]

1. Go to the **Billing** tab.
2. Confirm the card on file is valid — [these are the cards we accept](https://chatfuel.com/docs/billing/accepted-payment-methods).
3. Turn on **auto-top-up** and choose how much to add each time.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"What's my balance, and will anything stop this week?"*

It shows your current balance and spend, and points you to the right place in Billing.

## Where to check your usage [#where-to-check-your-usage]

You don't have to wait for a notification. Your balance is always visible at the top of the AI Co-Worker chat, and your billing page breaks down every charge by day and by type — AI, templates, and Meta's message charges — so you can see where the money actually went.


---

---
title: "Pricing FAQ"
description: "Answers to the most common questions about Chatfuel pricing: what the plan includes, how the wallet and credits work, trials, invoices and cancellations."
canonical_url: https://chatfuel.com/docs/billing/pricing-faq
markdown_url: https://chatfuel.com/docs/billing/pricing-faq.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Pricing FAQ

Answers to the most common questions about Chatfuel pricing: what the plan includes, how the wallet and credits work, trials, invoices and cancellations.

## Plans are linked to companies [#plans-are-linked-to-companies]

* Your plan is directly linked to a specific company.

## Billing cycle [#billing-cycle]

* Your billing cycle starts on the day you purchase or upgrade your [plan](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing).
* We'll charge your card automatically on the same day each month (for monthly plans) or year (for annual plans).

## Managing your plan [#managing-your-plan]

* You can manage your plan anytime under `Billing`.

## Canceling [#canceling]

* You can [cancel your subscription](https://chatfuel.com/docs/billing/how-to-cancel-subscription-or-trial) at any time in `Billing`.
* If you cancel, you'll still have access to your current plan until the end of your billing cycle.

## Refunds [#refunds]

* Just bought a plan? Contact us right away for a full refund.
* Want to downgrade after using Chatfuel? Contact us within 3 days (monthly) or 30 days (annual) of your invoice.


---

---
title: "What Happens to Billing After You Cancel"
description: "Once you cancel your subscription, we will not charge you anything."
canonical_url: https://chatfuel.com/docs/billing/what-happens-to-billing-after-cancellation
markdown_url: https://chatfuel.com/docs/billing/what-happens-to-billing-after-cancellation.md
last_updated: 2026-03-13
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What Happens to Billing After You Cancel

Once you cancel your subscription, we will not charge you anything.

Once you cancel your subscription, **we will not charge you anything**. No further invoices will be issued.

## What to expect after cancellation [#what-to-expect-after-cancellation]

* Your plan remains active until the end of the current billing period — you keep full access until then.
* When the billing period ends, your account moves to the free Trial limits automatically.
* No charges are made after that point unless you choose to start a new plan.

If you haven't cancelled yet and need help doing it, see [how to cancel your subscription or trial](https://chatfuel.com/docs/billing/how-to-cancel-subscription-or-trial). If you're still on your [free trial](https://chatfuel.com/docs/billing/how-long-is-the-free-trial), remember you can cancel within the 7 days and won't be charged at all.


---

---
title: "What to Do When You Hit Your Limit"
description: "If your wallet has reached zero, processing stops: your automations stop replying and messages stop going out."
canonical_url: https://chatfuel.com/docs/billing/what-to-do-when-you-hit-your-limit
markdown_url: https://chatfuel.com/docs/billing/what-to-do-when-you-hit-your-limit.md
last_updated: 2026-08-17
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What to Do When You Hit Your Limit

If your wallet has reached zero, processing stops: your automations stop replying and messages stop going out.

If your [wallet](https://chatfuel.com/docs/billing/how-your-wallet-and-credits-work) has reached zero, processing stops: your automations stop replying and messages stop going out. Nothing is lost — your account, contacts, conversation history, and the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) all keep working, and live chat is still there so you can answer people by hand in the meantime.

## Set it up in Billing [#set-it-up-in-billing]

Two minutes gets you running again:

1. **Top up the wallet.** Go to the **Billing** tab and add funds — processing resumes as soon as the balance is above zero.
2. **Turn on auto-top-up** so it doesn't happen again. You set the amount, and we add it from your card before the balance runs out.

If a payment didn't go through, check the card on file first — [these are the cards we accept](https://chatfuel.com/docs/billing/accepted-payment-methods).

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"My AI stopped answering — did I run out of balance?"*

It checks your subscription and balance and shows you the top-up and upgrade options.

> **Note:** Completing the payment is one of the few steps the AI Co-Worker can't do for you — that part you finish in the **Billing** tab.

## Why did I run out? [#why-did-i-run-out]

Everything you use draws from one balance: AI replies, WhatsApp templates, and — from 1 October — the [service messages Meta charges for](https://chatfuel.com/docs/whatsapp/how-much-does-meta-charge-for-whatsapp-messages). Credits don't carry over between cycles, so a busy month can spend through them faster than a quiet one did. Usually it just means traffic is up, which is a good sign.

If you're regularly spending past your credits, a larger [plan](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing) gives you more credits for the money than topping up does.

## Will I lose my data? [#will-i-lose-my-data]

No. Your contacts, conversation history, AI settings, and [automations](https://chatfuel.com/docs/ai-features/automations) are all preserved. Once the wallet is funded, everything picks up right where you left off.

## Need help? [#need-help]

If the top-up isn't going through or your balance looks wrong, contact our support team — we'll get you back up and running.


---

---
title: "Where to Enter a Promo Code"
description: "You can apply a promo code when choosing your plan. The promo code field appears on the Stripe payment window — the same screen where you enter your card…"
canonical_url: https://chatfuel.com/docs/billing/where-to-enter-promo-code
markdown_url: https://chatfuel.com/docs/billing/where-to-enter-promo-code.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Where to Enter a Promo Code

You can apply a promo code when choosing your plan. The promo code field appears on the Stripe payment window — the same screen where you enter your card…

You can apply a promo code when choosing your [plan](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing). The promo code field appears on the Stripe payment window — the same screen where you enter your card details.

## How to apply a promo code [#how-to-apply-a-promo-code]

1. Go to **Billing** in your Chatfuel account.
2. Choose a plan.
3. On the Stripe payment window, look for the **Add promotion code** field.
4. Enter your promo code and click **Apply**.
5. The discount will be reflected in the total before you confirm payment.

## Good to know [#good-to-know]

* The promo code field is only visible on the Stripe checkout page, not inside Chatfuel itself.
* If your code isn't working, double-check for typos or expiration. Contact support if the issue persists.


---

---
title: "Why Do I See a Paywall?"
description: "You're seeing the paywall because your account is ready for a free trial — you just need to enter your card details to activate it."
canonical_url: https://chatfuel.com/docs/billing/why-do-i-see-a-paywall
markdown_url: https://chatfuel.com/docs/billing/why-do-i-see-a-paywall.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Why Do I See a Paywall?

You're seeing the paywall because your account is ready for a free trial — you just need to enter your card details to activate it.

You're seeing the paywall because your account is ready for a free trial — you just need to enter your card details to activate it.

## Your trial is completely free for 7 days [#your-trial-is-completely-free-for-7-days]

There's no charge upfront. For full details on [how long the trial lasts and what's included](https://chatfuel.com/docs/billing/how-long-is-the-free-trial), see the dedicated article. Once you enter your card, you get **full access to Chatfuel for 7 days at no cost**. This means you can connect your channels, set up Fuely AI, and start automating real conversations with customers — all before paying a cent.

After the 7-day trial, the [plan you picked](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing) kicks in and your card is charged automatically. No surprises, no hidden fees.

## Why do we ask for a card? [#why-do-we-ask-for-a-card]

We ask for payment details so you get the **full experience** from day one — no feature limits, no restrictions. You're testing the real product, not a watered-down demo.

## Cancel anytime — no strings attached [#cancel-anytime--no-strings-attached]

Changed your mind? You can [cancel your trial](https://chatfuel.com/docs/billing/how-to-cancel-subscription-or-trial) at any point during the 7 days and you won't be charged. Even after the trial, cancellation is always one click away in the Billing section.

## What you get during the trial [#what-you-get-during-the-trial]

* Full access to Fuely AI across WhatsApp, Instagram, Facebook, TikTok, and website
* $15 in credits to spend on AI and messaging
* AI-powered replies, follow-ups, and appointment booking
* The same features paying customers use — nothing held back

## Ready to start? [#ready-to-start]

Enter your card details, activate your free trial, and see what Chatfuel can do for your business in just 7 days. Most users see results within the first few conversations.


---

---
title: "Calendar Reminders"
description: "When you create a booking in Calendar, Chatfuel automatically sends three messages to your customer on WhatsApp."
canonical_url: https://chatfuel.com/docs/calendar/calendar-reminders
markdown_url: https://chatfuel.com/docs/calendar/calendar-reminders.md
last_updated: 2026-03-18
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Calendar Reminders

When you create a booking in Calendar, Chatfuel automatically sends three messages to your customer on WhatsApp.

When you create a booking in [Calendar](https://chatfuel.com/docs/calendar/calendar), Chatfuel automatically sends three messages to your customer on WhatsApp. You do **not** need to connect your own WhatsApp number — reminders work out of the box because they can be sent from Chatfuel's phone number.

* **Immediate confirmation** — sent right after the booking is created
* **1-day reminder** — sent 24 hours before the booking
* **2-hour reminder** — sent 2 hours before the booking

All messages automatically include the booking time, date, and your company name.

## Customizing reminder content [#customizing-reminder-content]

Each message type has an **Additional info** field where you can add custom text specific to your business:

* Location and directions ("We're on the 3rd floor, take the elevator on the left")
* Preparation tips ("Please arrive 10 minutes early and bring your ID")
* Parking info ("Free parking available behind the building")
* What to bring ("Wear comfortable clothes for the session")
* Cancellation policy ("Please cancel at least 24 hours in advance")

**Limit:** 512 characters per message type.

If you leave the field empty, the standard template is used without any additional text.

To edit reminders, go to **Calendar** → **Settings** → **Notifications** and update the **Additional info** field for each message type.

## Supported languages [#supported-languages]

The base reminder template is available in three languages: **English**, **Spanish**, and **Brazilian Portuguese**. You cannot change the base template to any other language.

The **Additional info** field, however, can be written in any language — it appears inside the base message, so you can use it to add text in Italian, French, German, or any other language your customers speak. The surrounding template text will remain in one of the three supported languages.

## Smart cancellation behavior [#smart-cancellation-behavior]

If a booking is cancelled, the 2-hour reminder is not sent — there's no point reminding someone who has already cancelled.

## Which number sends reminders [#which-number-sends-reminders]

Reminders are sent from whichever WhatsApp number is selected in your Calendar settings:

* **Chatfuel number** (default) — no setup needed, no WhatsApp connection required, reminders go out immediately. This is the only feature in Chatfuel where messages can be sent from Chatfuel's own number, so you can start using Calendar reminders without connecting any phone number at all.
* **Your business number** — optional, requires your WhatsApp number to be connected to Chatfuel and an active payment method in Meta

If you switch numbers, future reminders go out from the newly selected number. Existing bookings and history are not affected.

## How customers respond [#how-customers-respond]

The 1-day reminder includes action buttons. When a customer taps one, the booking status updates automatically in your calendar:

| Button     | Resulting status   |
| ---------- | ------------------ |
| Confirm    | Confirmed          |
| Cancel     | Cancelled          |
| Reschedule | Needs rescheduling |

You can also change a booking's status manually — useful when a customer confirms by phone or another channel.


---

---
title: "Calendar"
description: "Calendar lets you schedule bookings with your contacts directly in Chatfuel."
canonical_url: https://chatfuel.com/docs/calendar/calendar
markdown_url: https://chatfuel.com/docs/calendar/calendar.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Calendar

Calendar lets you schedule bookings with your contacts directly in Chatfuel.

Calendar lets you schedule bookings with your contacts directly in Chatfuel. Every booking you create automatically sends confirmation and reminder messages to your contacts via WhatsApp.

This means:

* Your customers get instant confirmation for their bookings
* They get reminders 1 day and 2 hours before their booking
* You see fewer no-shows because people don't forget about their booking
* You can track booking statuses — confirmed, needs rescheduling, or cancelled
* Everything happens automatically — no manual work from your team

Think of it as your booking system + automatic reminders rolled into one.

## Set it up in Calendar [#set-it-up-in-calendar]

1. Open **Calendar** in the left sidebar.
2. In the **Settings** tab, fill in your company info and add your services and specialists — [How to Set Up Calendar](https://chatfuel.com/docs/calendar/how-to-set-up-calendar) walks through it, and the sections below cover every setting.
3. Create bookings on the calendar view — click a time slot or the &#x2A;*+** button.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) what you want in chat:

*"Book Maria for a haircut tomorrow at 3pm."*

It updates your bookings, services, and specialists for you and confirms what it set.

> **Note:** Connecting your own WhatsApp number requires Meta authorization, so the Co-Worker can't complete that step for you — see **Option 2** below.

## Before you start [#before-you-start]

To use Calendar and get the automatic reminders working, you choose how booking messages are sent. Important: you do **not** need to connect your own WhatsApp number — reminders work immediately from Chatfuel's number.

### Option 1: Use Chatfuel's WhatsApp number (quickest setup, default) [#option-1-use-chatfuels-whatsapp-number-quickest-setup-default]

You can start using Calendar immediately without connecting your own WhatsApp. No phone number connection is needed at all. Chatfuel will send confirmations and [reminders](https://chatfuel.com/docs/calendar/calendar-reminders) from its own shared number. This is the fastest way to get started.

### Option 2: Use your own WhatsApp number (optional) [#option-2-use-your-own-whatsapp-number-optional]

If you prefer messages to come from your business number, you need to:

**1. Connect WhatsApp**

Your WhatsApp business number must be connected to Chatfuel. You can [connect your existing WhatsApp Business App number](https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number) or [connect a new phone number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number).

**2. Add a payment method in Meta**

WhatsApp only lets you message contacts who wrote to you in the last 24 hours — this is the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window). Booking confirmations and reminders often need to be sent days later, so they use WhatsApp templates (Meta's approved way to send messages beyond that window). Calendar uses Utility templates, which are the cheapest category for business communications like reminders.

To send template messages, you need an active payment method connected to Meta — even if the reminders end up being free.

**Will I be charged?**

It depends. If a contact messaged you in the last 24 hours — no, these reminders are free. If not, you will be charged a small fee ($0.01–$0.06 USD per message depending on your country). These charges come from Meta directly, not Chatfuel.

**Example pricing in some countries**

| Country   | Price (USD) | Price (local) |
| --------- | ----------- | ------------- |
| Argentina | $0.019      | \~ARS 19      |
| Brazil    | $0.032      | \~BRL 0.16    |
| Chile     | $0.016      | \~CLP 15      |
| Colombia  | $0.010      | \~COP 39      |
| EU        | $0.067      | \~€0.06       |
| India     | $0.006      | \~₹0.50       |
| Mexico    | $0.019      | \~MX$0.33     |
| Peru      | $0.010      | \~PEN 0.04    |

Even for free reminders, you must add a payment method to Meta.

## Setting up your Calendar [#setting-up-your-calendar]

Before creating bookings, configure your calendar in the **Settings** tab.

### General Info [#general-info]

* **Company Name** — appears in messages to your customers
* **Company Phone** — your business contact number
* **Language** — language for customer notifications

**WhatsApp Number** — choose which number sends your booking messages:

* **Chatfuel number** (default) — start immediately, no setup required
* **Your business number** — requires WhatsApp connection and Meta payment method

### Services [#services]

Create service types that your business offers. For each service, you can set:

* Service name (required)
* Duration (required)
* Price (optional) — supports multiple currencies
* Description (optional) — helps AI agents answer customer questions

When you add a service to a booking, the end time is automatically calculated based on duration.

### Specialists [#specialists]

Add team members who deliver your services (barbers, trainers, therapists, etc.). For each specialist:

**Details tab:**

* Photo — quality photos increase booking rates
* Name (required) and last name
* Description — helps AI personalize responses

**Services provided tab:**

* Select which services this person can deliver
* AI will use this to match customers with the right specialist

**Working hours tab:**

* Set individual schedules for each specialist
* Add multiple shifts per day (e.g., morning and afternoon with lunch break)
* Hours cannot exceed your business working hours

## Notifications [#notifications]

Configure which messages are sent automatically and customize their content.

**Message types:**

* **Immediate confirmation** — sent right after a booking is created
* **1-day reminder** — sent 24 hours before the booking
* **2-hour reminder** — sent 2 hours before the booking

All messages automatically include booking time, date, and your company name.

**Adding custom instructions**

Each notification type has an "Additional info" field where you can add custom text for your business needs:

* Location and directions ("We're on the 3rd floor, take the elevator on the left")
* Preparation tips ("Please arrive 10 minutes early and bring your ID")
* Parking info ("Free parking available behind the building")
* What to bring ("Wear comfortable clothes for the session")
* Cancellation policy ("Please cancel at least 24 hours in advance")

Custom text limit: 512 characters per message type.

If you leave the field empty, the standard message template is used without additional info.

## How to create bookings [#how-to-create-bookings]

1. Open **Calendar**.
2. Click the time slot you want for your booking. Or click the &#x2A;*+** button instead.
3. Fill out the fields:
   * WhatsApp contact
   * Phone number
   * Date and time
   * Service (optional) — auto-fills duration
   * Service provider (optional)

If your customer is not on the list of your contacts yet, just type their number to create a new contact.

4. Click **Save** to save your booking to the calendar.

Your booking now appears in Calendar and your customer immediately gets a confirmation message on WhatsApp.

## Booking statuses [#booking-statuses]

Every booking has a status that updates automatically based on customer responses:

* **Not confirmed** — default status for new bookings, waiting for customer response
* **Confirmed** — customer clicked "Confirm" in the reminder
* **Needs rescheduling** — customer requested to reschedule
* **Cancelled** — customer cancelled the booking

### How it works [#how-it-works]

The 1-day reminder includes buttons for customers to respond:

* Confirm
* Cancel
* Reschedule

When a customer taps a button, the booking status updates automatically in your calendar.

### Manual status changes [#manual-status-changes]

You can also change status manually by clicking the status indicator — useful when a customer confirms by phone or other means.

### Smart reminders [#smart-reminders]

If a booking is cancelled, the 2-hour reminder won't be sent — no point reminding someone who already cancelled.

## How to edit or remove bookings [#how-to-edit-or-remove-bookings]

* **Edit**: click the booking, make your changes, and click **Save**.
* **Cancel**: click the booking and click **Delete**.

## What's available now (and what's coming) [#whats-available-now-and-whats-coming]

### Available now [#available-now]

* Calendar view — clear schedule for all bookings
* Create bookings manually — schedule bookings in a familiar view
* Auto confirmations — customers get booking details right away in a WhatsApp message
* Auto reminders — sent 1 day and 2 hours before bookings
* Custom reminders — edit the text that gets sent to customers
* Booking status tracking
* Services with duration, price, and descriptions
* Specialists with individual schedules
* Send from Chatfuel number or your own

### Coming soon [#coming-soon]

* [Booking with Fuely AI](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking) — Fuely AI books appointments for you based on conversations with customers
* Multiple calendars for different teammates
* "Attended/No-show" status tracking

You can also [connect Google Calendar](https://chatfuel.com/docs/calendar/how-to-connect-google-calendar) to keep availability in sync and avoid double bookings.

## FAQ [#faq]

**What if I don't have WhatsApp connected?**

You can still use Calendar. Bookings will be created and reminders sent from Chatfuel's WhatsApp number. Connect your own number later in Settings when you're ready.

**What if my customer doesn't have WhatsApp?**

Currently, reminders only work through WhatsApp.

**Can I use Calendar in Flows?**

Not yet, but this is planned. For now, calendar event creation is only available through [Fuely AI](https://chatfuel.com/docs/calendar/setting-calendar-events-in-flow-ai).

**What happens to existing bookings if I switch WhatsApp numbers?**

New notifications will be sent from whichever number is selected at the time of sending. Your booking history is preserved.

**Can I delete a service that has future bookings?**

No — you'll see an error. Disable the service's availability instead so it won't appear for new bookings.


---

---
title: "Can I Change Booking Time Intervals?"
description: "Not yet. Right now, Calendar uses a fixed time grid — you cannot change the interval between available time slots (for example, switching from 30-minute to…"
canonical_url: https://chatfuel.com/docs/calendar/can-i-change-booking-time-intervals
markdown_url: https://chatfuel.com/docs/calendar/can-i-change-booking-time-intervals.md
last_updated: 2026-04-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Change Booking Time Intervals?

Not yet. Right now, Calendar uses a fixed time grid — you cannot change the interval between available time slots (for example, switching from 30-minute to…

Not yet. Right now, Calendar uses a fixed time grid — you cannot change the interval between available time slots (for example, switching from 30-minute to 15-minute or 60-minute intervals).

## What this means [#what-this-means]

When you create a booking or when [Fuely AI books appointments automatically](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking), time slots are spaced 30 minutes apart. You cannot change this to 15-minute or 60-minute intervals.

## What you can do now [#what-you-can-do-now]

* **Set service duration** — each [service](https://chatfuel.com/docs/calendar/how-to-set-up-calendar) has a required duration field. When a service is selected for a booking, the end time is calculated automatically based on that duration. This controls how long each booking lasts, but not how the time grid is divided.
* **Set specialist schedules** — you can define [working hours](https://chatfuel.com/docs/calendar/how-to-set-up-calendar) per specialist, including breaks and multiple shifts per day. This limits when bookings can be placed.

## Will this be available? [#will-this-be-available]

Custom time intervals are on the roadmap but there is no release date yet. For now, work with the default 30-minute grid and use service durations to control booking length.


---

---
title: "Can I Sync a Secondary Google Calendar?"
description: "No — Chatfuel only syncs with your primary Google Calendar. Secondary calendars (additional calendars you create or subscribe to in Google Calendar) are not…"
canonical_url: https://chatfuel.com/docs/calendar/can-i-sync-a-secondary-google-calendar
markdown_url: https://chatfuel.com/docs/calendar/can-i-sync-a-secondary-google-calendar.md
last_updated: 2026-03-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Sync a Secondary Google Calendar?

No — Chatfuel only syncs with your primary Google Calendar. Secondary calendars (additional calendars you create or subscribe to in Google Calendar) are not…

No — Chatfuel only syncs with your **primary** Google Calendar. Secondary calendars (additional calendars you create or subscribe to in Google Calendar) are not supported.

## Why only the primary calendar [#why-only-the-primary-calendar]

When you [connect your Google Calendar](https://chatfuel.com/docs/calendar/how-to-connect-google-calendar), Chatfuel reads availability and writes new bookings to your primary calendar. The integration does not have access to secondary or shared calendars. This means:

* Bookings created in [Calendar](https://chatfuel.com/docs/calendar/calendar) appear only in your primary Google Calendar
* Availability checks only look at events on your primary calendar
* Events from secondary calendars are not visible to Chatfuel and won't block time slots

## Workaround [#workaround]

If you use a secondary calendar for your business schedule, you can move those events to your primary calendar so they sync with Chatfuel. In Google Calendar:

1. Open the event on your secondary calendar.
2. Click **Edit** (pencil icon).
3. Change the **Calendar** dropdown to your primary calendar.
4. Click **Save**.

For new events, make sure to create them on your primary calendar so they sync automatically.

## FAQ [#faq]

**Will secondary calendar support be added?**

There is no confirmed timeline for secondary calendar support. For now, use your primary calendar for all bookings you want synced with Chatfuel.

**What if I have multiple team members with different calendars?**

Each specialist in Chatfuel has their own working hours configured in [Calendar settings](https://chatfuel.com/docs/calendar/how-to-set-up-calendar). Google Calendar sync applies to the connected Google account's primary calendar — it does not pull from individual team members' Google accounts.


---

---
title: "Does Google Calendar Sync Work with Two-Factor Authentication (2FA)?"
description: "Yes — Google Calendar sync works perfectly fine with two-factor authentication enabled on your Google account."
canonical_url: https://chatfuel.com/docs/calendar/does-google-calendar-sync-work-with-2fa
markdown_url: https://chatfuel.com/docs/calendar/does-google-calendar-sync-work-with-2fa.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Does Google Calendar Sync Work with Two-Factor Authentication (2FA)?

Yes — Google Calendar sync works perfectly fine with two-factor authentication enabled on your Google account.

Yes — Google Calendar sync works perfectly fine with two-factor authentication enabled on your Google account. You do not need to disable 2FA to connect your calendar.

## How the connection works [#how-the-connection-works]

Chatfuel connects to Google Calendar using OAuth, Google's standard secure sign-in method. When you link your Google account, you sign in through Google's own login page and grant Chatfuel permission to access your calendar. This process fully supports 2FA — you'll simply complete your usual second verification step (authenticator app, SMS code, or security key) during sign-in, just like logging into any other service.

Once connected, the sync stays active. You won't need to re-authenticate every time.

## What you need to do [#what-you-need-to-do]

1. Open [Google Calendar settings](https://chatfuel.com/docs/calendar/how-to-connect-google-calendar) in Chatfuel.
2. Generate a connection link for the specialist and open it.
3. Sign in to your Google account — complete your 2FA prompt as usual.
4. Grant Chatfuel permission to read your calendar.

That's it. Your Google Calendar events will sync into your Chatfuel [Calendar](https://chatfuel.com/docs/calendar/calendar). The sync is one-way: bookings created in Chatfuel do not appear in Google Calendar.

## FAQ [#faq]

**Will I need to reconnect if I change my 2FA method?**

No. The connection uses a token that persists independently of your 2FA settings. Changing from SMS to an authenticator app (or vice versa) won't break the sync.

**What if the sync stops working?**

If your Google session expires or you revoke access, you may need to reconnect. Just repeat the steps above — 2FA will work the same way during re-authentication.


---

---
title: "How to Connect Google Calendar"
description: "You can connect your specialists' Google Calendars to Chatfuel so that availability stays accurate and double bookings are avoided."
canonical_url: https://chatfuel.com/docs/calendar/how-to-connect-google-calendar
markdown_url: https://chatfuel.com/docs/calendar/how-to-connect-google-calendar.md
last_updated: 2026-07-03
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Connect Google Calendar

You can connect your specialists' Google Calendars to Chatfuel so that availability stays accurate and double bookings are avoided.

You can connect your specialists' Google Calendars to Chatfuel so that availability stays accurate and double bookings are avoided. Chatfuel imports events from Google Calendar and uses them when checking open time slots — if a specialist has a personal appointment or another client in Google Calendar, that slot won't be offered for new bookings.

This is a one-way sync: Google Calendar events appear in [Calendar](https://chatfuel.com/docs/calendar/calendar), but bookings created in Chatfuel do not appear in Google Calendar.

> **Note:** Connecting Google Calendar is one of the few steps the AI Co-Worker can't complete for you — Google Calendar sync requires each specialist to authorize with Google themselves. The Co-Worker can take you straight to the right page: just ask.

***

## Before you start [#before-you-start]

You need at least one specialist configured in [Calendar settings](https://chatfuel.com/docs/calendar/how-to-set-up-calendar). The connection is made per specialist — each specialist connects their own Google Calendar individually.

***

## Step 1: Generate a connection link [#step-1-generate-a-connection-link]

1. Open **Settings** in the left sidebar.
2. Go to the **Google Calendar** tab.
3. Find the specialist you want to connect.
4. Click **Generate link**.
5. A panel opens with the link. Click **Copy link** to copy it to your clipboard, or use **Share** to send it directly.

Send this link to the specialist. They will open it in a browser, sign in to their Google account, and grant Chatfuel permission to read their calendar. The sync supports [two-factor authentication](https://chatfuel.com/docs/calendar/does-google-calendar-sync-work-with-2fa) — no need to disable it.

> Users with the **Agent** role cannot generate, copy, or revoke links. Only admins and owners can manage Google Calendar connections.

***

## Step 2: Wait for the specialist to connect [#step-2-wait-for-the-specialist-to-connect]

After you generate a link, the specialist's row shows **Waiting for connection** until they complete the authorization. During this time you can:

* **Copy link** — copy the link again to resend it.
* **Revoke link** — cancel the link so it can no longer be used. You can generate a new one afterward.

***

## Step 3: Sync completes [#step-3-sync-completes]

Once the specialist grants access, Chatfuel imports their Google Calendar events:

1. **Sync in progress...** — events are being imported.
2. **Synced X min ago** — sync is complete. The timestamp updates to show how long ago the last sync happened (minutes, hours, or days).

From this point on, Chatfuel periodically checks the specialist's Google Calendar for new or changed events and updates availability accordingly.

***

## If sync fails [#if-sync-fails]

If something goes wrong — the specialist revoked access, a Google token expired, or there was a temporary Google error — the status changes to **Sync failed**.

To fix it:

1. Disconnect the calendar (see below).
2. Generate a new link and have the specialist reconnect.

***

## Disconnecting Google Calendar [#disconnecting-google-calendar]

1. Go to **Settings > Google Calendar**.
2. Find the specialist and click **Action > Disconnect**.
3. Confirm in the popup.

Events that were already imported into Chatfuel Calendar are kept — they are not deleted when you disconnect. Only future syncs stop.

***

## Banner reminder [#banner-reminder]

If any specialist does not have Google Calendar connected, a banner appears when you open Calendar:

* **Open settings** — takes you to Settings > Google Calendar.
* **Remind me later** — hides the banner until your next visit.
* **Close (X)** — hides the banner permanently.

***

## Header text reference [#header-text-reference]

The Google Calendar settings page shows different text depending on the connection state:

| State                                 | Text                                                                                                                                                              |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| No specialists added                  | Connect your specialists' Google Calendars to Chatfuel to avoid double bookings and keep availability accurate. Add your first specialist to get started.         |
| At least one specialist not connected | Generate a link to connect a Google Calendar. Use it yourself or send it to a specialist. Chatfuel will use it to check availability and prevent double bookings. |
| All specialists connected             | Chatfuel automatically keeps your availability in sync with Google Calendar to avoid double bookings. Events created in Chatfuel won't appear in Google Calendar. |

***

## FAQ [#faq]

**Does it work with two-factor authentication?**

Yes. See [Does Google Calendar Sync Work with 2FA?](https://chatfuel.com/docs/calendar/does-google-calendar-sync-work-with-2fa)

**Can I sync a secondary Google Calendar?**

No — only the [primary Google Calendar](https://chatfuel.com/docs/calendar/can-i-sync-a-secondary-google-calendar) is supported.

**What happens to imported events if I disconnect?**

They stay in Chatfuel Calendar. Only future syncs stop.

**Can agents manage Google Calendar connections?**

No. Only users with admin or owner roles can generate links, copy links, or disconnect calendars.


---

---
title: "How to Set Up Calendar"
description: "To use Calendar, you need at least one service and one specialist configured."
canonical_url: https://chatfuel.com/docs/calendar/how-to-set-up-calendar
markdown_url: https://chatfuel.com/docs/calendar/how-to-set-up-calendar.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Set Up Calendar

To use Calendar, you need at least one service and one specialist configured.

To use [Calendar](https://chatfuel.com/docs/calendar/calendar), you need at least one service and one specialist configured. Open **Calendar** in the left sidebar, then go to the **Settings** tab.

## Set it up in Calendar [#set-it-up-in-calendar]

### Step 1: Add Services [#step-1-add-services]

Services are required — Calendar needs at least one service to function. Services define what can be booked and how long each booking lasts.

1. In Your business, open the **Services** tab.
2. Click **Add service**.
3. Fill in the fields:
   * **Service name** (required)
   * **Duration** (required) — used to calculate the booking end time automatically
   * **Price** (optional) — supports multiple currencies
   * **Description** (optional) — helps AI agents answer customer questions about the service
4. Click **Save**.

Repeat for each service you offer. You can add as many services as needed.

> **Note:** You cannot delete a service that has future bookings. If you want to stop offering a service, disable its availability so it won't appear for new bookings.

### Step 2: Add Specialists [#step-2-add-specialists]

Specialists are required — bookings need someone to be assigned to. Specialists are the team members who deliver your services (barbers, trainers, therapists, coaches, etc.).

1. In Your business, open the **Specialists** tab.
2. Click **Add specialist**.

Each specialist has three tabs to fill in:

#### Details tab [#details-tab]

* **Photo** — a quality photo increases booking rates
* **Name** (required) and last name
* **Description** — helps AI personalize responses when customers ask about the team

#### Services provided tab [#services-provided-tab]

Select which services this specialist can deliver. A specialist will only be available for booking if they have at least one service assigned. If you need AI to handle autobooking, this is how it matches customers with the right person.

#### Working hours tab [#working-hours-tab]

Set the specialist's individual schedule:

1. Enable the days they work.
2. Set start and end times for each working day.
3. To add a break (e.g., lunch), click **Add shift** and set a second time range for the afternoon.

Working hours cannot exceed your business working hours. AI will only offer time slots that fall within a specialist's schedule.

4. Click **Save** when done.

Repeat for each specialist on your team.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) what you want in chat:

*"Add a 1-hour massage service for $50 and a specialist named Carla, working Mon–Fri 9–6."*

It updates your services and specialists (including their working hours) and confirms what it set.

## What's next [#whats-next]

Once Services and Specialists are set up, you're ready to create bookings. Go to the **Calendar*&#x2A; view, click any time slot or the &#x2A;*+** button, and fill out the booking form.

To customize the confirmation and reminder messages sent to customers, see [Calendar Reminders](https://chatfuel.com/docs/calendar/calendar-reminders).

To have Fuely AI handle scheduling conversations and create bookings automatically, see [How to Set Up AI Autobooking](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking).


---

---
title: "Can Flow AI Set Calendar Events?"
description: "No. Flow AI cannot create or manage calendar events. Calendar booking is only available through Fuely AI."
canonical_url: https://chatfuel.com/docs/calendar/setting-calendar-events-in-flow-ai
markdown_url: https://chatfuel.com/docs/calendar/setting-calendar-events-in-flow-ai.md
last_updated: 2026-03-04
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can Flow AI Set Calendar Events?

No. Flow AI cannot create or manage calendar events. Calendar booking is only available through Fuely AI.

No. Flow AI cannot create or manage calendar events. Calendar booking is only available through [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai).

## Why Flow AI doesn't support Calendar [#why-flow-ai-doesnt-support-calendar]

Flow AI is a scripted, button-based automation tool. Calendar integration requires a conversational AI layer that can handle scheduling logic — checking specialist availability, suggesting time slots, confirming details, and saving bookings. That capability belongs to Fuely AI, not Flow AI.

## How to book appointments with Fuely AI [#how-to-book-appointments-with-fuely-ai]

Fuely AI handles the entire booking conversation automatically. It checks your specialists' schedules, proposes available slots, and saves the appointment directly to your [Calendar](https://chatfuel.com/docs/calendar/calendar) — without any manual steps.

To set this up, follow the [AI Autobooking guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking).

## What about creating bookings manually? [#what-about-creating-bookings-manually]

If you don't want to use AI at all, you can always create bookings manually from the Calendar view — click any time slot or the &#x2A;*+** button and fill out the form. This works regardless of whether you use Fuely AI or Flow AI.


---

---
title: "Can I Sync My Catalog with Facebook or Instagram Shops?"
description: "No, Chatfuel does not sync with Facebook Shops, Instagram Shops, or Meta Commerce Manager catalogs."
canonical_url: https://chatfuel.com/docs/catalog/can-i-sync-catalog-with-facebook-or-instagram-shops
markdown_url: https://chatfuel.com/docs/catalog/can-i-sync-catalog-with-facebook-or-instagram-shops.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Sync My Catalog with Facebook or Instagram Shops?

No, Chatfuel does not sync with Facebook Shops, Instagram Shops, or Meta Commerce Manager catalogs.

No, Chatfuel does not sync with Facebook Shops, Instagram Shops, or Meta Commerce Manager catalogs. There is no way to import products from these platforms into Chatfuel, and Chatfuel's catalog cannot be exported or connected to them.

## Why it doesn't sync [#why-it-doesnt-sync]

Facebook and Instagram Shops are designed for browsing and checkout within Meta's own apps. Chatfuel's catalog serves a different purpose — it gives the AI the product and service information it needs to answer customer questions in chat. These are two separate systems with no integration between them.

## What to do instead [#what-to-do-instead]

Use Chatfuel's built-in Catalog to add your products and services directly:

1. Go to **Knowledge Base** → **Catalog**.
2. Click **Add item**.
3. Fill in the product or service name, description (include sizes, measurements, and prices), and optionally [attach photos](https://chatfuel.com/docs/catalog/how-to-attach-photos-to-services-or-products).
4. Save and repeat for each item.

Once your items are in the Catalog, the AI will automatically use them to answer customer questions about your products, pricing, and availability — across all connected channels including [Instagram](https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram), [Facebook Messenger](https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook), and [WhatsApp](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp).

## If you have many products [#if-you-have-many-products]

There is currently no bulk import option — items must be [added one by one](https://chatfuel.com/docs/catalog/can-i-upload-a-price-list). If you have a large product catalog in your Facebook or Instagram shop, you will need to re-enter the key items manually into Chatfuel's Catalog.

Focus on the products customers ask about most often. You don't need to copy your entire shop — just the items the AI should be able to discuss in chat.


---

---
title: "Can I Upload a Price List?"
description: "No, there is no way to bulk-upload a price list or import a spreadsheet into Chatfuel."
canonical_url: https://chatfuel.com/docs/catalog/can-i-upload-a-price-list
markdown_url: https://chatfuel.com/docs/catalog/can-i-upload-a-price-list.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Upload a Price List?

No, there is no way to bulk-upload a price list or import a spreadsheet into Chatfuel.

No, there is no way to bulk-upload a price list or import a spreadsheet into Chatfuel. All products and services must be added to your [Catalog](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) one by one.

## Set it up in Catalog [#set-it-up-in-catalog]

1. Go to **Knowledge Base** → **Catalog**.
2. Click **Add item**.
3. Fill in the product or service name, description (include sizes, measurements, and prices), and optionally [attach photos](https://chatfuel.com/docs/catalog/how-to-attach-photos-to-services-or-products).
4. Save and repeat for each item.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

There is no file-import feature, but you can paste your price list to the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) in chat and tell it what you want:

*"Here's my price list — add all of these to my catalog."*

It adds every item from the list to your catalog and confirms what it set.

## Tips for price lists with many variations [#tips-for-price-lists-with-many-variations]

If you sell items that come in multiple sizes or measurements (like covers), you have two options:

* **One item per size** — create a separate catalog entry for each variation (e.g., "Cover 100×200", "Cover 120×200"). This gives the AI exact pricing for each size.
* **One item with all sizes in the description** — list every size and its price inside the description field of a single item. The AI will read the full description and quote the correct price when a customer asks about a specific size.

Either approach works. Choose whichever is easier to maintain given the number of variations you have.


---

---
title: "How to Attach Photos to Services or Products"
description: "You can add up to 10 photos to any item in your Catalog. When a customer asks about a product or service, the AI will automatically send these photos along…"
canonical_url: https://chatfuel.com/docs/catalog/how-to-attach-photos-to-services-or-products
markdown_url: https://chatfuel.com/docs/catalog/how-to-attach-photos-to-services-or-products.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Attach Photos to Services or Products

You can add up to 10 photos to any item in your Catalog. When a customer asks about a product or service, the AI will automatically send these photos along…

You can add up to 10 photos to any item in your Catalog. When a customer asks about a product or service, the AI will automatically send these photos along with the item details.

## Set it up in Catalog [#set-it-up-in-catalog]

1. Go to **Knowledge Base** → **Catalog**.
2. Click **Add item** to create a new service or product, or click an existing item to edit it.
3. In the item editor, click the photo upload area and select up to 10 images.
4. Save the item.

That's it — the photos are now attached to your catalog item.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Send the images to the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) in chat and tell it what you want:

*"Attach these photos to the Balayage service."*

It attaches the photos to your catalog items and confirms what it set.

## How it works for customers [#how-it-works-for-customers]

When a customer asks about a product or service that has photos, the AI will include those images in its reply. This helps customers see exactly what you offer without leaving the chat.

## Tips [#tips]

* Use clear, high-quality images that show your product or service well.
* Add multiple angles or variations if relevant (e.g., different colors, before/after results).
* Keep file sizes reasonable so images load quickly for customers.
* You can update photos at any time by editing the item in your [Catalog](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base).


---

---
title: "Facebook Comment Autoreply"
description: "Fuely AI replies to comments under your Facebook Page's posts — publicly under the comment, in a private Messenger message, or both."
canonical_url: https://chatfuel.com/docs/facebook/facebook-autoreply
markdown_url: https://chatfuel.com/docs/facebook/facebook-autoreply.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Facebook Comment Autoreply

Fuely AI replies to comments under your Facebook Page's posts — publicly under the comment, in a private Messenger message, or both.

Fuely AI replies to comments under your Facebook Page's posts — publicly under the comment, in a private Messenger message, or both. Comment replies are handled by the **Posts** [automation](https://chatfuel.com/docs/ai-features/automations) source. For the full picture of Facebook sources, see [Facebook automations](https://chatfuel.com/docs/facebook/facebook-tasks).

## How comment automations are organized [#how-comment-automations-are-organized]

The **Posts** source has a **base automation** — the permanent catch-all. It starts off; turn it on and Fuely AI answers every comment under your posts, using your instructions and Knowledge Base.

On top of the base, the source takes up to 30 [custom automations](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) — named rules for specific cases. A rule can target:

* **Keywords** — react to comments matching a word exactly, containing it, not containing it, or to any comment at all (up to 50 keywords per rule)
* **A list of posts** — only comments on the posts you pick, up to 50 per rule; leave the list empty and the rule covers every post on the Page

Every comment rule — base or custom — controls two replies you can enable independently:

* **Public reply** — the visible answer under the comment: written by the AI, or a fixed text you set
* **Private reply** — the Messenger message sent to the commenter

## Which rule answers a comment [#which-rule-answers-a-comment]

When several rules could match, Chatfuel picks exactly one, in [priority order](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment): rules targeted at specific posts first, then general custom rules, then the base automation. Within those, an exact keyword match beats a contains match, which beats an any-comment rule. Rules that are turned off never compete.

Comment sources also offer a "don't reply" choice in **Incoming messages**, so a rule can deliberately leave the comments it matches unanswered — for example, keeping the AI quiet on one post while the base automation keeps answering everywhere else.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **Facebook**, open **Posts**.
3. Turn on the base automation to answer every comment, or add a custom automation and set its keywords or [list of posts](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads). Picking specific posts requires a [connected Facebook Page](https://chatfuel.com/docs/facebook/how-to-connect-a-facebook-fanpage); everything else can be set up before connecting.
4. Set the **Public reply** and **Private reply**, and adjust **Additional instructions** if you want a specific tone or goal.
5. Try it in the [Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) sidebar before going live.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"When someone comments PRICE under my Facebook posts, reply publicly and send them the price list in Messenger."*

It applies the change and confirms what it set. If your Page isn't connected yet, it sets everything up first and takes you to the connection step at the end.

## Tips for writing instructions [#tips-for-writing-instructions]

* Be specific about your tone and style.
* State your goal — drive people to Messenger, answer questions, share a link.
* Include examples of what you want Fuely AI to say. It can include links in both public replies and Messenger messages:

> *If the comment says EBOOK, send this link: chatfuel.com/ebook*
>
> *When someone asks about pricing, share our pricing page: yoursite.com/pricing*

## Important notes [#important-notes]

### Messaging limits [#messaging-limits]

Messenger [limits how you can message people after a comment](https://chatfuel.com/docs/facebook/messaging-rules-for-facebook):

* **After a comment** — one private reply per comment, sent within 7 days of the comment. Further messages wait for the person to reply in Messenger.
* **Existing contacts** — 24-hour window to message after their last message.

### Where private replies end up [#where-private-replies-end-up]

* **People who have messaged your Page before** — the message goes to their Messenger inbox.
* **People who only commented** — the message may land in their message requests folder, with no notification.

To help new commenters find your message, add a public reply that points them to their inbox:

> *Thanks for your comment! Just sent you a message.*
>
> *Appreciate your interest! Check your Messenger inbox.*

### Plans [#plans]

Fixed-text public replies and Messenger messages work on every plan. Replies written by the AI require a paid plan — see [plans and pricing](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing).


---

---
title: "Facebook Automations"
description: "Fuely AI handles your Facebook Page through automations, one per source: Messenger DMs, comments under Page posts, m.me links and ads that click to Messenger."
canonical_url: https://chatfuel.com/docs/facebook/facebook-tasks
markdown_url: https://chatfuel.com/docs/facebook/facebook-tasks.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Facebook Automations

Fuely AI handles your Facebook Page through automations, one per source: Messenger DMs, comments under Page posts, m.me links and ads that click to Messenger.

Fuely AI talks to your Facebook audience through [automations](https://chatfuel.com/docs/ai-features/automations) — one for every place a conversation can start on your Facebook Page: Messenger, comments under your posts, m.me links, and ads that open Messenger. Each automation has its own settings, so you can keep one shared behavior across all of Facebook or fine-tune every source separately.

On Chatfuel, "Facebook" and "Messenger" are the same channel. It is a [connected Facebook Page](https://chatfuel.com/docs/facebook/how-to-connect-a-facebook-fanpage): DMs to that Page land in Messenger, comments land under the Page's posts. Logging in with Facebook to connect Instagram or WhatsApp does not connect a Facebook Page — that is a separate step in **Settings** → **Facebook**.

You manage automations in two equal ways: at **Fuely AI** → **Automations** in the dashboard, or by asking the [AI Co-Worker](/docs/ai-features/what-the-ai-co-worker-can-do-for-you&#x29; in chat — &#x2A;"Show my Facebook automations."* Both do the same thing.

## The four Facebook sources [#the-four-facebook-sources]

Under **Facebook** in Automations you'll find a source for each way a customer can reach you:

* **Incoming messages** — DMs to your Page in Messenger
* **Posts** — comments under your Page's posts
* **m.me link** — conversations started from an m.me link
* **Ads that click to Messenger** — DMs from people who tapped an ad that opens Messenger

Each source has a **base automation**. It's always there — it can't be renamed or deleted — and it starts off, so [turning AI on for a source](https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook) simply means enabling its automation. Sources you leave off stay silent.

Facebook has no reels, stories, or ad-comment sources. Comments under a post are handled by the **Posts** source; ads are handled by the **Ads that click to Messenger** source, which watches conversations that start from the ad, not comments left on it.

## Custom automations [#custom-automations]

On the posts, link, and ad sources — everything except incoming messages — you can add up to 30 [custom automations](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation): named rules that react only to specific content, such as a keyword, a particular post, one m.me link, or one ad. On the **Posts** source, rules also control the **Public reply** under the comment and the **Private reply** sent to Messenger — see [Facebook comment autoreply](https://chatfuel.com/docs/facebook/facebook-autoreply). The link and ad sources are covered in [m.me links and ads that click to Messenger](https://chatfuel.com/docs/facebook/m-me-links-and-ads-that-click-to-messenger).

When several automations could answer the same comment or message, [a priority order picks one](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment): rules targeted at the specific post or ad win over general rules, and general rules win over the base.

## Your comments and DMs in one place [#your-comments-and-dms-in-one-place]

When someone comments and Fuely AI replies, you'll see both the public comment thread and the private Messenger reply in the **Chats** tab. In Messenger, the AI knows which post, link, or ad the conversation came from, so its answers stay in context.

## Contact properties [#contact-properties]

Contacts created by Facebook automations carry source properties so you can see where each person came from.

| Contact action                               | Original source / Last source | Original source details / Last source details |
| -------------------------------------------- | ----------------------------- | --------------------------------------------- |
| Messages your Page in Messenger              | Facebook direct               |                                               |
| Messages your Page via an m.me link          | m.me link                     | `{m.me link}`                                 |
| Comments under a Page post                   | Facebook comment              |                                               |
| Messages from an ad that clicks to Messenger | Ad that clicks to Messenger   | `{ID ad}`                                     |

## Messaging limits [#messaging-limits]

Messenger restricts when you can message people — see [messaging rules for Facebook](https://chatfuel.com/docs/facebook/messaging-rules-for-facebook) for full details.

* **After a comment** — one private reply per comment, sent within 7 days of the comment. After that, wait for the person to reply in Messenger.
* **In Messenger** — 24 hours to message after the person's last message.

## Where your DMs end up [#where-your-dms-end-up]

* If someone has **messaged your Page before** — your message goes to their Messenger inbox.
* If they **have never messaged you** and only left a comment — your private reply may land in their message requests folder, with no notification.

Messages in the requests folder are easy to miss. On the posts source, use the public reply to point new commenters at their inbox:

> *Thanks for your comment! Just sent you a message.*
>
> *Appreciate your interest! Check your Messenger inbox.*


---

---
title: "How to Activate AI in Facebook"
description: "Every Facebook automation starts off, so Fuely AI stays quiet until you enable the sources you want it to handle."
canonical_url: https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook
markdown_url: https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Activate AI in Facebook

Every Facebook automation starts off, so Fuely AI stays quiet until you enable the sources you want it to handle.

Every Facebook [automation](https://chatfuel.com/docs/ai-features/automations) starts off, so Fuely AI stays quiet until you enable the sources you want it to handle. Activating AI on Facebook means three things: a [connected Facebook Page](https://chatfuel.com/docs/facebook/how-to-connect-a-facebook-fanpage), enabled automations for the right sources, and a filled Knowledge Base so the AI has something to say.

You can configure automations before the Page is connected — the setup is saved as a draft and goes live the moment the channel connects.

> **Also on Instagram or WhatsApp?** See [How to activate AI in Instagram](https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram) and [How to activate AI in WhatsApp](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp) for platform-specific steps.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **Facebook**, you'll see an automation for each source: incoming messages, posts, m.me link, and ads that click to Messenger — [here's what each one covers](https://chatfuel.com/docs/facebook/facebook-tasks).
3. Turn on each source you want Fuely AI to handle. Enable only incoming messages, only [comment replies](https://chatfuel.com/docs/facebook/facebook-autoreply), or any combination — sources you leave off stay silent.
4. Adjust the settings on any automation if you want behavior different from your defaults; everything you don't touch follows **Main bot**.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Answer all Facebook messages and reply to comments on my posts."*

It applies the change and confirms what it set.

## Fill the Knowledge Base [#fill-the-knowledge-base]

The [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) is what the AI knows; automations are where and how it behaves. Without it, Fuely AI can only give generic replies.

What to add:

* **FAQs** — common questions and your preferred answers
* **Product or service descriptions** — what you sell or offer
* **Policies** — shipping, returns, working hours, etc.
* **Contact details** — where to send customers who need human help

The more relevant content you add, the better the AI will answer your customers.

## Test your setup [#test-your-setup]

Open any Facebook automation and use the **Test chat** sidebar — it [simulates a conversation with exactly that automation's settings](https://chatfuel.com/docs/ai-features/how-to-test-your-automation), so you can check answers before customers see them. Ask a question covered in your Knowledge Base and verify the answer is accurate.

If the AI doesn't reply in a real conversation, check that the source's automation is turned on and that your Facebook Page is still connected under **Settings** → **Facebook**.

## Important notes [#important-notes]

### Messaging limits [#messaging-limits]

Messenger [restricts when you can message people](https://chatfuel.com/docs/facebook/messaging-rules-for-facebook):

* **After a comment** — one private reply per comment, within 7 days of the comment; then wait for the person to reply.
* **In Messenger** — 24-hour window to reply after the person's last message.

### Where DMs end up [#where-dms-end-up]

* If someone **has messaged your Page before** — your message goes to their Messenger inbox.
* If they **only left a comment** and never messaged you — the private reply may land in their message requests folder with no notification.

### Human takeover [#human-takeover]

Agents can take over any AI-handled conversation at any time. See [How to stop AI during active conversations](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations).


---

---
title: "How to Connect a Facebook Fanpage"
description: "Below, you'll learn how to connect your Facebook Page (fanpage) to Chatfuel."
canonical_url: https://chatfuel.com/docs/facebook/how-to-connect-a-facebook-fanpage
markdown_url: https://chatfuel.com/docs/facebook/how-to-connect-a-facebook-fanpage.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Connect a Facebook Fanpage

Below, you'll learn how to connect your Facebook Page (fanpage) to Chatfuel.

Below, you'll learn how to connect your Facebook Page (fanpage) to Chatfuel. Most steps are automatic and take a minute or two.

> **Note:** Connecting a Facebook Page is one of the few steps the AI Co-Worker can't complete for you — it requires authorizing with Facebook in your own account. The Co-Worker can take you straight to the right page: just ask.

## Fanpage = Facebook Page [#fanpage--facebook-page]

A "fanpage" is simply another name for a Facebook Page. There is no difference — if you have a fanpage, you already have a Facebook Page, and the connection process is the same.

## Facebook login is not a connected Page [#facebook-login-is-not-a-connected-page]

If you have already logged in with Facebook to connect Instagram or WhatsApp, your Facebook Page is not connected yet. Instagram and WhatsApp use Facebook only to authorize; the Facebook channel itself — Messenger and comments under your posts — is a Page connected in **Settings** → **Facebook**. Each bot connects one Page.

## How to connect your Facebook Page [#how-to-connect-your-facebook-page]

1. Open **Settings** → **Facebook**, then click **Connect Facebook**.
2. If you're not already logged into Facebook, log in. Use an account that has admin access to the Page you want to connect.
3. Allow Chatfuel access to your Pages when Facebook asks. Facebook also lists ad accounts in the same request — that's what lets Chatfuel recognize leads from your [ads that click to Messenger](https://chatfuel.com/docs/facebook/m-me-links-and-ads-that-click-to-messenger).
4. In the **Choose a Facebook Page** window, pick the Page this bot should manage and click **Connect Page**.
5. Done! Your Page now shows under **Settings** → **Facebook**.

Once connected, you can [activate AI on your Facebook Page](https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook) to start automating replies. You can also set up your [automations](https://chatfuel.com/docs/facebook/facebook-tasks) before connecting — they go live the moment the Page connects.

## Known issues [#known-issues]

**The login window doesn't open.** If you see "Facebook SDK failed to load", a VPN or ad blocker is blocking Facebook. Disable it and try again; Chatfuel falls back to a full-page Facebook login when the popup is blocked.

**No Pages are listed.** Facebook only offers Pages where your account has admin access. Check the Page's roles in Facebook, or log in with the account that administers the Page.

**The connection dropped.** If the AI stops answering, go to **Settings** → **Facebook** and reconnect the Page.

## Disconnecting [#disconnecting]

To disconnect, open **Settings** → **Facebook** and click **Disconnect**. Your automations keep their settings and go live again when you connect a Page. You can also ask the AI Co-Worker to disconnect the Page — it confirms with you before doing it.


---

---
title: "m.me Links and Ads that Click to Messenger"
description: "m.me links and ads that click to Messenger are two more Facebook sources, each with its own automation so the AI can greet and route them differently."
canonical_url: https://chatfuel.com/docs/facebook/m-me-links-and-ads-that-click-to-messenger
markdown_url: https://chatfuel.com/docs/facebook/m-me-links-and-ads-that-click-to-messenger.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# m.me Links and Ads that Click to Messenger

m.me links and ads that click to Messenger are two more Facebook sources, each with its own automation so the AI can greet and route them differently.

Besides Messenger DMs and comments, your Facebook Page gets conversations from two more places: **m.me links** you share anywhere, and **ads that click to Messenger** you run in Meta Ads Manager. Each is its own [automation](https://chatfuel.com/docs/ai-features/automations) source under **Facebook**, so leads from a link or an ad can get a different greeting than a regular DM. For the full picture, see [Facebook automations](https://chatfuel.com/docs/facebook/facebook-tasks).

## m.me links [#mme-links]

An m.me link opens a Messenger conversation with your Page in one tap: `m.me/YourPage`. Add a ref parameter — `m.me/YourPage?ref=spring-sale` — and Chatfuel knows which link the person came from.

The **m.me link** source has a base automation for every link, and up to 30 [custom automations](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) targeted by **Ref links** — the ref values you want a rule to react to, up to 20 per rule. Use a different ref on your website, in your email signature, and on a QR code at the counter, and each one can start a different conversation.

## Ads that click to Messenger [#ads-that-click-to-messenger]

Ads that click to Messenger open a Messenger conversation the moment someone taps the ad. Creating the ad itself happens in Meta Ads Manager — the same way as [ads that click to WhatsApp](https://chatfuel.com/docs/whatsapp/create-ads-that-click-to-whatsapp), with Messenger as the destination.

On the Chatfuel side, the **Ads that click to Messenger** source has a base automation for every ad and up to 30 custom automations targeted by a **List of ads** — paste the ad ID or the full Ads Manager URL — and optionally **keywords**. This source watches conversations that start from the ad; comments people leave on the ad are not a Facebook source.

> **Note:** Reporting conversions back to Meta from the conversation is available on ads that click to WhatsApp only.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **Facebook**, open **m.me link** or **Ads that click to Messenger**.
3. Turn on the base automation to handle every link or ad, or add a custom automation and set its [ref links or list of ads](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads).
4. Adjust **Additional instructions** for the greeting and goal you want for these leads.
5. Try it in the [Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) sidebar before going live.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"For people who come from this ad — \[paste the Ads Manager link] — greet them with the summer offer and ask for their phone number."*

It applies the change and confirms what it set.

## Messaging limits [#messaging-limits]

A conversation from a link or an ad is a normal Messenger conversation: the [24-hour window](https://chatfuel.com/docs/facebook/messaging-rules-for-facebook) starts with the person's first message.


---

---
title: "Messaging rules for Facebook"
description: "To prevent spam, Meta puts limits on when a Facebook Page can message people in Messenger."
canonical_url: https://chatfuel.com/docs/facebook/messaging-rules-for-facebook
markdown_url: https://chatfuel.com/docs/facebook/messaging-rules-for-facebook.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Messaging rules for Facebook

To prevent spam, Meta puts limits on when a Facebook Page can message people in Messenger.

To prevent spam, Meta puts limits on when a Facebook Page can message people in Messenger. **These rules apply to Facebook only** — Instagram and WhatsApp have their own.

## Comments [#comments]

When someone comments under one of your Page's posts, Facebook lets you answer in two ways, and Fuely AI uses both through [comment autoreply](https://chatfuel.com/docs/facebook/facebook-autoreply):

* **Public reply** — a comment under theirs, no limits beyond Facebook's usual rules.
* **Private reply** — one Messenger message per comment, sent within 7 days of the comment. Only one private reply is allowed per comment; further messages can be sent once the person replies in Messenger.

A person who only commented and never messaged your Page may receive the private reply in their message requests folder, without a notification. A public reply that says "check your inbox" helps them find it.

## Messenger [#messenger]

For contacts who have messaged your Page, you can message them within time windows from their last message:

**Fuely AI**: *24 hours* — the same [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) concept used on WhatsApp

**Chats tab (live chat)**: *24 hours* — the same window applies to human agents in Messenger

The 24-hour window for Fuely AI is driven by the bot's own replies — it opens and resets only when an automation matches and the bot actually answers, not on every interaction. For the full rules on when the window opens, extends, and resets, see [how Fuely AI sessions work](https://chatfuel.com/docs/ai-features/how-fuely-ai-sessions-work).

## Ads and m.me links [#ads-and-mme-links]

Conversations that start from an m.me link or an ad that clicks to Messenger open a normal Messenger conversation — the 24-hour window starts with the person's first message. See [m.me links and ads that click to Messenger](https://chatfuel.com/docs/facebook/m-me-links-and-ads-that-click-to-messenger).


---

---
title: "After hours and 24/7 replies"
description: "Meta doesn't pause the client's ads at 6 p.m. — leads click at midnight, on Sundays, during lunch."
canonical_url: https://chatfuel.com/docs/for-agencies/after-hours-and-24-7-replies
markdown_url: https://chatfuel.com/docs/for-agencies/after-hours-and-24-7-replies.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# After hours and 24/7 replies

Meta doesn't pause the client's ads at 6 p.m. — leads click at midnight, on Sundays, during lunch.

Meta doesn't pause the client's ads at 6 p.m. — leads click at midnight, on Sundays, during lunch. Speed of the first reply is what decides whether that click becomes a conversation: answer within seconds and the lead is still on their phone; answer in the morning and they've messaged three competitors. On Meta channels, [the 24-hour rule](https://chatfuel.com/docs/for-agencies/the-24-hour-rule-explained) is one more reason that first reply can't wait. The bot always replies instantly — the only real question is *when* it should be the one replying, and when the client's human team takes over.

## The two modes [#the-two-modes]

That question is the **When AI replies** setting, and it exists on every [automation](https://chatfuel.com/docs/ai-features/automations). Two modes:

* **Always.** The bot answers every incoming message, any time. The team picks up qualified leads from the inbox whenever they're online. This is the default recommendation for a lead-gen funnel: qualification happens the moment the lead writes, and nobody has to be awake for it.
* **Outside working hours.** During the client's working hours the bot stays silent and the team answers live; nights, weekends, and holidays the AI takes over. Pick this when the client insists their staff handle daytime chats personally — the bot becomes their night shift.

There is no "never reply" mode. If the client truly wants a channel silent, you don't pick a mode — you turn that source's automation off. In a funnel that's rarely the right call: an unanswered ad click is money already spent.

Because the setting lives per automation, it also doesn't have to be one answer for the whole account. Set it once on **Main bot** and every source inherits it — or override it where one channel differs: the client's WhatsApp ads answering 24/7 while their Instagram DMs, which their staff likes to handle personally, get the AI only after hours.

## Which one to recommend [#which-one-to-recommend]

For most performance-marketing clients: **Always**. The bot's whole value is instant, consistent qualification — and a lead who wrote at 2 p.m. doesn't mind an AI any more than one who wrote at 2 a.m. Reserve "outside working hours" for clients whose daytime sales conversations are genuinely consultative and staffed — say, a clinic whose administrators already answer within a minute. Either way, qualified leads land in the same team inbox, and the [handoff rules](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) work the same in both modes.

**Important:** the trap is picking "outside working hours" with no working hours set. The mode needs to know what the hours *are*. If the client's hours aren't set in Chatfuel, there's no "inside" to stay silent in — the bot effectively answers around the clock anyway. So when you pick this mode, set the weekly schedule first: hours per day, days not listed count as closed. The timezone is taken from the company's own settings — no need to specify it. Working hours live in the Knowledge Base as part of [the client's business info](https://chatfuel.com/docs/for-agencies/uploading-client-business-info), so a well-run onboarding has them filled already.

## How to set it [#how-to-set-it]

In the dashboard: go to **Fuely AI** → **Automations**, open **Main bot** — or the one source that should behave differently — and set **When AI replies**. [Here's the step-by-step, working hours included](https://chatfuel.com/docs/ai-features/how-to-configure-working-hours).

Or tell the AI Co-Worker what you want:

* *"Make the bot reply 24/7."*
* *"Only reply outside our business hours."*
* *"On Instagram DMs, reply only after hours — keep everything else 24/7."*
* *"Update our business hours: Mon–Fri 9 to 18, Sat 10 to 14."*

Both paths set the same thing — use whichever is faster. The &#x2A;*"Set up WhatsApp"*&#x2A; onboarding also asks this exact question — &#x2A;"should the bot reply around the clock, or only outside your business hours?"* — so a bot built through onboarding already has the answer configured. And if the bot ever stays silent when you expect it to answer, the reply mode is one of the first suspects — [Troubleshooting the qualification bot](https://chatfuel.com/docs/for-agencies/troubleshooting-the-qualification-bot) has the full checklist.


---

---
title: "Agency → clients model: how client companies are structured"
description: "You're about to run funnels for more than one business at a time."
canonical_url: https://chatfuel.com/docs/for-agencies/agency-clients-model
markdown_url: https://chatfuel.com/docs/for-agencies/agency-clients-model.md
last_updated: 2026-09-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Agency → clients model: how client companies are structured

You're about to run funnels for more than one business at a time.

You're about to run funnels for more than one business at a time. Different WhatsApp numbers, different ad accounts, different sales teams, different budgets — and one Chatfuel login on your side. The structure that makes this work is simple, and getting it right on day one saves you from an untangling project six months in: &#x2A;*every client gets their own company inside your agency's workspace.**

## One client = one company [#one-client--one-company]

Your agency has a single Chatfuel **workspace** — that's yours, with your subscription and your team at the top. Inside it, each client lives in their own **company**: a fully sealed unit with its own bots, its own connected channels, its own contacts and conversations, its own settings and team. Nothing crosses over. Client A's leads never appear in client B's pipeline, a change to one client's AI never touches another's, and when a client's staff logs in, all they can see is their own business.

You create as many companies as you have clients — there's no cap — and switch between them in two clicks:

1. Click the **company name** at the bottom of the left sidebar and choose **Workspaces** (or open [panel.chatfuel.com/workspaces](https://panel.chatfuel.com/workspaces)).
2. Open your workspace → **Companies** — every client company in your workspace, in one list.
3. Pick a company, and the whole dashboard switches to it: that client's bots, chats, leads, and settings.

[Creating a new one](https://chatfuel.com/docs/for-agencies/create-a-client-company) is the same path: **Workspaces → Companies → Create company**. It appears in the list instantly, empty and ready for [the client's channels](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for).

## Billing: your clients never see it [#billing-your-clients-never-see-it]

Here's the part that makes this an agency product rather than ten separate subscriptions: &#x2A;*billing lives at the agency level, not per client.**

Chatfuel offers agencies two plans — one covering a few client bots, and one with unlimited bots for agencies running a larger book of clients. On both, usage limits are **shared across your whole workspace** rather than metered per company, so a quiet client's unused capacity absorbs a busy client's spike.

What that means in practice:

* **You pay Chatfuel once, centrally.** One subscription, one invoice, on your agency's card.
* **Clients never see the billing.** There's no price tag inside their company and no payment step on their side — the platform cost is invisible to them.
* **You charge your clients yourself.** The bot is your service and it's priced how you price it: inside the retainer, as a setup fee plus monthly, at whatever markup your market bears. Chatfuel has no stake in that number.

For current plan details and prices, see [Chatfuel plans and pricing](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing).

## Teams: your people everywhere, their people in one place [#teams-your-people-everywhere-their-people-in-one-place]

Access follows the same one-client-one-company logic. Teammates are invited **per company**, so you decide who exists where:

* **Your core team** — the account lead, the person who builds the bots — gets invited into every client company they work on.
* **The client's people** — their sales reps, their support — get invited into *their* company only, with a role that lets them work leads and chats without touching the [automations](https://chatfuel.com/docs/ai-features/automations).

When a teammate leaves your agency, you remove them company by company; when a client's employee leaves, it never concerned your other clients in the first place. The roles themselves — who can edit the bot, who can only work the pipeline — are covered in [Roles and access for the agency team](https://chatfuel.com/docs/for-agencies/roles-and-access-for-the-agency-team).

## The rhythm this sets up [#the-rhythm-this-sets-up]

Onboarding a new client becomes a repeatable checklist rather than a decision: create the company, get access to their Meta assets, connect their channels, invite their team, launch. Ten clients later, your workspace's Companies list reads like your client roster — and every one of them is one click away.


---

---
title: "AI copy and hooks for the niche"
description: "Meta truncates primary text after roughly 125 characters, and only about one viewer in a hundred ever expands it."
canonical_url: https://chatfuel.com/docs/for-agencies/ai-copy-and-hooks-for-the-niche
markdown_url: https://chatfuel.com/docs/for-agencies/ai-copy-and-hooks-for-the-niche.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# AI copy and hooks for the niche

Meta truncates primary text after roughly 125 characters, and only about one viewer in a hundred ever expands it.

Meta truncates primary text after roughly 125 characters, and only about one viewer in a hundred ever expands it. Whatever you wrote below the fold, the feed never saw it. That makes ad copy a game of first lines: the hook either stops the thumb in the first second or the impression is wasted. Great news for agencies — hooks are not magic, they're formulas, and the formulas are learnable.

## Hook formulas that work [#hook-formulas-that-work]

The proven openers, with the pattern behind each:

| Formula                          | Pattern                                    | Example                                                                                                             |
| -------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- |
| **Pain → Agitate → Solve (PAS)** | Name the pain, twist it, offer the way out | *"Empty chairs on weekdays? Every quiet afternoon is rent you're paying for nothing. Here's how salons fill them."* |
| **Callout**                      | Name the audience so they self-select      | *"Barcelona homeowners: your flat may be worth more than you think."*                                               |
| **Number / proof**               | Lead with a concrete, surprising figure    | *"137 apartments sold through this one WhatsApp funnel."*                                                           |
| **Curiosity gap**                | Open a loop the click closes               | *"The one question that tells us if a lead will actually buy."*                                                     |
| **Social proof**                 | Let the crowd do the convincing            | *"Why 2,400 students started this course with the same message."*                                                   |
| **FOMO / urgency**               | Real deadline, real scarcity               | *"12 spots left for July — after that, September."*                                                                 |
| **First-person / UGC style**     | Sound like a customer, not a brand         | *"I messaged them at 11 pm expecting nothing. Got a reply in 5 seconds."*                                           |
| **Question hook**                | Mirror the reader's inner monologue        | *"Still paying for leads that never answer the phone?"* — but see the compliance note below                         |

Two crafting rules on top of any formula: put a **concrete specific** in the first line (a number, a price, a named outcome — specifics read as truth, adjectives read as advertising), and write the way people type in a chat, not the way brands write press releases. Emojis help when they structure the text — one to three per ad, used as visual anchors, is the sweet spot media buyers converge on; a wall of them reads as spam.

## Hooks by niche [#hooks-by-niche]

The same four verticals we use across the Academy, with the angle that works and the trap to avoid:

| Niche                  | Angle that works                                           | Example hook                                                  | Avoid                                                                                                                            |
| ---------------------- | ---------------------------------------------------------- | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| **Real estate**        | Intent split — separate ads for buyers, sellers, investors | *"Selling in Polanco? Buyers are waiting on our list."*       | Demographic targeting games — housing is a restricted ad category, [angle beats audience](https://chatfuel.com/docs/for-agencies/meta-ad-moderation) |
| **Beauty / clinic**    | The experience and the buzz, told forward                  | *"The 45-minute facial our clients book three months ahead."* | Before/after shots and "fix your flaws" framing — a policy rejection classic                                                     |
| **Courses / coaching** | Transformation story with realistic stakes                 | *"From zero students to a full cohort — here's the funnel."*  | Guaranteed-income claims; Meta reads "make $10k/month" as misleading                                                             |
| **E-commerce**         | Offer + friction removal                                   | *"Message us, get your size confirmed in 2 minutes."*         | Generic "SALE 50%" with no reason to message                                                                                     |

## Copy for click-to-WhatsApp ads [#copy-for-click-to-whatsapp-ads]

A [click-to-WhatsApp ad](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works) doesn't send people to a landing page — it opens a chat. The copy has to set up that moment, and most of what makes these ads underperform is copy written as if a website were coming:

* **Promise the chat.*&#x2A; Tell the lead exactly what happens after the tap: &#x2A;"Message us and get the price list in a minute."* People who expect a conversation start one; people who expected a website close the chat.
* **Match the CTA to the action.** "Send Message" converts; "Learn More" on a chat ad confuses — the button must describe what the thumb is about to do.
* **Make the pre-filled first message work.*&#x2A; The message a lead sends when the chat opens is a targeting tool: pre-fill &#x2A;"Hi! I'd like the July price for a studio"* instead of a bare "Hi" and the [qualification bot](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) starts with the lead's intent already on the table.
* **Give Meta variants to optimize.** Upload 3–5 different primary texts per ad — vary the actual hook (question vs. statement, short vs. story), not just the wording. Meta's delivery system rewards the variety.
* **Length follows temperature.** Retargeting a warm audience? Short and direct. Cold traffic on a considered purchase? A longer, story-driven text can qualify harder — a slightly lower CTR with better leads is a win, because the metric that pays your retainer is cost per qualified conversation, not clicks.

## Mistakes that kill conversions [#mistakes-that-kill-conversions]

* **The hook lives after "See more."** Front-load: if the first 125 characters don't sell, nothing does.
* **Features instead of pain.** "AI-powered omnichannel platform" stops no thumbs. "Stop losing the leads who message at midnight" does.
* **"You"-statements that imply personal attributes.*&#x2A; &#x2A;"Are you diabetic?"&#x2A;, &#x2A;"Struggling with debt?"&#x2A; — Meta rejects copy that implies it knows something personal about the viewer. Rewrite in third person: &#x2A;"the program diabetics ask their doctors about."* The moderation guide covers this policy in detail.
* **Optimizing for CTR alone.** Clickbait buys cheap clicks and expensive silence in WhatsApp. Judge copy by qualified conversations.
* **One variant, forever.** Hooks fatigue. The winning ad of June is wallpaper by August — keep a rotation.

> **Note:** You don't have to write these by hand. These formulas are wired into Chatfuel's [creative generation](https://chatfuel.com/docs/for-agencies/ai-generation-of-ad-creatives): when the AI Co-Worker drafts an ad, it builds the headline from this same playbook — ten words max, one concrete specific, a named hook formula behind it — and shows you the text for approval before rendering. Your job shifts from writing hooks to choosing between good ones.


---

---
title: "AI generation of ad creatives"
description: "In performance marketing, the creative decides more than the bidding ever will — and it's also where agencies burn the most hours."
canonical_url: https://chatfuel.com/docs/for-agencies/ai-generation-of-ad-creatives
markdown_url: https://chatfuel.com/docs/for-agencies/ai-generation-of-ad-creatives.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# AI generation of ad creatives

In performance marketing, the creative decides more than the bidding ever will — and it's also where agencies burn the most hours.

In performance marketing, the creative decides more than the bidding ever will — and it's also where agencies burn the most hours. A designer round-trip for every variant, every client, every test cell adds days to each launch. Chatfuel collapses that loop: you describe what you need to the AI Co-Worker, and minutes later you have a finished, professionally composed creative — generated from *that client's* actual offers, prices, and look, not from a generic template.

## From brief to creative in one chat [#from-brief-to-creative-in-one-chat]

Tell the Co-Worker what you want — &#x2A;"generate an ad creative"&#x2A;, &#x2A;"banner for Meta ads"&#x2A;, &#x2A;"make me an Instagram carousel"* — and it runs the whole production pipeline in the conversation:

1. **It gathers the business context itself.** The Co-Worker pulls the client's offers, prices, and positioning from the [Knowledge Base](https://chatfuel.com/docs/for-agencies/uploading-client-business-info), and can read the client's Instagram account for extra context. You don't re-brief it on the business — it already works for this client.
2. **You pick the path.** Let it build the ad straight from the client's data, or answer a few quick questions — the offer, the target persona and their main pain, the hook.
3. **You approve the text before anything renders.** The Co-Worker shows a preview of the headline, support line, and CTA first. Changing a word at this stage is free and instant — you only render what you've signed off.
4. **It renders.** One to two minutes later the finished creative is in the chat.

Want options? Ask for variants and it produces up to three takes on the same approved text — a photo-led version, a typography-led version, a split layout — ready for an A/B test.

## What it can make [#what-it-can-make]

| Creative               | What you get                                                                                                    |
| ---------------------- | --------------------------------------------------------------------------------------------------------------- |
| **Ad creative**        | A single scroll-stopping static for Meta ads — square for feed, vertical for Stories and Reels                  |
| **Instagram carousel** | 2–10 designed slides with a hook slide, substance in the middle, and a CTA close — plus a caption with hashtags |
| **Organic post**       | A designed feed image with a ready-to-paste caption and hashtags                                                |
| **Story visual**       | A vertical story image                                                                                          |
| **Wide banner**        | A cover or banner format for pages and promos                                                                   |

For ads it works from proven layout families: a character or product photo with a bold text overlay, a "saveable" infographic collage, a message written on a real-world surface (a mirror note, a sticky note, a receipt), or a diagnostic/calculator-style preview that begs to be tapped. And it writes in the client's market language — brief it in English, and the creative for a Brazilian clinic comes out in Portuguese.

## Why the output performs [#why-the-output-performs]

This is not "AI slapped some text on a stock photo." The generation follows the rules senior creative teams enforce by hand:

* **Every ad gets a scroll-stop mechanic.** Hard contrast, a pattern break, raw emotion, visual tension, or unusual light — because a creative that blends into the feed is invisible, and the Co-Worker refuses to make invisible ads.
* **Headlines are engineered, not improvised.** Ten words or fewer, always with a concrete specific — a number, a price, a named offer. "Quality you can trust"-style adjective soup is banned outright.
* **Hooks come from named formulas** — curiosity gap, pain-to-dream, value framing, identity triggers — the same playbook top media buyers run. More on these in [AI copy and hooks](https://chatfuel.com/docs/for-agencies/ai-copy-and-hooks-for-the-niche).
* **It never invents facts.** Prices, discounts, and addresses come from the client's Knowledge Base or from you — the creative won't quote a promo the client never approved.
* **It self-censors for Meta policy.** Guaranteed-income promises, guaranteed health results, and other claim types that get ads rejected are caught and rewritten before rendering — your creative arrives [moderation-friendly by default](https://chatfuel.com/docs/for-agencies/meta-ad-moderation).

## Style that matches the client [#style-that-matches-the-client]

Every client looks different, and the Co-Worker asks where the look should come from:

* **Match their Instagram feed** — it studies the client's recent posts and mirrors the palette, treatment, and mood, so the ad feels native to the brand.
* **Describe it** — "warm minimalism, cream and terracotta, no people" is enough.
* **Attach photos** — send up to six product or venue shots and they become the hero of the creative.

## Where the result goes [#where-the-result-goes]

Organic formats publish straight from the chat: one tap and the post, story, or full carousel is live on the client's Instagram, caption included. Ad creatives you download and drop into Meta Ads Manager as you build [the click-to-WhatsApp campaign](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works). Either way, the cycle from "we need a new creative for this client" to "it's live" is measured in minutes — which means you can test more angles per client per week than a design-queue workflow will ever allow.

> **Note:** the creative is only as sharp as the Knowledge Base. The Co-Worker builds from what it knows about the client — a rich Knowledge Base with real services, real prices, and real tone is what turns generic output into an ad that sounds like the client. Fill it first; it pays off in every creative after.


---

---
title: "Bot modules and blocks"
description: "Before you build a qualification bot for a client, it helps to know what you're actually building."
canonical_url: https://chatfuel.com/docs/for-agencies/bot-modules-and-blocks
markdown_url: https://chatfuel.com/docs/for-agencies/bot-modules-and-blocks.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Bot modules and blocks

Before you build a qualification bot for a client, it helps to know what you're actually building.

Before you build a qualification bot for a client, it helps to know what you're actually building. In Chatfuel, the bot isn't a flowchart you draw on a canvas — it's an AI agent assembled from five modules: what it knows, what it asks, where and when it answers, when it hands over to a human, and which channel it lives on. Get those five right and the funnel works; when something breaks, it's always one of the five.

In the product, those modules live in two places. What the bot *knows* is the **Knowledge Base**. Where and how it *behaves* is [Automations](https://chatfuel.com/docs/ai-features/automations) — at **Fuely AI** → **Automations**, one automation per traffic source, each with its own settings. You can configure every module either right there in the dashboard or by describing what you want to the [AI Co-Worker](https://chatfuel.com/docs/for-agencies/interface-tour-for-agencies) in chat — both edit the same setup, so use whichever is faster for the change at hand.

## The five modules [#the-five-modules]

| Module                   | What it controls                                                                                                                 | Where it lives                                                           |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| **Knowledge Base**       | Everything the bot knows: the client's company profile, catalog of services or products, FAQ                                     | The **Knowledge Base**                                                   |
| **Qualification fields** | The handful of things the bot finds out from every new lead — budget, timeline, service wanted — and how it asks                 | **Collect contact info** + **Additional instructions** on the automation |
| **Reply settings**       | Where the bot answers (which sources are on) and when (always, or only outside working hours)                                    | The per-source automations and their **When AI replies** setting         |
| **Human handoff**        | The rule that moves a chat to the client's team once the lead is qualified — plus a push notification in the Chatfuel mobile app | **Switch to human** on the automation                                    |
| **Channel**              | Where the bot talks: the client's WhatsApp, Instagram, Facebook, TikTok, or website widget                                       | Channel connections in **Settings**                                      |

### Knowledge Base — what the bot knows [#knowledge-base--what-the-bot-knows]

The single biggest quality lever. It holds the client's business profile (name, hours, address, contacts, payment options), a catalog of what they sell, and an FAQ. A thin Knowledge Base produces a vague bot; a well-fed one answers like the client's best salesperson. This is where most of your setup time should go — [here's exactly what to feed it](https://chatfuel.com/docs/for-agencies/uploading-client-business-info).

How the bot *talks* — its role, tone, house rules — is behavior, not knowledge: that goes into **Additional instructions** on the automation, on Main bot for everywhere or per source where a client wants a different voice for a different audience.

### Qualification fields — what the bot asks [#qualification-fields--what-the-bot-asks]

Usually three fields, chosen for the client's niche: a real estate bot asks district, budget, and timeline; a clinic bot asks service, main concern, and preferred date. The fields themselves live in the automation's **Collect contact info** setting; the conversational style — one question per message, not a form — is wired into its **Additional instructions**. The AI weaves the questions into a natural conversation and tracks the answers on the lead's profile. [How to pick the right fields](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic).

### Reply settings — where and when [#reply-settings--where-and-when]

Two decisions, both made per automation:

* **Where.** Every traffic source has its own automation, and enabling it is what turns the bot on there. "Answer leads from ads but not direct messages" isn't a special mode anymore — it's just the ads source on and the DM source off. On comment and ad sources you can go further with [custom automations](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation): named rules for specific keywords, posts, or ads — a comment funnel for the client's launch post, a different one for the discount reel. To target a rule at a particular ad, paste its ID from Meta Ads Manager — or just paste the full Ads Manager URL and Chatfuel extracts the ID itself.
* **When.** Each automation's **When AI replies** setting: **Always**, or **Outside working hours**. For a lead-gen funnel the usual answer is "always" — [but there are cases for the other mode](https://chatfuel.com/docs/for-agencies/after-hours-and-24-7-replies).

### Human handoff — where the bot stops [#human-handoff--where-the-bot-stops]

The bot's job ends when the lead is qualified. The **Switch to human** setting then moves the chat to the client's team inbox, with the collected answers summarized on the lead — and the Chatfuel mobile app pings the phone the moment it happens. That's the "lead" at the end of your [ads → bot → qualification → lead pipeline](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works): a warm, pre-qualified conversation a human picks up mid-flow.

### Channel — where the bot lives [#channel--where-the-bot-lives]

Each connected channel in the client's company — [WhatsApp](https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp), Instagram, Facebook, TikTok, the website widget — feeds its conversations to the same AI agent. Connect a second channel and the same Knowledge Base and the same Main bot defaults apply there too: you configure the brain once, then override individual settings per source only where the client needs different behavior.

**Note:*&#x2A; one sentence still sets up all five. Tell the Co-Worker &#x2A;*"Set up WhatsApp"** and it walks you through every module in one guided session: it learns the business, proposes qualification fields tailored to the client's niche, turns the AI on, arms the handoff, and lets you [test the bot in the Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) before anything reaches a real lead. The channel-connection step at the end is the only part you finish by hand.


---

---
title: "Client reporting"
description: "Clients rarely fire agencies over one bad month. They fire agencies over months they didn't understand — reports full of impressions and acronyms, silence…"
canonical_url: https://chatfuel.com/docs/for-agencies/client-reporting
markdown_url: https://chatfuel.com/docs/for-agencies/client-reporting.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Client reporting

Clients rarely fire agencies over one bad month. They fire agencies over months they didn't understand — reports full of impressions and acronyms, silence…

Clients rarely fire agencies over one bad month. They fire agencies over months they didn't understand — reports full of impressions and acronyms, silence when numbers dipped, no visible connection between the invoice and the outcome. The client report is where your work becomes legible, and legible work gets renewed. Here's the structure that survives, and how Chatfuel compresses its assembly from a day to minutes. The numbers themselves come from the [end-to-end metric chain from ad spend to sales](https://chatfuel.com/docs/for-agencies/end-to-end-analytics-for-agencies); this page is about packaging them.

## Cadence: weekly first, monthly forever [#cadence-weekly-first-monthly-forever]

* **New clients: weekly for the first 60–90 days.** Trust hasn't compounded yet, and early campaigns pivot fast; a weekly one-pager beats a monthly masterpiece delivered after doubt has set in.
* **Established clients: monthly**, with enough history to show trends instead of noise.
* **Either way, the report is the agenda, not the deliverable.** Send it before a live call and walk through it. A PDF into the void reads as an invoice justification; the same numbers on a call read as strategy.

## The five-part structure [#the-five-part-structure]

The format that survives contact with real clients, in reading order:

1. **Executive summary** — readable in 90 seconds, opening with money: qualified leads, cost per qualified lead, sales, ROI. If the client reads nothing else, they've read the part that matters.
2. **Scorecard*&#x2A; — the KPIs you committed to, target vs. actual vs. last period, one line each. This is where &#x2A;"how does this month compare to last?"* earns its keep.
3. **What we did and why** — the narrative: what was tested, what changed, what the data said. "CPQL on the offer-B ads ran 2.6× the sibling — killed them, moved budget, refreshed creatives against the price objection." This paragraph is what the retainer buys; a dashboard can't write it.
4. **Insights** — the "why" behind the numbers, straight from [conversation analytics](https://chatfuel.com/docs/for-agencies/conversation-analytics): the objection that kills deals, the question forty leads asked, what won leads had in common.
5. **Next period** — specific recommendations with dates. Ending with a plan converts the report from a grade into a roadmap — and quietly renews the retainer every month.

## ROI is the headline, ROAS is the detail [#roi-is-the-headline-roas-is-the-detail]

Two numbers get conflated and shouldn't be. **ROAS** — revenue over ad spend — is your channel-level tool, right for comparing campaigns. **ROI** counts *all* the money, your fee included — and that's the number the person paying the invoice actually means when they ask "is this working?". Lead with ROI to the decision-maker and keep ROAS in the breakdowns: an agency that volunteers "our fee is in this math" removes the objection before it's raised.

## Metrics clients pay for vs. vanity [#metrics-clients-pay-for-vs-vanity]

| Clients pay for                        | Vanity (use only to explain) |
| -------------------------------------- | ---------------------------- |
| Revenue and closed deals               | Impressions, reach           |
| Cost per qualified lead, cost per sale | CTR, CPM                     |
| Qualified leads delivered              | Conversations started        |
| ROI (fee included)                     | Engagement, frequency        |

The right column isn't useless — it explains *why* the left column moved ("CTR fell 25%, creative fatigued, refreshed the batch — CPQL already recovering"). It just never leads. A report that opens with impressions tells the client you're hiding something; a report that opens with cost per sale tells them you aren't.

## Compile it by asking [#compile-it-by-asking]

The classic cost of good reporting is assembly — a day per client of spreadsheet stitching, which is why most agencies ship worse reports than they're capable of. With the [AI Co-Worker as analyst](https://chatfuel.com/docs/for-agencies/reports-via-the-ai-co-worker), assembly collapses into a short interview per [client company](/docs/for-agencies/agency-clients-model&#x29;: &#x2A;"business report"* for the [funnel](/docs/for-agencies/funnel-and-drop-off-report&#x29;, conversions, and recommendations; &#x2A;"how does this month compare to last?"&#x2A; for the scorecard deltas; &#x2A;"why do deals fail"* for the insights section; ad spend joins from Ads Manager for [CPQL and cost per sale](https://chatfuel.com/docs/for-agencies/lead-quality-and-cost-per-qualified-lead). Numbers in minutes — your time goes into the two sections clients actually renew for: the narrative and the plan.

> **Note:** Report the bad month before the client asks. The dip you flag first, with a diagnosis and a fix already moving, builds more trust than the good month ever did. The dip the client discovers on their own costs the account. Speed of explanation is a retention metric — treat it like one.


---

---
title: "Common Meta access errors"
description: "Access is granted, the client's company exists, you clicked Add number in the WhatsApp connection flow — and Meta said no."
canonical_url: https://chatfuel.com/docs/for-agencies/common-meta-access-errors
markdown_url: https://chatfuel.com/docs/for-agencies/common-meta-access-errors.md
last_updated: 2026-07-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Common Meta access errors

Access is granted, the client's company exists, you clicked Add number in the WhatsApp connection flow — and Meta said no.

Access is granted, the client's company exists, you clicked **Add number** in [the WhatsApp connection flow](https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp) — and Meta said no. Connection-stage errors all feel the same in the moment (a client on the call, a QR code that won't cooperate), but each has a specific cause and a known exit. Find your symptom below. If the problem is *earlier* — partner requests vanishing, assets not visible, nobody knowing who the admin is — that family lives in [Troubleshooting client access issues](https://chatfuel.com/docs/for-agencies/troubleshooting-client-access-issues).

One thing to internalize before the fixes: most of these are resolved **on the client's side of Meta**, not in Chatfuel. Your job is rarely to click the fix yourself — it's to know exactly what to tell the client to click, which is what turns a two-day stall into a five-minute detour.

## The client's portfolio doesn't appear in the popup [#the-clients-portfolio-doesnt-appear-in-the-popup]

You're in the connection flow, the portfolio picker opens — and the client's business isn't in the list.

**Cause:** the Facebook account you're logged in with doesn't have **Full control** of the client's business portfolio. Partner access that's fine for running ads doesn't clear this bar.

**Fix:** check who has Full control at [business.facebook.com/settings/people](https://business.facebook.com/settings/people). Either the client adds one person from your team with Full control, or you run the connection as a screen-share where the *client* logs in and clicks. Both routes are laid out in [Partner access to the client's portfolio](https://chatfuel.com/docs/for-agencies/meta-partner-access). &#x2A;*Whose move:** client.

## "Number is not associated with the selected business" [#number-is-not-associated-with-the-selected-business]

You entered the client's number and Meta claims it belongs to some other business.

**Cause:** the number is already registered inside a different business portfolio — often an old agency's, a freelancer's, or a portfolio the client forgot exists.

**Fix:** open [Phone numbers in WhatsApp Manager](https://business.facebook.com/latest/whatsapp_manager/phone_numbers/) and check each portfolio in the left sidebar until you find where the number lives. Then either select *that* portfolio in the connection flow, or unlink the number from it and connect it to the current one. &#x2A;*Whose move:** client (it's their portfolios you're searching).

## The QR code won't scan ("Couldn't scan code") [#the-qr-code-wont-scan-couldnt-scan-code]

You're connecting an existing WhatsApp Business App number and the scan fails, again and again.

**Cause:** almost always unpaid Meta bills on the client's account.

**Fix:** wait a few minutes and retry once. If it persists: open the [Billing hub](https://business.facebook.com/billing_hub/accounts&#x29; in Meta Business Suite, look for &#x2A;*"Payment failed"** notices next to the Ad and WhatsApp Business accounts, pay what's outstanding, wait \~10 minutes, scan again. &#x2A;*Whose move:** client — it's their card.

## "Your account is using marketing messages" [#your-account-is-using-marketing-messages]

Meta blocks the connection because the number has marketing messages set up in the WhatsApp Business app.

**Fix:** on the client's phone, in the **WhatsApp Business** app: **Tools → Marketing messages**, delete everything listed there, then run the connection again. &#x2A;*Whose move:** client, with you on the call telling them where to tap.

## The Facebook account is restricted [#the-facebook-account-is-restricted]

The person doing the connection can't proceed because their personal Facebook account is restricted — a check at [Ads Manager](https://adsmanager.facebook.com/adsmanager/manage/accounts) confirms it.

**Fix, two options:**

* **Appeal** with Meta Support at [Business Support Home](https://www.facebook.com/business-support-home/) and wait it out.
* **Route around it:** another person with admin permissions on the business account runs the connection from *their own* Facebook account.

**Important:** never log in with someone else's credentials. The workaround is a colleague connecting from their own account — not you logging in as them. Meta's systems flag shared logins, and the restriction spreads to the borrowed account. That's how one restricted account becomes two.

**Whose move:** whoever owns the restricted account; the routing-around is on your side.

## Meta rejects the setup itself: category or display name [#meta-rejects-the-setup-itself-category-or-display-name]

Two quieter blockers that surface as failed or restricted connections:

* **Restricted business category** — some business and WABA categories can't use the WhatsApp Business platform at all. Check the client's category against Meta's restricted list *before* the kickoff call; this one has no workaround, only surprises.
* **Display name violations** — the name customers see must be the client's real business name: no stuffed keywords, no decorative punctuation, no "WhatsApp" or "Meta" in it. A rejected display name stalls the number until it's changed and re-reviewed.

**Whose move:** yours — both are checks you run during onboarding, not fixes you apply after.

## Still stuck? [#still-stuck]

If the symptom doesn't match anything above, work the sequence support uses: confirm the client's [business verification](https://chatfuel.com/docs/for-agencies/whatsapp-phone-number-verification) status, then category, then display name, then billing — screenshotting each step. And if the connection succeeded but *verification* is what's failing, that has its own troubleshooting table in the verification guide.


---

---
title: "Connect the client's Facebook"
description: "If your client has an active Facebook Page — Messenger inquiries, comments under posts, ads that open Messenger — connect it alongside Instagram."
canonical_url: https://chatfuel.com/docs/for-agencies/connect-the-clients-facebook
markdown_url: https://chatfuel.com/docs/for-agencies/connect-the-clients-facebook.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Connect the client's Facebook

If your client has an active Facebook Page — Messenger inquiries, comments under posts, ads that open Messenger — connect it alongside Instagram.

If your client has an active Facebook Page — Messenger inquiries, comments under posts, ads that open Messenger — connect it alongside [Instagram](https://chatfuel.com/docs/for-agencies/connect-the-clients-instagram). It takes a minute or two, and once the client has let you into their business, you do it yourself.

## Before you click Connect [#before-you-click-connect]

* **Get into the client's business first.** Access to the client's Facebook Page is part of the same onboarding package as everything else — the client invites your agency into their business, and from then on you connect and manage the channel yourself. Collect it once, with [the rest of the access checklist](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for), via [partner access](https://chatfuel.com/docs/for-agencies/meta-partner-access).
* **You need Admin or Editor** in the client's company in Chatfuel.
* **You need admin access to the Page** in Facebook. Facebook only lists Pages your account administers; if the Page is missing from the list, the access hasn't been granted yet.
* **A Facebook login for Instagram or WhatsApp doesn't connect the Page.** Even if you already authorized with Facebook to connect the client's Instagram, the Facebook channel is a separate connection in **Settings** → **Facebook**. Each bot connects one Page.

> **Note:** connecting Facebook is one of the few steps the AI Co-Worker won't complete for you — it requires authorizing with Facebook. It can take you straight to the right screen, though: just ask.

## Connecting the Page [#connecting-the-page]

1. **Open the Facebook settings.** In the client's company, go to **Settings → Facebook** and click **Connect Facebook**.
2. **Log in.** If no active session is found, a login screen appears — sign in using the access the client granted you.
3. **Allow access.** Approve Chatfuel's access to Pages and ad accounts — the ad-account access is what lets Chatfuel attribute leads from the client's ads that click to Messenger.
4. **Pick the Page.** In **Choose a Facebook Page**, select the client's Page and click **Connect Page**.
5. **Confirm it's connected.** Done — the Page now shows under **Settings → Facebook**. From here, [turn on the sources the client needs](https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook).

## If Facebook "goes silent" [#if-facebook-goes-silent]

Facebook connections occasionally drop. If the AI stops answering Messenger or comments, check this before anything else: **Settings → Facebook** — reconnect the Page. If the login popup doesn't open at all, a VPN or ad blocker is blocking Facebook; disable it and retry.


---

---
title: "Connect the client's Instagram"
description: "If your client runs Instagram ads or gets any real DM volume, Instagram is the second channel to connect after WhatsApp."
canonical_url: https://chatfuel.com/docs/for-agencies/connect-the-clients-instagram
markdown_url: https://chatfuel.com/docs/for-agencies/connect-the-clients-instagram.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Connect the client's Instagram

If your client runs Instagram ads or gets any real DM volume, Instagram is the second channel to connect after WhatsApp.

If your client runs Instagram ads or gets any real DM volume, Instagram is the second channel to connect after [WhatsApp](https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp). It's also the easiest one in the lineup: most steps are automatic, the whole thing takes a minute or two, and once the client has let you into their business, you do it yourself — no need to get them on a call.

## Before you click Connect [#before-you-click-connect]

* **Get into the client's business first.** Access to the client's Instagram is part of the same onboarding package as everything else — the client invites your agency into their business, and from then on you connect and manage the channel yourself. Collect it once, with [the rest of the access checklist](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for), via [partner access](https://chatfuel.com/docs/for-agencies/meta-partner-access).
* **You need Admin or Editor** in the client's company in Chatfuel.
* **The client's Instagram must be a professional account** — business or creator. If it's still personal, don't worry: the connection flow will prompt the switch and walk through it. Switching doesn't touch content or followers.

> **Note:** connecting Instagram is one of the few steps the AI Co-Worker won't complete for you — it requires authorizing with Instagram. It can take you straight to the right screen, though: just ask.

## Connecting the account [#connecting-the-account]

1. **Open the Instagram settings.** In the client's company, go to **Settings → Instagram** and click **Connect Instagram**.
2. **Log in.** If no active session is found, a login screen appears — sign in using the access the client granted you.
3. **Switch to professional if prompted.** If the account is still personal, the flow asks to switch. Follow the prompts — business or creator, activity category — until the "Your account is ready" screen, then click **Done**.
4. **Allow access.** Click **Allow** to give Chatfuel access to the account's messages.
5. **Confirm it's connected.** Done — the account now shows under **Settings → Instagram**. Total time: one to two minutes.

## If Instagram "goes silent" [#if-instagram-goes-silent]

Instagram connections occasionally drop. If the AI stops answering DMs, check this before anything else: **Settings → Instagram → Reconnect**. It fixes the most common failure in one click.


---

---
title: "Connect the client's TikTok"
description: "TikTok is where comment volume lives — a client with one viral video can get more raw engagement in a day than their WhatsApp sees in a month."
canonical_url: https://chatfuel.com/docs/for-agencies/connect-the-clients-tiktok
markdown_url: https://chatfuel.com/docs/for-agencies/connect-the-clients-tiktok.md
last_updated: 2026-07-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Connect the client's TikTok

TikTok is where comment volume lives — a client with one viral video can get more raw engagement in a day than their WhatsApp sees in a month.

TikTok is where comment volume lives — a client with one viral video can get more raw engagement in a day than their WhatsApp sees in a month. Chatfuel connects to TikTok and automates replies to those comments and DMs. Two restrictions can kill the project before it starts, though — check them *before* you put TikTok automation in the client's proposal.

## Check before you sell [#check-before-you-sell]

Two restrictions that aren't negotiable:

* **US accounts can't connect.** If the client's TikTok account was signed up in the United States, it cannot be connected to Chatfuel at all.
* **EU contacts are invisible.** If a lead's own TikTok account is from the EU, their messages won't appear in Leads, Contacts, or Chats — the automation simply won't see them.

Ask where the client's account was registered and where their audience is — two questions in the discovery call save an awkward refund conversation later.

## Before you click Connect [#before-you-click-connect]

* **Get access to the client's account first.** Same model as every channel: the client brings your agency into their business during onboarding, and from there you connect and run the channel yourself — no client on a call. Collect this access together with [everything else you ask for up front](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for).
* **You need Admin or Editor** in the client's company in Chatfuel.
* **The account must be a TikTok Business account.** If it's still personal, the connection flow walks through the switch — or it can be [done in the TikTok app beforehand](https://chatfuel.com/docs/tiktok/how-to-switch-tiktok-to-business-account): **Settings and privacy → Account → Switch to Business Account**, pick a category, done. Switching doesn't affect content, followers, or messages.

## Connecting the account [#connecting-the-account]

1. **Open the TikTok settings.** In the client's company, go to **Settings → TikTok** and click **Connect TikTok**.
2. **Switch to Business if needed.** Still a personal account? A pop-up walks through the switch step by step — follow it to the last screen and click **Done**.
3. **Log in.** A TikTok login window opens — sign in using the access the client granted you.
4. **Grant permissions.** Review the permissions TikTok lists, grant them to Chatfuel, and click **Continue**.
5. **Confirm it's connected.** Done — the account shows as connected, and you can point the AI at comments and DMs. From here, TikTok traffic feeds the same [ads → bot → lead pipeline](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works) as the client's other channels.


---

---
title: "Connect the client's WhatsApp"
description: "This is the activation step that turns a signed contract into a live channel."
canonical_url: https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp
markdown_url: https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Connect the client's WhatsApp

This is the activation step that turns a signed contract into a live channel.

This is the activation step that turns a signed contract into a live channel. Everything before it — access collection, creating the client's company — was preparation; everything after it — the bot, the ads, the leads — runs through the number you're about to connect. There are two routes, depending on what the client walks in with: a brand-new number, or a number they already use in the WhatsApp Business app. Both start in the same place and take about fifteen minutes.

## Before you click anything [#before-you-click-anything]

Two permission checks decide whether this goes smoothly or dies on the authorization screen:

* **In Chatfuel:** you need an **Admin** or **Editor** role in the client's company. Check in **Settings**.
* **In Meta:** the Facebook account that clicks **Connect** must have **Full control** of the *client's* business portfolio — verify at `business.facebook.com/settings/people`. Partner access to run ads is not enough for this step; the two ways agencies handle it (a screen-share with the client, or getting one person added with Full control) are covered in [Partner access to the client's portfolio](https://chatfuel.com/docs/for-agencies/meta-partner-access).

If you're doing this on a screen-share with the client — the most common setup for a first connection — have them log in to Facebook before the call starts. Half the delays are password resets.

> **Note:** connecting a number requires authorizing with Meta in a real Facebook account, so the AI Co-Worker can't complete this step for you — it's one of the few hands-on steps in the product. It *can* take you straight to the right screen: ask it to open the WhatsApp connection settings.

## Which number does the client have? [#which-number-does-the-client-have]

### New number [#new-number]

Use this route when the client is dedicating a fresh number to the bot — nothing to migrate, cleanest setup.

1. **Start the connection.** In the client's company, open **Settings** in the left sidebar and click **Add number** in the WhatsApp section. Log in to Facebook and authorize Chatfuel.
2. **Pick the client's portfolio.** Select the client's existing **business portfolio** (or create one — if you're building the client's Meta presence from scratch, follow [When the client has no Business Manager](https://chatfuel.com/docs/for-agencies/when-the-client-has-no-business-manager) first). Then choose **Create a WhatsApp Business account** and click **Next**.
3. **Set the display name.** Fill in the business info and the **display name** — what customers see in the chat header. Meta reviews it: use the client's real business name, skip decorative punctuation, and never include "WhatsApp" or "Meta" in it. A rejected name stalls the whole connection.
4. **Verify the number.** Choose **Add a new number**, enter it, and pick verification by text or call. Enter the code, review what Chatfuel will access, and click **Confirm**.

You'll see &#x2A;*"Your account is connected to Chatfuel"** — the number now appears in Settings.

### Existing WhatsApp Business App number [#existing-whatsapp-business-app-number]

Use this route when the client already runs their business through the WhatsApp Business app and wants to keep the number. Nothing is lost: contacts, chat history, and their product catalog all survive, and the client keeps using the app exactly as before — Chatfuel layers on top.

1. **Start the connection.** Same entry point: **Settings → Add number**, log in to Facebook, authorize Chatfuel.
2. **Pick the portfolio and route.** Select the client's business portfolio, then choose **Connect a WhatsApp Business app**. Enter the client's active WhatsApp Business number.
3. **Scan the QR code.** A QR code appears on the computer screen. On the client's phone, in the WhatsApp Business app, a message from **Facebook Business** arrives with a **Connect** button (if it doesn't, go to **Settings → Account → Business Platform → Connect to the Business Platform**). Scan the QR code from there — this is why the client, or their phone, needs to be on the call.
4. **Decide on chat history.** Meta asks whether to **Share chats** with Chatfuel — importing up to 6 months of history and contacts — or start clean. Share it: your bot and the [leads pipeline](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works) are better with the client's existing contacts in them, and imported contacts are tagged with their source.
5. **Confirm and finish.** Check the timezone (it drives scheduled messages), review the permissions, and click **Confirm**.

**Important:** the chat-history choice is permanent. "Share chats" vs. "Don't share chats" cannot be changed after connection. Decide it with the client *before* the call, not while the QR code is on screen.

## After the connection [#after-the-connection]

The number shows up in **Settings**, and the client's company is live. Two follow-ups, in this order:

1. **Start [business verification](https://chatfuel.com/docs/for-agencies/whatsapp-phone-number-verification) today.** Until the client's Meta business is verified, the number is capped at 250 conversations a day — a cap you want lifted before ads start driving traffic, not after.
2. **Feed the AI.** A connected number with an empty brain answers nothing — [upload the client's business info](https://chatfuel.com/docs/for-agencies/uploading-client-business-info) so the bot has something to say.

Once messages start flowing, keep [the 24-hour rule](https://chatfuel.com/docs/for-agencies/the-24-hour-rule-explained) in mind — it shapes everything you'll send on this number.

If the connection failed somewhere along the way — QR code errors, "number not associated with the selected business", the portfolio missing from the popup — every known failure and its fix is in [Common Meta access errors](https://chatfuel.com/docs/for-agencies/common-meta-access-errors).


---

---
title: "Conversation analytics"
description: "Somewhere in your client's chat history, leads are explaining — in their own words — why they didn't buy, what confused them, what they kept asking, and what…"
canonical_url: https://chatfuel.com/docs/for-agencies/conversation-analytics
markdown_url: https://chatfuel.com/docs/for-agencies/conversation-analytics.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Conversation analytics

Somewhere in your client's chat history, leads are explaining — in their own words — why they didn't buy, what confused them, what they kept asking, and what…

Somewhere in your client's chat history, leads are explaining — in their own words — why they didn't buy, what confused them, what they kept asking, and what would have changed their mind. It's the most honest market research that exists, it's already paid for, and at most agencies nobody reads a line of it. Conversation analytics is the [AI Co-Worker](https://chatfuel.com/docs/for-agencies/reports-via-the-ai-co-worker) doing that reading for you: across the whole history, quoting real messages, never inventing a number.

## FAQ mining [#faq-mining]

Ask &#x2A;"what do clients ask most"* and the Co-Worker surveys the conversations for recurring questions, complaints, and the places leads had to ask twice. The output is two lists you can act on the same day:

* **Questions the bot handled well** — proof the setup works, straight into the client report.
* **Questions it stumbled on** — each one a specific, named gap to close in the [Knowledge Base](https://chatfuel.com/docs/for-agencies/uploading-client-business-info), with the Co-Worker suggesting what the answer should cover.

There's a marketing dividend hiding here too: the questions every lead asks *before* buying are exactly what your next ad should answer *before* the click. "Do you do weekend appointments?" asked forty times isn't support noise — it's a hook.

## Why deals die [#why-deals-die]

*"Why do deals fail"* triggers the closest thing to a sales autopsy an agency can run without sitting in on calls. The Co-Worker reads lost conversations against won ones and reports the differences: the typical drop-off point (the moment leads go quiet), the objection patterns — price, timing, trust, "I'll think about it" — with real quotes attached, and suggested responses for the objections that keep winning.

This is the report to pull when the [funnel](https://chatfuel.com/docs/for-agencies/funnel-and-drop-off-report) shows a healthy top and a dead bottom. "Selling → closed loses 85%" says something is wrong; the lost-deal analysis says *what*: leads who ask about installment plans never get an answer and vanish within the hour. That's a finding the client's sales team can fix by Friday.

## Where the AI hands off [#where-the-ai-hands-off]

Ask &#x2A;"why is AI failing"* and the Co-Worker audits its own colleague: it finds the conversations where the AI had to hand off to a human, pinpoints the exact question it couldn't answer, and recommends the specific knowledge to add. This is the maintenance loop that keeps the bot getting smarter on real traffic instead of guesses — run it after the first week of any new campaign, when fresh ad traffic surfaces questions nobody anticipated.

## Transcripts are ad angles [#transcripts-are-ad-angles]

The loop closes back at the top of the funnel. Every objection pattern is a pre-emption waiting to be written: leads stalling on price becomes a value-framing hook; fear of a hard sell becomes &#x2A;"ask us anything, no callback required."* And because leads phrase things the way your audience actually talks, their wording beats any brainstorm — feed the patterns into [copy generation](https://chatfuel.com/docs/for-agencies/ai-copy-and-hooks-for-the-niche) and the [next batch of creatives](https://chatfuel.com/docs/for-agencies/ai-generation-of-ad-creatives) speaks the market's own language. Agencies pay for focus groups; yours is sitting in the inbox, already transcribed.

> **Note:** Run it monthly, deliver it as strategy. Numbers tell the client what happened; conversation analysis tells them why — and "why" is what strategy calls are made of. One insight per month of the caliber of "your leads' #1 unanswered objection is X" justifies more retainer than any CTR chart ever printed.


---

---
title: "Create a client company"
description: "Every client you sign starts life in Chatfuel the same way: as a fresh company inside your agency's workspace."
canonical_url: https://chatfuel.com/docs/for-agencies/create-a-client-company
markdown_url: https://chatfuel.com/docs/for-agencies/create-a-client-company.md
last_updated: 2026-09-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Create a client company

Every client you sign starts life in Chatfuel the same way: as a fresh company inside your agency's workspace.

Every client you sign starts life in Chatfuel the same way: as a fresh **company** inside your agency's workspace. The clicking takes two minutes; what matters is *when* you do it and what you do right after, so the new company doesn't sit empty while you chase the client for access. This page is the doing — the reasoning behind one-client-one-company lives in [Agency → clients model](https://chatfuel.com/docs/for-agencies/agency-clients-model).

## Before you create it [#before-you-create-it]

Do the access homework first. The new company is useless until the client's channels are connected to it, and connecting them requires [access to the client's Meta assets](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for) — partner access to their portfolio, or a scheduled screen-share for the WhatsApp authorization. Agencies that create the company on signing day and collect access "sometime this week" end up with a workspace full of empty shells. Collect first, create second, connect immediately.

## Creating the company [#creating-the-company]

1. **Open your workspace's Companies.** Click the **company name** at the bottom of the left sidebar, click **Workspaces** (or open [panel.chatfuel.com/workspaces](https://panel.chatfuel.com/workspaces)), then open your workspace → **Companies**. This is the [list of every client company](https://chatfuel.com/docs/account/how-to-manage-multiple-companies) in your workspace.
2. **Create the company.** Click **Create company**. The new company appears in the list instantly — no setup wizard, no payment step. Your agency subscription already covers it.
3. **Name it after the client.** Use the client's business name, not a project codename. Six months and ten clients from now, **Companies** is the list you navigate all day — it should read like your client roster, not like an inside joke.

You're now inside the new company, and everything you see — bots, chats, leads, settings — belongs to this client alone. Switching back to another client is the same path: company name → **Workspaces → Companies** → pick one.

> **Note:** Companies are unlimited on agency plans, and usage limits are shared across your whole workspace rather than metered per company. Creating a company for a brand-new client costs nothing and commits you to nothing.

## Right after: the onboarding checklist [#right-after-the-onboarding-checklist]

An empty company becomes a working client in three moves. Do them in order, the same way, for every client:

1. **Connect the client's WhatsApp** — the channel your qualification bot will live on. The step-by-step, including the two routes (new number vs. their existing WhatsApp Business App number), is in [Connect the client's WhatsApp](https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp).
2. **Invite the people who'll work here** — your bot builder as Editor, the client's sales reps as Agent. [Invites](https://chatfuel.com/docs/account/how-to-add-teammates) are per company, from **Settings → Teammates**; the role logic is in [Roles and access for the agency team](https://chatfuel.com/docs/for-agencies/roles-and-access-for-the-agency-team).
3. **Start business verification** — it lifts Meta's messaging caps, and it takes a document round-trip with the client, so [get it moving](https://chatfuel.com/docs/for-agencies/whatsapp-phone-number-verification) before you need the volume.

Run this checklist enough times and client onboarding stops being a project and becomes a routine: sign, collect access, create the company, connect, invite, verify, launch.


---

---
title: "End-to-end analytics for agencies"
description: "Agencies rarely lose clients because the ads were bad. They lose clients because nobody could prove the ads were good."
canonical_url: https://chatfuel.com/docs/for-agencies/end-to-end-analytics-for-agencies
markdown_url: https://chatfuel.com/docs/for-agencies/end-to-end-analytics-for-agencies.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# End-to-end analytics for agencies

Agencies rarely lose clients because the ads were bad. They lose clients because nobody could prove the ads were good.

Agencies rarely lose clients because the ads were bad. They lose clients because nobody could *prove* the ads were good. Ads Manager stops counting at the click, the client's sales team starts counting at the deal, and everything in between — the conversations, the qualification, the leads that quietly died — lives in nobody's report. End-to-end analytics closes that gap: one chain of numbers from the first impression to the closed sale, so every campaign decision and every client call runs on evidence.

## One funnel, two sources of truth [#one-funnel-two-sources-of-truth]

A click-to-WhatsApp funnel produces numbers in two places, and a good agency reads both:

* **Meta Ads Manager owns everything up to the click** — spend, impressions, CPM, CTR, cost per messaging conversation started. This is where media buying gets judged.
* **Chatfuel owns everything after the click** — every conversation, what the lead said, whether they qualified, which stage they reached on the [Leads board](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works), and how the deal ended. This is where the *business result* gets judged.

The join between the two is simple arithmetic you'll do weekly: take spend from Ads Manager, divide by the qualified-lead and closed-deal counts from Chatfuel, and you get the numbers Ads Manager alone can never show — cost per qualified lead and cost per sale.

## The metric ladder [#the-metric-ladder]

Every step down the ladder gets closer to money — and further from what Ads Manager reports on its own:

| Step                      | Metric                               | Lives in                  | What it tells you                              |
| ------------------------- | ------------------------------------ | ------------------------- | ---------------------------------------------- |
| Impressions → clicks      | CPM, CTR                             | Ads Manager               | Is the creative stopping thumbs?               |
| Clicks → conversations    | Cost per conversation                | Ads Manager               | Does the ad promise a chat people want?        |
| Conversations → qualified | Qualified %, cost per qualified lead | Chatfuel ÷ spend          | Are the ads bringing *buyers* or just talkers? |
| Qualified → selling       | Handoff rate, speed                  | Chatfuel                  | Is anyone picking up the qualified leads?      |
| Selling → closed          | Cost per sale, ROI                   | Chatfuel + client revenue | Did the campaign make money?                   |

The top of the ladder is diagnostics; the bottom is what the client pays for. A report built only from the top two rows is a vanity report — and clients can smell it.

## The number that matters: cost per qualified lead [#the-number-that-matters-cost-per-qualified-lead]

Meta's delivery system optimizes toward cheap *conversations started* — that's what it can see. But a conversation isn't a lead: it might be a competitor snooping on prices, a bargain hunter, or a bare "Hi" that goes silent. The metric that should drive every kill-or-scale decision is **cost per qualified lead** — spend divided by the conversations your [qualification bot](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) actually marked as qualified.

The two metrics regularly disagree, and that's the whole point: an ad set with the cheapest conversations and a 10% qualification rate is more expensive per real lead than one with pricier conversations and a 40% rate. Judge ads where Chatfuel's data starts, not where Meta's ends — the full playbook is in [Lead quality and cost per qualified lead](https://chatfuel.com/docs/for-agencies/lead-quality-and-cost-per-qualified-lead).

## Pull it by asking [#pull-it-by-asking]

None of this requires exporting spreadsheets or building dashboards. The AI Co-Worker is the analyst: open the client's company and ask — &#x2A;"show conversion funnel"&#x2A;, &#x2A;"new leads this month"&#x2A;, &#x2A;"business report"* — and it answers from that client's real conversations and pipeline, with recommendations attached. The full tour of what you can ask is in [Reports via the AI Co-Worker](https://chatfuel.com/docs/for-agencies/reports-via-the-ai-co-worker). And when it's time to package these numbers for the client, [Client reporting](https://chatfuel.com/docs/for-agencies/client-reporting) shows the structure that turns them into renewals.

> **Note:** The Leads board is the skeleton of every report. Every metric below the click hangs on the lead stages: leads are captured, sorted, qualified, moved to selling, and closed as won or lost — and the bot moves them automatically as conversations progress. That means the [funnel report](https://chatfuel.com/docs/for-agencies/funnel-and-drop-off-report) builds itself while the bot works; nobody on your team fills in a CRM by hand.


---

---
title: "Funnel and drop-off report"
description: "The funnel and drop-off report shows where leads leave between ad click, first reply, qualification and handoff, so you fix the leaking step first."
canonical_url: https://chatfuel.com/docs/for-agencies/funnel-and-drop-off-report
markdown_url: https://chatfuel.com/docs/for-agencies/funnel-and-drop-off-report.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Funnel and drop-off report

The funnel and drop-off report shows where leads leave between ad click, first reply, qualification and handoff, so you fix the leaking step first.

Every funnel leaks. The question that separates agencies that keep clients from agencies that lose them is *where* — because "we need more leads" is almost never the real fix. A funnel report turns one vague complaint ("sales are slow") into one specific joint with a name, an owner, and a known repair. It's the first report to pull for any client, and the one every other analytics report hangs off.

## The stages are the report [#the-stages-are-the-report]

Chatfuel's [Leads board](https://chatfuel.com/docs/leads/what-is-the-kanban-board) moves every lead through a fixed pipeline: **captured → sorting → qualified → selling → closed** (won or lost). The [qualification bot](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) advances leads automatically as the conversation progresses — which means the funnel report writes itself while the bot works. Nobody fills in a CRM by hand, so the numbers are never stale and never flattering.

## Reading the funnel [#reading-the-funnel]

Ask the [AI Co-Worker](/docs/for-agencies/reports-via-the-ai-co-worker&#x29; &#x2A;"show conversion funnel"* and you get the count at every stage plus the conversion rate between them. A realistic month for a real-estate client might read:

| Stage      | Leads | Conversion |
| ---------- | ----- | ---------- |
| Captured   | 200   | —          |
| Sorting    | 140   | 70%        |
| Qualified  | 80    | 57%        |
| Selling    | 60    | 75%        |
| Closed won | 9     | 15%        |

Two things jump out of a table like this. First, the overall shape: 200 conversations became 9 sales — is that good? (Against typical lead-to-sale rates in the low single digits, yes.) Second, and more useful: the **bottleneck** — the stage where leads pile up and stop moving. Here it's selling → closed, where 85% of sales-ready, qualified, hand-delivered leads die. That's not an advertising problem. No amount of budget fixes it, and the report proves it.

## Which drop means which fix [#which-drop-means-which-fix]

Each joint in the funnel has a different owner and a different repair:

| Where it leaks       | What it usually means                                              | Where the fix lives                                                                         |
| -------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- |
| Click → conversation | Ad promises a website, opens a chat; wrong CTA                     | [Ad copy and CTA](https://chatfuel.com/docs/for-agencies/ai-copy-and-hooks-for-the-niche)                       |
| Captured → qualified | Copy attracts everyone; qualification questions mismatch the niche | Hooks that filter, qualification fields                                                     |
| Qualified → selling  | Qualified leads sit unclaimed; slow handoff                        | [Speed to lead](https://chatfuel.com/docs/for-agencies/speed-to-lead), the client's team routine                |
| Selling → closed     | Sales conversations losing to the same objections                  | [Lost-deal analysis](https://chatfuel.com/docs/for-agencies/conversation-analytics), the client's sales process |

Notice what this table does for a client conversation: it draws the line between agency-owned stages and client-owned stages with data instead of finger-pointing. When the funnel shows your side delivering 80 qualified leads and the client's side closing 9, "we should talk about your sales follow-up" stops being an accusation and becomes a chart.

## Ask for it [#ask-for-it]

*"Show conversion funnel"&#x2A; gives the stage-by-stage view; &#x2A;"business report"&#x2A; wraps it with conversation stats and the top recommendations; &#x2A;"how does this month compare to last?"&#x2A; adds the trend. For the bottleneck itself, go one level deeper — &#x2A;"why do deals fail"* — and the Co-Worker reads the lost conversations and tells you what's actually killing them. And the money math on top of these counts lives in [Lead quality and cost per qualified lead](https://chatfuel.com/docs/for-agencies/lead-quality-and-cost-per-qualified-lead).

> **Note:** Check the funnel weekly, not at report time. A bottleneck found on the 28th costs a month of budget; found on the 7th, it costs a week. The funnel takes one question to pull — make it the Monday-morning question for every client, and the monthly report becomes a recap of leaks you already fixed.


---

---
title: "How the agency funnel works: ads → bot → qualification → lead"
description: "Nobody pays an agency for clicks. You get judged on what happens after the click — and that's exactly the part most ad accounts leave to chance: the lead…"
canonical_url: https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works
markdown_url: https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How the agency funnel works: ads → bot → qualification → lead

Nobody pays an agency for clicks. You get judged on what happens after the click — and that's exactly the part most ad accounts leave to chance: the lead…

Nobody pays an agency for clicks. You get judged on what happens *after* the click — and that's exactly the part most ad accounts leave to chance: the lead messages the client, nobody answers fast enough, nobody asks the qualifying questions, and the sale quietly dies in an unread chat.

Every Chatfuel setup is built around one machine that closes that gap: **ad → conversation → qualification → qualified lead**. Learn it once, and you can replicate it for every client you onboard.

## The funnel at a glance [#the-funnel-at-a-glance]

1. **Ad** — a [click-to-WhatsApp](https://chatfuel.com/docs/for-agencies/whatsapp-business-api-explained) or Instagram campaign drops the person straight into a chat. No landing page, no form.
2. **Bot** — the AI answers within seconds, any hour, and keeps the conversation going.
3. **Qualification** — the AI asks the qualifying questions and moves each contact through a pipeline automatically.
4. **Lead** — a qualified contact lands with your client's sales team, hits their CRM, and fires a signal back to Meta.

Each handoff between stages is where money usually leaks — slow replies, unqualified contacts, deals lost to silence. The rest of this guide shows how each stage plugs that leak.

## Stage 1: The ad starts a conversation [#stage-1-the-ad-starts-a-conversation]

In Ads Manager, you build a campaign with **Messaging apps** as the conversion destination and the client's WhatsApp number (or Instagram account) as the endpoint. When someone taps the ad, their messaging app opens with a chat already started — the chat *is* the landing page.

A detail worth getting right is the **pre-filled message**: the text that appears in the person's chat window when they tap the ad, set in the ad's message template. It removes the "what do I even write?" friction — the lead just hits send, and the conversation is on.

## Stage 2: The bot picks up instantly [#stage-2-the-bot-picks-up-instantly]

The moment the lead's first message arrives, the AI replies — within seconds, at 2 pm or 2 am. It answers from the knowledge base you loaded with the client's business: what they sell, at what price, when they're open, what customers usually ask.

Running several offers for one client? Give each campaign its own conversation. In [Automations](https://chatfuel.com/docs/ai-features/automations), you add a rule targeted at the ad — paste the ad ID from Ads Manager, or just paste the full Ads Manager URL and Chatfuel extracts the ID itself — and leads from different ads get handled differently:

| Ad             | Where the lead goes      |
| -------------- | ------------------------ |
| Promo offer    | Promo pitch and pricing  |
| Core service   | Booking conversation     |
| Urgent request | Fast-track qualification |

Set the rule up on the Automations page, or ask the AI Co-Worker — &#x2A;"For leads from this ad \[paste the link], pitch the promo and its pricing"* — both create the same rule. Leads from an ad without its own rule, or people who message the number directly, are picked up by the source's base automation and answered from the knowledge base. Nothing goes unanswered.

## Stage 3: Qualification happens in the chat [#stage-3-qualification-happens-in-the-chat]

While the conversation flows, the AI is doing the work your client's sales team never has time for: asking the [qualifying questions](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) — what the person needs, when, at what budget — and sorting contacts on a pipeline board automatically:

1. **Captured** — every new conversation starts here. The AI picks it up immediately.
2. **Sorting** — the AI is actively qualifying — asking questions, answering objections. If the lead goes quiet, [automatic follow-ups](https://chatfuel.com/docs/for-agencies/the-24-hour-rule-explained) re-open the chat instead of writing the contact off.
3. **Qualified** — the contact answered the qualifying questions and is worth a salesperson's time. This is the handoff point.

These three stages run on autopilot. No agency-side manual work — the pipeline fills itself while the campaign runs.

## Stage 4: A qualified lead lands with the client [#stage-4-a-qualified-lead-lands-with-the-client]

When a contact hits **Qualified**, three things happen:

* **Meta gets the signal.** The qualified-lead event goes back to Meta through the Conversions API (CAPI), so the campaign optimizes toward people who *qualify* — not just people who click or start a chat.
* **The client's tools get the lead.** Name, phone, and the answers from the chat are pushed to the client's CRM or a Google Sheet — wherever their sales team actually works.
* **A human takes over.** The client's team picks the lead from *Qualified*, moves it to *Selling*, and closes the deal — with the full chat history attached, so nobody asks the lead the same questions twice.

## Why this funnel protects the agency [#why-this-funnel-protects-the-agency]

* **You hand over only real leads.** The client's sales team gets contacts that answered qualifying questions — intent, timing, budget — not a raw dump of everyone who tapped an ad. The "your leads are trash" conversation stops happening.
* **Your results don't die on the client's sales floor.** Qualification, follow-ups, and CAPI events all fire *before* the lead reaches the client's team — weak sales on their side can't erase the conversions your ads actually produced.
* **You own the proof.** Every stage is visible on the pipeline board: conversations → qualified → closed. When it's time to defend the retainer, you report qualified leads and cost per qualified lead, not vanity metrics.
* **The algorithm works for you.** Because CAPI feeds Meta qualified-lead events, optimization compounds toward lead quality — over time you pay less per *qualified* lead, not just less per click.


---

---
title: "Interface tour for agencies"
description: "Chatfuel keeps the interface small on purpose: a handful of day-to-day screens, one page where all of the AI's behavior is configured, and an AI Co-Worker you…"
canonical_url: https://chatfuel.com/docs/for-agencies/interface-tour-for-agencies
markdown_url: https://chatfuel.com/docs/for-agencies/interface-tour-for-agencies.md
last_updated: 2026-09-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Interface tour for agencies

Chatfuel keeps the interface small on purpose: a handful of day-to-day screens, one page where all of the AI's behavior is configured, and an AI Co-Worker you…

Chatfuel keeps the interface small on purpose: a handful of day-to-day screens, one page where all of the AI's behavior is configured, and an AI Co-Worker you can hand the same work to in chat. Nothing here needs a dedicated bot builder to operate — but a new team still burns its first hour looking for buttons, so here's the map.

## Fuely AI → Automations: the AI's control panel [#fuely-ai--automations-the-ais-control-panel]

Everything about where and how the AI replies lives on one page: **Fuely AI** → **Automations** — [here's the full guide to how it works](https://chatfuel.com/docs/ai-features/automations). Three layers to know:

* **Main bot**, at the top. Its settings are the defaults for everything, and its toggle is the master switch — Main bot off means no AI replies anywhere.
* **A base automation for every traffic source** the client's channels expose: Instagram DMs, post & reel comments, ad comments, story replies, Facebook Messenger and post comments, WhatsApp DMs and ads, TikTok, the website widget. Enabling a source's automation is what turns the AI on there, and each one carries its own settings — when the AI replies, its instructions, handoff rules, follow-ups — inherited from Main bot until you override them.
* **Custom automations** on comment, ad, story, and link sources: named rules targeted at keywords or at specific posts and ads. For an agency this is the per-campaign lever — one client's launch ad gets its own funnel and its own replies, the evergreen campaign gets another, and the two never collide.

That layered structure is why one Chatfuel setup can serve very different client campaigns at once. Its sibling page, the **Knowledge Base**, holds what the AI knows — the client's business facts; Automations decide where and how it behaves.

## The AI Co-Worker [#the-ai-co-worker]

The Co-Worker is a chat that can read and change everything the dashboard can — the automations above, the Knowledge Base, reports. Instead of clicking through settings, you describe the outcome in plain language:

* "Set up auto-replies to Instagram comments on our latest ad"
* "Collect the customer's budget and phone number before booking"
* "Create a follow-up for leads who go quiet after 24 hours"

It configures the automation, asks for anything it needs from you, and confirms what it set. The two paths are equals: what the Co-Worker writes, you can open and inspect in Automations; what you change in Automations, the Co-Worker sees. Mixing them is the normal workflow — rough setup in chat, fine-tuning on the page, or the other way around. Use whichever is faster for the change in front of you.

One phrasing habit makes the chat path work noticeably better: &#x2A;*describe the outcome, not the mechanics.** "I want the AI to qualify leads by asking about budget" gets you further than "add a rule that sends a question." The Co-Worker thinks in results.

For an agency this changes the economics of setup: a junior account manager can configure things that used to require a dedicated bot builder — ask for them in chat, then check the result on the Automations page. What the AI actually runs from — its modules and where each one lives — is covered in [Bot modules and blocks](https://chatfuel.com/docs/for-agencies/bot-modules-and-blocks), and the knowledge behind it is built by [uploading the client's business info](https://chatfuel.com/docs/for-agencies/uploading-client-business-info).

## The day-to-day tabs [#the-day-to-day-tabs]

Around those two sit the screens your team lives in once a client is running:

| Tab                        | What happens there                                                                                                                                                                   |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Fuely AI → Automations** | The control panel from above: Main bot, the per-source automations, your custom rules. Where the bot's behavior is configured — here or via the Co-Worker.                           |
| **Chats**                  | Live view of every conversation the AI is having. Read along, and take over from the AI when a deal needs a human — the full history stays in the thread.                            |
| **Leads**                  | The pipeline: a kanban board where every contact moves through stages, from first touch to qualified to closed. This is where qualification results become something you can report. |
| **Calendar**               | Bookings and appointments the AI has scheduled, if the client's funnel books meetings.                                                                                               |
| **Settings**               | Teammates and roles, the connected channels, billing. The screen only Admins should be visiting.                                                                                     |

And one control that matters more to you than to any single-business user: the **company name at the bottom of the sidebar → Workspaces → Companies**, the switcher between client companies. Every tab above shows one client at a time — whichever company you're currently in. The full logic of that structure is in [Agency → clients model](https://chatfuel.com/docs/for-agencies/agency-clients-model).

## Where each of your people spends their day [#where-each-of-your-people-spends-their-day]

| Role on your team             | Their screens                                                                                |
| ----------------------------- | -------------------------------------------------------------------------------------------- |
| Media buyer                   | Meta Ads Manager (outside Chatfuel) + **Leads**, to see what the ads actually produce        |
| Bot builder / account manager | **Fuely AI → Automations**, or the AI Co-Worker — whichever is faster for the change at hand |
| Client's sales reps           | **Chats** and **Leads** — answering handoffs and working the pipeline                        |
| Agency owner / account lead   | **Settings** and billing, plus Workspaces → Companies to keep the client list organized      |

Give each person [the role that matches](https://chatfuel.com/docs/for-agencies/roles-and-access-for-the-agency-team) — the interface they see trims itself to what their role can do, which is exactly what you want when the client's own staff is logging in.


---

---
title: "Lead qualification questions and logic"
description: "Qualification is the whole point of the funnel. Ads bring everyone; the client's sales team only wants the ones worth a call."
canonical_url: https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic
markdown_url: https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Lead qualification questions and logic

Qualification is the whole point of the funnel. Ads bring everyone; the client's sales team only wants the ones worth a call.

Qualification is the whole point of the funnel. Ads bring everyone; the client's sales team only wants the ones worth a call. The bot sits in between and finds out a handful of things about every new lead — then hands the conversation to a human with the answers already collected. Your job as the agency is to pick the *right* handful for each client's business.

In the product, qualification is two settings on the [automation](https://chatfuel.com/docs/ai-features/automations): **Collect contact info** holds the fields the bot fills in for every lead ([how the setting works](https://chatfuel.com/docs/ai-features/how-to-collect-contact-info)), and **Additional instructions** holds the conversational rules for how it asks. Set them on **Main bot** to qualify every lead the same way — or override them on one source, so leads from a particular ad campaign get their own extra questions while the rest of the traffic keeps the defaults. You can edit both at **Fuely AI** → **Automations** or by telling the AI Co-Worker what you want; the advice below is about *what* to put there.

## How many fields? [#how-many-fields]

As many as the client's sales process needs — there's no limit. Three is the recommended starting point: enough answers to tell "ready to buy" from "just looking", and short enough that a lead on WhatsApp actually finishes. But if the client's sales team genuinely can't prioritize a lead without five, ten, or twenty data points, add them all. Just price it in: every extra question costs completion, so start lean, watch real conversations, and extend where the sales team keeps asking for a missing detail.

Pick fields that map to how the client's sales team already decides who to call first. Ask them: &#x2A;"When a new inquiry comes in, what do you need to know to prioritize it?"* Their answer is your field list.

## Field sets that work, by niche [#field-sets-that-work-by-niche]

Proven starting points — pick the set that matches how your client sells:

| Client's niche         | Set A                                   | Set B                                                     |
| ---------------------- | --------------------------------------- | --------------------------------------------------------- |
| **Real estate**        | District, budget, timeline              | Property type, buy-to-live or invest, financing           |
| **Beauty / clinic**    | Service wanted, preferred date, budget  | Service wanted, main concern, new or returning client     |
| **Courses / coaching** | Goal, current level, timeline           | Goal, budget, why now                                     |
| **E-commerce**         | Product interest, budget, delivery city | Product interest, size or variant, gift or for themselves |
| **Anything else**      | What they need, budget, timeline        | What they need, location, urgency                         |

Set A leans toward logistics (can we serve them, when); Set B leans toward intent (how serious are they). Either beats improvising.

## How the bot asks [#how-the-bot-asks]

The AI doesn't run a questionnaire — it qualifies inside a natural conversation, following rules written into the automation's **Additional instructions**:

* **One question per message.** Ask the district, wait for the answer, then ask the budget. Stacking all three into one message reads like a form and kills response rates.
* **Intent first.** The opening question is "what are you looking for?" — not a demographic probe. Leads answer questions about themselves much more willingly once they've said what they want.
* **Personal questions come with a why.*&#x2A; Before asking budget or financing, the bot frames it: &#x2A;"so I can suggest options that fit your situation."*
* **WhatsApp register.** Short messages, one or two sentences, mirroring the lead's tone — not "Please provide your requirements."

When the Co-Worker sets up qualification, it writes these rules in for you; you can read and adjust them any time in the automation's **Additional instructions**. Either way, *test* them: play a lead in the [Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) and check the conversation feels like chat, not paperwork.

## What happens when all fields are collected [#what-happens-when-all-fields-are-collected]

The moment the bot has all the answers, the **Switch to human** rule fires:

1. The chat moves to the client's **team inbox** — out of the bot's hands, into a human's.
2. The lead arrives with the collected fields on their profile plus their last message — e.g. &#x2A;District: Centro. Budget: $200k. Timeline: 3 months. Last message: "can we schedule a viewing?"*
3. The **Chatfuel mobile app** pushes a notification the moment a qualified lead lands, so whoever owns follow-up — the client's salesperson or your account manager — replies while the lead is still warm.

No scoring thresholds to tune: qualified means "all fields collected", and the bot won't hand off before that. If qualified leads aren't landing in the team inbox, [Troubleshooting the qualification bot](https://chatfuel.com/docs/for-agencies/troubleshooting-the-qualification-bot) has the fix.

**Note:*&#x2A; setting it up takes one sentence. In the &#x2A;*"Set up WhatsApp"** onboarding, the Co-Worker proposes ready-made field sets tailored to the client's business — drawn from [the business info you uploaded](https://chatfuel.com/docs/for-agencies/uploading-client-business-info) — and you pick one or name your own fields. To change them later, edit **Collect contact info*&#x2A; on the automation, or just tell the Co-Worker: &#x2A;"Change the qualification questions to service, date, and budget."* Either way, the fields and the handoff rule update to match.


---

---
title: "Lead quality and cost per qualified lead"
description: "The most expensive leads an agency can buy are the cheap ones that never buy anything."
canonical_url: https://chatfuel.com/docs/for-agencies/lead-quality-and-cost-per-qualified-lead
markdown_url: https://chatfuel.com/docs/for-agencies/lead-quality-and-cost-per-qualified-lead.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Lead quality and cost per qualified lead

The most expensive leads an agency can buy are the cheap ones that never buy anything.

The most expensive leads an agency can buy are the cheap ones that never buy anything. Ads Manager will happily report a falling cost per conversation while the pipeline fills with bargain hunters, competitors checking prices, and one-word "Hi"s that go silent — and a month later the client asks why sales didn't move. The lead quality report is the antidote: it measures what the ads actually delivered, not what they cost.

## What's actually in the pipe [#whats-actually-in-the-pipe]

Volume is one number; composition is the story. Because the [qualification bot](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) interviews every lead and records the answers, Chatfuel knows not just how many conversations started but what was inside them: how many qualified, how many didn't, and *why* — out of budget, wrong area, wrong service, or never answered the first question. Ask the [AI Co-Worker](/docs/for-agencies/reports-via-the-ai-co-worker&#x29; &#x2A;"business report"&#x2A; for the qualified share, then dig into the failures: &#x2A;"why do deals fail"* reads the actual lost conversations and names the patterns. Stage by stage, the same problems show up as leaks in the [funnel and drop-off report](https://chatfuel.com/docs/for-agencies/funnel-and-drop-off-report).

A quality read for a beauty-clinic client might come back: 120 conversations, 44 qualified (37%), and of the rest — a third asked about a service the clinic doesn't offer. That last clause is gold: it means the ad copy is promising the wrong thing, and no bid change will fix it.

## Cost per qualified lead: the math [#cost-per-qualified-lead-the-math]

This is the metric everything else keeps pointing at, and it takes one division:

**CPQL = ad spend (Ads Manager) ÷ qualified leads (Chatfuel)**

Spend lives in Ads Manager; the qualified count is one question to the Co-Worker (&#x2A;"how many qualified leads this month?"*). For calibration: the average cost per lead on Meta runs around $28 and climbed roughly 21% year over year, with huge spread by industry — but a form-fill "lead" and a *qualified WhatsApp conversation* are different animals, which is exactly why agencies that report CPQL instead of CPL sound like they know something the client's last agency didn't.

Go one step further when the client shares revenue: spend ÷ closed deals = **cost per sale**, the number that ends every "but what are we getting for the budget?" conversation.

## Judge ads by quality, not cost [#judge-ads-by-quality-not-cost]

Put CPQL next to Ads Manager's numbers and the kill-or-scale decisions start disagreeing with Meta's favorites — trust the disagreement:

| Ad set             | Cost per conversation | Qualified % | CPQL   | Verdict                                             |
| ------------------ | --------------------- | ----------- | ------ | --------------------------------------------------- |
| A — "50% OFF" hook | $2.10                 | 12%         | $17.50 | Kill, despite the cheap clicks                      |
| B — filtering hook | $4.80                 | 45%         | $10.70 | Scale — the expensive conversations are the bargain |

Meta optimizes toward what it can see: conversations started. Only you can see what happened after. As a sanity check, B2B benchmarks put typical marketing-qualified → sales-qualified conversion around 13% — if your WhatsApp funnel qualifies 35–45% of conversations, that's a genuinely strong pipe, and worth saying out loud in the [client report](https://chatfuel.com/docs/for-agencies/client-reporting). The weekly kill / scale / refresh loop that runs on CPQL is in [Tuning ads with funnel data](https://chatfuel.com/docs/for-agencies/tuning-ads-with-funnel-data).

## Fixing quality upstream [#fixing-quality-upstream]

When the qualified share sags, the fix is almost always above the bot, not inside it:

* **Make the hook filter.** "12 slots for July" loses cheap clicks and gains real buyers; a generic discount hook does the opposite. The [hook playbook](https://chatfuel.com/docs/for-agencies/ai-copy-and-hooks-for-the-niche) has the formulas.
* **Make the pre-filled message declare intent.*&#x2A; &#x2A;"Hi! I want July pricing for a studio"* starts the qualification a step ahead; a bare "Hi" starts it from zero.
* **Match qualification fields to the niche.** If the bot doesn't ask what the client's sales team needs to prioritize a lead, "junk" is often just "unmeasured" — fix the fields.

> **Note:** Report the disqualified leads too. The junk breakdown is client-facing gold, not dirty laundry. "A third of unqualified leads wanted a service you don't offer — here's the copy change we're shipping" shows the client a feedback loop working. Agencies that hide the junk column end up defending it later; agencies that report it look like they run a system.


---

---
title: "Meta ad moderation"
description: "Every ad you launch goes through Meta's review before it spends a cent — and for an agency the stakes are bigger than one delayed campaign."
canonical_url: https://chatfuel.com/docs/for-agencies/meta-ad-moderation
markdown_url: https://chatfuel.com/docs/for-agencies/meta-ad-moderation.md
last_updated: 2026-07-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Meta ad moderation

Every ad you launch goes through Meta's review before it spends a cent — and for an agency the stakes are bigger than one delayed campaign.

Every ad you launch goes through Meta's review before it spends a cent — and for an agency the stakes are bigger than one delayed campaign. Rejections accumulate against the ad account, and the ad account is the agency's livelihood: lose it, and every client on it goes dark at once. The good news: the review is predictable. Lead-gen ads get rejected for the same handful of reasons, and all of them are avoidable at the copy-and-creative stage.

## How the review works [#how-the-review-works]

Meta's review is automated first — AI systems scan every ad, with human reviewers stepping in for edge cases. Most ads clear within 24 hours. What gets checked is broader than most advertisers assume:

* **The creative** — image or video, including any text on it.
* **The copy** — primary text, headline, description.
* **The targeting** and how it combines with the content.
* **The destination** — Meta crawls where the click leads. For click-to-WhatsApp ads that's your chat experience; for landing pages, a page that overpromises ("guaranteed results!") can sink an ad whose copy was clean.
* **Account history** — the same ad gets more scrutiny on an account with recent violations.

And approval isn't permanent: live ads can be re-reviewed and pulled later. Build compliant from the start, not "compliant enough to sneak through."

## The five rejections that hit lead-gen ads [#the-five-rejections-that-hit-lead-gen-ads]

1. **Personal attributes.** The big one for service niches. Ads may not assert or *imply&#x2A; they know something personal about the viewer — health conditions, financial status, age, ethnicity, and more. Meta's own disallowed examples: &#x2A;"Do you have diabetes?"&#x2A;, &#x2A;"Are you bankrupt?"&#x2A;, &#x2A;"Meet other seniors."&#x2A; The fix is mechanical: rewrite in third person, about the service instead of the reader. &#x2A;"Are you overweight?"&#x2A; → &#x2A;"The program everyone's talking about."&#x2A; &#x2A;"Struggling with debt?"&#x2A; → &#x2A;"Smarter tools for financial planning."*
2. **Before/after and negative self-perception.** Beauty and health classics. Transformation creatives for weight loss and anti-aging procedures (Botox, fillers) are prohibited when they imply something is wrong with the viewer. Sell the experience and the outcome-as-story, not the "before."
3. **Unrealistic claims.** Guaranteed results, specific numbers with no basis, fake urgency. Most policed in health, fitness, beauty, and finance — exactly the niches lead-gen agencies live in. Describe the mechanism, not a promised number.
4. **Special ad category violations.** Housing, credit, employment, and financial products must be declared as such — see the note below.
5. **Circumventing systems.** The one that ends accounts. Cloaked landing pages, misleading redirects, resubmitting a rejected ad over and over, spinning up new accounts to dodge a restriction — Meta treats these as intent to evade review, and recovery from that verdict is rare.

**Important — Special Ad Categories, especially if you run real estate:** housing ads (plus credit, employment, and financial products) must be declared as a Special Ad Category at campaign creation — failing to declare is itself a violation. Once declared, targeting is deliberately blunted: age locks to 18–65+, all genders included, no ZIP-code targeting, no Lookalike audiences. This is why the winning real-estate playbook is **angle over audience**: separate ads per intent — buyers, sellers, investors — with [copy that self-selects](https://chatfuel.com/docs/for-agencies/ai-copy-and-hooks-for-the-niche), and let broad delivery find the people.

## Click-to-WhatsApp specifics [#click-to-whatsapp-specifics]

Chat ads add one more reviewed surface: the WhatsApp side. Keep three things healthy:

* **A verified Meta business** — business verification is the foundation for running click-to-WhatsApp at scale; sort it during [client onboarding](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for).
* **Number quality.** Meta rates every WhatsApp business number on how recipients react. If more than about 5% of people block the number shortly after being messaged, the rating drops — and repeated drops throttle your messaging. A [qualification bot that answers helpfully](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) instead of blasting promos is your best quality insurance.
* **A clean link between the ad's Facebook Page and the WhatsApp number** — mismatched or borrowed assets are a recurring source of "why was this rejected?" mysteries.

## Rejected — now what [#rejected--now-what]

1. **Read the actual reason.** Open Account Quality and check which policy and which asset was flagged — ad copy, creative, or destination. Fixing the wrong thing wastes an appeal.
2. **Decide: edit or appeal.** If you can see the violation, edit and resubmit clean. If the rejection is genuinely wrong, request a review — but appeals are limited and decisions are usually final, so spend them on ads you're confident in, with the violation actually removed.
3. **Never resubmit the same ad unchanged, repeatedly.** To the review system that looks like circumventing enforcement — the fastest route from "one rejected ad" to "restricted account."
4. **Protect the account like infrastructure.** Two-factor authentication for everyone with access, consistent billing, no shared assets from unknown partners, landing pages that deliver what the ad promises. An agency's ad account deserves the same care as a client's production server.

If the ad clears review but the funnel stays quiet, that's a different diagnosis — see [Troubleshooting ads](https://chatfuel.com/docs/for-agencies/troubleshooting-ads).

## AI-generated creatives and disclosure [#ai-generated-creatives-and-disclosure]

Meta labels AI-generated and AI-modified media: photorealistic AI people get a visible tag, and provenance metadata from generation tools is read automatically. This is the 2026 normal — a label is not a penalty, and standard edits (cropping, color) don't trigger it. What matters for review is the same as always: what the ad *claims*, not what tool made it.

Here Chatfuel quietly does you a favor: creatives from the [AI Co-Worker](https://chatfuel.com/docs/for-agencies/ai-generation-of-ad-creatives) are grounded in the client's real Knowledge Base — no invented prices, no invented promos — and prohibited claim patterns like guaranteed income or guaranteed health results are caught and rewritten before the creative is even rendered. That doesn't guarantee approval (nothing does), but it means your ads walk into review without the classic self-inflicted wounds.


---

---
title: "Partner access to the client's Meta portfolio"
description: "Your client has a Meta Business Portfolio — good, that's the easy case."
canonical_url: https://chatfuel.com/docs/for-agencies/meta-partner-access
markdown_url: https://chatfuel.com/docs/for-agencies/meta-partner-access.md
last_updated: 2026-07-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Partner access to the client's Meta portfolio

Your client has a Meta Business Portfolio — good, that's the easy case.

Your client has a Meta Business Portfolio — good, that's the easy case. (If they don't have one at all, start with [When the client has no Business Manager](https://chatfuel.com/docs/for-agencies/when-the-client-has-no-business-manager) instead.) Now you need to get inside it the professional way: **partner access**, business-to-business, no shared passwords, revocable by the client at any time. There are two routes: the client grants it, or you request it from your side and the client only clicks Approve. Learn both — the second one is what separates agencies that launch in a day from agencies that spend a week emailing screenshots.

## People access vs. partner access [#people-access-vs-partner-access]

Meta has two mechanisms for letting someone into a portfolio, and clients mix them up constantly. Know the difference cold, because you'll be the one explaining it:

|                                     | People access                                    | Partner access                                             |
| ----------------------------------- | ------------------------------------------------ | ---------------------------------------------------------- |
| **Who it's for**                    | Individuals — the client's own employees         | Businesses — agencies, freelancers with a portfolio        |
| **How it's granted**                | Email invite to one person                       | Your agency's Business Portfolio ID                        |
| **Your team**                       | Client invites each of your teammates one by one | You assign your own people to the client's assets yourself |
| **When someone leaves your agency** | Client has to remember to remove them            | You remove them on your side — client does nothing         |
| **Ownership**                       | Client keeps it                                  | Client keeps it — partner access never transfers ownership |

For day-to-day agency work — running ads, managing the Page, reading the pixel — **partner access is the answer**. It scales: one grant from the client, and you manage your team's permissions internally. There's one exception where people access matters, covered at the end of this page.

## Before you start: find your Business Portfolio ID [#before-you-start-find-your-business-portfolio-id]

Both routes need your agency's own portfolio. If you don't have one yet, create it at [business.facebook.com](https://business.facebook.com) — it takes five minutes and you only do it once, for your agency, ever.

Your ID lives in **Business Settings → Business Info** — a 16-digit number under your business name. Keep it in your onboarding template; you'll paste it into every new client conversation.

## Route A: the client grants you access [#route-a-the-client-grants-you-access]

The classic flow. Send the client these steps (there's a ready-made [script](https://chatfuel.com/docs/for-agencies/scripts-for-asking-clients-for-access) you can forward as-is):

1. **Open Partners in Business Settings.** The client goes to [business.facebook.com/settings](https://business.facebook.com/settings) → **Partners** → **Add** → **Give a partner access to your assets**. Only someone with full control of the portfolio can do this — usually the owner.
2. **Enter your Business Portfolio ID.** They paste your 16-digit ID. Meta finds your agency's portfolio by that number — no emails, no invites to individual people.
3. **Select the assets to share.** Ad account, Facebook Page, Instagram account, pixel/dataset — everything from the [checklist](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for). This is the step clients rush: they share the Page and forget the pixel, or share one ad account when there are two. Send them the exact asset names.
4. **Set the permission level and assign.** For each asset the client picks what your agency can do — then clicks **Assign assets**. The assets appear in your portfolio within a minute, and you can start assigning your own teammates to them.

## Route B: you request access — the client just approves [#route-b-you-request-access--the-client-just-approves]

Fewer steps on the client's side means fewer things go wrong. From **your** Business Settings:

1. **Send the request.** &#x2A;*Business Settings → Partners → Add → Ask a partner to assign you their assets.** Enter the client's email (the one tied to their portfolio) and, if you have it, their Business Portfolio ID.
2. **Specify assets and permission levels.** You choose what you're asking for — ad account with ads management, Page, Instagram, pixel. Precision here is a professionalism signal: asking for exactly what the job needs, no more.
3. **The client approves.** They get a notification, review what you asked for (they can trim it), and click Approve. Done — no navigating menus, no screenshots back and forth.
4. **Track it in your Partners tab.** Pending requests sit in **Partners** on your side, so you always know which client is holding up which launch.

## What permissions to ask for [#what-permissions-to-ask-for]

Ask for **task-level (partial) access** matched to the job — it's what security-conscious clients expect, and it protects you too: you can't be blamed for what you couldn't touch.

| Asset             | Ask for                                           | Enough to                                                                                                                |
| ----------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Ad account        | Manage campaigns                                  | Launch, edit, and optimize ads                                                                                           |
| Facebook Page     | Ads + content (or messaging if you run the inbox) | Publish click-to-WhatsApp ads, manage responses                                                                          |
| Instagram account | Messages + ads                                    | DM automation and ad placements                                                                                          |
| Pixel / dataset   | Manage                                            | Fire CAPI events, build audiences                                                                                        |
| Portfolio-wide    | Don't ask                                         | Full control of the whole portfolio is almost never needed — and asking for it triggers the "is this safe?" conversation |

## The exception: connecting WhatsApp to Chatfuel [#the-exception-connecting-whatsapp-to-chatfuel]

Partner access runs your ads. But when it's time to [connect the client's WhatsApp](https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp), Meta's authorization flow requires the person clicking **Connect** to be logged in with a Facebook account that has **Full control** of the *client's* business portfolio — the client can verify who has it at `business.facebook.com/settings/people`. Two clean ways to handle it:

* **Screen-share.** The client logs in and clicks; you navigate. Fifteen minutes, no extra access. This is also the only way for Instagram — that authorization must come from the client's own Instagram account.
* **People invite with Full control.** For clients you'll manage long-term, have them add one senior person from your team in **Business Settings → People** with Full control. Reconnections, number changes, and troubleshooting stop requiring the client's calendar.

**Important:** never remove the old admin first. If you're helping a client clean up their portfolio, make sure the new account has full access and can see the WhatsApp Business Account under **Accounts → WhatsApp accounts** *before* removing anyone. Removing the old admin first can lock everyone out of the WABA — and getting it back means a support case with Meta.

## When something's still red [#when-somethings-still-red]

Request never arrived, assets shared but invisible, permissions that don't let you do anything, an admin who left the company — every access dead-end has a known exit, and they're all collected in [Troubleshooting client access issues](https://chatfuel.com/docs/for-agencies/troubleshooting-client-access-issues).


---

---
title: "Reports via the AI Co-Worker"
description: "An agency running ten clients doesn't have time to learn a BI tool, build ten dashboards, and keep them updated."
canonical_url: https://chatfuel.com/docs/for-agencies/reports-via-the-ai-co-worker
markdown_url: https://chatfuel.com/docs/for-agencies/reports-via-the-ai-co-worker.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Reports via the AI Co-Worker

An agency running ten clients doesn't have time to learn a BI tool, build ten dashboards, and keep them updated.

An agency running ten clients doesn't have time to learn a BI tool, build ten dashboards, and keep them updated. Chatfuel takes a different route: the analyst is already on staff. Ask the AI Co-Worker a question in plain language — inside any client's company — and it answers from that client's real data: the conversations, the pipeline, the bookings, the outcomes. Every analytics report described here — starting with the [end-to-end chain from ad spend to sales](https://chatfuel.com/docs/for-agencies/end-to-end-analytics-for-agencies) — is pulled exactly this way.

## Ask anything [#ask-anything]

The Co-Worker covers the whole span from "one number, quick" to "read a hundred conversations and tell me what's wrong":

| You want                | Ask something like                                                           |
| ----------------------- | ---------------------------------------------------------------------------- |
| The funnel              | *"show conversion funnel"&#x2A;, &#x2A;"business report"*                    |
| Period stats            | *"new leads this month"&#x2A;, &#x2A;"how does this month compare to last?"* |
| Hot leads to push today | *"who are my hot leads"*                                                     |
| Deals about to die      | *"clients at risk"&#x2A;, &#x2A;"who went silent"*                           |
| One lead's full story   | *"what did we discuss with Maria?"*                                          |
| A contact, fast         | *"who is this number"&#x2A;, &#x2A;"find contacts with email set"*           |
| Why deals are lost      | *"why do deals fail"*                                                        |
| What leads keep asking  | *"what do clients ask most"*                                                 |
| Where the AI struggles  | *"why is AI failing"&#x2A;, &#x2A;"find AI mistakes in conversations"*       |

No query language, no filters to configure — the phrasing above is literally how you ask. For the funnel view specifically, the stage-by-stage breakdown is decoded in [Funnel and drop-off report](https://chatfuel.com/docs/for-agencies/funnel-and-drop-off-report).

## It reads the actual conversations [#it-reads-the-actual-conversations]

The Co-Worker doesn't just count rows — it reads the transcripts. Ask &#x2A;"why do deals fail"&#x2A; and it studies lost conversations against won ones, names the typical drop-off point, and lists the objection patterns — quoting the leads' real messages, not paraphrasing. Ask &#x2A;"what do clients ask most"* and it mines the whole history for recurring questions, complaints, and missed opportunities. Sentiment, open issues, what was agreed with a specific lead — it's all in there, because it's all in the conversations. The full playbook for this kind of transcript mining is in [Conversation analytics](https://chatfuel.com/docs/for-agencies/conversation-analytics).

And it plays by an analyst's rules: it never invents a number. Every figure comes from the client's actual data, and if the data isn't there, it says so instead of estimating.

## Every report ends in a to-do [#every-report-ends-in-a-to-do]

A funnel chart that just sits there is trivia. The Co-Worker's reports end with what to *do*: a business report closes with its top recommendations, a risk scan ends with the list of contacts to rescue first, an AI diagnostic names the exact knowledge worth adding to the [Knowledge Base](https://chatfuel.com/docs/for-agencies/uploading-client-business-info). It surfaces and advises — the actions themselves stay yours to trigger, which is exactly how you want an analyst to behave around a client's live funnel. When a recommendation calls for a settings change, make it either way: in the client's [automations](https://chatfuel.com/docs/ai-features/automations) at **Fuely AI** → **Automations**, or by telling the Co-Worker to apply it.

## The agency workflow [#the-agency-workflow]

Because every client is a separate company in your workspace, the same questions work identically across your whole roster. A Monday routine that used to be a morning of spreadsheet archaeology becomes ten minutes of chat: open each client's company, ask &#x2A;"business report"&#x2A; and &#x2A;"clients at risk"*, collect the numbers and the to-dos, move on. Same questions, every client, zero setup per client. And when those ten minutes need to become a monthly deliverable, [Client reporting](https://chatfuel.com/docs/for-agencies/client-reporting) shows how to package them.

> **Note:** Answers are only as good as the data behind them. The Co-Worker reports on what actually happened in the client's funnel — so the quality bar is set upstream. A well-filled Knowledge Base and [qualification fields that match the niche](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) make every answer sharper, from the funnel counts to the lost-deal analysis.


---

---
title: "Roles and access for the agency team"
description: "Give the client's sales team the Agent role: they answer chats in Leads without seeing billing, automations or other client companies in your workspace."
canonical_url: https://chatfuel.com/docs/for-agencies/roles-and-access-for-the-agency-team
markdown_url: https://chatfuel.com/docs/for-agencies/roles-and-access-for-the-agency-team.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Roles and access for the agency team

Give the client's sales team the Agent role: they answer chats in Leads without seeing billing, automations or other client companies in your workspace.

Sooner or later the client asks the question you should be hoping for: "Can my sales guys answer the chats themselves?" The answer is yes — and it's safe, because Chatfuel's roles let you put the client's people *inside* their company without giving them any way to break what you built. This page is how to set that up, and how to slice access inside your own agency while you're at it.

## The three roles [#the-three-roles]

Every teammate in a company has one of three roles:

| Role       | Can do                                                                                                                     | Can't do                                                     |
| ---------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| **Admin**  | Everything — automations, chats, teammates, account settings, billing                                                      | —                                                            |
| **Editor** | Build and edit the bot: automations, AI setup, flows                                                                       | Account settings, billing, managing teammates                |
| **Agent**  | Work with customers: reply in chats, manage contacts, move leads through the pipeline, take over conversations from the AI | Edit automations or AI settings, see billing, touch the team |

The pattern to notice: the roles split along the line between **building the machine** and **operating inside it**. Admins and Editors build; Agents work the output. That line is exactly where agency work and client work divide.

## How to map roles to real people [#how-to-map-roles-to-real-people]

**Admin — you, and almost nobody else.** The agency owner or the account lead. Admin sees billing and can change anything, so keep it to one or two people on your side. The client doesn't need it, and neither does most of your team.

**Editor — whoever builds the bots.** Your automation person gets Editor in every client company they work on: full power over the AI and the flows, no access to account settings or billing. If something needs changing in the client's funnel, this is the role that changes it.

**Agent — the client's team.** This is the role that makes the client relationship work. Their sales reps and support staff get Agent in *their* company: they answer handoffs from the AI, work the [leads pipeline](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works), manage contacts — and they physically cannot edit an automation, reword an AI instruction, or wander into settings. Your build stays yours; their customers stay theirs. It's also the right role for a project manager on the client's side who wants to watch the pipeline.

Combined with the [one-client-one-company structure](https://chatfuel.com/docs/for-agencies/agency-clients-model), this gives you the full grid: your core team exists in every client's company, the client's people exist only in their own, and every one of them sees exactly [the interface their role allows](https://chatfuel.com/docs/for-agencies/interface-tour-for-agencies).

## Inviting a teammate [#inviting-a-teammate]

Invites work through role-specific links, and they take a minute:

1. **Open Teammates.** In the [client's company](https://chatfuel.com/docs/for-agencies/create-a-client-company), go to **Settings → Teammates**. Make sure you're in the right company first — invites are per company.
2. **Generate a link for the role.** Click **Generate link** and pick the role: Admin, Editor, or Agent. The link *is* the role — whoever clicks it joins with that access level.
3. **Send it to the right person.** Share the link with your teammate or the client's staff member. They click, they're in — no manual approval step on your side.

> **Note:** Each generated link is tied to the role you picked. Inviting an Editor and two Agents means generating two different links — don't reuse the Agent link for someone who needs to build. And note this is one of the few jobs the AI Co-Worker won't do for you: invites and role changes happen in Settings, by hand, though the Co-Worker can tell you who's already on the team.

Teammates are **unlimited on every plan**, so there's no cost math to do before adding the client's entire sales floor. If access ever needs to end — someone leaves your agency, or the client's — remove them from the same Teammates screen, company by company. Roles cover the Chatfuel side of client onboarding; the Meta side — ad accounts, WhatsApp, Instagram — is covered in [What to ask the client for](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for).

## The habit that keeps this clean [#the-habit-that-keeps-this-clean]

Decide the role from the job, not from seniority or trust. The client's CEO who "just wants to see everything" gets Agent, not Admin — they can watch every chat and every lead, which is what they actually wanted. The freelancer helping you build one funnel gets Editor in one company, not three. Access that matches the job is easy to grant, easy to explain, and easy to revoke.


---

---
title: "Scripts for asking clients for access"
description: "Most access delays aren't technical — they're conversational."
canonical_url: https://chatfuel.com/docs/for-agencies/scripts-for-asking-clients-for-access
markdown_url: https://chatfuel.com/docs/for-agencies/scripts-for-asking-clients-for-access.md
last_updated: 2026-07-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Scripts for asking clients for access

Most access delays aren't technical — they're conversational.

Most access delays aren't technical — they're conversational. The client doesn't understand what you're asking for, half-suspects you want the keys to their business, and quietly parks your request under "deal with later." The fix is a message that explains what you need, why it's safe, and exactly where to click — in words a busy owner reads in thirty seconds. Here are those messages, built around the [access checklist](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for). Steal them.

## Before you hit send [#before-you-hit-send]

Three principles that make these scripts work:

* **One ask per message.** A message with five requests gets zero of them done. Bundle the assets into a single grant, but make it feel like one action: "add us as a partner."
* **Say why, in their outcome, not your tooling.** Not "we need dataset permissions for CAPI" but "so Meta learns which leads turn into money and finds you more of them."
* **Put safety in the first message, unprompted.** "You keep full ownership and can revoke everything in one click" — said before they wonder — is the sentence that gets requests approved same-day.

## Script 1 — the access request (client has a Business Portfolio) [#script-1--the-access-request-client-has-a-business-portfolio]

Send after the contract is signed, along with your Business Portfolio ID:

```text
Hi [Name]! To get your campaigns live, we need access to your business assets
on Meta. The professional way to do this is "partner access": you connect our
agency to your Business Portfolio, and we only get the specific permissions we
need to do the work.

Important part first: you keep full ownership of everything. We never get your
password, you can see exactly what we have access to, and you can revoke it
all in one click at any time.

I'll send you a request from our side — you'll get a notification from Meta,
review what we're asking for, and hit Approve. That's it, takes about a minute.

We'll be requesting: the ad account, the Facebook Page, the Instagram account,
and the pixel. If anything looks off, tell me and we'll adjust.
```

Then send the request from **your** Business Settings ([Route B](https://chatfuel.com/docs/for-agencies/meta-partner-access) — the client only clicks Approve). If the client prefers to do it from their side, forward Script 2.

## Script 2 — click-by-click instructions (forward as-is) [#script-2--click-by-click-instructions-forward-as-is]

For the client who says "just tell me where to click":

```text
Takes ~5 minutes. You'll need to be logged into the Facebook account that
manages your business.

1. Open business.facebook.com/settings
2. In the left menu, click "Partners", then "Add"
3. Choose "Give a partner access to your assets"
4. Paste our Business Portfolio ID: [YOUR 16-DIGIT ID]
5. Select the assets to share:
   - Ad account: [exact name]
   - Facebook Page: [exact name]
   - Instagram account: [exact name]
   - Pixel/dataset: [exact name]
6. For each one, enable the permissions for managing ads and content
   (no need to give "Full control" — we don't need it)
7. Click "Assign assets"

That's it — we'll confirm from our side the moment it lands. If any screen
looks different from what I described, send me a screenshot and we'll do it
together on a quick call.
```

Fill in the exact asset names before sending — "which ad account?" is the #1 place this stalls.

## Script 3 — the client has no Business Manager [#script-3--the-client-has-no-business-manager]

For the "we don't have any of that" client. The goal: make it a plan, not a problem.

```text
No worries — that's actually the good scenario: we get to set everything up
correctly from day one, with no legacy issues.

Here's the plan. Together we'll create your Meta Business Portfolio — it's
free and it will be fully OWNED BY YOU: your page, your ad account, your
WhatsApp number, your customer data. We get partner access to do the work,
and if we ever part ways, everything stays with you. That's how it should be.

From you we'll need:
- 30 minutes on a call (I'll navigate, you click)
- your business registration document — Meta uses it to verify the business,
  which unlocks higher messaging limits on WhatsApp
- a card for the ad account (your ads, your billing — full transparency)
- the phone number you want customers to reach you on in WhatsApp

When can you grab half an hour this week?
```

Then follow the [from-scratch guide](https://chatfuel.com/docs/for-agencies/when-the-client-has-no-business-manager) on that call.

## Script 4 — the follow-up [#script-4--the-follow-up]

Three days of silence usually means confusion, not refusal. Shrink the ask:

```text
Hi [Name]! Quick nudge on the Meta access — it's the only thing between us
and launch, everything else on our side is ready.

If the instructions feel like a maze (honestly, Meta's menus are nobody's
favorite), let's just do a 10-minute call: you share your screen, I tell you
exactly where to click, done. Today at [time] or tomorrow at [time]?
```

The screen-share offer isn't just a courtesy — for connecting WhatsApp and Instagram to Chatfuel you'll likely want that call anyway, since those authorizations happen from the client's own login.

## "Is this safe?" — the objection handling [#is-this-safe--the-objection-handling]

The questions behind the hesitation, and answers that close them:

**"Why do you need this much access?"**
"We only asked for task-level permissions on the specific assets we work on — ads, page, pixel. We deliberately did *not* ask for Full control of your portfolio. You can see the exact list in Business Settings → Partners, next to our name."

**"Can't I just give you my login?"**
"Please don't — sharing logins is against Meta's rules and often triggers a security lock on your account, which can freeze your ads for days. Partner access exists exactly so you never have to share a password."

**"What happens if we stop working together?"**
"You go to Business Settings → Partners and remove us. One click. Everything — the page, the ad account, the audiences, the WhatsApp number and its chat history — stays with you, because it was yours the whole time."

**"Can you see my personal Facebook?"**
"No. Partner access connects business to business. We see the business assets you assigned — nothing about your personal profile, messages, or friends."

**"Why does connecting WhatsApp need Full control?"**
"That one's Meta's requirement for the connection step, not ours — the account that authorizes a WhatsApp connection must have full control of *your* portfolio. Easiest way: we do it together on a 15-minute call where you stay logged in and click. Alternatively, you can add one named person from our team with that access and remove them right after — your call."

Once the access lands, [create the client's company](https://chatfuel.com/docs/for-agencies/create-a-client-company) in Chatfuel and put it to work.


---

---
title: "Set up the chat widget for a client"
description: "The chat widget is the odd one out in the channel lineup: it doesn't belong to Meta or TikTok, it lives on the client's own website."
canonical_url: https://chatfuel.com/docs/for-agencies/set-up-the-widget-for-a-client
markdown_url: https://chatfuel.com/docs/for-agencies/set-up-the-widget-for-a-client.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Set up the chat widget for a client

The chat widget is the odd one out in the channel lineup: it doesn't belong to Meta or TikTok, it lives on the client's own website.

The chat widget is the odd one out in the channel lineup: it doesn't belong to Meta or TikTok, it lives on the client's own website. Visitors who land there from ads — or from anywhere — open the chat and start talking, and the same AI that answers the client's WhatsApp answers them. For you it's the cheapest channel to add: no portfolio access, no phone numbers, no verification. The only outside dependency is whoever edits the client's site.

Installing the widget code is one of the few steps the AI Co-Worker can't complete for you — the snippet has to be pasted into the client's site HTML, which lives outside Chatfuel, and the appearance settings are also set by hand. Everything else about the widget, including turning its AI on, you can do in the dashboard or by asking the Co-Worker.

## Setting it up [#setting-it-up]

Everything except the snippet install happens in Chatfuel, in the client's company:

1. **Open the Website settings.** Go to **Settings → Website**.
2. **Brand it for the client.** Set the appearance: company name, accent color, and logo — the client's brand, not your agency's. This is what visitors see in the chat header.
3. **Add the client's domains.** List the domains the widget will run on.
4. **Copy the installation code.** Copy the code snippet from the settings screen.
5. **Send the snippet to the client's developer.** The snippet goes into the site's HTML — before the `</body>` tag or inside `<head>`. If the client has a web developer, hand it over with those two lines of instruction; it's a five-minute job. Don't edit a client's site yourself unless that's explicitly part of your engagement.
6. **Turn on the widget's automation.** Go to **Fuely AI*&#x2A; → &#x2A;*[Automations](https://chatfuel.com/docs/ai-features/automations)** and enable the **Website** chat widget automation — like every channel, the widget's AI stays off until its automation is on. The automation's **Additional instructions** are where you shape what the AI says to site visitors.

Or hand the last step to the AI Co-Worker: tell it &#x2A;"Turn on the chat widget on my website and make the AI answer there"* and it enables the widget's automation and confirms what it set. The snippet still travels to the client's developer by hand.

## What to tell the client up front [#what-to-tell-the-client-up-front]

Two limitations surprise clients if they find out after launch. Say them before:

* **The closed widget button shows the Chatfuel icon.** The client's logo appears inside the open chat, but the [small button in the corner of the site](https://chatfuel.com/docs/website/how-to-change-widget-icon) always uses the default Chatfuel icon — on every plan, no exceptions. If the client asks for a fully white-labeled button, the honest answer is: not currently possible.
* **The widget doesn't greet visitors.** There's [no proactive welcome message](https://chatfuel.com/docs/website/how-to-create-a-welcome-message-for-website-widget) yet — the AI replies only after the visitor sends their first message. A greeting feature is on the roadmap. Until then, compensate where you can: a warm tone written into the widget automation's **Additional instructions**, a [Knowledge Base](https://chatfuel.com/docs/for-agencies/uploading-client-business-info) that nails the first answer, and branded appearance so the empty chat still looks like the client's.

Framed early, these are footnotes. Discovered late, they're a complaint ticket.


---

---
title: "Speed to lead"
description: "Replying within minutes multiplies qualification rates. Fuely AI answers every lead instantly, so the client's team only steps in for qualified conversations."
canonical_url: https://chatfuel.com/docs/for-agencies/speed-to-lead
markdown_url: https://chatfuel.com/docs/for-agencies/speed-to-lead.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Speed to lead

Replying within minutes multiplies qualification rates. Fuely AI answers every lead instantly, so the client's team only steps in for qualified conversations.

A Harvard Business Review study of over a million sales leads found that companies responding within an hour were about **7× more likely to qualify the lead** than those who waited even an hour more — and **60× more likely** than those who took a day. The famous industry follow-up is blunter still: contact a lead in the first 5 minutes versus 30, and your odds of qualifying them are roughly **21× better**. Speed to lead is the least glamorous metric in marketing and the one with the most leverage per dollar — because most of the market is losing at it badly.

## Why minutes decide [#why-minutes-decide]

A lead who taps a WhatsApp ad is at peak intent *right now* — comparing options, phone in hand. Every minute of silence, that intent decays: they message a competitor, the moment passes, dinner happens. Industry estimates put the average business response time at nearly two days, suggest that most leads are never followed up at all, and hold that the majority of buyers go with whoever answered first. Nobody's benchmarks are precise here, but the direction is unanimous and brutal: the fastest responder captures a wildly outsized share of the deals — often with a worse product and a smaller budget.

For an agency the implication is uncomfortable: you can win the auction, the creative, and the click, then lose the sale in the gap between "conversation started" and "someone replied."

## Chatfuel's answer: seconds, 24/7 [#chatfuels-answer-seconds-247]

This is the metric Chatfuel simply deletes. The [qualification bot](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) answers in seconds — not "within business hours," not "as soon as a rep is free." At 11 p.m. on a Sunday, [after hours and on holidays](https://chatfuel.com/docs/for-agencies/after-hours-and-24-7-replies), during lunch — the lead from your ad gets greeted, interviewed, and qualified while your competitor's inquiry sits unread in a shared inbox. By the time a human sales rep would have typed "Hello!", the Chatfuel lead has already answered the budget question.

Run the numbers against the research above and this is the single biggest performance upgrade most [funnels](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works) can buy: the same ads, the same spend, and every lead handled inside the window where they're 21× more likely to qualify. Your media buying doesn't have to beat competitors by much when your response time beats them by 47 hours.

## What to watch weekly [#what-to-watch-weekly]

Automation wins the first five minutes; the watch-list keeps the *next* days honest:

* **Qualified leads sitting in the pipeline.** The bot's speed is wasted if qualified leads wait two days for the client's sales team. The [funnel report](https://chatfuel.com/docs/for-agencies/funnel-and-drop-off-report) shows leads piling up between qualified and selling — that pile is a speed problem wearing a different hat.
* ***"Clients at risk"*** — the [AI Co-Worker](https://chatfuel.com/docs/for-agencies/reports-via-the-ai-co-worker) flags leads with no response for days or stuck at the same stage, before they're lost instead of after.
* ***"Who went silent"*** — the re-engagement list: leads who showed intent and faded, sorted for follow-up.

Ask weekly, forward the list to the client's team, and note who acted on it — that log settles the "whose leads leak" conversation before it starts.

## Sell the speed [#sell-the-speed]

Speed to lead belongs in your pitch and your [monthly report](https://chatfuel.com/docs/for-agencies/client-reporting), not just your ops. In the pitch: "your leads currently wait hours; with us they wait seconds — and here's the research on what that's worth." In the report: response time is the rare metric that's dramatic, client-legible, and *yours* — the client's last agency reported CTR; you report "every one of your 214 leads this month was answered within seconds, including the 61 that arrived outside business hours."

> **Note:** Test it like a lead. Once a month, tap the client's live ad yourself at an inconvenient hour and time the reply. Thirty seconds of testing catches a disconnected channel or a sleeping bot faster than any dashboard — and hands you a screenshot for the client report: 11:47 p.m., answered in 4 seconds.


---

---
title: "The 24-hour rule explained"
description: "You paid for the click, the lead opened the chat — and Meta started a timer."
canonical_url: https://chatfuel.com/docs/for-agencies/the-24-hour-rule-explained
markdown_url: https://chatfuel.com/docs/for-agencies/the-24-hour-rule-explained.md
last_updated: 2026-07-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# The 24-hour rule explained

You paid for the click, the lead opened the chat — and Meta started a timer.

You paid for the click, the lead opened the chat — and Meta started a timer. From the moment a contact last messages you, the business has **24 hours of free, free-form conversation**. After that, the door closes: no more regular messages until the contact writes again, or you pay to knock with a pre-approved template.

This isn't a Chatfuel limitation — it's Meta's anti-spam policy for the whole [WhatsApp Business Platform](https://chatfuel.com/docs/for-agencies/whatsapp-business-api-explained). You can't remove it, so [every funnel that works](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works) is built around it.

## How the window works [#how-the-window-works]

* A contact messages you (taps your ad, asks a question) → a 24-hour window opens.
* Every new message from the contact **resets the clock** — an active conversation can stay open for days.
* If the contact goes quiet for 24 hours, the window **closes**. You can no longer send free-form messages.
* If they write again later, a **new window opens** and the conversation continues — one lead can open many windows over a month.

The rule cuts one way: *the contact* can always message you; it's only the business side that's time-boxed.

## Leads from ads get 72 hours [#leads-from-ads-get-72-hours]

There's one exception, and it's the one that matters most for an agency: when the conversation starts from a **click-to-WhatsApp ad**, Meta opens a **72-hour window** instead of 24. It works in two phases:

* **Hours 0–24** — business as usual: free-form messages, no restrictions.
* **Hours 24–72** — free-form messaging closes, but you can keep reaching the lead with approved **templates** — and inside this ad window, those templates are **free**.

In other words, every lead your ads generate comes with three full days of contact — the first day unrestricted, the next two via templates at no cost. That's three days for the AI to qualify, follow up, and hand the lead over before re-engagement starts costing money.

## Inside the window: everything is free [#inside-the-window-everything-is-free]

While the window is open, the AI can do all of its work — answer questions, handle objections, run the [qualification flow](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) — with no per-message cost and no format restrictions.

This is also where **follow-ups** live. A lead who stops replying mid-conversation isn't cold, just quiet — and automatic follow-ups nudge them back into the chat while the window is still open. Free, timely, and no template needed. For an agency this is the single cheapest source of recovered leads: the click is already paid for; the follow-up costs nothing.

## Outside the window: templates and Re-engage [#outside-the-window-templates-and-re-engage]

Once the window closes, the only way to reach the contact is a **WhatsApp template** — a message pre-approved by Meta. Because the content is vetted upfront, Meta lets you send it any time:

1. **Get a template approved.** [Create it in WhatsApp Manager](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates) under a category — **Marketing** (promos, offers), **Utility** (reminders, order updates), or **Authentication** (one-time codes). Meta reviews templates within 24 hours, so build them before the campaign needs them, not the day of.
2. **Send it with Re-engage.** In Chatfuel, the Re-engage feature sends an approved template to any audience segment — say, everyone who reached *Sorting* but never qualified — immediately or on a schedule.
3. **The reply reopens the window.** When the contact answers the template, a fresh 24-hour window opens and the AI picks the conversation right back up — for free.

Templates are the one paid message type: Meta bills per template sent, separately from the Chatfuel plan. Think of it as a re-targeting budget line, not a chat cost.

## Choosing the right tool [#choosing-the-right-tool]

| Lead state               | What to use                         | Cost             |
| ------------------------ | ----------------------------------- | ---------------- |
| Active in chat           | The AI just keeps going             | Free             |
| Quiet, window still open | Automatic follow-ups                | Free             |
| From an ad, hours 24–72  | Approved template                   | Free             |
| Quiet, window closed     | Re-engage with an approved template | Paid per message |

## What this means for your funnel [#what-this-means-for-your-funnel]

* **The first 24 hours are the whole game.** The lead is warm, messaging is free-form, and the window is guaranteed open — which is exactly why the bot qualifies immediately instead of "having someone reach out tomorrow." Ad leads add two more days of free templates on top, but the warmest hours are still the first ones.
* **Speed is money in both directions.** A funnel that [answers in seconds](https://chatfuel.com/docs/for-agencies/after-hours-and-24-7-replies) qualifies leads while they're free to talk to; a client team that answers next morning starts every conversation with a paid template.
* **Prepare templates before launch.** Approval takes up to 24 hours — a campaign that needs re-engagement tomorrow needs templates submitted today.
* **Budget for re-engagement, don't fear it.** A template sent to a warm-but-lapsed lead costs cents against an ad click that's already paid for. Recovering even a fraction of closed-window leads usually beats buying new clicks.


---

---
title: "Troubleshooting ads"
description: "A click-to-WhatsApp funnel has exactly four places to break: the review, the ad, the handover into WhatsApp, and the conversation."
canonical_url: https://chatfuel.com/docs/for-agencies/troubleshooting-ads
markdown_url: https://chatfuel.com/docs/for-agencies/troubleshooting-ads.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Troubleshooting ads

A click-to-WhatsApp funnel has exactly four places to break: the review, the ad, the handover into WhatsApp, and the conversation.

A click-to-WhatsApp funnel has exactly four places to break: the review, the ad, the handover into WhatsApp, and the conversation. Find your symptom below — each fix names the piece that's actually failing, so you stop tweaking budgets when the problem is a button label.

## The ad won't pass review [#the-ad-wont-pass-review]

That's not an ads problem, it's a policy problem — and it has its own playbook. Check the flagged asset in Account Quality, fix the actual violation, and don't resubmit unchanged. The full walkthrough — common rejection reasons, edit vs. appeal, protecting the account — is in [Meta ad moderation](https://chatfuel.com/docs/for-agencies/meta-ad-moderation).

## The ad delivers, but nobody messages [#the-ad-delivers-but-nobody-messages]

Clicks without conversations almost always mean the ad promised something other than a chat:

* **The CTA doesn't match the action.** "Learn More" on a chat ad makes people expect a website; when WhatsApp opens instead, they close it. Use "Send Message" — the button should describe what the thumb is about to do.
* **The copy never mentions messaging.*&#x2A; Set the expectation in the text itself: &#x2A;"Message us and get the price list in a minute."* [Copy for chat ads is its own craft](https://chatfuel.com/docs/for-agencies/ai-copy-and-hooks-for-the-niche).
* **The wrong WhatsApp number is attached.** In Ads Manager, the campaign must have WhatsApp as the messaging destination with the client's Chatfuel-connected number selected. A campaign pointed at a different number sends leads into a phone nobody's bot is watching.
* **Targeting is strangled.** Chat ads respond well to broad delivery — over-narrowed interest stacks starve them. Start broad and let the copy self-select the audience.

And if an ad that used to convert has gone quiet, the creative may simply be fatigued — [generate a fresh one](https://chatfuel.com/docs/for-agencies/ai-generation-of-ad-creatives) and keep a rotation.

## Leads message, but the bot doesn't answer [#leads-message-but-the-bot-doesnt-answer]

The ad did its job; the conversation side is down. This is the [qualification-bot checklist](https://chatfuel.com/docs/for-agencies/troubleshooting-the-qualification-bot) — in short: is the AI on, is it set to answer leads from ads, is it set to reply only outside working hours during the day, is the channel still connected? One detail is ads-specific: ads that click to WhatsApp have their own [automation](https://chatfuel.com/docs/ai-features/automations), separate from direct messages — if the bot answers DMs but ignores ad traffic, that automation is probably off. Turn it on at **Fuely AI** → **Automations*&#x2A;, or tell the AI Co-Worker: &#x2A;"Make the AI answer leads coming from my WhatsApp ads."*

## Leads come in, but they're junk [#leads-come-in-but-theyre-junk]

Volume without quality is a copy-and-qualification problem, not a bidding problem:

* **The pre-filled message is a bare "Hi."*&#x2A; Pre-fill something with intent — &#x2A;"Hi! I'd like the July price for a studio"* — and the bot starts qualification a step ahead.
* **The copy attracts everyone.** A hook that filters ("12 spots for July") loses cheap clicks and gains real buyers. Judge ads on cost per *qualified* conversation, not per click.
* **The qualification fields don't match the niche.** If the bot isn't asking what the client's sales team needs to prioritize a lead, [fix the fields](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic) — junk is often just "unqualified," and qualification is the bot's job.

## Several ads, one funnel — and every lead gets the same conversation [#several-ads-one-funnel--and-every-lead-gets-the-same-conversation]

If you run different offers, give each ad its own distinct pre-filled message (&#x2A;"Whitening"&#x2A;, &#x2A;"Checkup"&#x2A;, &#x2A;"Urgent"*). Chatfuel can recognize the exact first message a lead sends and route each ad's traffic down its own path — keep the pre-filled texts short and distinct so they match reliably, and the AI still catches anyone who edits the message before sending.

## "Where do I manage the ads inside Chatfuel?" [#where-do-i-manage-the-ads-inside-chatfuel]

You don't — and that's by design. Campaigns, budgets, and creatives upload live in **Meta Ads Manager**; Chatfuel owns everything after the click: the instant answer, the qualification, the handoff to the client's team. One tool per job — your media buyer stays in Ads Manager, your funnel runs itself in Chatfuel.

> **Note:** test the funnel like a lead, end to end. Before scaling spend, click the real ad on a real phone: does WhatsApp open with the pre-filled message, does the bot answer within seconds, does a completed qualification land in the team inbox? Five minutes of playing the lead finds the leak faster than a week of staring at CPM charts.


---

---
title: "Troubleshooting client access issues"
description: "You sent the request, the client swears they clicked everything, and yet — nothing."
canonical_url: https://chatfuel.com/docs/for-agencies/troubleshooting-client-access-issues
markdown_url: https://chatfuel.com/docs/for-agencies/troubleshooting-client-access-issues.md
last_updated: 2026-07-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Troubleshooting client access issues

You sent the request, the client swears they clicked everything, and yet — nothing.

You sent the request, the client swears they clicked everything, and yet — nothing. Access problems all look the same from the outside ("it doesn't work") but have a handful of very different causes underneath. This page is the map: find your symptom, apply the fix. All of these happen **before** any channel touches Chatfuel — if access is fine but the WhatsApp or Instagram connection itself fails, that's a different family of errors covered in [Common Meta access errors](https://chatfuel.com/docs/for-agencies/common-meta-access-errors).

## "The client can't find Business Settings or the Partners menu" [#the-client-cant-find-business-settings-or-the-partners-menu]

The client is looking at their personal Facebook, or at the Page's inbox in Meta Business Suite — not at portfolio settings. Two possibilities:

* **They have a portfolio but are lost in the interface.** Send them the direct link: `business.facebook.com/settings` → **Partners** in the left menu. Meta's navigation changes often enough that "click Settings, then..." descriptions rot; the direct URL doesn't.
* **They don't actually have a Business Portfolio.** A Facebook Page alone, run from a personal profile, is not a portfolio. If `business.facebook.com` offers them to *create* a business portfolio, that's your answer — switch to the [from-scratch track](https://chatfuel.com/docs/for-agencies/when-the-client-has-no-business-manager). It's a 5-minute create, not a crisis.

## "The person I'm talking to isn't the admin" [#the-person-im-talking-to-isnt-the-admin]

Only someone with **Full control*&#x2A; of the portfolio can add a partner. Your day-to-day contact — the marketing manager, the owner's nephew — often isn't that person. Ask directly: &#x2A;"Who sees the Partners menu at business.facebook.com/settings? Whose name has Full control under People?"*

The painful variant: the only Full-control admin is gone — an ex-employee, a previous agency, a co-founder who left. Options, in order:

1. **Someone reachable still has Full control** — have them add the owner (or you) properly before anything else changes.
2. **The old admin is reachable but external** (previous agency): ask the client to request they add the owner with Full control. Most part on decent terms; a short polite email solves it.
3. **Nobody has access** — the client goes through Meta's business support to prove ownership with business documents. Slow (days to weeks), so start it immediately and build anything time-critical in parallel.

**Important:** whatever the cleanup plan, the order is fixed: new Full-control admin in and confirmed working first, old one removed second. Removing first is how businesses lose their own WhatsApp Business Account.

## "I sent the partner request and nothing arrived" [#i-sent-the-partner-request-and-nothing-arrived]

The request from your side ([Route B](https://chatfuel.com/docs/for-agencies/meta-partner-access)) travels to the email tied to the client's **portfolio**, not necessarily the email you have for them. Three usual causes:

* **Wrong email.** The portfolio was created years ago on an address nobody checks. Ask the client to look at **Business Settings → Business Info** for the actual email — or check **Partners** directly, where the pending request shows regardless of email.
* **It's sitting in Requests.** In the client's Business Settings, pending partner requests appear under **Requests** / the Partners tab. Notifications are unreliable; the tab is not.
* **Wrong Business Portfolio ID.** If the client gave you their ID and the request went nowhere visible, verify it: 16 digits, from **their** Business Info page — not an ad account ID (those are shorter and live elsewhere).

## "Access granted, but I don't see the assets" [#access-granted-but-i-dont-see-the-assets]

The client added your agency as a partner — and stopped there. Adding a partner and **assigning assets to that partner** are two separate steps, and the second one is the one that gets skipped. Ask them to open **Partners → \[your agency] → Assets** and check what's actually shared. If the list is empty or partial, that's the whole bug.

The subtler version: &#x2A;*the asset isn't in the client's portfolio to begin with.**

* The Facebook Page is owned by the owner's personal profile → it must first be added to the portfolio (**Business Settings → Accounts → Pages → Add**), only then can it be shared with a partner.
* The ad account or pixel lives in a *different* portfolio — a previous agency's, a co-founder's, an old test setup. An asset can't be shared from a portfolio the client doesn't control; it has to be reclaimed or recreated. Ad accounts in a previous agency's portfolio usually can't be transferred out — budget history stays, and the clean path is a new ad account in the client's own portfolio.

## "I have access but can't do anything with it" [#i-have-access-but-cant-do-anything-with-it]

You see the asset, but campaigns won't publish or settings are read-only. The client granted a lower permission level than the task needs — usually view-only analytics access instead of ads management. Have them open &#x2A;*Partners → \[your agency]**, click the asset, and raise the permission level. The permissions table in the partner access guide shows exactly what to request per asset — send it along, and when the fix needs the client to click again, the follow-up message in [Scripts for asking clients for access](https://chatfuel.com/docs/for-agencies/scripts-for-asking-clients-for-access) keeps it friendly.

Separate case with the same symptoms: **your own teammate** can't work with an asset the client definitely shared. Partner access lands on your *agency's portfolio* — you still need to assign your people to the client's assets on your side (**your Business Settings → the asset → People**). The client did nothing wrong; the missing step is yours.

## "Meta is blocking the grant itself" [#meta-is-blocking-the-grant-itself]

Sometimes the access flow errors out on Meta's side:

* **Two-factor authentication required.** Portfolios with mandatory 2FA won't let people without it touch settings. Both the client's admin and your team need 2FA enabled on their Facebook accounts — it's a five-minute fix and you should have it anyway.
* **The client's account is restricted.** If the granting account has an advertising restriction or the portfolio itself is flagged, partner operations can silently fail. The client checks **Account status** / Business support home for red banners — restrictions have their own appeal flows and nothing moves until they clear.
* **A brand-new portfolio acting weird.** Portfolios created yesterday sometimes can't add partners for a short period. Give it 24–48 hours of normal activity, then retry.

## Still stuck? [#still-stuck]

If access is granted, assets assigned, permissions right — and the *channel connection* is what's failing (QR code errors, "number not associated with the selected business", Instagram not appearing) — you've graduated from this page. That family lives in Common Meta access errors, which is about exactly that stage.


---

---
title: "Troubleshooting the qualification bot"
description: "A qualification funnel has few moving parts, so when it misbehaves the cause is almost always in one of the five modules — the AI's knowledge, its…"
canonical_url: https://chatfuel.com/docs/for-agencies/troubleshooting-the-qualification-bot
markdown_url: https://chatfuel.com/docs/for-agencies/troubleshooting-the-qualification-bot.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Troubleshooting the qualification bot

A qualification funnel has few moving parts, so when it misbehaves the cause is almost always in one of the five modules — the AI's knowledge, its…

A qualification funnel has few moving parts, so when it misbehaves the cause is almost always in one of the [five modules](https://chatfuel.com/docs/for-agencies/bot-modules-and-blocks) — the AI's knowledge, its qualification setup, its [automations](https://chatfuel.com/docs/ai-features/automations), the handoff, or the channel. Work through the symptom that matches. Every fix below can be applied two ways — change the setting at **Fuely AI** → **Automations**, or tell the AI Co-Worker what you want — so use whichever is faster.

## The bot doesn't reply at all [#the-bot-doesnt-reply-at-all]

Check these in order — the first hit is your culprit:

1. **Is Main bot on?*&#x2A; It's the master switch: Main bot off means no AI replies anywhere, whatever the other toggles say. Check the top of the Automations page, or ask the Co-Worker: &#x2A;"Is the AI answering on WhatsApp right now?"*
2. **Is the source's own automation on?** Every source's base automation starts off until someone enables it — so a client whose ad leads get answered can still have silent DMs, simply because nobody ever turned the DM automation on. Find the source the missing reply belongs to and check its toggle.
3. **Is another rule catching the message?** When custom rules target keywords or specific posts and ads, [a priority order decides which automation replies](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment) — a content-targeted rule beats a general one, and turning a base automation off doesn't silence the source while an enabled custom rule still matches. If the symptom is "the wrong reply" rather than no reply at all, this is almost always why.
4. **Is When AI replies set to "outside working hours" — during working hours?** Then the silence is by design: daytime chats are the team's job. If the team isn't actually answering, either staff the inbox or [switch the mode to always](https://chatfuel.com/docs/for-agencies/after-hours-and-24-7-replies).
5. **Is the channel still connected?** Connections occasionally drop. Check the channel's page under **Settings** — if it shows disconnected, **Reconnect** fixes it in one click.

## The bot replies, but vaguely — or makes things up [#the-bot-replies-but-vaguely--or-makes-things-up]

A bot that says "I'm not sure", gives generic non-answers, or quotes a price the client never approved has a starving Knowledge Base. The AI can't know what nobody told it — and it should never be guessing prices from thin air.

**Fix:** find the gap and fill it. Ask the bot the failing question in the [Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation), then add the missing fact — on the Knowledge Base page or by handing it to the Co-Worker: the service and its real price into the catalog, the policy into the FAQ. [Here's what a complete Knowledge Base looks like](https://chatfuel.com/docs/for-agencies/uploading-client-business-info). Tone problems live one page over: how the bot talks is set in the automation's **Additional instructions*&#x2A; — edit them directly, or tell the Co-Worker what's off (&#x2A;"answers are too long and formal — make them short and friendly"*) right while you're testing.

## Qualified leads never reach the client's team [#qualified-leads-never-reach-the-clients-team]

The bot chats away, leads answer every question — and nothing ever lands in the team inbox. The handoff isn't armed: either the automation's **Switch to human** setting is off, or no rule says *when* to switch.

**Fix:** open the automation and add the rule under **Switch to human*&#x2A;, or tell the Co-Worker: &#x2A;"Hand the chat to the team once the bot has collected all qualification fields."* Then verify end-to-end — play a lead in the Test chat, answer all the questions, and confirm the chat lands in the team inbox. If the client's staff should be picking these up on their phones, make sure they've installed the Chatfuel mobile app: it pushes a notification the moment a qualified lead arrives.

## The bot dumps every question into one message [#the-bot-dumps-every-question-into-one-message]

*"Which district, what budget, and what's your timeline?"* — that's a form, not a conversation, and leads abandon it. Same family of symptom: the bot opens with "we only work with clients who..." or interrogates like a census taker. The conversational rules are missing from the automation's **Additional instructions**.

**Fix:** redo the qualification setup — [these are the rules to wire in](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic): one question per message, intent first, a "why" before personal questions, WhatsApp-length replies. Write them into **Additional instructions** yourself, or ask the Co-Worker to redo the setup. Re-test in the Test chat until it reads like chat.

**Note:** the universal debugging loop works for every symptom — reproduce it in the Test chat, apply the fix in Automations or through the Co-Worker, re-test. The Test chat is a sidebar on each automation that simulates a conversation with exactly that automation's settings — a free, client-invisible sandbox. Nothing you do there touches real leads, so break things freely until the conversation feels right.


---

---
title: "Tuning ads with funnel data"
description: "Ads Manager tells you which ads are cheap. Only the funnel tells you which ads are worth it — and those are different lists more often than not."
canonical_url: https://chatfuel.com/docs/for-agencies/tuning-ads-with-funnel-data
markdown_url: https://chatfuel.com/docs/for-agencies/tuning-ads-with-funnel-data.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Tuning ads with funnel data

Ads Manager tells you which ads are cheap. Only the funnel tells you which ads are worth it — and those are different lists more often than not.

Ads Manager tells you which ads are cheap. Only the funnel tells you which ads are *worth it* — and those are different lists more often than not. Tuning ads with funnel data means making every kill, scale, and refresh decision on what happened after the click: the qualification rates, the junk share, the deals that closed. Agencies that run this loop don't just perform better; they can *explain* their decisions to clients, which is half of what a retainer buys.

## The signal: CPQL, not CTR [#the-signal-cpql-not-ctr]

CTR and cost per conversation are early diagnostics — useful for spotting a broken creative, useless for judging a campaign. The decision metric is &#x2A;*[cost per qualified lead](https://chatfuel.com/docs/for-agencies/lead-quality-and-cost-per-qualified-lead)**: spend from Ads Manager divided by the qualified count from Chatfuel. An ad set that Meta's auto-optimization loves for its cheap conversations can be your worst performer per real lead, and vice versa. The rule that follows: never kill or scale on Ads Manager numbers alone; always join them with the funnel first.

## Kill, scale, reallocate [#kill-scale-reallocate]

The playbook seasoned media buyers converge on, with the funnel supplying the verdicts:

* **Reallocate weekly.** Once a week, rank ad sets by CPQL and shift budget toward the cheapest qualified leads. Weekly is the sweet spot — daily reshuffling chases noise, monthly ships a full budget cycle to a known loser.
* **Scale in steps of 20–30%.** Doubling a winner's budget overnight resets Meta's learning and often kills the very performance you're scaling. Raise in increments, let delivery stabilize, repeat.
* **Kill cleanly.** When an ad set's CPQL runs well above its siblings for a full week — or its leads qualify but [never close](https://chatfuel.com/docs/for-agencies/conversation-analytics) — cut it and move the budget the same day. Starving a loser slowly just buys worse results on a longer schedule.
* **Diagnose before you kill.** A suddenly expensive ad set isn't always a bad ad — check the [troubleshooting map](https://chatfuel.com/docs/for-agencies/troubleshooting-ads) first; sometimes the leak is the CTA, the number linked, or the bot, not the creative.

## Creative fatigue: the refresh trigger [#creative-fatigue-the-refresh-trigger]

Every creative wears out — the audience has simply seen it. The signals, in the order they usually appear:

| Signal            | Threshold to act                             |
| ----------------- | -------------------------------------------- |
| Frequency (7-day) | Above \~3 on cold audiences                  |
| CTR               | Down 20–30% from the creative's own baseline |
| CPM               | Creeping up while CTR falls                  |
| Creative age      | 30+ days on meaningful spend                 |

The traditional problem with fatigue was that *knowing* you need fresh creatives didn't make them exist — a designer round-trip per variation meant agencies knowingly ran tired ads for weeks. That constraint is gone: tell the AI Co-Worker what angle to try and [a fresh batch of variants](https://chatfuel.com/docs/for-agencies/ai-generation-of-ad-creatives) is rendered in minutes, grounded in the client's actual offers. When refreshing costs minutes instead of days, you rotate on the data's schedule, not the design queue's.

## The weekly loop [#the-weekly-loop]

The whole system, as a repeatable circuit per client:

1. **Pull the funnel*&#x2A; — &#x2A;"business report"&#x2A;, &#x2A;"show conversion funnel"*, this month's qualified counts and junk breakdown from the [Co-Worker](https://chatfuel.com/docs/for-agencies/reports-via-the-ai-co-worker).
2. **Compute CPQL per ad set** — spend from Ads Manager over qualified from Chatfuel.
3. **Decide in Ads Manager** — reallocate to the CPQL winners, scale in 20–30% steps, kill the confirmed losers.
4. **Refresh what's fatiguing** — new variants from the Co-Worker, informed by what leads actually said this week.

Forty minutes per client, weekly. Each pass makes the next one better — the [copy](https://chatfuel.com/docs/for-agencies/ai-copy-and-hooks-for-the-niche) learns from the objections, the budget concentrates on proven angles, and the client report starts writing itself from the decisions log.

> **Note:** Keep a one-line log of every change. "June 12: killed ad set C, CPQL $31 vs $12 sibling; budget moved to B." A month of these lines is the "what we did and why" section of your client report, pre-written — and the difference between an agency that tweaks and an agency that manages.


---

---
title: "Uploading the client's business info"
description: "Every disappointing AI bot has the same root cause: nobody told it anything."
canonical_url: https://chatfuel.com/docs/for-agencies/uploading-client-business-info
markdown_url: https://chatfuel.com/docs/for-agencies/uploading-client-business-info.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Uploading the client's business info

Every disappointing AI bot has the same root cause: nobody told it anything.

Every disappointing AI bot has the same root cause: nobody told it anything. The Knowledge Base — one of the bot's [five modules](https://chatfuel.com/docs/for-agencies/bot-modules-and-blocks) — is where the client's business lives inside Chatfuel, and filling it well is the highest-leverage hour of the whole setup. A bot with a rich Knowledge Base quotes real prices, answers real objections, and sounds like the client's best salesperson. A bot with an empty one says "I'm not sure" until the lead leaves.

One split to keep straight: the Knowledge Base is what the AI *knows*; [Automations](https://chatfuel.com/docs/ai-features/automations) are where and how it *behaves*. Business facts — company info, catalog, FAQ, working hours — go here. How the bot talks and acts goes into the automations. This page is about the knowing half.

For an agency this is a two-step job: **collect** the information from the client during onboarding, then **load** it into the client's company in Chatfuel.

## What the Knowledge Base holds [#what-the-knowledge-base-holds]

* **About the company** — name, working hours, address, phone, email, website, payment options, and a short description. The identity facts the bot states with confidence.
* **Catalog** — the services or products, each with a name, description, and price. Keep it focused: under \~50 items, only what the client actually wants leads to ask about. The bot should never invent a price — if it's not in the Catalog, it's not quotable.
* **FAQ** — question–answer pairs for what leads actually ask: deposits, cancellations, delivery, parking, "do you work weekends". Short answers, 1–3 lines each, phrased the way customers phrase them.

Each piece has its place. Prices belong in the Catalog, not in the instructions; policies belong in the FAQ. Duplicating content across sections makes the bot inconsistent — one fact, one home.

What's *not* Knowledge Base material: the bot's role, tone, and house rules ("always offer a free consultation before quoting renovation work"). That's behavior, and it lives in **Additional instructions** on the automation — on Main bot for everywhere, or per source where a client wants a different voice for a different audience. Collect it in the same questionnaire; it just lands on the other page.

## Step 1 — collect it from the client [#step-1--collect-it-from-the-client]

Send the client a short questionnaire as part of onboarding, alongside the [access checklist](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for). What you need:

* Company basics: name, hours, address, phone, email, website, payment methods.
* Their top 5–15 services or products **with current prices**.
* The 10–25 questions their staff answers every single day — ask the person who runs their WhatsApp today; they know.
* House rules: what the bot should always offer, never promise, and when a human must take over.
* Tone: how they talk to customers — formal, friendly, emoji or no emoji.

The client answering in a voice memo is fine — you don't need a polished document, you need the facts.

## Step 2 — load it into Chatfuel [#step-2--load-it-into-chatfuel]

Loading it is the same job through two equal doors. The **Knowledge Base** page in the left sidebar shows every section as editable fields — type the facts in, and changes take effect in new conversations immediately ([here's a walkthrough of the Knowledge Base screens](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base)).

Or hand the raw material to the [AI Co-Worker](https://chatfuel.com/docs/for-agencies/interface-tour-for-agencies) — by text, by forwarding a voice note, or by **attaching files and images**: a price list PDF, a brochure, a menu photo, a screenshot of the client's old FAQ page. It extracts the information, files everything into the right sections, and confirms what it saved:

* *"Add my business hours, address, and top 10 FAQs to the knowledge base."*
* *"Add a new service to the catalog: gel manicure, $35, 45 minutes."*
* *"Update the business hours in the knowledge base."*

The tone and house rules from your questionnaire go to the behavior side: paste them into **Additional instructions*&#x2A; on Main bot, or tell the Co-Worker how the bot should talk and it will write them in. And if you start with the &#x2A;*"Set up WhatsApp"** onboarding, its first step is exactly this: the Co-Worker shows what it already knows about the business and asks you to fill the gaps.

## Test it like a lead would [#test-it-like-a-lead-would]

Before the client ever sees the bot, interrogate it in the [Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation): ask for prices, opening hours, the tricky FAQ cases. Wherever it stumbles or improvises, the Knowledge Base has a gap — add the missing fact and ask again. Most "the bot sounds vague" complaints trace back to exactly this kind of gap; [Troubleshooting the qualification bot](https://chatfuel.com/docs/for-agencies/troubleshooting-the-qualification-bot) covers the other failure modes. Once the answers hold up, teach the bot what to find out from every lead — that's [lead qualification questions and logic](https://chatfuel.com/docs/for-agencies/lead-qualification-questions-and-logic).

**Note:** this isn't a one-time upload. Prices change, services come and go, new questions appear in real chats. Put a monthly Knowledge Base review into your client-maintenance routine: refresh the catalog, add FAQs for questions the bot answered badly, prune what's outdated. A stale bot quoting last season's prices costs the client trust — and costs you the retainer.


---

---
title: "What is Chatfuel for agencies"
description: "You already know how to get clicks. The hard part starts after the click: someone messages your client's WhatsApp at 11 pm, waits twenty minutes for a reply…"
canonical_url: https://chatfuel.com/docs/for-agencies/what-is-chatfuel-for-agencies
markdown_url: https://chatfuel.com/docs/for-agencies/what-is-chatfuel-for-agencies.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What is Chatfuel for agencies

You already know how to get clicks. The hard part starts after the click: someone messages your client's WhatsApp at 11 pm, waits twenty minutes for a reply…

You already know how to get clicks. The hard part starts after the click: someone messages your client's WhatsApp at 11 pm, waits twenty minutes for a reply, and moves on to a competitor. Ad spend turned into a dead chat — and the client asks you why the leads are "low quality."

Chatfuel is the layer that fixes that. It's an AI-powered conversation platform that picks up every conversation your ads start — on WhatsApp, Instagram, Facebook, TikTok, and website chat — answers instantly, qualifies the lead, and hands your client a buyer instead of an unread message.

## What Chatfuel actually does [#what-chatfuel-actually-does]

At the core is **Fuely AI** — an AI agent that talks to your client's customers the way a well-trained employee would. No scripted button menus, no "press 2 for pricing." Customers write naturally, and the AI answers from a knowledge base you load with the client's business: what they sell, at what price, when they're open, what customers usually ask.

That means one setup works for questions you didn't predict. The AI handles free-form conversations, keeps multiple topics straight in a single chat, and when a conversation genuinely needs a human — a complaint, a custom deal — it hands off to your client's team with the full chat history attached.

Where and how the AI behaves is configured per traffic source — Instagram DMs, comments under a specific ad, WhatsApp leads — on one page at **Fuely AI** → [**Automations**](https://chatfuel.com/docs/ai-features/automations), or by telling the AI Co-Worker what you want in chat. Both edit the same setup; your team uses whichever is faster.

## How it works for an agency [#how-it-works-for-an-agency]

Each client gets their own [company](https://chatfuel.com/docs/for-agencies/agency-clients-model) inside your agency's workspace — you [create one](https://chatfuel.com/docs/for-agencies/create-a-client-company) per client — and inside it the setup takes three steps:

1. **Connect the client's channels.** Link the client's WhatsApp number, Instagram, [Facebook Page](https://chatfuel.com/docs/for-agencies/connect-the-clients-facebook), TikTok, or website widget to Chatfuel. For Meta ads, WhatsApp is the anchor — it's where click-to-message campaigns convert best, and the connection runs on the official [WhatsApp Business API](https://chatfuel.com/docs/for-agencies/whatsapp-business-api-explained).
2. **Teach the AI the client's business.** Fill the [knowledge base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) with three things: company info (hours, location, contacts), the catalog of products or services with prices, and the questions customers ask most. This is the "brief" the AI sells from — the better you know the client, the better it performs.
3. **Run ads — the AI takes it from the click.** Launch click-to-WhatsApp or Instagram campaigns. Every person who taps the ad lands in a conversation the AI answers within seconds: it qualifies the lead with the right questions, books appointments where relevant, follows up if the person goes quiet, and escalates to a human when your rules say so. That end-to-end flow — ads → conversation → qualification → lead — is [how the agency funnel works](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works).

## Why this shows up in your ad results [#why-this-shows-up-in-your-ad-results]

* **Zero response time, around the clock.** Leads from a 2 am impression get the same instant answer as leads at noon. Speed-to-lead is the single cheapest conversion-rate win most accounts are leaving on the table.
* **Every lead qualified, not just collected.** The AI asks the qualifying questions and moves each contact through a pipeline board — from first touch to qualified to closed. You report *qualified leads* to the client, not raw chat volume.
* **Recovered revenue from silent leads.** Automatic follow-ups re-open conversations that went quiet, and re-engagement messages bring back contacts whose [window closed](https://chatfuel.com/docs/for-agencies/the-24-hour-rule-explained) — leads that would otherwise be written off.
* **No demand leaking through comments.** The AI auto-replies to comments on the client's posts, reels, and ads — publicly and in DMs — and each campaign can carry its own rules: one reply funnel for the launch ad, another for the discount reel, targeted right down to the specific ad.


---

---
title: "What to ask the client for"
description: "Nothing delays a client launch like access collection. Not creatives, not strategy, not budget approvals — access."
canonical_url: https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for
markdown_url: https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What to ask the client for

Nothing delays a client launch like access collection. Not creatives, not strategy, not budget approvals — access.

Nothing delays a client launch like access collection. Not creatives, not strategy, not budget approvals — access. The client grants half of what you need, forgets the pixel, shares the wrong ad account, and your "we go live Monday" quietly becomes "we go live in two weeks." This guide exists so that never happens to you: here's exactly what to collect, who grants it, and where to find the scripts that get it without a single awkward call.

## Why this step decides everything [#why-this-step-decides-everything]

The funnel you're about to build — [ads → bot → qualification → lead](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works) — runs on the client's assets: their Facebook Page, their Instagram, their WhatsApp number, their ad account. All of it lives inside the client's **Meta Business Portfolio** (you'll also hear the older name, Business Manager). Until you're inside, you can't launch ads, connect channels, or install tracking.

And here's the part that surprises new agencies: &#x2A;*every access grant happens on Meta's side, in the client's account.** Chatfuel reads those connections but cannot create them — there is no button inside Chatfuel that gives you access to a client's business. The client (or someone with full control of their portfolio) has to grant it at [business.facebook.com](https://business.facebook.com).

## The checklist [#the-checklist]

Collect all of it in one pass. Going back to the client three times for "one more thing" is how launches slip.

| What you need                        | Why                                                                                                                                                                                                         | Who grants it                                                                               |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| **Meta Business Portfolio access**   | The container everything else lives in — partner access here unlocks the assets inside                                                                                                                      | Client, in Business Settings → Partners                                                     |
| **Ad account**                       | Where campaigns run and the budget is spent                                                                                                                                                                 | Client, shared as an asset via partner access                                               |
| **Facebook Page**                    | Required to run ads; click-to-WhatsApp and Instagram ads are published from it. Also a channel of its own — [connect it](https://chatfuel.com/docs/for-agencies/connect-the-clients-facebook) for Messenger and comment replies | Client, shared as an asset via partner access                                               |
| **Instagram account** (professional) | For Instagram DM automation and ads placements                                                                                                                                                              | Client authorizes it — must be done from their Instagram login                              |
| **WhatsApp number / WABA**           | The channel your qualification bot lives on                                                                                                                                                                 | Client's portfolio must own it; connection is authorized with a login that has full control |
| **Pixel / dataset**                  | Conversion tracking and CAPI events back to Meta                                                                                                                                                            | Client, shared as an asset via partner access                                               |

> **Note:** one thing that is NOT on the list — the client's Facebook password. Never ask for it. It's against Meta's terms, it gets accounts checkpointed, and it makes you look like an amateur. Partner access exists precisely so nobody shares logins.

## Two levels of access — know which one you're asking for [#two-levels-of-access--know-which-one-youre-asking-for]

For most agency work, **partner access** is enough: the client connects your agency's Business Portfolio to theirs, assigns specific assets, and you distribute permissions to your own team. Clean, revocable, professional.

But connecting channels to Chatfuel has a higher bar. Whoever clicks **Connect** for the client's WhatsApp must be logged in with a Facebook account that has **Full control** of the client's business portfolio (check at `business.facebook.com/settings/people`). Instagram is stricter still — the authorization must happen from the client's own Instagram account. In practice, agencies handle this one of two ways:

* **Do it together.** A 15-minute screen-share where the client logs in and you tell them exactly where to click. Zero access paperwork, works every time.
* **Get added with Full control.** The client adds one person from your team in **Business Settings → People** with Full control. More setup, but you can connect and reconnect without scheduling calls.

Which route you take also depends on which client you have. If the client already has a Business Portfolio, [partner access](https://chatfuel.com/docs/for-agencies/meta-partner-access) gets you in within ten minutes — including a route where the client only clicks Approve. If they have nothing set up — no portfolio, no Page, maybe just a personal Instagram — build their Meta foundation from scratch with [When the client has no Business Manager](https://chatfuel.com/docs/for-agencies/when-the-client-has-no-business-manager). Either way, the [scripts for asking clients for access](https://chatfuel.com/docs/for-agencies/scripts-for-asking-clients-for-access) explain the request in client language, and if a grant goes sideways — the request vanished, the assets aren't visible, the real admin left the company — [Troubleshooting client access issues](https://chatfuel.com/docs/for-agencies/troubleshooting-client-access-issues) maps every dead-end to its exit.

## After access: the order of operations [#after-access-the-order-of-operations]

Once the checklist is green, the launch sequence is mechanical:

1. [Create the client's company](https://chatfuel.com/docs/for-agencies/create-a-client-company) in Chatfuel — one client, one company; billing stays on your agency's side.
2. [Connect WhatsApp](https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp) and [Instagram](https://chatfuel.com/docs/for-agencies/connect-the-clients-instagram) using the access you just collected.
3. Get [business verification](https://chatfuel.com/docs/for-agencies/whatsapp-phone-number-verification) moving early — it lifts the 250-chats-a-day cap, and you don't want to discover that cap on launch day.

Collect once, launch once. That's the whole trick.


---

---
title: "WhatsApp Business API explained"
description: "Every client's WhatsApp number is wired up in one of three ways: the free WhatsApp Business App on someone's phone, a gray unofficial tool puppeting a…"
canonical_url: https://chatfuel.com/docs/for-agencies/whatsapp-business-api-explained
markdown_url: https://chatfuel.com/docs/for-agencies/whatsapp-business-api-explained.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# WhatsApp Business API explained

Every client's WhatsApp number is wired up in one of three ways: the free WhatsApp Business App on someone's phone, a gray unofficial tool puppeting a…

Every client's WhatsApp number is wired up in one of three ways: the free **WhatsApp Business App** on someone's phone, a **gray unofficial tool** puppeting a WhatsApp Web session, or the official **WhatsApp Business API**. Your ad budget flows through whichever one is in place — so before you launch a single campaign, make sure it's the one that can't get the number banned mid-flight.

## What the API actually is [#what-the-api-actually-is]

The WhatsApp Business API is Meta's official infrastructure for business messaging at scale. There's no app and no phone: the number lives in a &#x2A;*WhatsApp Business Account (WABA)** inside the client's Business Manager, and messages flow through Meta's servers.

You don't work with the API directly — you work through an official partner platform. Chatfuel is a Meta Business Partner, and each number connects to exactly one platform at a time. That official connection is what unlocks everything the [funnel](https://chatfuel.com/docs/for-agencies/how-the-agency-funnel-works) is built on: AI bots that answer in seconds, a whole team in one shared inbox, qualified-lead events fired back to Meta, and follow-ups sent outside the [24-hour window](https://chatfuel.com/docs/for-agencies/the-24-hour-rule-explained).

## The three ways to connect a number [#the-three-ways-to-connect-a-number]

|                           | Business App                           | Gray connection                                             | Business API                                                |
| ------------------------- | -------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- |
| **Official?**             | Yes — Meta's free app                  | No — violates WhatsApp's terms                              | Yes — Meta's business platform                              |
| **Built for**             | One owner answering from a phone       | Cutting corners                                             | Teams, automation, ad traffic                               |
| **AI automation**         | Away messages at best                  | Fragile scripts on a hijacked session                       | Full AI qualification bots                                  |
| **Click-to-WhatsApp ads** | Ads work, but nothing optimizes them   | Ads work — until the number is banned                       | Full loop: routing by ad, CAPI events, optimization         |
| **Scale**                 | One phone, a handful of linked devices | Whatever the session survives                               | 1K → 10K → 100K → unlimited chats/day as verification grows |
| **Team access**           | Chats live on one device               | Shared login, no accountability                             | Unlimited seats, shared inbox, roles                        |
| **Ban risk**              | Low                                    | High — detection means losing the number, often permanently | Low, and it drops further with business verification        |
| **Badges**                | Blue badge (paid Meta Verified)        | None                                                        | Green badge (Official Business Account)                     |

**The Business App** is a fine tool for the job it was designed for: a micro-business owner answering customers from their phone. It's official and free — but it breaks exactly where an agency starts: no real automation, no signal back to Meta about which leads qualified, and every conversation trapped on one device. Pour ad traffic into it and you're paying for chats nobody answers at 2 am.

**Gray connections** are third-party tools that piggyback on a regular WhatsApp or WhatsApp Web session to fake an integration. They look cheap and connect in minutes — and they put the client's primary sales channel one detection away from disappearing. Sending automated traffic through an unofficial client violates WhatsApp's terms of service; Meta actively detects it, and bans are often permanent, with no support channel to appeal through. For an agency the math is simple: the money saved on the tool is a rounding error next to a banned number in the middle of a paid campaign — with your name on the invoice.

**The Business API** is the only option built for what you're actually doing: routing paid traffic into conversations, qualifying leads automatically, and proving results. Messaging limits scale with the client's business verification — from 250 chats a day unverified to 1,000, 10,000, 100,000, and eventually unlimited — and template messages let you re-engage leads after the 24-hour window closes.

> **Note:** Clients ask about the checkmarks. The [green badge](https://chatfuel.com/docs/whatsapp/how-to-get-a-green-badge) (Official Business Account) is only available to API accounts — Business App accounts can't get it. The **blue badge** is Meta Verified, a paid Meta subscription available only through the Business App. Moving to the API trades a paid checkmark for the one Meta grants on merit.

## Your client doesn't have to give up the App [#your-client-doesnt-have-to-give-up-the-app]

The most common objection — "we'll lose our chats" — is outdated. Meta officially supports [connecting an existing Business App number to the API](https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp) while the app keeps working. The client scans a QR code from **Settings → Account → Business Platform** in their WhatsApp Business app, and:

* The number stays exactly the same — customers notice nothing.
* Contacts and up to 6 months of chat history carry over.
* The product catalog is untouched.
* The client's team keeps using the app as before, with Chatfuel running on top.

So the pitch isn't "migrate away from your WhatsApp" — it's "keep everything, add an AI sales team."

## What it costs [#what-it-costs]

Answering inbound traffic is free. When a lead messages first — taps your ad, asks a question, goes through qualification — the whole conversation costs nothing, no matter how many messages the AI exchanges. Meta only charges for **outbound template messages**: broadcasts and re-engagement sent outside the 24-hour window. Those are billed by Meta directly, separate from the Chatfuel plan, and priced by message category and the customer's country. For an ads funnel, that means the core flow — ad → chat → qualification — runs on the free side; you pay only when you proactively reach back out.

## Agency checklist before launch [#agency-checklist-before-launch]

1. **Number linked to Business Manager.** Any official third-party platform requires it — sort this out while [collecting client accesses](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for).
2. **[Business verification](https://chatfuel.com/docs/for-agencies/whatsapp-phone-number-verification) submitted.** It lifts the 250-chats/day cap, scales messaging limits, and cuts ban risk. Documents take hours, not weeks.
3. **Display name compliant.** Meta reviews it — plain brand name, no "Official", no emojis, no ALL CAPS.


---

---
title: "WhatsApp phone number verification"
description: "The phone number itself gets verified during the connection — a code by SMS or call, done in a minute."
canonical_url: https://chatfuel.com/docs/for-agencies/whatsapp-phone-number-verification
markdown_url: https://chatfuel.com/docs/for-agencies/whatsapp-phone-number-verification.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# WhatsApp phone number verification

The phone number itself gets verified during the connection — a code by SMS or call, done in a minute.

The phone number itself gets verified during [the connection](https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp) — a code by SMS or call, done in a minute. What this page is really about is the verification that agencies actually lose launches to: **Meta business verification** of the client's [business portfolio](https://chatfuel.com/docs/for-agencies/whatsapp-business-api-explained). It's a document review, it caps the channel until it's done, and it needs paperwork only the client can provide — which is exactly why it belongs in your onboarding checklist, not in your launch-week panic.

## Why it decides your ad budget [#why-it-decides-your-ad-budget]

An unverified business is throttled at **250 unique conversations per day** — and unverified accounts get [banned](https://chatfuel.com/docs/for-agencies/common-meta-access-errors) more easily, with some unable to send messages at all. Verified, the limit scales automatically with quality and volume: 1K → 10K → 100K → unlimited customers per day.

Now do the media math: a click-to-WhatsApp campaign that produces 300 conversations a day hits the unverified cap before lunch. The ads keep spending; the bot stops answering new people. **Verification is a launch prerequisite, not an optimization** — start it the day the number is connected.

> **Note:** this is not the green checkmark. Business verification unlocks messaging limits. It does not add any badge to the client's profile — the [green checkmark](https://chatfuel.com/docs/whatsapp/how-to-get-a-green-badge) (Official Business Account) is a separate program that *requires* business verification but isn't granted by it. Don't promise the client a checkmark out of this process.

## Submitting verification from Chatfuel [#submitting-verification-from-chatfuel]

Chatfuel is a Meta Solution Partner and submits the verification for you, from inside the client's company:

1. **Open the verification flow.** In the client's company, go to **Settings → WhatsApp** and click **Verify** under "Verify your Meta business portfolio".
2. **Upload the client's documents.** Accepted types: a government tax document, a business registration or license, articles of incorporation, or a business bank statement. More is better — but only from this list; a passport or driver's license gets rejected, and random extra files don't help.
3. **Check the legal name — letter by letter.** The legal business name on the documents must match the **Legal business name** in the client's [Meta Business Info settings](https://business.facebook.com/latest/settings/business_info) *exactly*. A mismatch is the single most common rejection. Check it before submitting, not after the rejection email.
4. **Leave a reachable WhatsApp number.** Meta contacts this number only if something's wrong with the submission. Make it one your team actually monitors — an unreachable number means a silent failure.
5. **Track the status.** Progress shows right in the WhatsApp tab: **Documents saved → Pending review → Verified**. The typical round-trip is around 2–3 hours.

**The agency habit that makes this painless:** collect the client's registration document and confirm their legal business name during onboarding, in the same pass as [access collection](https://chatfuel.com/docs/for-agencies/what-to-ask-the-client-for). Chasing a busy client for their articles of incorporation two days before launch is the avoidable version of this problem.

## When verification is rejected [#when-verification-is-rejected]

| What happened                                 | The fix                                                                                                                                                                                            | Whose move                |
| --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| **Legal name doesn't match**                  | Update the name in [Business Info](https://business.facebook.com/latest/settings/business_info) to match the document exactly — or upload a document matching the name already set. Then resubmit. | Client (you guide)        |
| **Document not accepted**                     | Personal IDs don't count. Resubmit with a document from the accepted list above.                                                                                                                   | Client                    |
| **"Not yet eligible for verification"**       | The client's Business Info is incomplete. Fill in **every** field, including optional ones, then resubmit.                                                                                         | Client (you guide)        |
| **A verification request is already pending** | Someone submitted before. Meta enforces a 3-day wait between requests — Chatfuel retries automatically; no action needed.                                                                          | Nobody — wait             |
| **Submission limit reached**                  | Chatfuel can submit up to three times on the client's behalf. After that, submit directly in [Meta Security Center](https://business.facebook.com/latest/settings/security_center).                | You, with client's access |
| **Business account disabled by Meta**         | Verification can't be submitted at all. The client appeals in [Meta Support Home](https://business.facebook.com/business-support-home).                                                            | Client                    |

If the status is stuck with everything filled in correctly, or the review drags far past the usual window, contact Chatfuel support with a screenshot of the client's Business Info page — escalation to Meta happens from there.


---

---
title: "When the client has no Business Manager"
description: "A client without a Meta Business Manager is not a lost deal: create the portfolio for them in 15 minutes, then request partner access as usual."
canonical_url: https://chatfuel.com/docs/for-agencies/when-the-client-has-no-business-manager
markdown_url: https://chatfuel.com/docs/for-agencies/when-the-client-has-no-business-manager.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# When the client has no Business Manager

A client without a Meta Business Manager is not a lost deal: create the portfolio for them in 15 minutes, then request partner access as usual.

"We don't have any of that" is not a lost deal — it's usually your best client. A business with no Meta setup has no bad habits, no mystery admins from three agencies ago, no disabled ad account with a history you'll never untangle. You get to build it clean. Many agencies charge for exactly this as a setup package; all of them use it to become indispensable. (There's a ready-made message for that first "no worries, here's the plan" conversation in [Scripts for asking clients for access](https://chatfuel.com/docs/for-agencies/scripts-for-asking-clients-for-access).) There's just one rule that decides whether this goes well.

## The golden rule: build in the client's name [#the-golden-rule-build-in-the-clients-name]

Everything you create — the Business Portfolio, the Page, the ad account, the WhatsApp Business Account — must be **owned by the client**, created under their Facebook account, their business details, their payment method. You then get in as a partner, exactly like with any established client.

The tempting shortcut — spinning it all up inside your agency's portfolio because it's faster — is a trap with two jaws. If the client ever leaves, they lose their audience, their pixel data, their WhatsApp number and its chat history, and that conversation is ugly. And if *your* portfolio catches a restriction, every client inside it goes down together. Ownership stays with the client; access is what you get. That separation is also exactly how Chatfuel is built to work — [one client, one company](https://chatfuel.com/docs/for-agencies/agency-clients-model), nothing mixed.

## What you're building [#what-youre-building]

The full foundation, in order:

1. **A Facebook account that will own it all.** The portfolio hangs off a personal Facebook account — use the owner's real, aged account, not a fresh one registered yesterday (new accounts creating business assets is a restriction magnet). If the owner has no account at all, they create one and let it warm up for a few days of normal activity.
2. **Create the Business Portfolio.** At [business.facebook.com](https://business.facebook.com), the client clicks **Create a business portfolio**: business name exactly as legally registered, a business email they actually check, their details. Five minutes. This container will hold everything else.
3. **Create or claim the Facebook Page.** A Page is required to run ads — even pure WhatsApp campaigns are published from a Page. If one exists, add it to the portfolio (**Business Settings → Accounts → Pages**); if not, create it from inside the portfolio: real brand name, category, logo, cover, and a few posts so it doesn't look abandoned to Meta's review systems.
4. **Switch Instagram to professional and link it.** In the Instagram app: **Settings → Account type and tools → Switch to professional account** (free, takes a minute — a personal account can't connect to anything). Then link it to the portfolio under **Accounts → Instagram accounts**.
5. **Create the ad account.** **Business Settings → Accounts → Ad accounts → Add → Create a new ad account** — right currency, right time zone (changing either later means a new ad account), and the client's card or payment method attached. The budget should always run through the client's own billing.
6. **Add your agency as a partner.** Now the client's setup looks exactly like any established client's — so finish the standard way: [partner access](https://chatfuel.com/docs/for-agencies/meta-partner-access) to the new portfolio, assets assigned, your team distributed on your side.

## Submit business verification early [#submit-business-verification-early]

Do this the same week — not when the launch is already burning. Unverified businesses are capped at **250 business-initiated chats per day** on WhatsApp, and some can't message reliably at all. Verification lifts the ceiling in steps — 1,000 → 10,000 → 100,000 → unlimited unique customers per day — and cuts ban risk while it's at it. Verification, display names, and messaging limits are covered in depth in [WhatsApp phone number verification](https://chatfuel.com/docs/for-agencies/whatsapp-phone-number-verification).

The client submits in **Business Settings**, under **Verify your Meta business portfolio**, with official documents: business registration or license, certificate of incorporation, tax document, or a business bank statement — the submission flow itself is walked through in [Verify your Meta business account](https://chatfuel.com/docs/whatsapp/verify-your-meta-business-account). One detail causes almost every rejection: &#x2A;*the legal business name on the documents must exactly match the name in the portfolio's Business Info settings.** Match it first, then submit. Review often takes just a few hours.

> **Note:** business verification is not the blue or green badge — it's the boring paperwork layer that raises messaging limits and unlocks growth. It *is* a prerequisite for the green Official Business Account badge later, which is a nice line in your client report.

## The WhatsApp number [#the-whatsapp-number]

The number is a real decision, because it's hard to change later:

* **A dedicated number is the clean start.** Any number that can receive an SMS or a call works — including a landline or a fresh SIM. It must not be registered to a personal WhatsApp; if it is, that WhatsApp has to be deleted first.
* **An existing WhatsApp Business App number can migrate.** The client keeps the number, contacts, product catalog, and up to 6 months of chat history — customers notice nothing. One irreversible choice during migration: &#x2A;*whether to share existing chats.** Decide it with the client beforehand, because it can't be changed after.
* **The display name gets reviewed by Meta.** It must be the real business name — no "WhatsApp" or "Meta" in it, no ALL CAPS, no emoji, no extra punctuation. A rejected name stalls the whole connection, so get it right the first time.

The connection itself — portfolio, WABA, QR codes and verification codes — happens inside Chatfuel's flow and is covered step by step in [Connect the client's WhatsApp](https://chatfuel.com/docs/for-agencies/connect-the-clients-whatsapp).

## From zero to launch-ready [#from-zero-to-launch-ready]

Realistic timeline for a from-scratch client: the portfolio, Page, Instagram switch, and ad account are one working session. Verification is a few hours to a couple of days. Fresh ad accounts also start with conservative spending limits that loosen as payments clear — one more reason to build the foundation the week you sign, not the week you launch.


---

---
title: "Can I Duplicate a Block in Flows"
description: "No. Chatfuel does not support duplicating blocks or plugins inside the flow editor."
canonical_url: https://chatfuel.com/docs/getting-started/can-i-duplicate-a-block-in-flows
markdown_url: https://chatfuel.com/docs/getting-started/can-i-duplicate-a-block-in-flows.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Duplicate a Block in Flows

No. Chatfuel does not support duplicating blocks or plugins inside the flow editor.

No. Chatfuel does not support duplicating blocks or plugins inside the flow editor. There is no copy, clone, or duplicate option — each block must be created from scratch.

## Workaround [#workaround]

If you need a block with similar content, you'll have to add a new one manually and re-enter the settings. There is no shortcut for this.

## Consider Using Automations Instead [#consider-using-automations-instead]

If you're spending time rebuilding blocks, it may be worth switching to [automations](https://chatfuel.com/docs/ai-features/automations) — no manual block setup needed. Set them up at **Fuely AI** → **Automations**, or describe what you want to the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) in chat — both do the same thing. For most use cases, [automations replace flows entirely](https://chatfuel.com/docs/getting-started/why-there-is-no-flows-button).


---

---
title: "Can I Recover a Deleted Flow"
description: "No. Once a flow is deleted in Chatfuel, it cannot be recovered."
canonical_url: https://chatfuel.com/docs/getting-started/can-i-recover-a-deleted-flow
markdown_url: https://chatfuel.com/docs/getting-started/can-i-recover-a-deleted-flow.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Recover a Deleted Flow

No. Once a flow is deleted in Chatfuel, it cannot be recovered.

No. Once a flow is deleted in Chatfuel, it cannot be recovered. There is no trash, undo, or backup system for flows — deletion is permanent.

## Before You Delete [#before-you-delete]

Make sure you no longer need the flow before removing it. If you think you might want to reference it later, take screenshots or copy the logic somewhere before deleting.

## Consider Using Automations Instead [#consider-using-automations-instead]

If you were relying on flows, consider switching to [automations](https://chatfuel.com/docs/ai-features/automations) — the current, recommended way to automate conversations in Chatfuel. They're easier to configure and don't require manual flow building: set them up at **Fuely AI** → **Automations**, or ask the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) in chat — both do the same thing. For most use cases, [automations replace flows entirely](https://chatfuel.com/docs/getting-started/why-there-is-no-flows-button).


---

---
title: "How This App Works"
description: "Chatfuel is an AI-powered platform that lets your business talk to customers automatically — on WhatsApp, Instagram, Facebook, TikTok, and your website —…"
canonical_url: https://chatfuel.com/docs/getting-started/how-this-app-works
markdown_url: https://chatfuel.com/docs/getting-started/how-this-app-works.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How This App Works

Chatfuel is an AI-powered platform that lets your business talk to customers automatically — on WhatsApp, Instagram, Facebook, TikTok, and your website —…

Chatfuel is an AI-powered platform that lets your business talk to customers automatically — on WhatsApp, Instagram, Facebook, TikTok, and your website — 24/7, without you having to type every reply.

## The Three-Step Loop [#the-three-step-loop]

**1. Connect a channel**

You start by linking a messaging channel to Chatfuel. The most common choice is [WhatsApp](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp). You can also connect [Instagram](https://chatfuel.com/docs/instagram/connect-your-instagram-account), a [Facebook Page](https://chatfuel.com/docs/facebook/how-to-connect-a-facebook-fanpage), [TikTok](https://chatfuel.com/docs/tiktok/connect-your-tiktok-account), or add a [chat widget to your website](https://chatfuel.com/docs/website/set-up-chat-widget-for-website).

**2. Teach the AI about your business**

Chatfuel's AI assistant is called [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai). Before it can help your customers, you give it three things:

* **About Company** — your name, hours, contact info, and location.
* **Catalog** — the services or products you offer, with prices.
* **FAQ** — answers to the questions customers ask most often.

This is your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base). The AI reads it and uses it to answer questions in every conversation.

**3. The AI handles conversations**

Once connected and trained, Fuely AI replies to every incoming message automatically. It answers questions, qualifies leads, books appointments via the [calendar](https://chatfuel.com/docs/calendar/calendar), and sends [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups) when customers go quiet. [No buttons or menus](https://chatfuel.com/docs/ai-features/can-i-add-menu-buttons-or-quick-replies) — customers just write naturally.

When a conversation needs a human touch, Fuely [hands it off to your team](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) based on rules you set.

## What You Manage [#what-you-manage]

You don't write scripts or build flows. Your job is to keep the Knowledge Base accurate and review conversations. The [Leads board](https://chatfuel.com/docs/leads/leads) shows every contact moving through your pipeline, and your teammates can jump in from the same dashboard.

## Getting Started [#getting-started]

The fastest path to going live is the [definitive AI setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide). For pricing, see [Chatfuel plans and pricing](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing).


---

---
title: "How to Book a Platform Demo"
description: "Yes — you can schedule a free one-on-one product consultation with a Chatfuel expert."
canonical_url: https://chatfuel.com/docs/getting-started/how-to-book-a-platform-demo
markdown_url: https://chatfuel.com/docs/getting-started/how-to-book-a-platform-demo.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Book a Platform Demo

Yes — you can schedule a free one-on-one product consultation with a Chatfuel expert.

Yes — you can schedule a free one-on-one product consultation with a Chatfuel expert. During the call, they'll walk you through the platform, answer your questions, and help you understand [how the app works](https://chatfuel.com/docs/getting-started/how-this-app-works) for your specific use case.

## Book your demo [#book-your-demo]

Pick the link that matches your preferred language:

* **English** — [Book a consultation with Daniil](https://calendly.com/daniil-shaposhnikov/product-consultation-for-users)
* **Español** — [Reservar asesoría con el equipo](https://calendly.com/d/cq9v-7qk-njm/asesoria-de-chatfuel)
* **Português** — [Agendar consulta com Valquiria](https://calendly.com/valquiria-fonseca-chatfuel/30min)

Choose a time slot that works for you and fill in the short form. You'll receive a calendar invite with the meeting link.

## What to expect [#what-to-expect]

The consultation typically covers:

* A live walkthrough of the Chatfuel dashboard
* How to connect your [messaging channels](https://chatfuel.com/docs/getting-started/supported-channels) (WhatsApp, Instagram, Facebook, TikTok, website)
* Setting up AI replies, knowledge base, and automations
* Answers to your specific business questions

## Can I try the platform before the call? [#can-i-try-the-platform-before-the-call]

Absolutely. You don't have to wait for a demo to get started. Chatfuel offers a [free 7-day trial](https://chatfuel.com/docs/billing/how-long-is-the-free-trial) with full access to every feature — you can explore on your own and bring questions to the consultation.


---

---
title: "How to Create a New Bot for WhatsApp"
description: "Each bot in Chatfuel lives inside its own company workspace."
canonical_url: https://chatfuel.com/docs/getting-started/how-to-create-a-new-bot-for-whatsapp
markdown_url: https://chatfuel.com/docs/getting-started/how-to-create-a-new-bot-for-whatsapp.md
last_updated: 2026-09-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Create a New Bot for WhatsApp

Each bot in Chatfuel lives inside its own company workspace.

Each bot in Chatfuel lives inside its own company workspace. To create a new WhatsApp bot, you first create a new company, then connect your WhatsApp number to it.

## Step 1: Create a new company [#step-1-create-a-new-company]

1. Click the **company name** in the bottom-left corner of the navigation menu.
2. Click **Workspaces** (or open [panel.chatfuel.com/workspaces](https://panel.chatfuel.com/workspaces)).
3. Open your workspace and go to the **Companies** tab.
4. Click **Create company**.

Your new company appears in the list immediately. If you manage multiple clients or businesses, each one gets its own [separate company workspace](https://chatfuel.com/docs/account/how-to-manage-multiple-companies) with independent bots, channels, and billing.

## Step 2: Connect your WhatsApp number [#step-2-connect-your-whatsapp-number]

Once inside your new company:

1. Open **Settings** in the left sidebar.
2. Click **Add number** in the WhatsApp section.
3. Follow the on-screen steps to log in with Facebook, authorize Chatfuel, and verify your phone number.

For a detailed walkthrough of the connection process, see [How to connect a new phone number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number). If you want to move an existing WhatsApp Business App number to Chatfuel, see [Connect WhatsApp Business App Number](https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number).

## Step 3: Set up your AI [#step-3-set-up-your-ai]

After your number is connected, [activate AI on your WhatsApp channel](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp) by enabling its [automations](https://chatfuel.com/docs/ai-features/automations) and filling your Knowledge Base. This is what makes the bot actually respond to customers.

## Switching between bots [#switching-between-bots]

To switch to a different bot, click the company name in the bottom-left corner again, open **Workspaces → Companies**, and select the company you want to work in. The dashboard switches to that company's workspace instantly.


---

---
title: "How to Open the Automation Tab"
description: "Automations live inside the Fuely AI section of the dashboard."
canonical_url: https://chatfuel.com/docs/getting-started/how-to-open-automation-tab
markdown_url: https://chatfuel.com/docs/getting-started/how-to-open-automation-tab.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Open the Automation Tab

Automations live inside the Fuely AI section of the dashboard.

Automations live inside the **Fuely AI** section of the dashboard.

## Open it in the dashboard [#open-it-in-the-dashboard]

1. In the main menu, open **Fuely AI**.
2. Go to **Automations**.

You'll see **Main bot** at the top and an automation for every channel source below it — Instagram, Facebook, WhatsApp, TikTok, and the website widget. [Here's how automations are organized](https://chatfuel.com/docs/ai-features/automations) and what you can configure on each.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) in chat:

*"Open my automations"*

It takes you straight to the page — or just makes the change you describe, without you opening anything: &#x2A;"Set up auto-replies to Instagram comments"&#x2A;, &#x2A;"Create a follow-up for leads who go quiet"&#x2A;, &#x2A;"Book appointments automatically"*.

## Reviewing existing automations [#reviewing-existing-automations]

Everything you've set up is listed in **Fuely AI** → **Automations** — open any automation to see which settings it uses and [test it](https://chatfuel.com/docs/ai-features/how-to-test-your-automation). If you're setting up from scratch, the [definitive AI setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide) covers everything from the knowledge base to handoffs.


---

---
title: "How to Test the New Platform Before Migrating From Legacy"
description: "If you're on Chatfuel Legacy and want to try the new platform before committing to the switch — you can."
canonical_url: https://chatfuel.com/docs/getting-started/how-to-test-before-migrating-from-legacy
markdown_url: https://chatfuel.com/docs/getting-started/how-to-test-before-migrating-from-legacy.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Test the New Platform Before Migrating From Legacy

If you're on Chatfuel Legacy and want to try the new platform before committing to the switch — you can.

If you're on Chatfuel Legacy and want to try the new platform before committing to the switch — you can. Just enter your card details to activate a [free 7-day trial](https://chatfuel.com/docs/billing/why-do-i-see-a-paywall), and you'll get full access to the new platform with no charge for the first week.

## There is a trial — it just requires a card [#there-is-a-trial--it-just-requires-a-card]

The new Chatfuel platform does have a free trial period. When you see the paywall screen, it's not asking you to pay — it's asking you to start your trial. Enter your card details and you'll get **7 days of full, unrestricted access** at no cost. Your card is only charged after the trial ends.

## What you can do during the trial [#what-you-can-do-during-the-trial]

* Connect your WhatsApp, Instagram, Facebook, TikTok, or website channel
* Set up [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) with your business knowledge base
* Test real conversations with customers
* Explore the [Leads board](https://chatfuel.com/docs/leads/leads) and team collaboration features

Everything works exactly as it does for paying customers — no restrictions or feature limits.

## If you decide not to migrate [#if-you-decide-not-to-migrate]

You can [cancel the trial](https://chatfuel.com/docs/billing/how-to-cancel-subscription-or-trial) at any point during the 7 days and you won't be charged. Your Legacy account stays as-is — testing the new platform doesn't affect it.

## Ready to try? [#ready-to-try]

Go to the new platform, enter your card details, and start exploring. Most users see results within the first few conversations. For a step-by-step setup walkthrough, see the [definitive AI setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide).


---

---
title: "Is a Legacy Account the Same as a Panel Account?"
description: "No. Your legacy Dashboard account and your Panel account are separate: log in to panel.chatfuel.com with the same email to see which one you are in."
canonical_url: https://chatfuel.com/docs/getting-started/is-legacy-account-same-as-panel-account
markdown_url: https://chatfuel.com/docs/getting-started/is-legacy-account-same-as-panel-account.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Is a Legacy Account the Same as a Panel Account?

No. Your legacy Dashboard account and your Panel account are separate: log in to panel.chatfuel.com with the same email to see which one you are in.

No — these are two different accounts.

## Legacy account [#legacy-account]

A Legacy account is a Chatfuel account created on the older version of the platform. Legacy accounts use a flow-builder interface where you manually build conversation paths by connecting blocks. If you're still on Legacy, you can [test the new platform](https://chatfuel.com/docs/getting-started/how-to-test-before-migrating-from-legacy) without affecting your existing setup.

## Panel account [#panel-account]

A Panel account is an account on the current Chatfuel platform — the one powered by [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai). Instead of building flows, you set up [automations](https://chatfuel.com/docs/ai-features/automations) — in the dashboard at **Fuely AI** → **Automations**, or by asking the AI Co-Worker in chat. Both do the same thing. This is the platform all new signups land on today.

## Key differences [#key-differences]

|              | Legacy                        | Panel (current platform)                                                               |
| ------------ | ----------------------------- | -------------------------------------------------------------------------------------- |
| Setup method | Manual flow builder           | Automations in the dashboard, or ask the AI Co-Worker — two equal ways                 |
| AI           | Not included                  | Fuely AI handles conversations automatically                                           |
| Channels     | Facebook Messenger, Instagram | Instagram, Facebook, WhatsApp, TikTok, website                                         |
| Interface    | Drag-and-drop blocks          | Conversational — [no flows button](https://chatfuel.com/docs/getting-started/why-there-is-no-flows-button) |

## Can I use both? [#can-i-use-both]

Yes. Your Legacy account and Panel account are completely separate. Having one does not affect the other. You can keep your Legacy bots running while you set up and test the new platform.

## Ready to switch? [#ready-to-switch]

If you're on Legacy and want to move to the current platform, see [how to test before migrating](https://chatfuel.com/docs/getting-started/how-to-test-before-migrating-from-legacy). For a full walkthrough of the new platform, start with [how this app works](https://chatfuel.com/docs/getting-started/how-this-app-works).


---

---
title: "Supported Channels"
description: "Chatfuel is an official Meta Business Partner. The platform supports the following messaging channels:"
canonical_url: https://chatfuel.com/docs/getting-started/supported-channels
markdown_url: https://chatfuel.com/docs/getting-started/supported-channels.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Supported Channels

Chatfuel is an official Meta Business Partner. The platform supports the following messaging channels:

Chatfuel is an official Meta Business Partner. The platform supports the following messaging channels:

* **Instagram** — [connect your Instagram account](https://chatfuel.com/docs/instagram/connect-your-instagram-account)
* **Facebook** — [connect your Facebook Page](https://chatfuel.com/docs/facebook/how-to-connect-a-facebook-fanpage) for Messenger and comments under your posts
* **WhatsApp** — [connect a new phone number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number) or an existing WhatsApp Business App number
* **TikTok** — [connect your TikTok account](https://chatfuel.com/docs/tiktok/connect-your-tiktok-account)
* **Website** — [add a chat widget to your site](https://chatfuel.com/docs/website/set-up-chat-widget-for-website)

## Can I connect other channels like Telegram, Viber, or Line? [#can-i-connect-other-channels-like-telegram-viber-or-line]

No. Chatfuel works exclusively with the channels listed above. As an official Meta provider, Chatfuel operates within Meta's platform policies, which do not allow connecting third-party messaging channels such as Telegram, Viber, Line, or similar services.

There is no workaround or manual integration path for unsupported channels. If your business relies on a channel that is not listed here, Chatfuel is not the right fit for that specific channel.

## Getting started with a supported channel [#getting-started-with-a-supported-channel]

Once you connect a channel, the next step is to [teach the AI about your business](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) so it can start handling conversations automatically. For a full walkthrough, see the [definitive AI setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide).


---

---
title: "Where Is the Ads Panel?"
description: "The Ads Panel has been temporarily hidden from the Chatfuel dashboard."
canonical_url: https://chatfuel.com/docs/getting-started/where-is-the-ads-panel
markdown_url: https://chatfuel.com/docs/getting-started/where-is-the-ads-panel.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Where Is the Ads Panel?

The Ads Panel has been temporarily hidden from the Chatfuel dashboard.

The Ads Panel has been temporarily hidden from the Chatfuel dashboard. We are working on a new and improved version of this feature and will release it soon.

## What Changed [#what-changed]

The Ads Panel that was previously available in the dashboard is no longer visible. This is intentional — we took it down to rebuild it with a better experience.

## What Should I Do in the Meantime? [#what-should-i-do-in-the-meantime]

You can still run ads that click to messaging channels and connect them to Chatfuel. To set up ads that start WhatsApp conversations with your customers, follow the guide on [creating ads that click to WhatsApp](https://chatfuel.com/docs/whatsapp/create-ads-that-click-to-whatsapp).

Your existing automations and ad-linked flows continue to work as before — only the dashboard panel has been removed.

## When Will the New Version Be Available? [#when-will-the-new-version-be-available]

We will announce the new Ads Panel once it is ready. No action is needed on your end — everything will appear automatically in your dashboard when we release it.


---

---
title: "Where to Find Tutorials and Guides"
description: "Looking for tutorials? Guides? Step-by-step walkthroughs?"
canonical_url: https://chatfuel.com/docs/getting-started/where-to-find-tutorials-and-guides
markdown_url: https://chatfuel.com/docs/getting-started/where-to-find-tutorials-and-guides.md
last_updated: 2026-03-20
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Where to Find Tutorials and Guides

Looking for tutorials? Guides? Step-by-step walkthroughs?

Looking for tutorials? Guides? Step-by-step walkthroughs?

**You're talking to one.**

There is no separate tutorials section. No dusty knowledge base you have to dig through. No 45-minute YouTube video where the good part starts at minute 38. The AI assistant right here in your chat IS your tutorial. Ask it anything — it will walk you through the setup step by step, in real time, specifically for your account.

"Where are the tutorials?"
"I AM the tutorials."

## OK But Seriously, How Do I Get Help? [#ok-but-seriously-how-do-i-get-help]

* **Ask the AI assistant** — just type your question. It knows every feature, every setting, every edge case. Need to [set up AI from scratch](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide)? It will hold your hand through the whole thing. Want to know [what Fuely AI can do](https://chatfuel.com/docs/ai-features/what-fuely-ai-can-do-for-your-business)? Just ask.
* **Read the help docs** — yes, they exist too. From [connecting WhatsApp](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number) to [connecting Instagram](https://chatfuel.com/docs/instagram/connect-your-instagram-account) — there is an article for everything.
* **New here?** — start with [How This App Works](https://chatfuel.com/docs/getting-started/how-this-app-works). No 10-part onboarding course. Just one page.

## Video Tutorials? [#video-tutorials]

Nope. No separate video library. But honestly — why watch someone else click buttons when you can just ask the AI and get your answer in 10 seconds?


---

---
title: "Why There Is No Flows Button"
description: "If you're looking for the Flows button in Chatfuel and can't find it — that's by design."
canonical_url: https://chatfuel.com/docs/getting-started/why-there-is-no-flows-button
markdown_url: https://chatfuel.com/docs/getting-started/why-there-is-no-flows-button.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Why There Is No Flows Button

If you're looking for the Flows button in Chatfuel and can't find it — that's by design.

If you're looking for the Flows button in Chatfuel and can't find it — that's by design. Chatfuel's current products are built around [AI automations](https://chatfuel.com/docs/ai-features/automations), not the flow builder.

## Automations instead of flows [#automations-instead-of-flows]

With flows, you mapped out every conversation path by hand: dragging blocks, connecting arrows, debugging logic. Automations work differently — [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) holds the conversation on its own, guided by your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) and the instructions you set per channel or per post. You describe the behavior; the AI handles the wording and the branching.

You manage automations in two equal ways:

* In the dashboard, at **Fuely AI** → **Automations** — [here's how the page is organized](https://chatfuel.com/docs/ai-features/automations).
* By asking the [AI Co-Worker](/docs/ai-features/what-the-ai-co-worker-can-do-for-you&#x29; in chat — &#x2A;"set up comment auto-replies for my reels"* — and it configures it for you.

Typical flow use cases map directly: [comment auto-replies](https://chatfuel.com/docs/instagram/instagram-comment-autoreply), [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups), [appointment booking](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking), [routing ad leads by keyword](https://chatfuel.com/docs/whatsapp/how-to-route-ad-leads-with-keywords), [handing chats to your team](https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules).

## What if you need to access flows [#what-if-you-need-to-access-flows]

If you have an existing flow you need to review, ask the AI Co-Worker — it can navigate you to the flow editor. But the Co-Worker [can't build or edit flows](https://chatfuel.com/docs/ai-features/why-co-worker-cant-edit-flows); for new setups, describe the outcome you want and it will configure an automation instead.

## Getting started [#getting-started]

Start with the [guide on how the app works](https://chatfuel.com/docs/getting-started/how-this-app-works), then the [complete AI setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide) — it takes you from an empty knowledge base to working automations step by step.


---

---
title: "Can I Choose Which Post to Autoreply To?"
description: "Yes. Create a custom automation with a List of posts, and it answers comments only on the posts or reels you pick — up to 50 per rule, with up to 30 rules per…"
canonical_url: https://chatfuel.com/docs/instagram/can-i-choose-which-post-to-autoreply
markdown_url: https://chatfuel.com/docs/instagram/can-i-choose-which-post-to-autoreply.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Choose Which Post to Autoreply To?

Yes. Create a custom automation with a List of posts, and it answers comments only on the posts or reels you pick — up to 50 per rule, with up to 30 rules per…

Yes. Create a [custom automation](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) with a **List of posts**, and it answers comments only on the posts or reels you pick — up to 50 per rule, with up to 30 rules per source. Rules targeted at specific posts [outrank general ones](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment), so a post-specific rule takes over its posts while [comment autoreply](https://chatfuel.com/docs/instagram/instagram-comment-autoreply) elsewhere keeps working as before. For TikTok videos, see [TikTok comment autoreply](https://chatfuel.com/docs/tiktok/tiktok-comment-autoreply).

## How it works [#how-it-works]

* The base automation and general custom rules cover comments on any post.
* A rule with a **List of posts** applies only to the content you selected. You can add keywords to narrow it further — for example, react only to comments containing "price" on those posts. See [how to set up automation for specific posts or ads](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads).
* Combine freely: keep a general rule for everything and add a separate rule with different replies for a campaign post — say, one where commenters should get a special link.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **Instagram**, open **post & reel comments** (or **ad comments** to target specific ads).
3. Create a custom automation and pick your content in **List of posts**.
4. Set the **Public reply** and **Private reply**, then turn the rule on.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Set up comment autoreply only for my latest reel."*

It applies the change and confirms what it set.

## Tips [#tips]

* **Campaign over?** Turn the rule off instead of deleting it — the targeting and replies stay saved for next time.
* **Different posts, different goals** — give each rule its own instructions and replies, so a product launch and a giveaway don't share the same script.


---

---
title: "Can I Like a Comment on Instagram?"
description: "No. Chatfuel cannot automatically like comments on your Instagram posts, reels, or ads."
canonical_url: https://chatfuel.com/docs/instagram/can-i-like-a-comment-on-instagram
markdown_url: https://chatfuel.com/docs/instagram/can-i-like-a-comment-on-instagram.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Like a Comment on Instagram?

No. Chatfuel cannot automatically like comments on your Instagram posts, reels, or ads.

No. Chatfuel cannot automatically like comments on your Instagram posts, reels, or ads. The Instagram API does not provide this capability, so this is a platform restriction, not a Chatfuel limitation.

## What Chatfuel can do with comments [#what-chatfuel-can-do-with-comments]

Instead of liking comments, Fuely AI can **reply** to them — both publicly and via DM. This is more effective for engagement because a reply starts a conversation, while a like is a dead end.

Set up automatic replies using [Instagram comment autoreply](https://chatfuel.com/docs/instagram/instagram-comment-autoreply). On a comment automation you can enable:

* A **Public reply** — posted under the comment
* A **Private reply** — a DM sent to the commenter
* Or both at the same time

## Why replying works better than liking [#why-replying-works-better-than-liking]

A like acknowledges a comment but doesn't move the conversation forward. A well-written reply can direct the commenter to your DMs, share a link, answer their question, or convert them into a lead — all automatically.


---

---
title: "Can I Set a Delay Before Comment Autoreply?"
description: "Yes — with the Message delays setting. Every automation has it, including the comment sources, and it adds a natural typing pause before Fuely AI replies, so…"
canonical_url: https://chatfuel.com/docs/instagram/can-i-set-a-delay-before-comment-autoreply
markdown_url: https://chatfuel.com/docs/instagram/can-i-set-a-delay-before-comment-autoreply.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Set a Delay Before Comment Autoreply?

Yes — with the Message delays setting. Every automation has it, including the comment sources, and it adds a natural typing pause before Fuely AI replies, so…

Yes — with the **Message delays** setting. Every [automation](https://chatfuel.com/docs/ai-features/automations) has it, including the comment sources, and it adds a [natural typing pause](https://chatfuel.com/docs/ai-features/how-to-add-a-pause-between-messages) before Fuely AI replies, so the answer doesn't feel instant and robotic.

> **Note:** Message delays is a natural pause, not a scheduler — there is no option to postpone a [comment autoreply](https://chatfuel.com/docs/instagram/instagram-comment-autoreply) by minutes or hours.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Open the comment automation you want — **post & reel comments** or **ad comments** — or **Main bot** to change the delay everywhere.
3. Adjust **Message delays**.

By default the setting is inherited from Main bot; override it on a comment automation if you want different pacing there.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Add a short pause before the AI replies to comments."*

It applies the change and confirms what it set.

## Tips [#tips]

* **Use a natural tone** — pacing is only half of it. Write **Additional instructions** that make Fuely AI sound conversational and human.
* **Combine public + DM replies** — a short public reply under the comment plus a longer private message lets the conversation continue at the commenter's pace.


---

---
title: "How to connect Instagram account to another profile"
description: "If you want to move an Instagram account from one Chatfuel profile (or company) to another, you need to disconnect it from the current profile first, then…"
canonical_url: https://chatfuel.com/docs/instagram/connect-instagram-to-another-profile
markdown_url: https://chatfuel.com/docs/instagram/connect-instagram-to-another-profile.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to connect Instagram account to another profile

If you want to move an Instagram account from one Chatfuel profile (or company) to another, you need to disconnect it from the current profile first, then…

If you want to move an Instagram account from one Chatfuel profile (or company) to another, you need to disconnect it from the current profile first, then connect it to the new one. An Instagram account can only be connected to one Chatfuel profile at a time.

> **Note:** Connecting Instagram to the new profile is one of the few steps the AI Co-Worker can't complete for you — it requires authorizing with Instagram in your own account. The Co-Worker can take you straight to the right page: just ask.

## Steps [#steps]

1. In the profile where the Instagram account is currently connected, go to `Settings` ➜ `Instagram` ➜ `Disconnect&#x60;. You can also ask the Co-Worker to do this part: &#x2A;"Disconnect Instagram from this account."*
2. Switch to the other profile or company, then go to `Settings` ➜ `Instagram` ➜ `Connect` and log in with Instagram.

For the full connection walkthrough, see [Connect your Instagram account](https://chatfuel.com/docs/instagram/connect-your-instagram-account).


---

---
title: "Connect your Instagram account"
description: "Below, you'll learn how to connect your Instagram account to Chatfuel."
canonical_url: https://chatfuel.com/docs/instagram/connect-your-instagram-account
markdown_url: https://chatfuel.com/docs/instagram/connect-your-instagram-account.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Connect your Instagram account

Below, you'll learn how to connect your Instagram account to Chatfuel.

Below, you'll learn how to connect your Instagram account to Chatfuel. Most steps are automatic, taking just 1-2 minutes total.

> **Note:** Connecting Instagram is one of the few steps the AI Co-Worker can't complete for you — it requires authorizing with Instagram in your own account. The Co-Worker can take you straight to the right page: just ask.

## How to connect Instagram account [#how-to-connect-instagram-account]

1. Open `Settings` ➜ `Instagram`, then `Connect Instagram`.

***

2. If you're not already logged into Instagram, you'll see this screen. Login to your account to continue.

***

3. Next, you'll need a *professional Instagram account*. If you already have one, great — go on to step 4. If you don't have one, you'll be asked to switch.

***

3a. **Switching to a professional account**

Follow the prompts and fill out information about your business: creator or business, activity category. Continue until the last screen saying:

*Your Instagram creator/business account is ready*

Click `Done` to complete this step.

***

4. Click `Allow` to give Chatfuel access to your Instagram messages.

***

5. Done! Your Instagram account is now connected and is available under `Settings` ➜ `Instagram`.

Once connected, you can [activate AI on your Instagram account](https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram) to start automating replies.

## Known issues [#known-issues]

If something isn't working, it's possible that Instagram connection dropped. To fix this, go to `Settings` ➜ `Instagram` and click `Reconnect`.


---

---
title: "DM to Follow"
description: "Chatfuel cannot send a DM automatically when someone follows your Instagram account: Meta does not expose a \"new follower\" event to any platform."
canonical_url: https://chatfuel.com/docs/instagram/dm-to-follow
markdown_url: https://chatfuel.com/docs/instagram/dm-to-follow.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# DM to Follow

Chatfuel cannot send a DM automatically when someone follows your Instagram account: Meta does not expose a "new follower" event to any platform.

This article explains why it's currently not possible to automatically send a DM when someone follows your Instagram account, and what to expect in the future.

## Why You Can't Send a DM After a New Follow [#why-you-cant-send-a-dm-after-a-new-follow]

Instagram does not currently allow third-party tools — including Chatfuel — to trigger automated messages when someone starts following your account. This is an Instagram platform limitation, not a Chatfuel one.

## DM to Follow Feature (Alpha) [#dm-to-follow-feature-alpha]

We are actively working on a **DM to Follow** feature that will let you automatically send a message to a user the moment they follow your Instagram account.

This feature is currently in **Alpha** and available to a limited group of creators. We are working to roll it out to everyone as soon as possible.

## What You Can Do Right Now [#what-you-can-do-right-now]

While DM to Follow is not yet available broadly, here are ways to engage new followers:

* **Story replies** — enable the story replies automation so Fuely AI responds when followers reply to your stories
* **DM keywords** — invite followers in your bio or posts to DM you a specific word or phrase; with the [direct messages automation](https://chatfuel.com/docs/instagram/instagram-tasks) on, Fuely AI picks up the conversation
* **[Comment automation](https://chatfuel.com/docs/instagram/instagram-comment-autoreply)** — auto-reply to comments on your posts and prompt users to DM you

## When Will It Be Available? [#when-will-it-be-available]

We don't have a specific release date to share yet. Once DM to Follow is out of Alpha and available to all accounts, we will announce it through:

* In-app notifications
* Our official blog and social channels

Stay tuned for updates.


---

---
title: "How to Activate AI in Instagram"
description: "Every Instagram automation starts off, so Fuely AI stays quiet until you enable the sources you want it to handle."
canonical_url: https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram
markdown_url: https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Activate AI in Instagram

Every Instagram automation starts off, so Fuely AI stays quiet until you enable the sources you want it to handle.

Every Instagram [automation](https://chatfuel.com/docs/ai-features/automations) starts off, so Fuely AI stays quiet until you enable the sources you want it to handle. Activating AI on Instagram means three things: a [connected Instagram account](https://chatfuel.com/docs/instagram/connect-your-instagram-account), enabled automations for the right sources, and a filled Knowledge Base so the AI has something to say.

You can configure automations before the account is connected — the setup is saved as a draft and goes live the moment the channel connects.

> **Also on WhatsApp or Facebook?** See [How to activate AI in WhatsApp](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp) and [How to activate AI in Facebook](https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook) for platform-specific steps.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **Instagram**, you'll see an automation for each source: direct messages, post & reel comments, ad comments, story replies, ig.me links, and ads that click to Instagram.
3. Turn on each source you want Fuely AI to handle. Enable only direct messages, only [comment replies](https://chatfuel.com/docs/instagram/instagram-comment-autoreply), or any combination — sources you leave off stay silent.
4. Adjust the settings on any automation if you want behavior different from your defaults; everything you don't touch follows **Main bot**.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Answer all Instagram messages and reply to comments on my posts."*

It applies the change and confirms what it set.

## Fill the Knowledge Base [#fill-the-knowledge-base]

The [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) is what the AI knows; automations are where and how it behaves. Without it, Fuely AI can only give generic replies.

What to add:

* **FAQs** — common questions and your preferred answers
* **Product or service descriptions** — what you sell or offer
* **Policies** — shipping, returns, working hours, etc.
* **Contact details** — where to send customers who need human help

The more relevant content you add, the better the AI will answer your customers.

## Test your setup [#test-your-setup]

Open any Instagram automation and use the **Test chat** sidebar — it [simulates a conversation with exactly that automation's settings](https://chatfuel.com/docs/ai-features/how-to-test-your-automation), so you can check answers before customers see them. Ask a question covered in your Knowledge Base and verify the answer is accurate.

If the AI doesn't reply in a real conversation, check that the source's automation is turned on and that your Instagram account is still connected.

## Important notes [#important-notes]

### Messaging limits [#messaging-limits]

Instagram [restricts who you can message and when](https://chatfuel.com/docs/instagram/messaging-rules-for-instagram):

* **New contacts** — 1 DM after they comment, then wait for them to reply first.
* **Existing contacts** — 24-hour window to reply after their last message.

### Where DMs end up [#where-dms-end-up]

* If someone **follows you** — DM goes to their main inbox.
* If they **don't follow you** — DM goes to their message requests folder with no notification.

### Human takeover [#human-takeover]

Agents can take over any AI-handled conversation at any time. See [How to stop AI during active conversations](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations).


---

---
title: "How to Get Automation on Your Reels"
description: "Reels don't need special setup: the post & reel comments source covers them together with regular posts."
canonical_url: https://chatfuel.com/docs/instagram/how-to-automate-reels
markdown_url: https://chatfuel.com/docs/instagram/how-to-automate-reels.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Get Automation on Your Reels

Reels don't need special setup: the post & reel comments source covers them together with regular posts.

Reels don't need special setup: the **post & reel comments** source covers them together with regular posts. Turn on its base [automation](https://chatfuel.com/docs/ai-features/automations) and Fuely AI answers comments on your reels — publicly under the comment, in a DM, or both. See [Instagram comment autoreply](https://chatfuel.com/docs/instagram/instagram-comment-autoreply) for the full guide.

Custom rules work on reels too: react to a keyword, or target [specific reels you choose](https://chatfuel.com/docs/instagram/can-i-choose-which-post-to-autoreply) — reels count as posts in a rule's **List of posts**.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **Instagram**, open **post & reel comments**.
3. Turn on the base automation to cover every post and reel, or add a [custom automation](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) targeting a keyword or selected reels.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Auto-reply to comments on my reels."*

It applies the change and confirms what it set.


---

---
title: "Instagram Comment Autoreply"
description: "Fuely AI replies to comments on your posts, reels, and ads — publicly under the comment, in a private DM, or both."
canonical_url: https://chatfuel.com/docs/instagram/instagram-comment-autoreply
markdown_url: https://chatfuel.com/docs/instagram/instagram-comment-autoreply.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Instagram Comment Autoreply

Fuely AI replies to comments on your posts, reels, and ads — publicly under the comment, in a private DM, or both.

Fuely AI replies to comments on your posts, reels, and ads — publicly under the comment, in a private DM, or both. Comment replies are handled by two [automation](https://chatfuel.com/docs/ai-features/automations) sources: **post & reel comments** and **ad comments**. They work the same way; the only difference is which content they watch. For the full picture of Instagram sources, see [Instagram automations](https://chatfuel.com/docs/instagram/instagram-tasks).

## How comment automations are organized [#how-comment-automations-are-organized]

Each of the two sources has a **base automation** — the permanent catch-all. It starts off; turn it on and Fuely AI answers every comment on that source, using your instructions and Knowledge Base.

On top of the base, each source takes up to 30 [custom automations](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) — named rules for specific cases. A rule can target:

* **Keywords** — react to comments matching a word exactly, containing it, or to any comment at all (up to 50 keywords per rule)
* **A list of posts or ads** — only comments on the content you pick, up to 50 per rule ([choose which posts get autoreply](https://chatfuel.com/docs/instagram/can-i-choose-which-post-to-autoreply))

Every comment rule — base or custom — controls two replies you can enable independently:

* **Public reply** — the visible answer under the comment
* **Private reply** — the DM sent to the commenter

## Which rule answers a comment [#which-rule-answers-a-comment]

When several rules could match, Chatfuel picks exactly one, in [priority order](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment): rules targeted at the specific post or ad first, then general custom rules, then the base automation. Within those, an exact keyword match beats a contains match, which beats an any-comment rule. Rules that are turned off never compete.

Comment sources also offer a "don't reply" choice in **Incoming messages**, so a rule can deliberately leave the comments it matches unanswered — for example, keeping the AI quiet on one post while the base automation keeps answering everywhere else.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **Instagram**, open **post & reel comments** or **ad comments**.
3. Turn on the base automation to answer every comment on that source, or add a custom automation and set its keywords or [list of posts or ads](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads).
4. Set the **Public reply** and **Private reply**, and adjust **Additional instructions** if you want a specific tone or goal.
5. Try it in the [Test chat](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) sidebar before going live.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"When someone comments PROMO under my ads, reply publicly and DM them the discount code SAVE20."*

It applies the change and confirms what it set.

## Tips for writing instructions [#tips-for-writing-instructions]

* Be specific about your tone and style.
* State your goal — drive DMs, answer questions, share a link.
* Include examples of what you want Fuely AI to say. It can include links in both public replies and DMs:

> *If user's first message says EBOOK, send this link: chatfuel.com/ebook*
>
> *When someone asks about pricing, share our pricing page: yoursite.com/pricing*

## Important notes [#important-notes]

### Messaging limits [#messaging-limits]

Instagram [limits how often you can message people](https://chatfuel.com/docs/instagram/messaging-rules-for-instagram):

* **New contacts** — 1 DM after they comment, then wait for them to reply first.
* **Existing contacts** — 24-hour window to message after their last message.

### Where DMs end up [#where-dms-end-up]

* **Followers** — DM goes to their main inbox.
* **Non-followers** — DM goes to their message requests folder, no notification.

To help new commenters find your DM, add a public reply that points them to their inbox:

> *Thanks for your comment! Just sent you a DM.*
>
> *Appreciate your interest! Check your inbox.*


---

---
title: "Instagram Automations"
description: "Fuely AI talks to your Instagram audience through automations — one for every place a conversation can start."
canonical_url: https://chatfuel.com/docs/instagram/instagram-tasks
markdown_url: https://chatfuel.com/docs/instagram/instagram-tasks.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Instagram Automations

Fuely AI talks to your Instagram audience through automations — one for every place a conversation can start.

Fuely AI talks to your Instagram audience through [automations](https://chatfuel.com/docs/ai-features/automations) — one for every place a conversation can start. Each automation has its own settings, so you can keep one shared behavior across all of Instagram or fine-tune every source separately.

You manage them in two equal ways: at **Fuely AI** → **Automations** in the dashboard, or by asking the [AI Co-Worker](/docs/ai-features/what-the-ai-co-worker-can-do-for-you&#x29; in chat — &#x2A;"Show my Instagram automations."* Both do the same thing.

> **Note:** If you used the old Tasks page: tasks became automations. [Here's what changed](https://chatfuel.com/docs/ai-features/tasks).

## The six Instagram sources [#the-six-instagram-sources]

Under **Instagram** in Automations you'll find a source for each way a customer can reach you:

* **Direct messages** — incoming DMs to your account
* **Post & reel comments** — comments on your posts and reels
* **Ad comments** — comments under your ads
* **Story replies** — replies to your stories
* **ig.me links** — conversations started from an ig.me link
* **Ads that click to Instagram** — DMs from people who tapped an ad that opens Instagram Direct

Each source has a **base automation**. It's always there — it can't be renamed or deleted — and it starts off, so [turning AI on for a source](https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram) simply means enabling its automation. Sources you leave off stay silent.

## Custom automations [#custom-automations]

On the comment, ad, story, and link sources — everything except direct messages — you can add up to 30 [custom automations](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation): named rules that react only to specific content, like a keyword, a particular post or ad, selected stories, or one ig.me link. On the comment sources, rules also control the **Public reply** under the comment and the **Private reply** sent to DMs — see [Instagram comment autoreply](https://chatfuel.com/docs/instagram/instagram-comment-autoreply).

When several automations could answer the same comment or message, [a priority order picks one](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment): rules targeted at the specific post or ad win over general rules, and general rules win over the base.

## Your comments and DMs in one place [#your-comments-and-dms-in-one-place]

When someone comments and Fuely AI replies, you'll see both the public comment thread and the private reply in the **Chats** tab. Story replies appear in chats with a preview of the story (or a "no longer available" state once the story expires). In DMs, the AI knows which post or ad the conversation came from, so its answers stay in context.

## Contact properties [#contact-properties]

Contacts created by Instagram automations carry source properties so you can see where each person came from.

| Contact action                              | Original source / Last source      | Original source details / Last source details |
| ------------------------------------------- | ---------------------------------- | --------------------------------------------- |
| Messages in Instagram direct                | Instagram direct                   |                                               |
| Messages in Instagram direct via ig.me link | ig.me link                         | `{ig.me link}`                                |
| Comments from ads                           | Instagram ad comment               | `{ID ad}`                                     |
| Comments from posts and reels               | Instagram comment                  |                                               |
| Messages from Instagram Direct CTA ads      | Ad that clicks to Instagram direct | `{ID ad}`                                     |
| Reply to Instagram story                    | Instagram story reply              |                                               |

## Messaging limits [#messaging-limits]

Instagram restricts who you can message and how often — see [messaging rules for Instagram](https://chatfuel.com/docs/instagram/messaging-rules-for-instagram) for full details.

* **New contacts** — 1 DM after they comment, then wait for them to reply.
* **Existing contacts** — 24 hours to message after their last message.

## Where your DMs end up [#where-your-dms-end-up]

* If someone **follows you** — your DM goes to their main inbox.
* If they **don't follow you** and have never messaged you before — it goes to their message requests folder, with no notification.

DMs in the requests folder are easy to miss. On comment sources, use the public reply to point new commenters at their inbox:

> *Thanks for your comment! Just sent you a DM.*
>
> *Appreciate your interest! Check your inbox.*


---

---
title: "Messaging rules for Instagram"
description: "To prevent spam, Instagram puts some limits on who you can message and how often."
canonical_url: https://chatfuel.com/docs/instagram/messaging-rules-for-instagram
markdown_url: https://chatfuel.com/docs/instagram/messaging-rules-for-instagram.md
last_updated: 2026-06-18
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Messaging rules for Instagram

To prevent spam, Instagram puts some limits on who you can message and how often.

To prevent spam, Instagram puts some limits on who you can message and how often. &#x2A;*These rules apply to Instagram only.**

## Comments [#comments]

### New contacts [#new-contacts]

When a new contact leaves a comment on a post or reel:

* **You can send 1 message** to that contact in direct messages
* **No additional messages** can be sent until the contact replies to the first message
* This applies to **new contacts only** (those who never messaged you before)

### Existing contacts [#existing-contacts]

For contacts who have messaged you before, you can message them within time windows from their last message:

**Fuely AI**: *24 hours* — the same [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) concept used on WhatsApp

**Chats tab (live chat)**: *7 days* — humans have longer to reply

The 24-hour window for Fuely AI is driven by the bot's own replies — it opens and resets only when an automation matches and the bot actually answers, not on every interaction. For the full rules on when the window opens, extends, and resets, see [how Fuely AI sessions work](https://chatfuel.com/docs/ai-features/how-fuely-ai-sessions-work).


---

---
title: "How to Integrate with JSON API"
description: "Chatfuel lets you connect to any external service — CRM, booking system, inventory, or custom backend — using the JSON API plugin."
canonical_url: https://chatfuel.com/docs/integrations/how-to-integrate-with-json-api
markdown_url: https://chatfuel.com/docs/integrations/how-to-integrate-with-json-api.md
last_updated: 2026-07-03
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Integrate with JSON API

Chatfuel lets you connect to any external service — CRM, booking system, inventory, or custom backend — using the JSON API plugin.

Chatfuel lets you connect to any external service — CRM, booking system, inventory, or custom backend — using the JSON API plugin. Once added, it works like a regular REST API: you send requests, get responses, and use the data inside your flows.

For popular SaaS tools like Slack, Google Sheets, Notion, or HubSpot, you can skip the JSON API entirely — the AI Co-Worker can connect them for you via a secure authorization link, just ask it in chat.

> **Note:** Setting up a JSON API integration is one of the few steps the AI Co-Worker can't complete for you — flows are built manually in the Flow Builder. The Co-Worker can take you straight to the right page: just ask.

## Step 1: Add the JSON API plugin [#step-1-add-the-json-api-plugin]

1. Open your flow in the **Flow Builder**.
2. Add a new action block and select **JSON API** from the plugin list.
3. The plugin appears as a block you can configure with a URL, method, headers, and body.

## Step 2: Configure the request [#step-2-configure-the-request]

Set up the JSON API block just like any REST API call:

| Field       | What to enter                                                                            |
| ----------- | ---------------------------------------------------------------------------------------- |
| **URL**     | The full endpoint URL of the external service (e.g., `https://api.example.com/bookings`) |
| **Method**  | `GET`, `POST`, `PUT`, `PATCH`, or `DELETE`                                               |
| **Headers** | Any required headers, such as `Authorization` or `Content-Type: application/json`        |
| **Body**    | JSON payload for `POST`/`PUT`/`PATCH` requests                                           |

You can use Chatfuel user attributes inside any field by wrapping them in double curly braces: `{{attribute_name}}`. This lets you pass dynamic data — like the customer's name, phone number, or selected product — into your API calls.

## Step 3: Map the response [#step-3-map-the-response]

After the API returns a response, you can save values from the JSON response into Chatfuel user attributes. Use JSONPath notation to extract specific fields:

* `$.status` — top-level field
* `$.data.order_id` — nested field
* `$.items[0].name` — first item in an array

Mapped attributes are then available in subsequent blocks — text messages, conditions, or other API calls.

## Common use cases [#common-use-cases]

* **CRM sync** — send lead data (name, phone, email) to your CRM when a customer fills out a form.
* **Order lookup** — fetch order status from your backend and display it in the chat.
* **Booking confirmation** — create an appointment in your scheduling system and return the confirmation to the customer.
* **Inventory check** — verify product availability before recommending it.

## Tips [#tips]

* Always set `Content-Type: application/json` in headers when sending a JSON body.
* Test your endpoint outside Chatfuel first (e.g., with Postman or curl) to make sure it returns the expected response.
* Keep response payloads small — only return the fields you need.
* If the external service requires authentication, store API keys in user attributes or hardcode them in the header (never expose them to the end user).

## Troubleshooting [#troubleshooting]

| Problem                   | Fix                                                                           |
| ------------------------- | ----------------------------------------------------------------------------- |
| Request returns an error  | Double-check the URL, method, and headers. Test the same request in Postman.  |
| Response data not mapping | Verify the JSONPath matches the actual response structure.                    |
| Timeout or no response    | The external server may be slow or down. Add a fallback message for the user. |
| Authentication fails      | Confirm your API key or token is correct and hasn't expired.                  |


---

---
title: "Zapier Is Unavailable"
description: "Chatfuel does not support Zapier integration. If you are trying to connect your Chatfuel account to Zapier, it will not work — there is no Zapier app or…"
canonical_url: https://chatfuel.com/docs/integrations/zapier-is-unavailable
markdown_url: https://chatfuel.com/docs/integrations/zapier-is-unavailable.md
last_updated: 2026-07-03
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Zapier Is Unavailable

Chatfuel does not support Zapier integration. If you are trying to connect your Chatfuel account to Zapier, it will not work — there is no Zapier app or…

Chatfuel does not support Zapier integration. If you are trying to connect your Chatfuel account to Zapier, it will not work — there is no Zapier app or trigger available for Chatfuel.

## Why Zapier is not available [#why-zapier-is-not-available]

Chatfuel does not maintain a Zapier integration. Any Zapier listings or references you may find online are outdated and no longer functional.

## What to use instead [#what-to-use-instead]

For popular tools like Slack, Google Sheets, Notion, or HubSpot, the easiest path is the [AI Co-Worker](/docs/ai-features/what-the-ai-co-worker-can-do-for-you&#x29;: it can connect them for you via a secure authorization link — just ask it in chat (for example, &#x2A;"Connect my Google Sheets"*), approve the authorization, and the connection is live.

If you need to connect Chatfuel to a custom or less common service — a CRM, booking system, or your own backend — use the [JSON API plugin](https://chatfuel.com/docs/integrations/how-to-integrate-with-json-api). It lets you send and receive data from any REST API directly inside your flows, giving you full control over the request format, authentication, and response mapping.

For most use cases that Zapier would cover, the JSON API plugin is a direct replacement:

* **Send lead data to a CRM** — make a POST request to your CRM's API when a customer fills out a form.
* **Update a Google Sheet** — use the Google Sheets API to append rows with customer data.
* **Trigger a webhook** — call any webhook URL to notify an external system of an event in the chat.
* **Fetch data from external tools** — pull order status, appointment availability, or product info into the conversation.

## Quick summary [#quick-summary]

| Question                               | Answer                                                                                          |
| -------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Can I connect Chatfuel to Zapier?      | No — Zapier integration is not available                                                        |
| Is there a Zapier app for Chatfuel?    | No — any existing listings are outdated                                                         |
| How do I connect to external services? | Ask the AI Co-Worker to connect popular tools for you, or use the JSON API plugin in your flows |


---

---
title: "Can I Block a WhatsApp Lead?"
description: "No, blocking a lead is not currently available. This feature is in development."
canonical_url: https://chatfuel.com/docs/leads/can-i-block-a-whatsapp-lead
markdown_url: https://chatfuel.com/docs/leads/can-i-block-a-whatsapp-lead.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Block a WhatsApp Lead?

No, blocking a lead is not currently available. This feature is in development.

## Short answer [#short-answer]

No, blocking a lead is not currently available. This feature is in development.

## What you can do right now [#what-you-can-do-right-now]

While blocking isn't available yet, here are ways to handle unwanted leads:

* **Close the chat.** [Move the lead to Closed](https://chatfuel.com/docs/leads/how-to-close-live-chat) so it's out of your active pipeline and Fuely AI stops responding.
* **Let it auto-close.** Chats in the Sorting stage [auto-close after 24 hours](https://chatfuel.com/docs/leads/leads) of customer inactivity — no action needed.
* **Take over and stop replying.** If you don't want AI to engage with a specific contact, [assign yourself in Live Chat](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) to stop AI immediately, then simply don't reply.

## What's coming [#whats-coming]

We're working on the ability to block individual leads so they can no longer message your business through WhatsApp. Once available, you'll be able to block contacts directly from the Leads panel.

We'll update this article when the feature launches.


---

---
title: "Can I Clear or Refresh Chat History?"
description: "No. There is currently no way to clear, reset, or refresh the chat history with a contact in Chatfuel."
canonical_url: https://chatfuel.com/docs/leads/can-i-clear-chat-history
markdown_url: https://chatfuel.com/docs/leads/can-i-clear-chat-history.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Clear or Refresh Chat History?

No. There is currently no way to clear, reset, or refresh the chat history with a contact in Chatfuel.

## Short answer [#short-answer]

No. There is currently no way to clear, reset, or refresh the chat history with a contact in Chatfuel. The full conversation history is always preserved.

## Why it works this way [#why-it-works-this-way]

Chat history is part of the contact's record and is used by [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) to maintain context across conversations. Clearing it would break AI continuity and remove valuable sales context from your [Leads](https://chatfuel.com/docs/leads/leads) pipeline.

## What you can do instead [#what-you-can-do-instead]

* [Close the live chat](https://chatfuel.com/docs/leads/how-to-close-live-chat) to mark the conversation as finished and stop AI from responding. When the contact messages again, a new interaction begins — but previous history stays accessible.
* If you need to start fresh with a contact from AI's perspective, update the contact's lead stage or attributes rather than clearing the chat.


---

---
title: "Can I Export Chats?"
description: "No. Chatfuel does not have a chat export function. You cannot download or export conversation history as a file."
canonical_url: https://chatfuel.com/docs/leads/can-i-export-chats
markdown_url: https://chatfuel.com/docs/leads/can-i-export-chats.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Export Chats?

No. Chatfuel does not have a chat export function. You cannot download or export conversation history as a file.

## Short answer [#short-answer]

No. Chatfuel does not have a chat export function. You cannot download or export conversation history as a file.

## What you can do instead [#what-you-can-do-instead]

While there is no export button, the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) can read through your chats and answer questions about them. Just ask it in chat, and it can:

* Summarize conversations with a specific customer
* Pull out key details like names, phone numbers, or order info mentioned in chats
* Analyze patterns across multiple conversations — for example, what questions customers ask most often
* Give you stats on your [sales pipeline](https://chatfuel.com/docs/leads/leads) based on chat activity

Think of it as having an assistant who has read every conversation and can answer questions about them on the spot.

## How to use it [#how-to-use-it]

Open a chat with the AI Co-Worker and ask what you need. For example:

* *"Summarize my last 10 conversations and pull out common questions."*
* *"What are the most common questions customers asked this week?"*
* *"What did \[customer name] say about pricing?"*

The AI Co-Worker works with all your chat history across every connected channel.


---

---
title: "How Does Chat Assignment Work?"
description: "When you assign a chat to a team, Chatfuel picks a teammate at random."
canonical_url: https://chatfuel.com/docs/leads/how-does-chat-assignment-work
markdown_url: https://chatfuel.com/docs/leads/how-does-chat-assignment-work.md
last_updated: 2026-03-19
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How Does Chat Assignment Work?

When you assign a chat to a team, Chatfuel picks a teammate at random.

## Overview [#overview]

When you assign a chat to a team, Chatfuel picks a teammate at random. The system does not check each agent's current workload — it simply selects one of the available [teammates](https://chatfuel.com/docs/account/how-to-add-teammates) and routes the conversation to them.

## How it works [#how-it-works]

1. A conversation reaches the point where it needs a human agent — either through an automatic handoff or because you move the [lead to Selling](https://chatfuel.com/docs/leads/leads).
2. If you choose "Assign to team" (rather than picking a specific person), the system randomly selects one teammate from that team.
3. The selected agent receives the chat and can [take over from AI](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) immediately.

## What "random" means in practice [#what-random-means-in-practice]

* The assignment is random, similar to round-robin but without strict rotation tracking.
* There is no workload balancing — an agent who already has 20 open chats is just as likely to receive the next one as an agent with zero.
* Each assignment is independent of previous ones.

## Tips for managing workload [#tips-for-managing-workload]

Since automatic assignment does not account for workload, consider these approaches:

* **Set up assignment rules** — use [Fuely AI assignment rules](https://chatfuel.com/docs/ai-features/how-to-set-up-chat-assignment-rules) to automatically route chats to specific teammates based on conditions like city or language.
* **Assign manually** — open the lead and pick a specific teammate under **Assigned to** when you want to control distribution.
* **Use filters** — check the [Assigned to me and Unassigned filters](https://chatfuel.com/docs/leads/how-to-change-chat-filters) regularly so no chat falls through the cracks.
* **Rebalance as needed** — managers can reassign chats from overloaded agents to teammates with capacity by dragging leads on the [Kanban board](https://chatfuel.com/docs/leads/what-is-the-kanban-board).


---

---
title: "How to Change Chat Filters"
description: "Currently, it's not possible to rename, add, or remove chat filters in Chatfuel."
canonical_url: https://chatfuel.com/docs/leads/how-to-change-chat-filters
markdown_url: https://chatfuel.com/docs/leads/how-to-change-chat-filters.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Change Chat Filters

Currently, it's not possible to rename, add, or remove chat filters in Chatfuel.

## Can I rename or customize chat filters? [#can-i-rename-or-customize-chat-filters]

Currently, it's not possible to rename, add, or remove chat filters in Chatfuel. The Live Chat section uses a fixed set of filters to organize your conversations.

We've already forwarded this request to the Chatfuel team. They will review it and work on making customizable filters available as soon as possible.

## Default chat filters [#default-chat-filters]

The Live Chat comes with built-in filters that help you sort conversations:

* **All** — every conversation across all statuses
* **Assigned to me** — chats assigned to you
* **Unassigned** — chats not yet assigned to anyone
* **Assigned to...** — chats assigned to a specific teammate

These are the same filters available in the [Leads](https://chatfuel.com/docs/leads/leads) pipeline view.

## What you can do right now [#what-you-can-do-right-now]

While custom filters aren't available yet, you can still organize your chats effectively:

* **Use the existing filters** to quickly find conversations that need your attention
* **Assign chats** to yourself or [teammates](https://chatfuel.com/docs/account/how-to-add-teammates) to keep things organized
* **Move leads between stages** on the Leads board to reflect where each conversation stands
* **[Close chats](https://chatfuel.com/docs/leads/how-to-close-live-chat)** when they're resolved to keep your inbox clean


---

---
title: "How to Change Lead Stages"
description: "Currently, it's not possible to rename, add, or remove lead stages in Chatfuel."
canonical_url: https://chatfuel.com/docs/leads/how-to-change-lead-stages
markdown_url: https://chatfuel.com/docs/leads/how-to-change-lead-stages.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Change Lead Stages

Currently, it's not possible to rename, add, or remove lead stages in Chatfuel.

## Can I customize lead stages or statuses? [#can-i-customize-lead-stages-or-statuses]

Currently, it's not possible to rename, add, or remove [lead stages](https://chatfuel.com/docs/leads/leads) in Chatfuel. The pipeline uses a fixed set of five stages: Captured, Sorting, Qualified, Selling, and Closed.

We've already forwarded this request to the Chatfuel team. They will review it and work on making customizable stages available as soon as possible.

## Set it up in Leads [#set-it-up-in-leads]

While custom stages aren't available yet, you can still manage your pipeline effectively:

1. Go to the **Leads** tab in the sidebar.
2. Drag a lead card to the stage you want.
3. Close leads as won or lost to keep your pipeline clean.

Use assignee filters to organize leads by team member.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) what you want in chat:

* *"Move Maria García to the Qualified stage."*
* *"Close the lead +57 300 123 4567 as won."*

It updates the lead's stage for you and confirms what it set.


---

---
title: "How to Close Live Chat"
description: "To close a live chat, change the lead's status to Closed."
canonical_url: https://chatfuel.com/docs/leads/how-to-close-live-chat
markdown_url: https://chatfuel.com/docs/leads/how-to-close-live-chat.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Close Live Chat

To close a live chat, change the lead's status to Closed.

To close a live chat, change the [lead's status](https://chatfuel.com/docs/leads/leads) to **Closed**.

## Set it up in Leads [#set-it-up-in-leads]

There are two ways to do this:

### Option 1: Move it on the Kanban board [#option-1-move-it-on-the-kanban-board]

1. Go to the **Leads** tab in the sidebar.
2. Find the lead card you want to close.
3. Drag it to the **Closed** column.

### Option 2: Close from inside the chat [#option-2-close-from-inside-the-chat]

1. Open the conversation you want to close.
2. In the right panel, find the lead status.
3. Change the status to **Closed**.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) what you want in chat:

*"Close the chat with Maria as won."*

It moves the lead to Closed for you and confirms what it set.

## What happens after closing [#what-happens-after-closing]

* The lead moves to the Closed stage and is marked as won or lost.
* Fuely AI stops responding in that conversation — closing the chat ends the active [AI session](https://chatfuel.com/docs/ai-features/how-fuely-ai-sessions-work), so the bot won't keep replying off the previous interaction.
* The chat history is preserved — you can review it anytime.

## Good to know [#good-to-know]

* Chats in the Sorting stage [auto-close after 24 hours](https://chatfuel.com/docs/leads/leads) of customer inactivity.
* If you need to [take over from AI](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) before closing, you can assign the chat to yourself or reply directly.


---

---
title: "How to Get Alerts About New Chats or Bookings"
description: "You can get notified the moment a new chat arrives or a booking is made in two ways: subscribe to web notifications in your browser, or install the Chatfuel…"
canonical_url: https://chatfuel.com/docs/leads/how-to-get-alerts-about-new-chats-or-bookings
markdown_url: https://chatfuel.com/docs/leads/how-to-get-alerts-about-new-chats-or-bookings.md
last_updated: 2026-04-14
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Get Alerts About New Chats or Bookings

You can get notified the moment a new chat arrives or a booking is made in two ways: subscribe to web notifications in your browser, or install the Chatfuel…

You can get notified the moment a new chat arrives or a booking is made in two ways: subscribe to web notifications in your browser, or install the Chatfuel mobile app.

## Subscribe to web notifications [#subscribe-to-web-notifications]

When you're working in the Chatfuel dashboard, your browser can push an alert as soon as a new chat or booking comes in — even if the tab isn't active.

1. Open the Chatfuel dashboard in your browser.
2. When prompted, allow notifications for Chatfuel.
3. Keep the tab open (it can run in the background) to continue receiving alerts.

If you dismissed the prompt, re-enable notifications from your browser's site settings for the Chatfuel domain.

## Install the mobile app [#install-the-mobile-app]

For alerts on the go, [install the Chatfuel mobile app](https://chatfuel.com/docs/account/how-to-install-chatfuel-mobile-app) on iOS or Android. Once signed in, the app sends push notifications whenever a new customer message or [booking](https://chatfuel.com/docs/calendar/calendar) arrives.

Make sure push notifications are enabled in your phone's settings for the Chatfuel app, and that Do Not Disturb isn't blocking them.

## Which one should I use? [#which-one-should-i-use]

* **Web notifications** — best when you're actively working at your computer.
* **Mobile app** — best when you're away from your desk and want to stay reachable.

You can use both at the same time so you never miss a new chat or booking.


---

---
title: "Leads"
description: "Leads is the lightweight CRM inside Chatfuel: every chat becomes a lead card on a Kanban board that you can filter, assign to teammates and move through stages."
canonical_url: https://chatfuel.com/docs/leads/leads
markdown_url: https://chatfuel.com/docs/leads/leads.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Leads

Leads is the lightweight CRM inside Chatfuel: every chat becomes a lead card on a Kanban board that you can filter, assign to teammates and move through stages.

## What is Leads? [#what-is-leads]

Leads is your lightweight CRM built right into Chatfuel. Think of it as a visual sales pipeline where every customer chat becomes a "lead card" that moves through stages — from first contact to closed sale.

No more lost leads — everything's organized in a simple drag-and-drop board.

### Key features [#key-features]

* Qualify leads automatically with Fuely AI
* Visual drag-and-drop board for all leads
* Real-time data for stages
* [Assign teammates](https://chatfuel.com/docs/account/how-to-add-teammates) to specific stages (Sorting, Qualifying, or Selling)
* Filter by assignee
* Works well with Chats (your live chat)

## Set it up in Leads [#set-it-up-in-leads]

1. Open the **Leads** tab in your Chatfuel sidebar.
2. Drag lead cards between stages on the board as you work them.
3. Assign leads to teammates and use the assignee filters — details below.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) what you want in chat:

*"Move João to Selling."*

It moves leads between stages, searches your pipeline, and pulls pipeline stats for you, then confirms what it set.

> **Note:** Assigning a lead to a specific teammate is something the Co-Worker can't do — open the **Leads** tab and assign the card there.

## How Leads work [#how-leads-work]

Every lead goes through 5 stages, some automatic and some manual.

### Stages 1–3: Fuely AI (automatic) [#stages-13-fuely-ai-automatic]

* New conversations start in *Captured leads*
* Fuely AI quickly moves them to *Sorting leads* for qualification
* Once qualified, they automatically move to *Qualified leads*

Captured leads, Sorting leads, and Qualified leads are normally handled by Fuely AI.

### Stages 3–5: Your team (manual) [#stages-35-your-team-manual]

* You pick promising leads from *Qualified leads*
* Move them to *Selling* when you start actively working them
* Finally, move completed deals to *Closed* (won or lost)

After the Selling stage, all leads end up in Closed — won or lost.

## Assigning leads [#assigning-leads]

Leads can be assigned to specific team members or left unassigned. This helps you manage workload and track responsibility. To assign a chat to yourself or a teammate:

1. Click on the lead you want to edit.
2. Choose who to assign it to under **Assigned to**.

### Using filters [#using-filters]

Use the [filter tabs](https://chatfuel.com/docs/leads/how-to-change-chat-filters) to sort between:

* **All leads** — see everything in your pipeline
* **Assigned to me** — only leads you're responsible for
* **Unassigned** — leads available for pickup
* **Assigned to...** — leads assigned to specific teammates

## Lead stages [#lead-stages]

There are 5 total stages in Leads. These stages are currently fixed and [cannot be customized](https://chatfuel.com/docs/leads/how-to-change-lead-stages).

### 1. Captured leads [#1-captured-leads]

* Every new chat starts here
* Fuely AI quickly moves leads to *Sorting* for qualification
* Without Fuely AI, leads stay here until you move them manually

### 2. Sorting leads [#2-sorting-leads]

* Fuely AI qualifies leads at this stage
* When complete, leads automatically move to *Qualified*
* [Take manual control by replying](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) (assigns the chat to you)
* Auto-closes after 24 hours of customer inactivity

### 3. Qualified leads [#3-qualified-leads]

* Good prospects ready for pickup
* Your starting point as a salesperson
* Move to *Selling* when you're ready to work them

### 4. Selling [#4-selling]

* Active deals you're working
* Move leads here when you start engaging (calls, demos, proposals)
* You control everything at this stage

### 5. Closed [#5-closed]

* Finished deals (won or lost)
* Auto-moves here after 24 hours of inactivity
* Close manually to keep pipeline clean and track conversion rates

## Examples [#examples]

Here are common ways sales teams use Leads.

**For sales agents:**

* Check *Qualified leads* for new prospects
* Use the assignee filter to see only leads assigned to you
* Pick 2–3 leads from *Qualified* and move them to *Selling*
* Work your *Selling* pipeline throughout the day

**For sales managers:**

* Use assignee filters to see each team member's workload
* Check for bottlenecks — too many leads stuck in *Sorting* or *Qualified*
* Identify unassigned leads that need attention
* Track team performance by reviewing *Closed* deals


---

---
title: "What Is the Kanban Board?"
description: "Yes — the Leads section in Chatfuel is your Kanban board. It's a visual drag-and-drop pipeline where every customer conversation becomes a lead card that…"
canonical_url: https://chatfuel.com/docs/leads/what-is-the-kanban-board
markdown_url: https://chatfuel.com/docs/leads/what-is-the-kanban-board.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What Is the Kanban Board?

Yes — the Leads section in Chatfuel is your Kanban board. It's a visual drag-and-drop pipeline where every customer conversation becomes a lead card that…

## Is there a Kanban board in Chatfuel? [#is-there-a-kanban-board-in-chatfuel]

Yes — the [Leads](https://chatfuel.com/docs/leads/leads) section in Chatfuel is your Kanban board. It's a visual drag-and-drop pipeline where every customer conversation becomes a lead card that moves through stages.

If you're looking for a Kanban board, CRM, or sales pipeline — it's all in **Leads**.

## Where to find it [#where-to-find-it]

Click the **Leads** tab in your Chatfuel sidebar. You'll see a board with columns for each stage.

## How it works [#how-it-works]

The board has 5 fixed columns (stages):

1. **Captured** — every new chat starts here
2. **Sorting** — Fuely AI qualifies leads automatically
3. **Qualified** — good prospects ready for your team
4. **Selling** — deals you're actively working
5. **Closed** — finished deals (won or lost)

Drag and drop lead cards between columns to move them through your pipeline. The stages are currently fixed and [cannot be customized](https://chatfuel.com/docs/leads/how-to-change-lead-stages).

## Filtering your board [#filtering-your-board]

Use the built-in [filters](https://chatfuel.com/docs/leads/how-to-change-chat-filters) to focus on specific leads:

* **All** — see everything
* **Assigned to me** — your leads only
* **Unassigned** — leads available for pickup
* **Assigned to...** — leads belonging to a specific [teammate](https://chatfuel.com/docs/account/how-to-add-teammates)


---

---
title: "Where to Answer Comments"
description: "When someone comments on your Instagram, Facebook, or TikTok post, that conversation appears in your Chats tab — just like a regular DM."
canonical_url: https://chatfuel.com/docs/leads/where-to-answer-comments
markdown_url: https://chatfuel.com/docs/leads/where-to-answer-comments.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Where to Answer Comments

When someone comments on your Instagram, Facebook, or TikTok post, that conversation appears in your Chats tab — just like a regular DM.

## Overview [#overview]

When someone comments on your Instagram, [Facebook](https://chatfuel.com/docs/facebook/facebook-tasks), or TikTok post, that conversation appears in your **Chats** tab — just like a regular DM. You reply to comments from the same place you reply to direct messages.

## How it works [#how-it-works]

1. A customer leaves a comment on your post, reel, or ad.
2. Chatfuel creates a conversation thread in **Chats** (Live Chat) for that contact.
3. You see both the public comment and any private DM reply in the same thread.
4. To respond, open the thread and type your reply — exactly like answering a DM.

If [Fuely AI is handling comments automatically](https://chatfuel.com/docs/instagram/instagram-comment-autoreply), you'll see AI replies in the thread too. You can [take over from AI](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) at any point and continue the conversation yourself.

## Finding comment threads in Chats [#finding-comment-threads-in-chats]

Comment threads look like regular chats. To tell them apart, check the contact's source properties — comments show sources like "Instagram comment", "Instagram ad comment", or "Facebook comment." See the full list in [Instagram automations](https://chatfuel.com/docs/instagram/instagram-tasks).

You can also use [chat filters](https://chatfuel.com/docs/leads/how-to-change-chat-filters) to narrow down your view by assignee or lead stage.

## Why comments live in Chats [#why-comments-live-in-chats]

Chatfuel treats every customer interaction as a conversation, regardless of whether it started from a comment or a DM. This means:

* One place to manage all conversations — no switching between tabs
* Full [lead pipeline](https://chatfuel.com/docs/leads/leads) applies to comment contacts too
* You can [assign comment threads](https://chatfuel.com/docs/leads/how-does-chat-assignment-work) to teammates just like DM chats
* [Closing a chat](https://chatfuel.com/docs/leads/how-to-close-live-chat) works the same way


---

---
title: "Why Am I Not Getting Notifications?"
description: "When a conversation is handed over to live chat, you can receive alerts either through web notifications in your browser or through the Chatfuel mobile app."
canonical_url: https://chatfuel.com/docs/leads/why-am-i-not-getting-notifications
markdown_url: https://chatfuel.com/docs/leads/why-am-i-not-getting-notifications.md
last_updated: 2026-04-14
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Why Am I Not Getting Notifications?

When a conversation is handed over to live chat, you can receive alerts either through web notifications in your browser or through the Chatfuel mobile app.

When a conversation is handed over to live chat, you can receive alerts either through web notifications in your browser or through the [Chatfuel mobile app](https://chatfuel.com/docs/account/how-to-install-chatfuel-mobile-app). See [how to get alerts about new chats or bookings](https://chatfuel.com/docs/leads/how-to-get-alerts-about-new-chats-or-bookings) for the full setup.

## How to set up notifications [#how-to-set-up-notifications]

* **Web notifications** — open the Chatfuel dashboard in your browser and allow notifications when prompted. If you dismissed the prompt, re-enable it from your browser's site settings for the Chatfuel domain.
* **Mobile app** — install the Chatfuel mobile app, sign in with your account, and make sure push notifications are enabled in your phone's settings for the app.

Once set up, you will receive a notification whenever a customer message arrives in a conversation [assigned to you](https://chatfuel.com/docs/leads/leads) or waiting for a human reply.

## WhatsApp notifications [#whatsapp-notifications]

Notifications via WhatsApp are currently in development.

## Tips [#tips]

* Keep the mobile app installed and signed in so you don't miss messages from customers in the [Selling stage](https://chatfuel.com/docs/leads/leads).
* If you're not receiving push notifications, check that your phone's Do Not Disturb mode is off and that Chatfuel has notification permissions enabled.


---

---
title: "How to Connect Payments Inside Chatfuel"
description: "No. Chatfuel does not offer built-in payment gateway integrations."
canonical_url: https://chatfuel.com/docs/payments/how-to-connect-payments
markdown_url: https://chatfuel.com/docs/payments/how-to-connect-payments.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Connect Payments Inside Chatfuel

No. Chatfuel does not offer built-in payment gateway integrations.

## Does Chatfuel support direct payment methods? [#does-chatfuel-support-direct-payment-methods]

No. Chatfuel does not offer built-in payment gateway integrations. You cannot connect Stripe, PayPal, or any other payment processor directly to the platform.

## How to verify payments using receipt images [#how-to-verify-payments-using-receipt-images]

Even without a direct integration, your chatbot can still handle payment verification through receipt analysis. Here is how it works:

1. Your [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) asks the customer to make a payment using your preferred method (bank transfer, mobile payment, etc.).
2. The customer sends a photo or screenshot of the payment receipt inside the chat.
3. The AI analyzes the receipt image to confirm the payment was made.
4. Once verified, the conversation moves forward — for example, confirming an order or booking.

## Set it up in the Knowledge Base [#set-it-up-in-the-knowledge-base]

1. Add your accepted payment methods, bank details, and payment instructions to your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) so the AI can share them with customers.
2. Describe the payment verification flow in **Additional instructions** on your [automation](https://chatfuel.com/docs/ai-features/automations) (use **Main bot** to apply it everywhere): tell the AI what payment method customers should use, what a valid receipt looks like, and what to do after verification succeeds or fails.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) what you want in chat:

*"Set up my AI to send my payment details and verify the receipts customers send."*

It updates your payment instructions and how-to-pay info for you and confirms what it set.

> **Note:** The AI shares your payment info with customers and checks the receipts they send — it can't process charges.

## Tips [#tips]

* The AI can process both photos taken of physical receipts and screenshots of digital payment confirmations.
* If the receipt is unclear or cannot be verified, the AI can ask the customer to resend or escalate the conversation to your team.


---

---
title: "Fuely AI and Automations API Reference"
description: "Configure Fuely AI through the Public API: Automations and their settings, company knowledge, booking rules and WhatsApp broadcasts."
canonical_url: https://chatfuel.com/docs/public-api/ai-automations
markdown_url: https://chatfuel.com/docs/public-api/ai-automations.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Fuely AI and Automations API Reference

Configure Fuely AI through the Public API: Automations and their settings, company knowledge, booking rules and WhatsApp broadcasts.

Fuely AI is the assistant that answers a bot's contacts, and Automations decide where and how it answers. Through the Public API an integration can read and change Automations and their settings, fill in the company knowledge Fuely AI uses, set booking rules and create WhatsApp broadcasts. Reading works for **Agent** virtual users; every change needs **Editor**.

The API uses the same model as **Fuely AI → Automations** in the dashboard, described in [Automations](https://chatfuel.com/docs/ai-features/automations): the **Main bot** (scope `All`), one **base automation** per source and up to 30 **custom automations** per source that supports them.

## How to read Automations [#how-to-read-automations]

```graphql
type Bot {
  # Agent. All automations, or those of one scope.
  fuelyAutomations(scope: FuelyAutomationScope): [FuelyAutomation!]!
  fuelyAutomation(id: FuelyAutomationID!): FuelyAutomation!
  # Agent. Conversion events Fuely AI can send to Meta.
  availableMetaConversionEventNames: FuelyAvailableMetaConversionEventNames!
}
```

```graphql
query Automations($botID: BotID!) {
  bot(id: $botID) {
    fuelyAutomations {
      id
      scope          # All, WhatsAppDirectMessages, InstagramPostComments, …
      isBase         # true for Main bot and base automations
      name           # null for base automations
      enabled
      settings {
        __typename
        inheritsFrom { id scope }
        ... on FuelySettingIncomingMessages { howToReply messagePrompt }
      }
    }
  }
}
```

The scopes are `All` (Main bot); `WhatsAppDirectMessages`, `WhatsAppClickFromAds`, `WhatsAppClickFromPosts`; `InstagramDirectMessages`, `InstagramPostComments`, `InstagramAdComments`, `InstagramStoryReplies`, `InstagramIgMeLinks`, `InstagramClickFromAds`; `FacebookDirectMessages`, `FacebookPostComments`, `FacebookMMeLinks`, `FacebookClickFromAds`; `TikTokDirectMessages`, `TikTokPostComments`, `TikTokClickFromAds`; and `WebWidgetDirectMessage`.

## How to change Automations [#how-to-change-automations]

```graphql
type Mutation {
  # Editor. Custom automation, only for scopes that support targeting; up to 30 per scope.
  # Errors: FuelyAutomationNameInvalid, FuelyAutomationScopeInvalid, FuelyAutomationScopeLimitReached
  fuelyAutomationCreate(botID: BotID!, scope: FuelyAutomationScope!, name: String!): FuelyAutomation!
  # Editor. Custom automations only (FuelyAutomationNotRenamable, FuelyAutomationNotDeletable for base ones).
  fuelyAutomationSetName(botID: BotID!, id: FuelyAutomationID!, name: String!): FuelyAutomation!
  fuelyAutomationDelete(botID: BotID!, id: FuelyAutomationID!): Bot!
  # Editor. Turning Main bot off switches off all AI replies.
  fuelyAutomationSetEnabled(botID: BotID!, id: FuelyAutomationID!, enabled: Boolean!): FuelyAutomation!
  # Editor. Changes one setting; see below.
  fuelyAutomationUpdateSetting(botID: BotID!, id: FuelyAutomationID!, update: FuelySettingUpdateInput!): FuelyAutomation!
  # Editor. Writes settings onto base automations and creates custom automations in one call.
  fuelyAutomationApplyTemplate(botID: BotID!, template: FuelyAutomationTemplateInput!): Bot!
}
```

Names are 1 to 200 characters. Changes to one bot's Automations are applied one at a time; if another change is in progress, the call fails with `FuelyAutomationBeingEdited` and can be retried.

## How to update a setting [#how-to-update-a-setting]

`fuelyAutomationUpdateSetting` changes exactly one setting per call. `FuelySettingUpdateInput` has one field per setting: `messageDelays`, `whenAIReplies`, `catalogImages`, `incomingMessages`, `bookingRules`, `switchToHuman`, `followUps`, `collectContactInfo`, plus the targeting settings `keywords`, `listOfPosts`, `listOfAds`, `listOfStories`, `refLinks`, `publicReply`, `privateReply` and `sendEventsToMeta`. Each of them takes one of:

* `update`: an explicit value for this automation
* `setInheritFrom`: the ID of an automation to inherit the value from
* `setInheritFromScope`: the scope whose base automation to inherit from

Main bot can't inherit. A base automation can inherit only from Main bot; a custom automation, from Main bot or its own base automation. Other combinations fail with `FuelyInheritFromInvalid`, and a setting that doesn't exist in the scope fails with `FuelySettingNotAllowedInScope`.

Setting the AI instructions of the WhatsApp base automation, for example:

```graphql
mutation Instructions($botID: BotID!, $automationID: FuelyAutomationID!) {
  fuelyAutomationUpdateSetting(
    botID: $botID
    id: $automationID
    update: {
      incomingMessages: {
        update: {
          howToReply: UsingAI
          messagePrompt: "Answer in Portuguese. Offer a free consultation when asked about prices."
        }
      }
    }
  ) {
    id
    settings { ... on FuelySettingIncomingMessages { howToReply messagePrompt inheritsFrom { id } } }
  }
}
```

`messagePrompt` holds the **Additional instructions** and must be 1 to 5,000 characters. The `keywords` setting accepts up to 50 keywords of up to 50 characters each.

## Company knowledge and booking rules [#company-knowledge-and-booking-rules]

Fuely AI answers from the company information in the bot's Knowledge Base and books appointments by its booking rules. Read them with `bot.fuelyConfig { knowledgeBase usage booking }` (**Agent**). Changing them needs **Editor**:

```graphql
type Mutation {
  fuelyConfigSetCompanyName(botID: BotID!, companyName: String!): Bot!
  fuelyConfigSetEmail(botID: BotID!, email: String!): Bot!
  fuelyConfigSetPhone(botID: BotID!, phone: String!): Bot!
  fuelyConfigSetAddress(botID: BotID!, address: String!): Bot!
  fuelyConfigSetWebsite(botID: BotID!, website: String!): Bot!
  fuelyConfigSetHowToPay(botID: BotID!, howToPay: String!): Bot!
  fuelyConfigSetFAQs(botID: BotID!, faqs: [FuelyKnowledgeBaseFAQInput!]!): Bot!
  fuelyConfigSetAdditionalInstructions(botID: BotID!, additionalInstructions: String!): Bot!
  fuelyConfigSetBusinessHoursSchedule(botID: BotID!, schedule: FuelyBusinessHoursScheduleUpdateInput!): Bot!

  fuelyConfigBookingUpdateAppointments(botID: BotID!, update: FuelyConfigBookingAppointmentsUpdateInput!): Bot!
  fuelyConfigBookingUpdateConfirmation(botID: BotID!, enabled: Boolean!, additionalInfo: String): Bot!
  fuelyConfigBookingUpdateNotificationChannel(botID: BotID!, channel: FuelyBookingNotificationChannel!): Bot!
  fuelyConfigBookingUpdateLocale(botID: BotID!, locale: DashboardLocale!): Bot!
}
```

`fuelyConfigSetFAQs` replaces the whole list of questions and answers, so send every FAQ you want to keep. Products and services that Fuely AI offers are managed in the [bookings and catalog API](https://chatfuel.com/docs/public-api/bookings-and-catalog).

## WhatsApp broadcasts [#whatsapp-broadcasts]

A broadcast sends an approved WhatsApp template to a segment of contacts, once or on a schedule. Read broadcasts with `bot.fuelyBroadcasts(first, after)` (**Agent**). Create them with a filled template from the [messaging API](https://chatfuel.com/docs/public-api/messaging) (**Editor**):

```graphql
type Mutation {
  # A one-time broadcast, sent when you call whatsAppOneTimeNotificationSend.
  fuelyBroadcastWhatsAppOneTimeNotificationCreate(botID: BotID!, filledTemplateID: FilledWhatsAppTemplateID!): FuelyBroadcast!
  # A broadcast scheduled for sendTime, which must be in the future (FuelyBroadcastSendTimeCanNotBeInPast).
  fuelyBroadcastWhatsAppScheduledMessageCreate(botID: BotID!, filledTemplateID: FilledWhatsAppTemplateID!, sendTime: Time!): FuelyBroadcast!
}
```

Each broadcast is a small flow: `settingsBlock` holds when and to whom it is sent, and `payloadBlock` holds the template. Set the audience and timing with the `whatsAppOneTimeNotification*` and `whatsAppScheduledMessage*` mutations from the [flows API](https://chatfuel.com/docs/public-api/flows): for example, choose recipients with `whatsAppOneTimeNotificationUpdateSegment`, then send with `whatsAppOneTimeNotificationSend`.

## Subscription [#subscription]

```graphql
type Subscription {
  # Agent. Fires when any automation of the bot changes.
  fuelyAutomationUpdated(botID: BotID!): FuelyAutomation!
}
```

To try an automation without messaging real contacts, start a test chat with `previewResponsesStartForFuelyAutomation`, described in the [flows API](https://chatfuel.com/docs/public-api/flows).

## Common issues [#common-issues]

### "FuelyAutomationBeingEdited" [#fuelyautomationbeingedited]

Someone else, in the dashboard or through the API, is changing the bot's Automations at the same moment. Wait a second and retry.

### "FuelyAutomationScopeInvalid" when creating an automation [#fuelyautomationscopeinvalid-when-creating-an-automation]

Custom automations exist only on comment, ad, story and link sources. Direct-message scopes and `All` have only their base automation; change its settings instead.

### "FuelyInheritFromInvalid" [#fuelyinheritfrominvalid]

The inheritance target is not allowed. A base automation can inherit only from Main bot (`setInheritFromScope: All`), and a custom automation only from Main bot or its own base automation.


---

---
title: "Public API Authentication and Tokens"
description: "Send a personal API token (CLI token) or a virtual user token as a Bearer token. Use virtual users for daily calls and the personal token for account tasks."
canonical_url: https://chatfuel.com/docs/public-api/authentication
markdown_url: https://chatfuel.com/docs/public-api/authentication.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Public API Authentication and Tokens

Send a personal API token (CLI token) or a virtual user token as a Bearer token. Use virtual users for daily calls and the personal token for account tasks.

The Chatfuel Public API authenticates every request with a token in the `Authorization: Bearer <token>` header. There are two kinds of tokens: your **personal API token**, called the **CLI token** in the dashboard, and **virtual user tokens**, which belong to API-only members of a single bot. Use virtual user tokens for everyday integration work and keep the personal API token for the few operations that need a real person.

## How to send a token [#how-to-send-a-token]

Send the token in the `Authorization` header of every HTTP request:

```http
POST /graphql HTTP/1.1
Host: panel.chatfuel.com
Authorization: Bearer 3c9e5f…
Content-Type: application/json
```

For GraphQL subscriptions over WebSocket, put the same value in the connection init payload as `authToken`:

```json
{ "authToken": "Bearer 3c9e5f…" }
```

Tokens are opaque strings of 64 hexadecimal characters. Don't parse them or rely on their format. A request without a valid token can still reach the API, but every operation that needs a user fails with `Unauthorized`.

## Personal API token vs virtual user token [#personal-api-token-vs-virtual-user-token]

|             | Personal API token (**CLI token**)          | Virtual user token                                         |
| ----------- | ------------------------------------------- | ---------------------------------------------------------- |
| Belongs to  | You, a real Chatfuel user                   | A virtual user inside one bot                              |
| Sees        | Every bot and workspace you are a member of | Only its own bot                                           |
| Permissions | Your own role in each bot                   | The Editor or Agent role of the virtual user               |
| How many    | One per account                             | One per virtual user, up to 20 virtual users per bot       |
| Created in  | Dashboard → account menu → **CLI token**    | The `createVirtualUser` mutation                           |
| Lifetime    | 10 years, until revoked                     | 10 years, until regenerated or the virtual user is removed |

Both tokens call the same endpoint and the same operations. An operation that works inside a bot gives the same result with either token as long as the role allows it. The difference is scope: a leaked personal API token exposes your whole account, while a leaked virtual user token exposes one bot with a limited role.

## How to create, regenerate and revoke the personal API token [#how-to-create-regenerate-and-revoke-the-personal-api-token]

The personal API token is managed only in the Chatfuel dashboard, never through the API:

1. Open the account menu (your name or avatar) and select **CLI token**, or go to `https://panel.chatfuel.com/integration/auth/token`.
2. Click **Create token** and copy it. Chatfuel shows the personal API token only once.
3. To replace a lost or exposed token, click **Regenerate token**. The old token stops working right away, and the new one is shown once.
4. To switch the token off, click **Revoke token**. Everything that uses it loses access immediately.

Each account has exactly one personal API token at a time. Virtual users can't create a personal API token for themselves.

## How to get and rotate a virtual user token [#how-to-get-and-rotate-a-virtual-user-token]

A virtual user token is returned once by `createVirtualUser`. To rotate it, call `regenerateVirtualUserToken` with the virtual user's member ID: the old token stops working and the response contains the new one. To revoke access completely, remove the virtual user with `removeMemberFromBot` or with **Delete API user** in the bot's teammates. All three operations need a personal API token of a bot Admin. [Virtual users](https://chatfuel.com/docs/public-api/virtual-users) shows each call.

## Operations that need the personal API token [#operations-that-need-the-personal-api-token]

A virtual user works only inside its bot and only with the Editor or Agent role. Operations that change the account, the team, channel connections or workspaces reject virtual user tokens with `NotEnoughPermissions` and need a personal API token. The reference pages mark them **Personal token only**. They are:

* **Team:** `createVirtualUser`, `regenerateVirtualUserToken`, `removeMemberFromBot`, `changeBotMemberRoleV2`, `createBotInviteV2`, `botInviteDelete`, `leaveBot`
* **Bot:** `renameBot`, `deleteBot`, `createWorkspaceAndBot`, `botUpdateRolesConfig`, `botResetAPIToken`, `botSetOpenAIModel`, `botUnsetOpenAIModel`, `updateUserOpenedBotDate`
* **Bot settings that need the Admin role:** `botUpdateTimezone`, `botUpdateCountryCode`, `botUpdateIndustry`, `botSetLivechatAutoClosingConfig`
* **Channel connections:** `botConnectFacebookPage`, `botConnectInstagramAccount`, `botConnectTikTokAccount`, `botDisconnectContactScope`, the `botPlatformConnectionLink*` and `botPlatformAccessRefreshLink*` mutations and the `Bot.activePlatform*Links` fields, `fbPagesSyncForBusiness`, `fbPageSyncLatestPosts`, `whatsAppEntitiesStartRefetch`, `whatsAppPhoneSyncBizAppData`, `whatsAppPhoneSetProfileImageFile`
* **Workspaces and billing:** all `workspace*` mutations, `currentUser.workspace` and `currentUser.workspaces`, `Workspace.subscription`, `Workspace.usageStats`, the `billingSubscriptionUpdated` subscription
* **Your own account:** `setUserDashboardLocale`, `availableGoogleCalendars`

## How to keep tokens safe [#how-to-keep-tokens-safe]

* Keep tokens on your server, in a secret manager or encrypted environment variables. Never ship them to a browser, a mobile app or a public repository.
* Create a separate virtual user for each integration or each of your customers, so one leak affects one bot and one integration.
* Store which virtual user belongs to which of your users on your side. Chatfuel doesn't know how you map virtual users to your customers.
* Rotate a virtual user token with `regenerateVirtualUserToken` when someone who had access leaves, and regenerate the personal API token in the dashboard if it may have been exposed.
* Don't put tokens in URLs or logs.

## Common issues [#common-issues]

### "Unauthorized" [#unauthorized]

The token is missing, mistyped, regenerated or revoked, or the virtual user was removed. Check that the header is exactly `Authorization: Bearer <token>`.

### "NotEnoughPermissions" [#notenoughpermissions]

The token is valid but its owner may not run this operation: a virtual user called an operation from the personal-token list above, or the virtual user's role doesn't allow it. An Agent, for example, can't edit flows. Switch to the personal API token or [change the virtual user's role](https://chatfuel.com/docs/public-api/virtual-users).

### "A token already exists for your account. Regenerate it to get a new one." [#a-token-already-exists-for-your-account-regenerate-it-to-get-a-new-one]

Each account has one personal API token. The old one can't be shown again; click **Regenerate token** to get a new one.


---

---
title: "Bookings and Catalog API Reference"
description: "Manage bookings, specialists, products and services through the Public API: read the calendar, create and update appointments, and sync Google Calendar."
canonical_url: https://chatfuel.com/docs/public-api/bookings-and-catalog
markdown_url: https://chatfuel.com/docs/public-api/bookings-and-catalog.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Bookings and Catalog API Reference

Manage bookings, specialists, products and services through the Public API: read the calendar, create and update appointments, and sync Google Calendar.

The bookings and catalog part of the Chatfuel Public API covers what Fuely AI sells and schedules: products and services in the catalog, specialists with their working hours, and the bookings in the calendar. An integration can mirror bookings to another system, create appointments from a website or CRM, and keep the catalog in sync with a store. Reading works for **Agent** virtual users; creating and changing anything needs **Editor**.

## How to read bookings [#how-to-read-bookings]

```graphql
type Bot {
  # Agent. Bookings in the time range.
  bookingsV2(startTime: Time!, endTime: Time!): [BookingBase!]!
  bookingV2(id: BookingID!): BookingBase!
  # A booking contact without a chat, found by phone number.
  inlineContact(phoneNumber: String!): BookingInlineContact
}
```

```graphql
query Week($botID: BotID!) {
  bot(id: $botID) {
    bookingsV2(startTime: "2026-10-12T00:00:00Z", endTime: "2026-10-19T00:00:00Z") {
      id
      startTime
      endTime
      status          # Pending, Reschedule, Confirmed, Canceled, Attended, NoShow
      service { ... on GoodsService { id title } }
      specialist { id }
    }
  }
}
```

Times are RFC 3339 timestamps. A booking is linked either to an existing contact (`contactID`) or to an inline contact with a name and phone number, for people who booked without chatting with the bot.

## How to create and change bookings [#how-to-create-and-change-bookings]

```graphql
type Mutation {
  # Editor. Errors: BookingStartTimeRequired, BookingEndTimeRequired, BookingInvalidDuration,
  # BookingEndTimeBeforeStartTime, BookingContactPlatformNotAllowed
  bookingCreateV2(botID: BotID!, req: BookingInput!): BookingBase!
  bookingUpdateV2(botID: BotID!, id: BookingID!, req: BookingUpdateInput!): BookingBase!
  # Editor. Confirm, cancel or mark as attended or no-show.
  bookingStatusResolveV2(botID: BotID!, bookingID: BookingID!, status: BookingStatus!): BookingBase!
  bookingDeleteV2(botID: BotID!, id: BookingID!): BookingBase!
  # Editor. Errors: BookingInlineContactNoteTooLong
  bookingInlineContactSetNote(id: InlineContactID!, note: String): BookingInlineContact!
}

input BookingInput {
  contactID: ContactID                       # an existing contact, or
  inlineContact: BookingInlineContactInput   # { name, phoneNumber, note, countryCode }
  serviceID: GoodsItemID
  specialistID: SpecialistID
  startTime: Time!
  endTime: Time!
}
```

```graphql
mutation Book($botID: BotID!, $serviceID: GoodsItemID!, $specialistID: SpecialistID!) {
  bookingCreateV2(
    botID: $botID
    req: {
      inlineContact: { name: "Ana Souza", phoneNumber: "+5511999990000", countryCode: "BR" }
      serviceID: $serviceID
      specialistID: $specialistID
      startTime: "2026-10-14T13:00:00Z"
      endTime: "2026-10-14T14:00:00Z"
    }
  ) { id status }
}
```

## Booking subscriptions [#booking-subscriptions]

```graphql
type Subscription {
  # Agent.
  bookingAdded(botID: BotID!): Booking!
  bookingUpdated(botID: BotID!): Booking!
  bookingDeleted(botID: BotID!): BookingID!
}
```

## How to manage specialists [#how-to-manage-specialists]

Specialists are the people or resources a booking is made with, each with a profile, a weekly schedule and the services they provide. Read them with `bot.specialists` and `bot.specialist(id:)` (**Agent**).

```graphql
type Mutation {
  # Editor. Errors: SpecialistNameNotUnique, SpecialistFirstNameRequired, SpecialistFirstNameTooLong, …
  specialistCreate(botID: BotID!, info: SpecialistInfoInput!): Bot!
  specialistUpdate(botID: BotID!, specialistID: SpecialistID!, info: SpecialistInfoInput!): Specialist!
  specialistDelete(botID: BotID!, specialistID: SpecialistID!): Bot!
}

input SpecialistInfoInput {
  profile: SpecialistProfileInput!
  schedule: SpecialistScheduleInput!
  goodsServices: [GoodsItemID!]!
}
```

## How to connect a specialist's Google Calendar [#how-to-connect-a-specialists-google-calendar]

A specialist's Google Calendar keeps their availability in sync with the rest of their schedule. The calendar owner connects it through a link, so nobody shares Google credentials:

```graphql
type Mutation {
  # Editor. Creates a link the calendar owner opens to connect their Google Calendar.
  specialistCreateGoogleCalendarConnectionLink(botID: BotID!, specialistID: SpecialistID!): SpecialistGoogleCalendarLink!
  specialistDeleteGoogleCalendarConnectionLink(botID: BotID!, specialistID: SpecialistID!): Bot!
  # Editor. Starts a sync; follow its progress with taskUpdated. Errors: SpecialistDoesNotExist
  specialistStartGoogleCalendarSync(botID: BotID!, specialistID: SpecialistID!): Task!
  specialistDisconnectGoogleCalendar(botID: BotID!, specialistID: SpecialistID!, googleCalendarID: GoogleCalendarID!): Specialist!
}
```

`bot.availableGoogleCalendars`, the calendars of your own Google account, is **Personal token only**. [Files and tasks](https://chatfuel.com/docs/public-api/files-and-tasks) describes `Task` and `taskUpdated`.

## How to manage products and services [#how-to-manage-products-and-services]

The catalog holds products and services that Fuely AI can recommend and book. Read it with `bot.goodsCatalog`, `bot.goodsProduct(id:)` and `bot.goodsService(id:)` (**Agent**).

```graphql
type Mutation {
  # Editor. Errors: GoodsItemsTooMuchForBot, GoodsItemTitleRequired, GoodsItemTitleNotUnique,
  # GoodsItemTitleTooShort, GoodsItemTitleTooLong, GoodsItemDescriptionTooLong, …
  goodsProductCreate(botID: BotID!, product: GoodsProductInput!): Bot!
  goodsProductUpdate(botID: BotID!, itemID: GoodsItemID!, product: GoodsProductInput!): GoodsProduct!
  goodsProductDelete(botID: BotID!, itemID: GoodsItemID!): Bot!
  goodsServiceCreate(botID: BotID!, service: GoodsServiceInput!): Bot!
  goodsServiceUpdate(botID: BotID!, itemID: GoodsItemID!, service: GoodsServiceInput!): GoodsService!
  goodsServiceDelete(botID: BotID!, itemID: GoodsItemID!): Bot!
}

input GoodsProductInput {
  title: String!
  description: String!
  price: GoodsItemPriceInput      # { amount: "199.90", currency: … }
  images: [FileID!]!
  isAvailable: Boolean!
}

input GoodsServiceInput {
  title: String!
  description: String!
  price: GoodsItemPriceInput
  images: [FileID!]!
  durationSeconds: Int!
  isAvailable: Boolean!
}
```

Upload product images first, as described in [making requests](https://chatfuel.com/docs/public-api/requests), and pass their file IDs in `images`. Titles must be unique within the catalog. Update mutations replace the whole item, so send every field.

## Common issues [#common-issues]

### "BookingContactPlatformNotAllowed" [#bookingcontactplatformnotallowed]

The contact is on a channel bookings don't support. Use a contact from a supported channel, or book with an `inlineContact` by phone number.

### "GoodsItemTitleNotUnique" [#goodsitemtitlenotunique]

Another product or service already has this title. Titles are compared within the whole catalog of the bot.

### "NotEnoughPermissions" when an Agent creates a booking [#notenoughpermissions-when-an-agent-creates-a-booking]

Agents can read bookings, specialists and the catalog but can't change them. Use an Editor virtual user.


---

---
title: "Bots and Account API Reference"
description: "Read a bot and the current account with bot(id:) and currentUser. Renaming, deleting and creating bots and workspaces needs the personal API token."
canonical_url: https://chatfuel.com/docs/public-api/bots-and-account
markdown_url: https://chatfuel.com/docs/public-api/bots-and-account.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Bots and Account API Reference

Read a bot and the current account with bot(id:) and currentUser. Renaming, deleting and creating bots and workspaces needs the personal API token.

Every Public API call works with a bot, and the `bot(id:)` query is the entry point for reading everything inside it: contacts, conversations, flows, automations, bookings and settings. The `currentUser` query returns the account behind the token. A virtual user can read its bot and itself; changing bot-level settings, creating and deleting bots and managing workspaces need a [personal API token](https://chatfuel.com/docs/public-api/authentication).

Each operation below is marked with the lowest virtual user role that can run it (**Agent** or **Editor**), or **Personal token only**.

## How to read a bot [#how-to-read-a-bot]

`bot(id:)` returns the bot if the token's owner is a member of it. Any virtual user of the bot can read it (**Agent**).

```graphql
type Query {
  bot(id: BotID!): Bot!
}
```

```graphql
query BotInfo($botID: BotID!) {
  bot(id: $botID) {
    id
    title
    createdAt
    timezone      # IANA name, for example "America/Sao_Paulo"
    countryCode   # two-letter code, for example "BR"
    isReady
    openAIConfig { model }
    openAIModelOptions { model isDefault }
  }
}
```

The other `Bot` fields are covered on the pages for [contacts](https://chatfuel.com/docs/public-api/contacts), [messaging](https://chatfuel.com/docs/public-api/messaging), [flows](https://chatfuel.com/docs/public-api/flows), [AI automations](https://chatfuel.com/docs/public-api/ai-automations), [bookings and catalog](https://chatfuel.com/docs/public-api/bookings-and-catalog), [channels](https://chatfuel.com/docs/public-api/channels) and [team and roles](https://chatfuel.com/docs/public-api/team-and-roles).

`Bot.usageStats(from: Time!, to: Time!, groupBy: UsageStatsGroupBy!)` returns the bot's spending broken down by `Day` or `Month` (**Agent**).

## How to read the current account [#how-to-read-the-current-account]

`currentUser` returns the account that owns the token.

```graphql
query Me {
  currentUser {
    id
    name
    accountType          # Regular or Virtual
    hasPublicAPIToken
    botRole(botID: "your-bot-id") { roleTypeV2 }
    botsV2(first: 50) {
      edges { node { id title } }
      pageInfo { hasNextPage endCursor }
    }
  }
}
```

Under a virtual user token, `currentUser` is the virtual user itself with `accountType: Virtual`, and `botsV2` returns only its own bot. Under a personal API token, `botsV2` lists every bot you can access. To narrow the list, filter by bot title or workspace, for example `filter: { field: WorkspaceID, value: { type: Eq, val: "your-workspace-id" } }`, and sort with `orderBy: { orderBy: LastOpenedAt, direction: … }`, where `orderBy` is `LastOpenedAt`, `CreatedAt`, `Title` or `Usage`. Your email and linked social accounts are available only under the personal API token.

## Bot settings [#bot-settings]

Bot-level settings are changed by bot Admins only, so all of them need a personal API token:

```graphql
type Mutation {
  # Personal token only (Admin). IANA timezone, for example "Europe/Madrid".
  botUpdateTimezone(botID: BotID!, timezone: BotTimezone!): Bot!
  # Personal token only (Admin). Two-letter country code.
  botUpdateCountryCode(botID: BotID!, countryCode: CountryCode!): Bot!
  # Personal token only (Admin).
  botUpdateIndustry(botID: BotID!, industry: BotIndustryInput!): Bot!
  # Personal token only.
  renameBot(botID: BotID!, newTitle: String!): Bot!
  # Personal token only. What Editors and Agents may do in this bot.
  botUpdateRolesConfig(botID: BotID!, rolesConfig: RolesConfigInput!): Bot!
  # Personal token only. Only models from Bot.openAIModelOptions are accepted.
  botSetOpenAIModel(botID: BotID!, openAIModel: OpenAIModel!): Bot!
  # Personal token only. Returns the bot to the default model.
  botUnsetOpenAIModel(botID: BotID!): Bot!
  # Personal token only. Resets the legacy bot API key from Settings → API.
  botResetAPIToken(botID: BotID!): Bot!
  # Personal token only. Marks the bot as recently opened for sorting by LastOpenedAt.
  updateUserOpenedBotDate(botID: BotID!): CurrentUserAccount!
}
```

## How to create and delete bots [#how-to-create-and-delete-bots]

Creating and deleting bots is an account-level action and always needs a personal API token:

```graphql
type Mutation {
  # Personal token only. Creates a new workspace with one bot in it.
  createWorkspaceAndBot(initialTitle: String!, timezone: BotTimezone): Bot!
  # Personal token only. Creates a bot in an existing workspace.
  workspaceCreateBot(workspaceID: WorkspaceID!, initialTitle: String!, timezone: BotTimezone): Bot!
  # Personal token only. Deletes the bot and all of its virtual users.
  deleteBot(botID: BotID!): CurrentUserAccount!
}
```

After creating a bot, create a virtual user in it with `createVirtualUser`, as described in [virtual users](https://chatfuel.com/docs/public-api/virtual-users), and use that token for everything inside the new bot.

## Workspaces and billing [#workspaces-and-billing]

Workspaces group bots under one subscription. Virtual users are never workspace members, so every workspace operation needs a personal API token:

```graphql
type CurrentUserAccount {
  # Personal token only.
  workspaces: [Workspace!]!
  workspace(id: WorkspaceID!): Workspace!
  workspaceRoles: [WorkspaceRole!]!
}

type Mutation {
  # Personal token only. Creates an empty workspace with a default title.
  workspaceCreate: Workspace!
  workspaceRename(workspaceID: WorkspaceID!, newTitle: String!): Workspace!
  workspaceTransferBot(botID: BotID!, targetWorkspaceID: WorkspaceID!): Workspace!
  # Only an empty workspace without an active paid subscription can be deleted.
  workspaceDelete(workspaceID: WorkspaceID!): Boolean!
}

type Subscription {
  # Personal token only. Fires when the workspace's billing subscription changes.
  billingSubscriptionUpdated(workspaceID: WorkspaceID!): BillingSubscription!
}
```

A `Workspace` exposes `id`, `title`, `bots`, `botsLimit`, `subscription` and `usageStats(from, to, groupBy, botIDs)`. A virtual user can read `Bot.workspace { id title }` of its own bot but not the subscription or usage of the workspace.

## Other account operations [#other-account-operations]

```graphql
type Query {
  # Shows an invite before it is accepted. Virtual users can't accept invites.
  inviteInfo(inviteToken: BotInviteToken!): Invite!
  # Returns a Chatfuel dashboard text by its key, for example in DashboardLocale En, Es or Pt.
  translation(key: String!, locale: DashboardLocale!): String!
}

type Mutation {
  # Personal token only. Language of the Chatfuel dashboard for your account.
  setUserDashboardLocale(locale: DashboardLocale!): CurrentUserAccount!
}
```

## Common issues [#common-issues]

### "NotEnoughPermissions" when renaming a bot or changing its timezone [#notenoughpermissions-when-renaming-a-bot-or-changing-its-timezone]

Bot-level settings need the personal API token of a bot Admin. Virtual users, even with the Editor role, can't change them.

### "BotInvalidTimezone" [#botinvalidtimezone]

`botUpdateTimezone` accepts IANA timezone names such as `America/Mexico_City`. Abbreviations like `PST` and UTC offsets are rejected.

### "OpenAIModelNotAvailable" [#openaimodelnotavailable]

`botSetOpenAIModel` accepts only models listed in `bot.openAIModelOptions` for that bot.


---

---
title: "Channels API Reference"
description: "Read a bot's connected channels and manage WhatsApp, Instagram, Facebook, TikTok and website widget settings. Connecting channels needs the personal token."
canonical_url: https://chatfuel.com/docs/public-api/channels
markdown_url: https://chatfuel.com/docs/public-api/channels.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Channels API Reference

Read a bot's connected channels and manage WhatsApp, Instagram, Facebook, TikTok and website widget settings. Connecting channels needs the personal token.

A Chatfuel bot talks to contacts through connected channels: a WhatsApp number, an Instagram account, a Facebook Page, a TikTok account and the website chat widget. Through the Public API a virtual user can see which channels are connected, publish to Instagram, generate a wa.me link and change the website widget. Connecting and disconnecting channels, including connection links for your clients, needs a [personal API token](https://chatfuel.com/docs/public-api/authentication), because it grants access to someone's social accounts.

## How to see connected channels [#how-to-see-connected-channels]

Every connected channel is a contact scope of the bot (**Agent**):

```graphql
query Channels($botID: BotID!) {
  bot(id: $botID) {
    contactScopes {
      id
      __typename
      ... on WhatsAppPhoneContactScope { phone { id } }
      ... on InstagramAccountContactScope { instagramAccount { id } }
      ... on FacebookContactScope { facebookPage { id } }
      ... on TikTokAccountContactScope { tiktokAccount { id } }
      ... on WebWidgetContactScope { webWidget { id name isEnabled domains color } }
    }
    waPhoneConnectionState { waPhoneID status errorCode }
    botWhatsAppLink { phoneNumber title message }
  }
}
```

Under a virtual user token, `currentUser.instagramAccount(id:)` and `currentUser.tiktokAccount(id:)` return the accounts connected to the virtual user's bot (**Agent**). The lists `currentUser.instagramAccounts`, `tiktokAccounts`, `fbBusinesses` and `whatsAppBusinessAccounts` contain the social accounts a real person has linked, so they are useful only with the personal API token.

## How to connect and disconnect channels [#how-to-connect-and-disconnect-channels]

All of these are **Personal token only**:

```graphql
type Mutation {
  botConnectFacebookPage(botID: BotID!, pageID: FbPageID!): Bot!
  botConnectInstagramAccount(botID: BotID!, instagramAccountID: InstagramAccountID!): Bot!
  botConnectTikTokAccount(botID: BotID!, tiktokAccountID: TikTokAccountID!): Bot!
  botDisconnectContactScope(botID: BotID!, contactScopeID: ContactScopeID!): Bot!
}
```

These mutations connect accounts that the person behind the token has already linked to Chatfuel. To connect an account that belongs to someone else, such as your client, use a connection link.

## How to let a client connect their own account [#how-to-let-a-client-connect-their-own-account]

A connection link lets someone without dashboard access connect their WhatsApp, Instagram, TikTok or Facebook account to the bot. An access refresh link lets them grant permissions again for an account that is already connected. Both are **Personal token only**:

```graphql
type Mutation {
  # Creating a new link for the same bot and platform invalidates the previous one.
  # Redirect URLs, if set, must start with https://.
  botPlatformConnectionLinkCreate(botID: BotID!, platform: PlatformOperationLinkPlatform!, onSuccessRedirectURL: String, onFailureRedirectURL: String): PlatformConnectionLink!
  botPlatformConnectionLinkRevoke(botID: BotID!, linkID: PlatformOperationLinkID!): Bot!
  botPlatformAccessRefreshLinkCreate(botID: BotID!, platform: PlatformOperationLinkPlatform!, onSuccessRedirectURL: String, onFailureRedirectURL: String): PlatformAccessRefreshLink!
  botPlatformAccessRefreshLinkRevoke(botID: BotID!, linkID: PlatformOperationLinkID!): Bot!
}
```

`platform` is `whatsapp`, `instagram`, `tiktok` or `facebook`. The result contains the `url` to send to your client and its `expiresAt`. `bot.activePlatformConnectionLinks` and `bot.activePlatformAccessRefreshLinks` return the current links per platform, also with the personal API token only. When the client finishes, Chatfuel sends them to `onSuccessRedirectURL` or `onFailureRedirectURL`, and the new channel appears in `bot.contactScopes`.

## WhatsApp [#whatsapp]

```graphql
type Mutation {
  # Editor. A wa.me link with a prefilled message. title: 3 to 128 characters.
  # Errors: NoPhoneConnectedToBot, BotAlreadyHasWhatsAppLink
  botGenerateWhatsAppLink(botID: BotID!, title: String!, message: String): Bot!
  # Agent. Whether a payment method is attached to the WhatsApp Business Account in Meta.
  whatsAppBusinessAccountPaymentMethodHealthy(botID: BotID!, wabaID: WhatsappBusinessAccountID!): Boolean!
  # Personal token only. Profile picture of the number; the new picture arrives in whatsAppBusinessPhoneNumberUpdated.
  whatsAppPhoneSetProfileImageFile(id: WhatsAppBusinessPhoneID!, fileID: FileID!): WhatsAppBusinessPhoneNumber!
  # Personal token only. Sync contacts and chats of a number that also runs the WhatsApp Business app.
  whatsAppPhoneSyncBizAppData(id: WhatsAppBusinessPhoneID!): WhatsAppBusinessPhoneNumber!
  # Personal token only. Refresh your WhatsApp accounts from Meta in the background.
  whatsAppEntitiesStartRefetch: Boolean!
}

type Subscription {
  # Agent.
  waPhoneConnectionStateUpdated(botID: BotID!): WAPhoneConnectionState!
  whatsAppBusinessPhoneNumberUpdated(phoneID: WhatsAppBusinessPhoneID!): WhatsAppBusinessPhoneNumber!
}
```

## Instagram [#instagram]

Publishing posts to the connected Instagram account needs **Editor**. Media URLs must be publicly reachable, because Instagram downloads them.

```graphql
type Mutation {
  instagramAccountPublishImage(botID: BotID!, input: InstagramPublishImageInput!): InstagramPublishedMedia!     # { imageURL, caption }
  instagramAccountPublishCarousel(botID: BotID!, input: InstagramPublishCarouselInput!): InstagramPublishedMedia! # 2 to 10 items
  # Reels and video stories wait until Instagram finishes processing, up to 5 minutes.
  instagramAccountPublishReel(botID: BotID!, input: InstagramPublishReelInput!): InstagramPublishedMedia!       # { videoURL, caption, coverURL, shareToFeed, thumbOffset }
  instagramAccountPublishStory(botID: BotID!, input: InstagramPublishStoryInput!): InstagramPublishedMedia!     # { mediaType, mediaURL }

  # Agent. Refresh the account and its latest posts from Instagram (count up to 100).
  botInstagramRefetchLatestMedias(id: BotID!, count: Int!): Bot!
  instagramAccountRefetchMetaInfo(id: InstagramAccountID!): InstagramAccount!
  instagramAccountRefetchLatestMedias(id: InstagramAccountID!, count: Int!): InstagramAccount!
}

type Subscription {
  # Agent. A new post appeared on the connected account.
  botInstagramMediaAdded(id: BotID!): InstagramMedia!
}
```

`bot.instagramMediasConnection(first, after)` lists the account's posts (**Agent**). Publishing errors include `InvalidIGToken`, `InstagramDoesNotConnected`, `InstagramCarouselSizeInvalid` and `InstagramPublishContainerProcessingFailed`.

## Facebook [#facebook]

Facebook Page sync works with the Pages you have linked yourself, so all of it is **Personal token only**: `fbPagesSyncForBusiness(businessID)`, `fbPageSyncLatestPosts(pageID, count)` and the `fbPagesSyncStatusUpdated` and `fbPagePostsSyncStatusUpdated(pageID)` subscriptions.

## Website chat widget [#website-chat-widget]

The widget's ID comes from `bot.contactScopes` (`WebWidgetContactScope.webWidget.id`). Changing it needs **Editor**:

```graphql
type Mutation {
  webWidgetSetName(id: WebWidgetID!, name: String!): WebWidget!          # WebWidgetNameEmpty, WebWidgetNameTooLong
  webWidgetSetColor(id: WebWidgetID!, color: String!): WebWidget!
  webWidgetSetAvatar(id: WebWidgetID!, fileID: FileID!): WebWidget!      # upload to /upload/widget first
  webWidgetSetDomains(id: WebWidgetID!, domains: [String!]!): WebWidget! # WebWidgetDomainValidationFailed
  webWidgetSetIsEnabled(id: WebWidgetID!, isEnabled: Boolean!): WebWidget!
}
```

[Set up the chat widget for your website](https://chatfuel.com/docs/website/set-up-chat-widget-for-website) explains how the widget is installed on a site.

## Common issues [#common-issues]

### "NotEnoughPermissions" when connecting a channel with a virtual user token [#notenoughpermissions-when-connecting-a-channel-with-a-virtual-user-token]

Virtual users can't connect or disconnect channels or create connection links. Use the personal API token of a bot Admin, or send your client a connection link.

### "InvalidIGToken" [#invalidigtoken]

Instagram revoked Chatfuel's access to the account. Create an access refresh link with `botPlatformAccessRefreshLinkCreate` and ask the account owner to open it.

### "BotAlreadyHasWhatsAppLink" [#botalreadyhaswhatsapplink]

The bot already has a wa.me link. Read it from `bot.botWhatsAppLink`.


---

---
title: "Contacts API Reference"
description: "Search, read and update Chatfuel contacts: attributes, names, notes, assignees and sales stages, segments, CSV import and export, and contact events."
canonical_url: https://chatfuel.com/docs/public-api/contacts
markdown_url: https://chatfuel.com/docs/public-api/contacts.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Contacts API Reference

Search, read and update Chatfuel contacts: attributes, names, notes, assignees and sales stages, segments, CSV import and export, and contact events.

A contact is a person who has talked to the bot on WhatsApp, Instagram, Facebook, TikTok or the website widget. Through the Public API you can search contacts with segments, read their attributes, change names, attributes and notes, assign them to teammates or Fuely AI, move them between sales stages, and import or export them as CSV. Reading contacts works for **Agent** virtual users; editing a contact's data needs **Editor**.

Contacts are reached through `bot(id:)`. A contact's ID is also the ID of its conversation, as described in [messaging](https://chatfuel.com/docs/public-api/messaging).

## How to search and read contacts [#how-to-search-and-read-contacts]

```graphql
type Bot {
  # Agent. One contact by ID.
  contact(id: ContactID!): Contact!
  # Agent. Paginated search, up to 500 per page, optionally filtered by a segment and sorted by an attribute.
  contactsConnection(
    platforms: [Platform!]!          # whatsapp, instagram, facebook, tiktok, widget
    first: Int!
    before: ContactSearchCursor
    after: ContactSearchCursor
    segment: SegmentInput
    orderBy: ContactSearchOrderByInput   # { orderBy: <attribute name>, direction: Asc | Desc }
  ): ContactConnection!
  # Agent. Number of contacts matching the platforms and segment.
  contactsCount(platforms: [Platform!]!, segment: SegmentInput): Int!
  contactsTotalCount(platforms: [Platform!]!, segment: SegmentInput): Int!
}
```

`Contact` is an interface; WhatsApp contacts are `WhatsappContact` with an extra `phone` field, and there are similar types for the other channels. Every contact has:

```graphql
query Contact($botID: BotID!, $contactID: ContactID!) {
  bot(id: $botID) {
    contact(id: $contactID) {
      id
      name
      note
      updatedAt
      salesStageV2              # New, Sorting, Ready, WorkingOn, Won, Lost
      lastConversationMessageTime
      unreadMessagesCount
      unhandledSwitchToHuman    # handed to a human and not opened yet
      assignee {
        ... on PublicUserAccount { id name accountType }
        ... on FuelyAIAssignee { __typename }
      }
      attributes(names: ["email", "city"]) {
        attr { name type }
        value {
          ... on BotAttributeValueString { stringValue }
          ... on BotAttributeValueDouble { doubleValue }
          ... on BotAttributeValueBoolean { booleanValue }
          ... on BotAttributeValueDatetime { datetimeValue }
        }
      }
      ... on WhatsappContact { phone }
    }
  }
}
```

## How to filter contacts with segments [#how-to-filter-contacts-with-segments]

A segment is a set of filters joined with `AND` or `OR`. Segment and filter IDs are UUIDs that you generate, or call `segmentNew` to get an empty segment with an ID:

```graphql
query Leads($botID: BotID!) {
  bot(id: $botID) {
    contactsConnection(
      platforms: [whatsapp]
      first: 100
      segment: {
        id: "2b0c6a0e-6f0a-4a39-9d63-0b1f0d4f7a10"
        resultOperator: AND
        filters: [{
          id: "8f6d2a4e-1c3b-4f5a-9e7d-2a1b3c4d5e6f"
          byAttribute: { name: "city", defaultStrategy: { operator: IS, comparableValues: ["Lisbon"] } }
        }]
      }
    ) {
      edges { node { id name } }
      pageInfo { hasNextPage endCursor }
    }
  }
}
```

Attribute filters support the operators `IS`, `IS_NOT`, `STARTS_WITH`, `CONTAINS`, `LT`, `GT`, `IS_EMPTY` and `IS_NOT_EMPTY`; date attributes use `dateStrategy`. `bot.botAttributes(...)` lists the system and custom attributes a bot has, with their data types (**Agent**).

## How to update a contact [#how-to-update-a-contact]

```graphql
type Mutation {
  # Editor. Errors: ContactDoesNotExist, ContactNameTooLong, ContactNameRequired
  contactUpdateName(id: ContactID!, name: String!): Contact!
  # Editor. Creates or updates a custom attribute. System attributes can't be changed (SystemAttributeUpdateNotAllowed).
  contactAttributeUpdate(id: ContactID!, attrName: AttributeName!, attrValue: String!): Contact!
  # Editor. Deletes a custom attribute value from the contact.
  contactAttributeDelete(id: ContactID!, attrName: AttributeName!): Contact!
  # Editor. A free-text note shown on the contact card and in bookings. Errors: ContactNoteTooLong
  contactSetNote(id: ContactID!, note: String): Contact!
  # Agent. The person must have access to the bot's contacts (AssigneeHasNoAccess).
  contactSetAssignee(id: ContactID!, assigneeID: UserAccountID!): Contact!
  # Agent. Hands the contact to Fuely AI.
  contactSetFuelyAIAssignee(id: ContactID!): Contact!
  # Agent.
  contactRemoveAssignee(id: ContactID!): Contact!
  # Agent. Moves the contact on the Leads board.
  contactSetSalesStage(id: ContactID!, salesStageV2: SalesStageV2!): Contact!
  # Editor. Creates a WhatsApp contact by phone number for a calendar booking (source: CalendarBooking).
  whatsappContactCreateV2(botID: BotID!, data: WhatsappContactCreateInput!): Contact!
}
```

A virtual user can assign a contact to itself: pass its own `currentUser.id` as `assigneeID`.

Default values of bot attributes apply to every contact that has no value of its own (**Editor**):

```graphql
type Mutation {
  botAttributeCreateDefaultVal(botID: BotID!, attributeName: AttributeName!, defaultValue: String!): Bot!
  botAttributeUpdateDefaultVal(botID: BotID!, attributeName: AttributeName!, defaultValue: String!): Bot!
  botAttributeDeleteDefaultVal(botID: BotID!, attributeName: AttributeName!): Bot!
}
```

## How to read deals by sales stage [#how-to-read-deals-by-sales-stage]

The Leads board groups contacts by sales stage. Both queries work for **Agent**:

```graphql
type Bot {
  # Contacts in one stage, filtered by assignee (Any, Unassigned, FuelyAI or a specific AssigneeID).
  contactDealsConnection(
    first: Int!
    before: ContactSearchCursor
    after: ContactSearchCursor
    assigneeFilter: ContactAssigneeFilter!
    salesStageV2Filter: SalesStageV2!
  ): ContactConnection!
  # Number of contacts in each stage, optionally limited by the time of the last stage change.
  contactDealsByStages(filter: DealsByStagesFilter!): TotalsByStages!
}
```

## How to export and import contacts as CSV [#how-to-export-and-import-contacts-as-csv]

Exports and imports run in the background and report progress through a [task or a subscription](https://chatfuel.com/docs/public-api/files-and-tasks).

```graphql
type Mutation {
  # Agent. Export by segment; pass an empty attributes list to export all attributes.
  # Errors: CSVContactExportAlreadyInProgress
  csvContactExportStartBySegment(botID: BotID!, platforms: [Platform!]!, segment: SegmentInput, attributes: [AttributeName!]!): Task!
  # Agent. Export a list of contacts. Errors: CSVContactExportInvalidContactIDsCount
  csvContactExportStartByIDsList(botID: BotID!, contactIDs: [ContactID!]!, attributes: [AttributeName!]!): Task!
  # Agent. Cancels an export; the task status changes to cancelled shortly after.
  csvContactExportCancel(botID: BotID!, id: String!): Bot!

  # Editor. 1) upload the CSV file, 2) create the import, 3) map columns, 4) start it.
  csvContactImportCreate(botID: BotID!, fileID: FileID!, platform: Platform!, locale: DashboardLocale!): CSVContactImport!
  csvContactImportUpdateFile(botID: BotID!, id: CSVContactImportID!, fileID: FileID!): CSVContactImport!
  csvContactImportUpdateColumns(botID: BotID!, id: CSVContactImportID!, request: CSVContactImportColumnsUpdate!): CSVContactImport!
  # Errors: ContactScopeNotConnected if the channel, for example the WhatsApp number, is not connected.
  csvContactImportStart(botID: BotID!, id: CSVContactImportID!): CSVContactImport!
}
```

When an export task reaches the `Finished` status, its `data` is a `CSVContactsExport` whose `file { url }` is the CSV to download. `bot.lastActiveCSVContactsExportTask` (**Agent**) returns a running export, and `bot.latestCSVContactsImport(platform:)` (**Editor**) the last import with its counters and errors.

## Contact subscriptions [#contact-subscriptions]

```graphql
type Subscription {
  # Agent. Any change of one contact.
  contactUpdated(botID: BotID!, contactID: ContactID!): Contact
  # Agent. Changes on the Leads board for the given assignee filter.
  contactsDealUpdates(botID: BotID!, assigneeFilter: ContactAssigneeFilter!): ContactsDealUpdate
  contactsDealsPageIndicatorUpdates(botID: BotID!): DealsPageIndicatorUpdate
  # Editor. Progress of a CSV import.
  csvContactImportUpdated(botID: BotID!, id: CSVContactImportID!): CSVContactImport!
}
```

## Common issues [#common-issues]

### "NotEnoughPermissions" when an Agent edits a contact [#notenoughpermissions-when-an-agent-edits-a-contact]

Agents can assign contacts and change sales stages, but changing names, attributes and notes needs an Editor. If an Editor also gets this error, the bot's role settings may limit it to contacts assigned to it, as described in [team and roles](https://chatfuel.com/docs/public-api/team-and-roles).

### "SystemAttributeUpdateNotAllowed" [#systemattributeupdatenotallowed]

System attributes such as the phone number or the channel's profile data are set by Chatfuel. Store your own data in custom attributes.

### "ContactDoesNotExist" [#contactdoesnotexist]

The contact ID is wrong or belongs to another bot. Contact IDs are bot-specific; read them from `contactsConnection` of the same bot.


---

---
title: "Public API Errors and Error Codes"
description: "Public API errors arrive in the GraphQL errors array. Read extensions.code for the reason, such as Unauthorized or NotEnoughPermissions, and keep traceId."
canonical_url: https://chatfuel.com/docs/public-api/errors
markdown_url: https://chatfuel.com/docs/public-api/errors.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Public API Errors and Error Codes

Public API errors arrive in the GraphQL errors array. Read extensions.code for the reason, such as Unauthorized or NotEnoughPermissions, and keep traceId.

The Chatfuel Public API reports problems in the standard GraphQL `errors` array, usually with HTTP status 200. Each error carries a machine-readable `code` in its `extensions`, such as `Unauthorized`, `NotEnoughPermissions` or a business code like `ContactDoesNotExist`, plus a `traceId` that Chatfuel support can use to find the request. Base your error handling on the code, never on the message text.

## What an error response looks like [#what-an-error-response-looks-like]

The gateway in front of the Chatfuel services wraps errors coming from a service: the outer error has a generic message, and the original errors are in `extensions.errors`. A virtual user calling `createVirtualUser` gets a response like this:

```json
{
  "data": null,
  "errors": [
    {
      "message": "Failed to fetch from Subgraph 'useraccounting'.",
      "extensions": {
        "errors": [
          {
            "message": "auth error",
            "path": ["createVirtualUser"],
            "extensions": {
              "code": "NotEnoughPermissions",
              "service": "useraccounting",
              "traceId": "4bf92f3577b34da6a3ce929d0e0e4736"
            }
          }
        ]
      }
    }
  ]
}
```

The inner `extensions` can contain:

* `code`: why the operation failed.
* `service`: the Chatfuel service that answered.
* `traceId`: the request's trace ID. The same value is returned in the `chatfuel-trace-id` response header.
* `data`: for some business errors, a JSON string with details, for example which limit was reached.

Errors raised by the gateway itself, such as a syntax error or an unknown field, come without the wrapper and without a `code`; the `message` explains the problem. When some fields of a query fail and others succeed, `data` contains the successful parts and `errors` describes the rest.

## How to read error codes [#how-to-read-error-codes]

Collect codes from both levels so your code works with wrapped and unwrapped errors:

```js
function errorCodes(errors = []) {
  return errors.flatMap((error) => [
    error.extensions?.code,
    ...(error.extensions?.errors ?? []).map((inner) => inner.extensions?.code),
  ]).filter(Boolean);
}

const body = await res.json();
const codes = errorCodes(body.errors);
if (codes.includes('Unauthorized')) {
  // refresh or replace the token
}
```

## Authentication and permission errors [#authentication-and-permission-errors]

These two codes come with the message `auth error`:

* `Unauthorized`: the request has no valid token. The token is missing, mistyped, revoked or regenerated, the header lacks `Bearer `, or the virtual user was removed.
* `NotEnoughPermissions`: the token is valid, but its owner may not run this operation. Either a virtual user called an operation that needs a [personal API token](https://chatfuel.com/docs/public-api/authentication), or the role is too low, for example an Agent editing a flow. It also appears when the ID belongs to another bot.

## Business error codes [#business-error-codes]

Business errors come with the message `service error` and a code from the `DefinedErrorCode` enum of the public schema. Each reference page lists the codes its operations can return. The codes you will meet most often when working with virtual users:

| Code                        | Returned by                                                              | What to do                                              |
| --------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------- |
| `VirtualUserRoleNotAllowed` | `createVirtualUser`, `changeBotMemberRoleV2`                             | Use the `Editor` or `Agent` role                        |
| `VirtualUserNameInvalid`    | `createVirtualUser`                                                      | Use a name of 1 to 100 characters                       |
| `VirtualUsersLimitReached`  | `createVirtualUser`                                                      | Remove unused virtual users; the limit is 20 per bot    |
| `NotVirtualUser`            | `regenerateVirtualUserToken`                                             | Pass the member ID of a virtual user, not of a teammate |
| `VirtualUserNotAllowed`     | Operations a virtual user can never perform, such as accepting an invite | Run the operation with a personal API token             |

Other codes describe the data: `ContactDoesNotExist`, `ContactNoteTooLong`, `BookingEndTimeBeforeStartTime`, `GoodsItemTitleNotUnique`, `FileTooBig` and so on. Their names say what to fix.

## Internal errors [#internal-errors]

`InternalServerError`, with the message `internal server error`, means the request failed on Chatfuel's side. Retry with exponential backoff. If it keeps failing, contact support through the chat in the bottom-right corner of the dashboard and include the `traceId` and the time of the request.

## Common issues [#common-issues]

### "NotEnoughPermissions" for an operation that works in the dashboard [#notenoughpermissions-for-an-operation-that-works-in-the-dashboard]

The dashboard runs as you, with your role. The API call runs as the virtual user, with its Editor or Agent role, and some operations are never available to virtual users. Check the operation's role in the reference, or run it with the personal API token.

### "Unauthorized" right after rotating a token [#unauthorized-right-after-rotating-a-token]

`regenerateVirtualUserToken` and **Regenerate token** in the dashboard invalidate the old token immediately. Update every service that uses it.

### The response has "errors" but HTTP status 200 [#the-response-has-errors-but-http-status-200]

That is normal for GraphQL. Treat a response as successful only when `errors` is absent.


---

---
title: "Files and Tasks API Reference"
description: "Upload files and read file URLs, and follow long-running jobs such as contact exports and Google Calendar syncs with getTask and taskUpdated."
canonical_url: https://chatfuel.com/docs/public-api/files-and-tasks
markdown_url: https://chatfuel.com/docs/public-api/files-and-tasks.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Files and Tasks API Reference

Upload files and read file URLs, and follow long-running jobs such as contact exports and Google Calendar syncs with getTask and taskUpdated.

Files and tasks are the two helpers that the rest of the Chatfuel Public API relies on. Files are images, videos, audio and documents: you upload them over HTTP and pass their IDs to mutations, and you read files that contacts sent through their URLs. Tasks represent long-running jobs, such as a CSV contact export or a Google Calendar sync, that you start with a mutation and then follow until they finish.

## How to upload a file [#how-to-upload-a-file]

Uploads go to a separate HTTP endpoint as `multipart/form-data`, with the same `Authorization: Bearer <token>` header as GraphQL requests:

| Endpoint                                                               | Use it for                                                                                  | Lowest role |
| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ----------- |
| `POST /api/filestorage/upload/bot?botID=…&fileType=…`                  | Images and videos in flows, catalog images, specialist photos, CSV files for contact import | Editor      |
| `POST /api/filestorage/upload/livechat?botID=…&contactID=…&fileType=…` | Attachments in chat messages                                                                | Agent       |
| `POST /api/filestorage/upload/plugin?botID=…&pluginID=…&fileType=…`    | Header media of a filled WhatsApp template; `pluginID` is the `FilledWhatsAppTemplateID`    | Agent       |
| `POST /api/filestorage/upload/widget?widgetID=…&fileType=Image`        | The website widget avatar                                                                   | Editor      |

All of them live on `https://panel.chatfuel.com`. `fileType` is `Image`, `Video`, `Audio` or `Document`. An optional `extension` parameter sets the file extension without a dot, such as `jpg` or `pdf`:

```bash
curl -s "https://panel.chatfuel.com/api/filestorage/upload/bot?botID=$BOT_ID&fileType=Document&extension=csv" \
  -H "Authorization: Bearer $CHATFUEL_VIRTUAL_USER_TOKEN" \
  -F "file=@contacts.csv"
```

The response describes the stored file (some fields are left out here):

```json
{
  "id": "6f1c…",
  "type": "Document",
  "status": "Downloaded",
  "contentType": "text/csv",
  "size": 48213,
  "extension": "csv",
  "createdAt": "2026-10-06T10:15:00Z",
  "deleteAfter": "2026-10-06T12:15:00Z"
}
```

Pass `id` as a `FileID`, for example to `csvContactImportCreate`, `goodsProductCreate` or `whatsappAttachmentMessageSend`. A file that is not used within two hours, shown in `deleteAfter`, is deleted.

## How to read a file [#how-to-read-a-file]

```graphql
type Query {
  # A file by ID: { id url type status size }.
  file(id: FileID!): File!
}

type Mutation {
  # Starts downloading a file that is stored with an external service, such as media a contact sent on a channel.
  fileStartDownload(id: FileID!): File!
}
```

`status` tells you whether the file is ready:

* `Downloaded`: `url` points to the file.
* `NotDownloaded`: the file is still with the external service. Call `fileStartDownload` and read the file again later.
* `DownloadInProgress`: Chatfuel is fetching it.
* `Failed`: the download failed.
* `Expired`: the file was deleted after its retention period, or never existed.

Store the file ID rather than the URL, and read `url` again when you need the file.

## How to follow a task [#how-to-follow-a-task]

Operations that take a while return a `Task` immediately and continue in the background: `csvContactExportStartBySegment`, `csvContactExportStartByIDsList` and `specialistStartGoogleCalendarSync`. A task belongs to its bot, and any virtual user of the bot can read it (**Agent**).

```graphql
type Query {
  getTask(id: TaskID!): Task!
}

type Subscription {
  taskUpdated(id: TaskID!): Task!
}
```

```graphql
query Export($taskID: TaskID!) {
  getTask(id: $taskID) {
    id
    completedPoints
    totalPoints
    deadline
    statuses { type startedAt }   # Created, InProgress, Paused, Cancelled, Failed, Finished
    data {
      __typename
      ... on CSVContactsExport { file { url status } }
    }
  }
}
```

`statuses` is the history of the task; the last entry is the current status. Progress is `completedPoints` out of `totalPoints`. When a contact export reaches `Finished`, `data.file` is the CSV to download. Prefer the `taskUpdated` subscription over polling; if you poll, wait a few seconds between calls.

## Common issues [#common-issues]

### The upload returns 400 [#the-upload-returns-400]

A required query parameter such as `botID`, `contactID`, `widgetID` or `fileType` is missing or wrong, or the body is not `multipart/form-data`. Send the file as the first part of the form, as `curl -F` does.

### "FileDoesNotExist" when using an uploaded file [#filedoesnotexist-when-using-an-uploaded-file]

The file was uploaded more than two hours ago and never used, so it was deleted. Upload it again right before the mutation that uses it.

### A task stays in "InProgress" [#a-task-stays-in-inprogress]

Large exports and syncs can take several minutes. Check `completedPoints` to see that it is moving, and `deadline` for the latest time the task is expected to finish.


---

---
title: "Flows API Reference"
description: "Read and build Chatfuel flows through the Public API: flows and groups, blocks and connections, message and action components, keyword rules and test chats."
canonical_url: https://chatfuel.com/docs/public-api/flows
markdown_url: https://chatfuel.com/docs/public-api/flows.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Flows API Reference

Read and build Chatfuel flows through the Public API: flows and groups, blocks and connections, message and action components, keyword rules and test chats.

A flow is a scripted conversation made of blocks connected to each other; each block holds components such as a WhatsApp message, a list, a condition or a JSON API call. Through the Public API you can read flows, create and organize them, add and connect blocks, configure every component, manage keyword rules and triggers, and run test chats. Reading flows and running test chats works for **Agent** virtual users; every change needs **Editor**.

## How to read flows [#how-to-read-flows]

```graphql
type Bot {
  # Agent.
  flowGroups: [FlowGroup!]!            # { id name flows { id name } }
  flowsWithoutGroup: [RegularFlow!]!
  defaultReplyFlows: [DefaultReplyFlow!]!
  flow(flowID: FlowID!): Flow!
}
```

```graphql
query FlowStructure($botID: BotID!, $flowID: FlowID!) {
  bot(id: $botID) {
    flow(flowID: $flowID) {
      id
      name
      platform
      startingPointBlock { id }
      blocks {
        id
        name
        positionX
        positionY
        blockElements { id errors { __typename } }
      }
      connections { __typename }
    }
  }
}
```

`Block` and `BlockElement` are interfaces with one type per kind of block and component. Use inline fragments for the types you work with.

## How to create and organize flows [#how-to-create-and-organize-flows]

All mutations on this page change flows and need **Editor**.

```graphql
type Mutation {
  createFlow(botID: BotID!, platform: Platform!): Bot!
  updateFlowName(flowID: FlowID!, name: String!): Flow!
  deleteFlow(flowID: FlowID!): Bot!
  createFlowGroup(botID: BotID!): Bot!
  updateFlowGroupName(id: FlowGroupID!, name: String!): FlowGroup!
  deleteFlowGroup(flowGroupId: FlowGroupID!): Bot!
  moveFlowToGroup(flowID: FlowID!, groupID: FlowGroupID!): Bot!
  removeFlowFromGroup(flowID: FlowID!): Bot!
  sortFlowGroups(botID: BotID!, flowGroupIds: [FlowGroupID!]!): Bot!
  sortFlowsInGroup(groupID: FlowGroupID!, flowIds: [FlowID!]!): FlowGroup!
  sortUngroupedFlows(botID: BotID!, flowIds: [FlowID!]!): Bot!
}
```

## How to work with blocks and connections [#how-to-work-with-blocks-and-connections]

```graphql
type Mutation {
  updateBlockName(flowID: FlowID!, blockID: BlockID!, name: String!): Block!
  updateBlockPosition(flowID: FlowID!, blockID: BlockID!, positionX: Int!, positionY: Int!): Block!
  updateBlockPositionBulk(flowID: FlowID!, update: [BlockPositionBulkUpdate!]!): Flow!
  deleteBlock(flowID: FlowID!, blockID: BlockID!): Flow!
  blockSetStartingPoint(flowID: FlowID!, blockID: BlockID!): Flow!
  blockEnableEntryPoint(flowID: FlowID!, blockID: BlockID!): Flow!
  blockDisableEntryPoint(flowID: FlowID!, blockID: BlockID!): Flow!
  sortBlockElements(blockID: BlockID!, elementIDs: [BlockElementID!]!): Block!
  blockElementDelete(botID: BotID!, elementID: BlockElementID!): Flow!

  # Block → block, or a component's output handle (a button, a condition branch) → block.
  blockToBlockConnectionCreateOrUpdate(flowID: FlowID!, request: BlockToBlockConnectionCreateRequest!): Flow!
  blockToBlockConnectionDelete(flowID: FlowID!, sourceBlockID: BlockID!): Flow!
  componentToBlockConnectionCreateOrUpdate(flowID: FlowID!, request: ComponentToBlockConnectionCreateRequest!): Flow!
  componentToBlockConnectionDelete(flowID: FlowID!, sourceBlockElementID: BlockElementID!, sourceHandleID: ComponentHandleID!): Flow!
}
```

Positions are canvas coordinates in pixels, the same as in the dashboard flow editor.

## How to add components [#how-to-add-components]

Each component kind has a family of mutations named after it. Most families have three ways to create a component:

* `<family>CreateWithBlock(flowID, positionX, positionY)` creates a new block with the component at the given position.
* `<family>CreateWithBlockAndConnection(flowID, request, positionX, positionY)` also connects it to an existing block or handle given in `request: { sourceBlockID, sourceBlockElementID, sourceHandleID }`.
* `<family>CreateInBlock(blockID)` adds the component to an existing block.

Setters then take the component's `blockElementID`. A WhatsApp text message, for example:

```graphql
type Mutation {
  whatsAppTextCreateWithBlock(flowID: FlowID!, positionX: Int!, positionY: Int!): Flow!
  whatsAppTextCreateWithBlockAndConnection(flowID: FlowID!, request: UndefinedTargetBlockConnectionCreateRequest!, positionX: Int!, positionY: Int!): Flow!
  whatsAppTextCreateInBlock(blockID: BlockID!): ContentBlock!
  whatsAppTextSetText(blockElementID: BlockElementID!, text: String!): ContentBlock!
  whatsAppTextSetWaitForReplies(blockElementID: BlockElementID!, waitForReplies: Boolean!): ContentBlock!
  whatsAppTextSetSaveContactReplyToAttribute(blockElementID: BlockElementID!, saveContactReply: Boolean!, attribute: AttributeName): ContentBlock!
}
```

The component families and their mutations, after the family prefix:

* **`whatsAppText`, `whatsAppImage`, `whatsAppVideo`, `whatsAppAudio`, `whatsAppDocument`:** the three create mutations, `SetText` or `SetImageFile` / `SetVideoFile` / `SetAudioFile` / `SetDocumentFile`, `SetCaption` (image, video, document), `SetWaitForReplies`, `SetSaveContactReplyToAttribute`.
* **`whatsAppTextAndButtons`:** `CreateWithBlock`, `CreateWithBlockAndConnection`, `SetHeaderText`, `SetBodyText`, `SetFooterText`, `SetButtonTitle`, `AddNewContinueFlowButton`, `DeleteButton`, `MoveButton`, `WaitForReplies`, `SetSaveContactReplyToAttribute`.
* **`whatsAppTextAndURL`:** `CreateWithBlock`, `CreateWithBlockAndConnection`, `SetHeaderText`, `SetBodyText`, `SetFooterText`, `SetButtonTitle`, `SetButtonURL`, `WaitForReplies`, `SetSaveContactReplyToAttribute`.
* **`whatsAppList`:** `CreateWithBlock`, `CreateWithBlockAndConnection`, `SetBodyText`, `SetButtonTitle`, `AddRow`, `DeleteRow`, `ReorderRows`, `SetRowTitle`, `SetRowDescription`, `WaitForReplies`, `SetSaveContactReplyToAttribute`.
* **`whatsAppTemplate`:** `CreateWithBlock`, `CreateWithBlockAndConnection`, `SetTemplate`, `DeleteTemplate`, `SetHeaderTextParamValue`, `SetBodyTextParamValue`, `SetFooterTextParamValue`, `SetHeaderImageFile`, `SetHeaderVideoFile`, `SetHeaderDocumentFile`, `SetURLButtonTextParamValue`, `SetCopyCodeButtonCodeValue`, `SetWaitForReplies`, `SetSaveContactReplyToAttribute`.
* **`whatsAppScheduledMessage`:** `CreateWithBlock`, `CreateWithBlockAndWATemplate`, `UpdateSegment`, `SetFirstSendTime`, `SetRepeatType`, `SetRepeatEveryNDays`, `SetOnCertainDates`, `SetWeekdays`.
* **`whatsAppOneTimeNotification`:** `CreateWithBlock`, `CreateWithBlockAndWATemplate`, `UpdateSegment`, `Send`.
* **`widgetTextAndButtons`:** the three create mutations, `SetText`, `AddNewContinueFlowButton`, `AddNewOpenURLButton`, `AddNewPhoneButton`, `SetButtonTitle`, `SetButtonURL`, `SetButtonPhone`, `DeleteButton`, `MoveButton`, `SetWaitForReplies`, `SetSaveContactReplyToAttribute`.
* **`widgetImage`:** the three create mutations, `SetImageFile`, `SetWaitForReplies`, `SetSaveContactReplyToAttribute`.
* **`whatsAppSwitchToChatWithHumanAgent`, `facebookSwitchToChatWithHumanAgent`, `instagramSwitchToChatWithHumanAgent`, `tiktokSwitchToChatWithHumanAgent`, `widgetSwitchToChatWithHumanAgent`:** the three create mutations.
* **`aiAgent`:** `CreateWithBlock` and `CreateWithBlockAndConnection` with a `templateID` from the `aiAgentTemplates(locale:)` query, `UpdateAdditionalInstructions`, `CreateRule`, `DeleteRule`, `UpdateRuleTitle`, `UpdateRulePrompt`. A custom AI agent uses `aiAgentCustomUpdatePrompt`, `aiAgentCustomCreateRule`, `aiAgentCustomDeleteRule`, `aiAgentCustomUpdateRuleTitle` and `aiAgentCustomUpdateRulePrompt`.
* **`sendJson`** (the JSON API action): the three create mutations, `UpdateHTTPMethod`, `UpdateURL`, `AddHeader`, `UpdateHeaderTitle`, `UpdateHeaderValue`, `DeleteHeader`, `AddURLParam`, `UpdateURLParamTitle`, `UpdateURLParamValue`, `DeleteURLParam`, `UpdatePayloadType`, `UpdateCustomRequestPayload`, `EnableResponseParsingRules`, `DisableResponseParsingRules`, `ResponseAddParsingRule`, `UpdateResponseParsingRuleJSONPath`, `UpdateResponseParsingRuleAttributeName`, `DeleteResponseParsingRule`, `TestRequest`.
* **`albatoIntegration`:** the three create mutations with a `templateID`, `UpdateSelectedEvent`, `UpdateEventFieldValue`, `AddEventCustomField`, `RemoveEventCustomField`, `UpdateEventCustomFieldName`, `UpdateEventCustomFieldValue`.
* **`setCondition`:** the three create mutations, `UpdateSegment`.
* **`setContactProperty`:** the three create mutations, `SetAttribute`, `SetValue&#x60;. &#x2A;*`clearContactProperty`:** the three create mutations, `SetAttribute`.
* **`summarizeChat`:** the three create mutations, `AddEntry`, `UpdateEntry`, `DeleteEntry`.
* **`redirectToFlow`:** `CreateWithBlock`, `CreateWithBlockAndConnection`, `SetTargetFlow`, `RemoveTargetFlow`.
* **`triggeredMessage`:** `CreateWithBlock`, `CreateWithBlockAndWATemplate`, `SetSegment`.

[How to integrate with JSON API](https://chatfuel.com/docs/integrations/how-to-integrate-with-json-api) explains what each `sendJson` setting does.

## Keyword rules and triggers [#keyword-rules-and-triggers]

Keyword rules send a contact to a flow or reply with a message when their text matches. Reading them with `bot.keywordRules(first, after)` and changing them both need **Editor**.

```graphql
type Mutation {
  keywordRuleCreate(botID: BotID!): KeywordRule!
  # matchType: similarTo, contains or matches
  keywordRuleUpdateMatchType(botID: BotID!, keywordRuleID: KeywordRuleID!, matchType: KeywordRuleMatchType!): KeywordRule!
  keywordRuleUpdateKeywords(botID: BotID!, keywordRuleID: KeywordRuleID!, keywords: [String!]!): KeywordRule!
  # actionType: switchToFlow, sendMessage or doNothing, set per platform
  keywordRuleUpdateActionType(botID: BotID!, keywordRuleID: KeywordRuleID!, platform: Platform!, actionType: KeywordRuleActionType!): KeywordRule!
  keywordRuleDelete(botID: BotID!, keywordRuleID: KeywordRuleID!): Bot!

  # Triggers of triggered messages. An enabled trigger can't be changed (EnabledTriggerIsImmutable).
  # conditionType: LastMessageFromContact or ContactAttributeChanged
  triggerSetConditionType(id: TriggerID!, conditionType: TriggerConditionType!): Trigger!
  triggerSetAttributeFilter(id: TriggerID!, attrCondition: AttrFilterInput!): Trigger!
  triggerDeleteAttributeFilter(id: TriggerID!): Trigger!
  triggerSetDelay(id: TriggerID!, delay: TriggerDelayInput!): Trigger!
}
```

## How to test a flow in a test chat [#how-to-test-a-flow-in-a-test-chat]

A test chat runs a flow, the whole bot or an automation in a sandbox conversation without messaging real contacts. Starting a session works for **Agent**:

```graphql
type Mutation {
  previewResponsesStartInFlow(flowID: FlowID!): PreviewResponsesFlowSession!
  previewResponsesStartForBot(botID: BotID!, platform: Platform!): PreviewResponsesBotSession!
  previewResponsesStartForFuelyAutomation(botID: BotID!, fuelyAutomationID: FuelyAutomationID!): PreviewResponsesFuelyAutomationSession!
}
```

The session returns a `conversationID`. Play the contact's side with `previewResponsesWhatsappTextSend`, `previewResponsesInstagramTextSend`, `previewResponsesFacebookTextSend`, `previewResponsesTikTokTextSend` or `previewResponsesWidgetTextSend`, simulate comments with `previewResponsesInstagramPostCommentSend` and `previewResponsesFacebookPostCommentSend`, and simulate clicks with `previewResponsesWhatsappContinueFlowBtnClickSend`, `previewResponsesWhatsappListRowClickSend`, `previewResponsesWhatsappTemplateQuickReplyBtnClickSend` and the `previewResponsesWidget*BtnClickSend` mutations. All take `botID` and `conversationID`. Read the bot's answers with the `messageAdded` subscription described in [messaging](https://chatfuel.com/docs/public-api/messaging).

## Common issues [#common-issues]

### "NotEnoughPermissions" when changing a flow [#notenoughpermissions-when-changing-a-flow]

Agent virtual users can read flows and run test chats but not change them. [Change the role](https://chatfuel.com/docs/public-api/virtual-users) to Editor.

### "EnabledTriggerIsImmutable" [#enabledtriggerisimmutable]

A triggered message can't be edited while it is on. Turn it off in the dashboard, change the trigger, and turn it on again.

### A component shows errors in the flow [#a-component-shows-errors-in-the-flow]

`blockElements { errors }` lists what is missing, such as an empty text or an unset template. The dashboard shows the same errors on the block; fill in the missing settings with the component's setters.


---

---
title: "Messaging API Reference"
description: "Read conversations and send text, attachments and WhatsApp templates on WhatsApp, Instagram, Facebook, TikTok and the website widget through the Public API."
canonical_url: https://chatfuel.com/docs/public-api/messaging
markdown_url: https://chatfuel.com/docs/public-api/messaging.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Messaging API Reference

Read conversations and send text, attachments and WhatsApp templates on WhatsApp, Instagram, Facebook, TikTok and the website widget through the Public API.

The messaging part of the Chatfuel Public API covers the inbox: reading conversations and their messages, sending text, files and WhatsApp templates to contacts on every channel, taking over a chat as a human and handing it back to a flow, and listening for new messages in real time. All of it works for **Agent** virtual users, so a support or CRM integration doesn't need the Editor role.

A conversation belongs to one contact, and its `id` is the same value as the contact's ID. Wherever an operation asks for a `conversationID`, you can pass the contact ID from the [contacts API](https://chatfuel.com/docs/public-api/contacts).

## How to read conversations and messages [#how-to-read-conversations-and-messages]

```graphql
type Bot {
  # Agent. The conversation with one contact.
  conversation(conversationID: ConversationID!): Conversation!
  # Agent. Number of conversations per status: open, closed, automated.
  conversationCount: [ConversationCountEntry!]!
  # Agent. Open conversations nobody has looked at yet.
  unseenOpenDialogsCount: Int!
  # Agent. The inbox list: contacts with conversations, filtered like the dashboard inbox.
  contactChatsConnection(
    first: Int!, before: ContactSearchCursor, after: ContactSearchCursor,
    assigneeFilter: ContactAssigneeFilter!, unreadOnly: Boolean!,
    salesStageV2Filter: [SalesStageV2!]!, textInputFilter: String
  ): ContactConnection!
}
```

```graphql
query Chat($botID: BotID!, $contactID: ConversationID!) {
  bot(id: $botID) {
    conversation(conversationID: $contactID) {
      id
      platform          # whatsapp, instagram, facebook, tiktok, widget
      status            # open, closed, automated
      read
      messages(first: 20) {
        edges {
          node {
            id
            sentTime
            sender { name }
            errors { code originalErrMessage }
            ... on WhatsAppInTextMessage { text }
            ... on WhatsAppOutTextMessage { text whatsappStatus }
          }
        }
        pageInfo { hasNextPage endCursor }
      }
    }
  }
}
```

`Message` is an interface with one type per channel, direction and content, for example `WhatsAppInTextMessage`, `InstagramInStoryReplyMessage` or `FacebookOutAttachment`. Select the fields of the types you handle and skip the rest; new message types can appear at any time.

## How to send messages [#how-to-send-messages]

Every channel has a text mutation and an attachment mutation. They all take the bot ID and the conversation ID (the contact ID) and work for **Agent**:

```graphql
type Mutation {
  whatsAppTextMessageSend(botID: BotID!, conversationID: ConversationID!, message: WhatsAppTextMessageSendInput): WhatsAppOutTextMessage
  whatsappAttachmentMessageSend(botID: BotID!, conversationID: ConversationID!, message: WhatsAppAttachmentMessageSendInput!): WhatsAppOutAttachment
  instagramTextMessageSend(botID: BotID!, conversationID: ConversationID!, message: InstagramTextMessageSendInput!): InstagramOutTextMessage!
  instagramAttachmentMessageSend(botID: BotID!, conversationID: ConversationID!, message: InstagramAttachmentMessageSendInput!): InstagramOutAttachment
  facebookTextMessageSend(botID: BotID!, conversationID: ConversationID!, message: FacebookTextMessageSendInput!): FacebookOutTextMessage!
  facebookAttachmentMessageSend(botID: BotID!, conversationID: ConversationID!, message: FacebookAttachmentMessageSendInput!): FacebookOutAttachment
  tiktokTextMessageSend(botID: BotID!, conversationID: ConversationID!, message: TikTokTextMessageSendInput!): TikTokOutTextMessage!
  tiktokAttachmentMessageSend(botID: BotID!, conversationID: ConversationID!, message: TikTokAttachmentMessageSendInput!): TikTokOutAttachment
  widgetTextMessageSend(botID: BotID!, conversationID: ConversationID!, message: WidgetTextMessageSendInput): WebWidgetTextMessage
  widgetAttachmentMessageSend(botID: BotID!, conversationID: ConversationID!, message: WidgetAttachmentMessageSendInput): WebWidgetAttachmentMessage
}
```

```graphql
mutation Reply($botID: BotID!, $contactID: ConversationID!) {
  whatsAppTextMessageSend(
    botID: $botID
    conversationID: $contactID
    message: { text: "Hi! Your order has shipped.", clientId: "order-1042-shipped" }
  ) {
    id
    whatsappStatus
    errors { code originalErrMessage }
  }
}
```

`clientId` is an optional ID you choose; it comes back on the message and in subscription events, so you can match your own records to Chatfuel messages. For attachments, upload the file to the chat upload endpoint described in [making requests](https://chatfuel.com/docs/public-api/requests) and pass its ID. On WhatsApp, `attachmentType` is `image`, `document` or `audio`. Attachment mutations can fail with `FileContentTypeNotSupported`, `FileTooBig` or `FileDoesNotExist`.

Channel rules still apply. On WhatsApp, a free-form message reaches the contact only within the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) after the contact's last message; after that, send an approved template. Instagram and Facebook have similar messaging windows. Delivery problems show up in the message's `errors`.

## How to send a WhatsApp template [#how-to-send-a-whatsapp-template]

Sending a template takes three steps: pick an approved template, fill in its parameters, and send the filled template. All steps work for **Agent**.

```graphql
type Bot {
  # Agent. The bot's WhatsApp templates with their status, language, category and components.
  whatsAppTemplates(first: Int, after: WhatsAppTemplateCursor, before: WhatsAppTemplateCursor): WhatsappTemplates
  filledWhatsAppTemplate(id: FilledWhatsAppTemplateID!): FilledWhatsAppTemplate!
}

type Mutation {
  # 1. Create a one-time filled copy of a template.
  filledWhatsAppTemplateCreateTemporary(botID: BotID!, templateID: WhatsAppTemplateID!): FilledWhatsAppTemplate!
  # 2. Fill in variables and media.
  filledWhatsAppTemplateSetHeaderTextParamValue(templateID: FilledWhatsAppTemplateID!, name: WhatsAppTemplateTextParamName!, value: String!): FilledWhatsAppTemplate!
  filledWhatsAppTemplateSetBodyTextParamValue(templateID: FilledWhatsAppTemplateID!, name: WhatsAppTemplateTextParamName!, value: String!): FilledWhatsAppTemplate!
  filledWhatsAppTemplateSetFooterTextParamValue(templateID: FilledWhatsAppTemplateID!, name: WhatsAppTemplateTextParamName!, value: String!): FilledWhatsAppTemplate!
  filledWhatsAppTemplateSetHeaderImageFile(templateID: FilledWhatsAppTemplateID!, fileID: FileID!): FilledWhatsAppTemplate!
  filledWhatsAppTemplateSetHeaderVideoFile(templateID: FilledWhatsAppTemplateID!, fileID: FileID!): FilledWhatsAppTemplate!
  filledWhatsAppTemplateSetHeaderDocumentFile(templateID: FilledWhatsAppTemplateID!, fileID: FileID!, fileName: String!): FilledWhatsAppTemplate!
  filledWhatsAppTemplateSetURLButtonParamValue(templateID: FilledWhatsAppTemplateID!, buttonID: ComponentHandleID!, name: WhatsAppTemplateTextParamName!, value: String!): FilledWhatsAppTemplate!
  filledWhatsAppTemplateSetCopyCodeButtonCodeValue(templateID: FilledWhatsAppTemplateID!, buttonID: ComponentHandleID!, codeValue: String!): FilledWhatsAppTemplate!
  # 3. Send it to the contact.
  whatsAppTemplateSend(botID: BotID!, conversationID: ConversationID!, template: WhatsAppTemplateSendInput): WhatsAppOutTemplateMessage
}
```

Header images, videos and documents are uploaded to the template upload endpoint described in [files and tasks](https://chatfuel.com/docs/public-api/files-and-tasks). Check `FilledWhatsAppTemplate.errors` before sending: it lists parameters that are still empty or invalid. Use only templates whose `IsSupportedInLivechat` is `true`. [How to create WhatsApp templates](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates) explains how templates are created and approved.

## How to take over a chat and hand it back [#how-to-take-over-a-chat-and-hand-it-back]

```graphql
type Mutation {
  # Agent. Returns the conversation with a contact, creating it if the contact has none yet.
  conversationCreate(contactID: ContactID!): Conversation!
  # Agent. Opens a live chat with the contact (status open), like a teammate taking over the chat in the inbox.
  conversationStart(botID: BotID!, conversationID: ConversationID!): Conversation!
  # Agent. Closes the live chat and sends the contact to a flow.
  conversationFinishSendToFlow(botID: BotID!, conversationID: ConversationID!, flowID: FlowID!): Conversation!
  # Agent. Marks messages up to the given one as read.
  conversationReadMessages(botID: BotID!, conversationID: ConversationID!, before: MessageID!): Conversation!
}
```

Live chats can close automatically after a period without messages. `bot.livechatAutoClosingConfig` shows the setting to any virtual user; changing it with `botSetLivechatAutoClosingConfig(botID, cfg: { enabled, delay })`, where `delay` runs from `Minutes10` to `Days7`, is **Personal token only** and needs the Admin role.

## Messaging subscriptions [#messaging-subscriptions]

```graphql
type Subscription {
  # Agent. A new message in one conversation, incoming or outgoing.
  messageAdded(botID: BotID!, conversationID: ConversationID!): Message
  # Agent. A message changed, for example its WhatsApp delivery status.
  messageUpdated(botID: BotID!, conversationID: ConversationID!): Message
  # Agent. Changes in the inbox list for the given filters.
  contactsChatUpdates(
    botID: BotID!, assigneeFilter: ContactAssigneeFilter!, unreadOnly: Boolean!,
    salesStageV2Filter: [SalesStageV2!]!, textInputFilter: String
  ): ContactsChatUpdate
  # Agent. The number of unseen open conversations changed.
  unseenOpenDialogsCountChanged(botID: BotID!): Int
}
```

To follow the whole inbox, subscribe to `contactsChatUpdates` with `assigneeFilter: { type: Any }`, then open `messageAdded` for the conversations you care about.

## Common issues [#common-issues]

### A WhatsApp message is accepted but never delivered [#a-whatsapp-message-is-accepted-but-never-delivered]

The 24-hour window is probably closed. Read `errors` on the returned message or wait for `messageUpdated`; to reach the contact, send an approved template with `whatsAppTemplateSend`.

### "NotEnoughPermissions" when sending a message [#notenoughpermissions-when-sending-a-message]

The conversation belongs to another bot, or the bot's role settings limit the virtual user to contacts assigned to it. Assign the contact to the virtual user with `contactSetAssignee`, or change the role settings, as described in [team and roles](https://chatfuel.com/docs/public-api/team-and-roles).

### "FileContentTypeNotSupported" [#filecontenttypenotsupported]

The channel doesn't accept this file type, or the `fileType` used at upload doesn't match `attachmentType`. Upload the file again with the right type.


---

---
title: "Chatfuel Public API Overview"
description: "The Chatfuel Public API is a GraphQL API for managing bots, contacts, messages and flows from your server, authenticated with virtual user tokens."
canonical_url: https://chatfuel.com/docs/public-api/overview
markdown_url: https://chatfuel.com/docs/public-api/overview.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Chatfuel Public API Overview

The Chatfuel Public API is a GraphQL API for managing bots, contacts, messages and flows from your server, authenticated with virtual user tokens.

The Chatfuel Public API lets your own software work with Chatfuel bots: read and update contacts, send WhatsApp, Instagram, Facebook, TikTok and website chat messages, manage bookings and the catalog, and build flows and AI automations. It is a GraphQL API at `https://panel.chatfuel.com/graphql`, built for developers who connect Chatfuel to a CRM, an internal tool or their own product.

## What the Public API covers [#what-the-public-api-covers]

The Public API is a stable, documented part of the same GraphQL API the Chatfuel dashboard uses. Only fields that are explicitly published belong to it, so internal changes to the dashboard never break your integration. Published fields change only by adding new fields or arguments; anything that is going away is deprecated first and keeps working until a stated date, as described in [versioning and deprecation](https://chatfuel.com/docs/public-api/versioning).

The Public API is organized around a bot. Everything you can read or change belongs to one bot and is reached from the `bot(id:)` query or from a mutation that takes a `botID`:

* [bots and account data](https://chatfuel.com/docs/public-api/bots-and-account): the bot, its settings, the current account
* [team and roles](https://chatfuel.com/docs/public-api/team-and-roles): virtual users, teammates and invites
* [contacts](https://chatfuel.com/docs/public-api/contacts): contacts, attributes, assignees, notes, sales stages, CSV import and export
* [messaging](https://chatfuel.com/docs/public-api/messaging): conversations and messages on every channel, WhatsApp templates
* [flows](https://chatfuel.com/docs/public-api/flows): flows, blocks, keyword rules and test chats
* [AI automations](https://chatfuel.com/docs/public-api/ai-automations): Fuely AI settings, automations and broadcasts
* [bookings and catalog](https://chatfuel.com/docs/public-api/bookings-and-catalog): bookings, specialists, products and services
* [channels](https://chatfuel.com/docs/public-api/channels): WhatsApp, Instagram, Facebook, TikTok and website widget settings
* [files and tasks](https://chatfuel.com/docs/public-api/files-and-tasks): file upload and long-running tasks

## How access works: personal token and virtual users [#how-access-works-personal-token-and-virtual-users]

The Public API accepts two kinds of tokens, and they are not equal.

The **personal API token** belongs to you, a real Chatfuel user. In the dashboard it is called the **CLI token**. It acts with your own permissions in every bot you are a member of. Use it for a small set of account-level operations: creating and removing virtual users, managing teammates, renaming or deleting bots, connecting channels and working with workspaces.

A **virtual user** is an API-only account that you create inside one bot with the Editor or Agent role. It has its own token, cannot sign in to the dashboard and cannot see anything outside its bot. Use virtual user tokens for all day-to-day work: contacts, messages, flows, automations, bookings. Every example in these docs uses a virtual user token unless it says **Personal token only**.

Create one virtual user per integration, or one per customer of your product. If a token leaks, you remove a single virtual user instead of losing access to your whole account. [Authentication](https://chatfuel.com/docs/public-api/authentication) compares the two tokens in detail, and [virtual users](https://chatfuel.com/docs/public-api/virtual-users) explains roles and limits.

## What a request looks like [#what-a-request-looks-like]

Every call is an HTTP `POST` with a JSON body to `https://panel.chatfuel.com/graphql`. The token goes in the `Authorization` header with the `Bearer` scheme:

```bash
curl https://panel.chatfuel.com/graphql \
  -H "Authorization: Bearer $CHATFUEL_VIRTUAL_USER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"query Bot($id: BotID!) { bot(id: $id) { id title timezone } }","variables":{"id":"'"$BOT_ID"'"}}'
```

The response is standard GraphQL JSON with `data` and, when something fails, `errors`. [Making requests](https://chatfuel.com/docs/public-api/requests) covers pagination, subscriptions and file uploads, and [errors](https://chatfuel.com/docs/public-api/errors) lists the error codes.

## What you need to start [#what-you-need-to-start]

To start with the Public API you need:

* A Chatfuel account with the **Admin** role in the bot, because only bot admins can create virtual users.
* A server or backend job to make the calls. The Public API is for server-to-server use: browsers on other domains are blocked by CORS, and tokens must never be shipped to a browser or mobile app.
* About ten minutes for the [quickstart](https://chatfuel.com/docs/public-api/quickstart), which takes you from no token to your first API call.

## Limits at a glance [#limits-at-a-glance]

* **Rate limit:** 25 operations per second per account. Each virtual user has its own limit.
* **Virtual users:** up to 20 per bot.
* **Page size:** up to 500 items per page for contacts, conversations and keyword rules.
* **Tokens:** shown once when created and valid for 10 years unless revoked.

## Common issues [#common-issues]

### Requests from a web page fail with a CORS error [#requests-from-a-web-page-fail-with-a-cors-error]

The Public API accepts browser requests only from the Chatfuel dashboard. Call it from your server and keep the token there; your web page talks to your server.

### Can I use the API key from Settings → API? [#can-i-use-the-api-key-from-settings--api]

The **API** key in a bot's settings is a different, older key for the broadcasting and contact import endpoints. The Public API accepts only the personal API token (**CLI token**) and virtual user tokens.


---

---
title: "Chatfuel Public API Quickstart"
description: "Create a personal API token, find your bot ID, create a virtual user and make your first Chatfuel Public API query and mutation in about ten minutes."
canonical_url: https://chatfuel.com/docs/public-api/quickstart
markdown_url: https://chatfuel.com/docs/public-api/quickstart.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Chatfuel Public API Quickstart

Create a personal API token, find your bot ID, create a virtual user and make your first Chatfuel Public API query and mutation in about ten minutes.

The quickstart takes you from no token to a working Chatfuel Public API call in five steps: create your personal API token, find the bot ID, create a virtual user, read contacts with the virtual user token, and change a contact. You need the **Admin** role in the bot, a terminal with `curl` and `jq`, and about ten minutes.

## Step 1: Create your personal API token [#step-1-create-your-personal-api-token]

The personal API token is called the **CLI token** in the Chatfuel dashboard. You use it only to manage virtual users and other account-level settings.

1. Sign in to the Chatfuel dashboard at panel.chatfuel.com.
2. Open the account menu (your name or avatar) and select **CLI token**. The page is also available directly at `https://panel.chatfuel.com/integration/auth/token`.
3. Click **Create token**, then **Copy token**.
4. Save the personal API token in a password manager or a secret store. Chatfuel shows the token only once.

Keep the personal API token in an environment variable for the rest of the quickstart:

```bash
export CHATFUEL_PERSONAL_TOKEN="paste-your-cli-token-here"
```

Anyone with the personal API token can act as you in every bot you can access. Never commit it to a repository or put it in client-side code.

## Step 2: Find your bot ID [#step-2-find-your-bot-id]

Every Public API operation works inside a bot. List the bots your account can access with the personal API token:

```bash
QUERY='query MyBots {
  currentUser {
    botsV2(first: 50) {
      edges { node { id title } }
    }
  }
}'

jq -n --arg query "$QUERY" '{query: $query}' |
curl -s https://panel.chatfuel.com/graphql \
  -H "Authorization: Bearer $CHATFUEL_PERSONAL_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @-
```

The bot ID is also visible in the dashboard address bar: it is the part after `/automation/` when a bot is open. Save it:

```bash
export BOT_ID="your-bot-id"
```

## Step 3: Create a virtual user [#step-3-create-a-virtual-user]

A virtual user is an API-only member of one bot. It gets its own token, which you use for all other calls. Create one with the `createVirtualUser` mutation and the personal API token:

```bash
QUERY='mutation CreateVirtualUser($botID: BotID!) {
  createVirtualUser(
    botID: $botID
    name: "Quickstart integration"
    role: { roleType: Editor, botPermissions: [] }
  ) {
    member { id role { roleTypeV2 } user { id name accountType } }
    authToken
  }
}'

jq -n --arg query "$QUERY" --arg botID "$BOT_ID" \
  '{query: $query, variables: {botID: $botID}}' |
curl -s https://panel.chatfuel.com/graphql \
  -H "Authorization: Bearer $CHATFUEL_PERSONAL_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @-
```

The response contains the new member and its token:

```json
{
  "data": {
    "createVirtualUser": {
      "member": {
        "id": "6f1c…",
        "role": { "roleTypeV2": "Editor" },
        "user": { "id": "6f1b…", "name": "Quickstart integration", "accountType": "Virtual" }
      },
      "authToken": "3c9e…"
    }
  }
}
```

`authToken` is shown only in this response. Save it, together with `member.id`, which you need later to regenerate the token or remove the virtual user:

```bash
export CHATFUEL_VIRTUAL_USER_TOKEN="paste-authToken-here"
```

The role can be `Editor` or `Agent`. [Virtual users](https://chatfuel.com/docs/public-api/virtual-users) explains what each role allows.

## Step 4: Read contacts with the virtual user token [#step-4-read-contacts-with-the-virtual-user-token]

Switch to the virtual user token and read the bot title and the first ten contacts:

```bash
QUERY='query Contacts($botID: BotID!) {
  bot(id: $botID) {
    title
    contactsConnection(platforms: [whatsapp, instagram, facebook, tiktok, widget], first: 10) {
      edges { node { id name note updatedAt } }
      pageInfo { hasNextPage endCursor }
    }
  }
}'

jq -n --arg query "$QUERY" --arg botID "$BOT_ID" \
  '{query: $query, variables: {botID: $botID}}' |
curl -s https://panel.chatfuel.com/graphql \
  -H "Authorization: Bearer $CHATFUEL_VIRTUAL_USER_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @-
```

To get the next page, pass `pageInfo.endCursor` as the `after` argument. [Making requests](https://chatfuel.com/docs/public-api/requests) shows the full pagination pattern.

## Step 5: Change a contact [#step-5-change-a-contact]

Take a contact `id` from the previous response and set a note on it with `contactSetNote`:

```bash
export CONTACT_ID="a-contact-id-from-step-4"

QUERY='mutation SetNote($contactID: ContactID!, $note: String) {
  contactSetNote(id: $contactID, note: $note) { id note }
}'

jq -n --arg query "$QUERY" --arg contactID "$CONTACT_ID" --arg note "Synced from CRM" \
  '{query: $query, variables: {contactID: $contactID, note: $note}}' |
curl -s https://panel.chatfuel.com/graphql \
  -H "Authorization: Bearer $CHATFUEL_VIRTUAL_USER_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @-
```

The note now appears on the contact card in the dashboard, and the virtual user is listed in the bot's teammates with the **API** label. From here, browse the [contacts reference](https://chatfuel.com/docs/public-api/contacts) and [messaging reference](https://chatfuel.com/docs/public-api/messaging), or read about [tokens and authentication](https://chatfuel.com/docs/public-api/authentication) before going to production.

## Common issues [#common-issues]

### "NotEnoughPermissions" when creating a virtual user [#notenoughpermissions-when-creating-a-virtual-user]

`createVirtualUser` works only with a personal API token of a user who has the **Admin** role in the bot. A virtual user token is always rejected for this mutation, even if the virtual user exists in the same bot.

### "VirtualUserRoleNotAllowed" [#virtualuserrolenotallowed]

The role must be `Editor` or `Agent`. Virtual users can't be Admins or have a Custom role.

### "Unauthorized" [#unauthorized]

The token is missing, mistyped or revoked, or the header lacks the `Bearer ` prefix. Send `Authorization: Bearer <token>` and check that the token was not regenerated in the meantime.


---

---
title: "Making Public API Requests"
description: "Send GraphQL POST requests to panel.chatfuel.com/graphql, paginate with cursors, subscribe over WebSocket, upload files and stay within the rate limits."
canonical_url: https://chatfuel.com/docs/public-api/requests
markdown_url: https://chatfuel.com/docs/public-api/requests.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Making Public API Requests

Send GraphQL POST requests to panel.chatfuel.com/graphql, paginate with cursors, subscribe over WebSocket, upload files and stay within the rate limits.

The Chatfuel Public API is a single GraphQL endpoint, `https://panel.chatfuel.com/graphql`. Queries and mutations are HTTP `POST` requests with a JSON body; subscriptions use a WebSocket on the same address; files are uploaded to a separate HTTP endpoint and then referenced by ID. Every request carries a token in the `Authorization: Bearer <token>` header, as described in [authentication](https://chatfuel.com/docs/public-api/authentication).

## How to send a query or mutation [#how-to-send-a-query-or-mutation]

The request body is a JSON object with `query` and, optionally, `variables` and `operationName`. Always pass values through `variables` instead of building the query string by hand.

Node.js 18 or later:

```js
const ENDPOINT = 'https://panel.chatfuel.com/graphql';

async function gql(query, variables) {
  const res = await fetch(ENDPOINT, {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.CHATFUEL_VIRTUAL_USER_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ query, variables }),
  });
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  const body = await res.json();
  if (body.errors) throw new Error(JSON.stringify(body.errors));
  return body.data;
}

const data = await gql(
  `query Bot($id: BotID!) { bot(id: $id) { id title timezone } }`,
  { id: process.env.BOT_ID },
);
```

Python with `requests`:

```python
import os
import requests

ENDPOINT = "https://panel.chatfuel.com/graphql"

def gql(query, variables=None):
    res = requests.post(
        ENDPOINT,
        json={"query": query, "variables": variables or {}},
        headers={"Authorization": f"Bearer {os.environ['CHATFUEL_VIRTUAL_USER_TOKEN']}"},
        timeout=30,
    )
    res.raise_for_status()
    body = res.json()
    if body.get("errors"):
        raise RuntimeError(body["errors"])
    return body["data"]

data = gql("query Bot($id: BotID!) { bot(id: $id) { id title } }", {"id": os.environ["BOT_ID"]})
```

A GraphQL response can have HTTP status 200 and still contain `errors`. Always check the `errors` array, as described in [errors](https://chatfuel.com/docs/public-api/errors).

## How to paginate through lists [#how-to-paginate-through-lists]

Long lists are cursor-paginated connections: you pass `first` (page size) and `after` (the cursor of the last item you have), and read `edges { node cursor }` plus `pageInfo { hasNextPage endCursor }`. Cursors are opaque strings; store them as they are.

```js
async function allContacts(botID) {
  const query = `
    query Contacts($botID: BotID!, $after: ContactSearchCursor) {
      bot(id: $botID) {
        contactsConnection(
          platforms: [whatsapp, instagram, facebook, tiktok, widget]
          first: 500
          after: $after
        ) {
          edges { node { id name } }
          pageInfo { hasNextPage endCursor }
        }
      }
    }`;
  const contacts = [];
  let after = null;
  do {
    const { bot } = await gql(query, { botID, after });
    const page = bot.contactsConnection;
    contacts.push(...page.edges.map((e) => e.node));
    after = page.pageInfo.hasNextPage ? page.pageInfo.endCursor : null;
  } while (after);
  return contacts;
}
```

The largest page is 500 items for contacts, conversations and keyword rules. Smaller pages of 50 to 100 items keep responses fast when you select many fields.

## How to subscribe to events [#how-to-subscribe-to-events]

Subscriptions push events such as new messages, contact updates and booking changes. They run over WebSocket at `wss://panel.chatfuel.com/graphql` with the `graphql-transport-ws` protocol, implemented by the `graphql-ws` library. Pass the token in the connection parameters as `authToken`, including the `Bearer ` prefix:

```js
import { createClient } from 'graphql-ws';
import WebSocket from 'ws';

const client = createClient({
  url: 'wss://panel.chatfuel.com/graphql',
  webSocketImpl: WebSocket,
  connectionParams: { authToken: `Bearer ${process.env.CHATFUEL_VIRTUAL_USER_TOKEN}` },
  keepAlive: 10_000,
});

client.subscribe(
  {
    query: `subscription NewMessages($botID: BotID!, $conversationID: ConversationID!) {
      messageAdded(botID: $botID, conversationID: $conversationID) { id sentTime }
    }`,
    variables: { botID: process.env.BOT_ID, conversationID: process.env.CONTACT_ID },
  },
  { next: (event) => console.log(event.data), error: console.error, complete: () => {} },
);
```

Permissions are checked when you subscribe and again for every event, so a virtual user only receives events it is allowed to see. Each reference page lists its subscriptions. Reconnect with backoff when the socket closes.

## How to upload files [#how-to-upload-files]

Images, videos, audio and documents are uploaded over plain HTTP and then passed to mutations by their file ID. Send the file as `multipart/form-data` to the upload endpoint with the bot ID and the file type (`Image`, `Video`, `Audio` or `Document`):

```bash
curl -s "https://panel.chatfuel.com/api/filestorage/upload/bot?botID=$BOT_ID&fileType=Image&extension=jpg" \
  -H "Authorization: Bearer $CHATFUEL_VIRTUAL_USER_TOKEN" \
  -F "file=@product.jpg"
```

The response is JSON describing the stored file; its `id` is the `FileID` you pass to mutations such as `goodsProductCreate`, `whatsAppImageSetImageFile` or `csvContactImportCreate`. Uploading to a bot needs the Editor role. Use the file ID within two hours: uploads that are never used are deleted.

To attach a file to a chat message, upload it to the chat endpoint, which also takes the contact ID and works for Agents:

```bash
curl -s "https://panel.chatfuel.com/api/filestorage/upload/livechat?botID=$BOT_ID&contactID=$CONTACT_ID&fileType=Document&extension=pdf" \
  -H "Authorization: Bearer $CHATFUEL_VIRTUAL_USER_TOKEN" \
  -F "file=@invoice.pdf"
```

Template header media and the website widget avatar have their own upload endpoints. [Files and tasks](https://chatfuel.com/docs/public-api/files-and-tasks) lists all of them and describes the `File` type.

## Rate limits [#rate-limits]

The Public API allows **25 operations per second per account**. Each virtual user has its own allowance. A personal API token shares its allowance with your own dashboard session, which is one more reason to run integrations as virtual users. Requests without a token are limited to 40 per second per IP address.

One GraphQL operation counts once, however many fields it selects. When you go over the limit, the request is rejected with status `429 Too Many Requests`. Wait about a second and retry with exponential backoff; batch reads into one query where you can.

## Query size limits [#query-size-limits]

To protect the service, each operation is limited to a nesting depth of 300, 10,000 selected fields in total and a complexity of 8,000 per Chatfuel service, where complexity grows with every selected field. A query over a limit is rejected before it runs. Select only the fields you use and split very large reads into several queries.

## Common issues [#common-issues]

### "429 Too Many Requests" [#429-too-many-requests]

More than 25 operations per second ran under the same account. Add backoff and retries, combine reads into fewer queries, or spread the load over several virtual users.

### The WebSocket connects but every subscription fails with "Unauthorized" [#the-websocket-connects-but-every-subscription-fails-with-unauthorized]

The `authToken` connection parameter must include the scheme: `Bearer <token>`. A bare token is ignored.

### The upload endpoint returns 401 [#the-upload-endpoint-returns-401]

The token is missing, or the virtual user's role doesn't allow the upload: bot uploads need Editor, chat uploads need Agent or Editor. Check that `botID` belongs to the virtual user's bot.


---

---
title: "Team and Roles API Reference"
description: "List bot members and invites, and create, rotate, re-role or remove virtual users. Changing the team always needs a bot Admin's personal API token."
canonical_url: https://chatfuel.com/docs/public-api/team-and-roles
markdown_url: https://chatfuel.com/docs/public-api/team-and-roles.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Team and Roles API Reference

List bot members and invites, and create, rotate, re-role or remove virtual users. Changing the team always needs a bot Admin's personal API token.

The team of a Chatfuel bot is its list of members, human teammates and virtual users, each with a role: Admin, Editor, Agent or Custom. Any member can read the team; changing it, including everything to do with virtual users, needs the [personal API token](https://chatfuel.com/docs/public-api/authentication) of a bot Admin. This page lists the team operations; [virtual users](https://chatfuel.com/docs/public-api/virtual-users) walks through the virtual user lifecycle step by step.

## How to read members, roles and invites [#how-to-read-members-roles-and-invites]

Any virtual user of the bot can read the team (**Agent**):

```graphql
query Team($botID: BotID!) {
  bot(id: $botID) {
    members {
      id                                   # BotTeamMemberID, used by all team mutations
      role { roleTypeV2 botPermissions { object action } }
      user { id name accountType }         # accountType: Regular or Virtual
      removalWarnings                      # FuelySwitchToHumanAssignee if Fuely AI hands chats to this member
    }
    invites { id role { roleTypeV2 } used }
    rolesConfig {
      editorRoleSettings { allowOnlyAssignedToMeContacts allowContactsWithEmptyAssignee }
      agentRoleSettings { allowOnlyAssignedToMeContacts allowContactsWithEmptyAssignee }
    }
  }
}
```

`bot.member(id: BotTeamMemberID!)` returns one member. `currentUser.botRole(botID:)` returns the role of the token's owner in a bot.

## How roles and permissions work [#how-roles-and-permissions-work]

A role is a `roleTypeV2` plus a list of `botPermissions`, each an `object` with an `action` of `None`, `View` or `Edit`. The objects are `Ai`, `Configure`, `Roles`, `Pro`, `Inbox`, `Broadcasting`, `People`, `Analyze`, `Home`, `Bot`, `Workspaces`, `Flows`, `ContactsAssignedToOthers` and `ContactsUnassigned`.

Admin, Editor and Agent have fixed permission sets; only a Custom role uses the permissions you send. Virtual users can only be Editor or Agent. The bot's `rolesConfig` applies on top: when `allowOnlyAssignedToMeContacts` is on for a role, members with that role, virtual users included, see and change only contacts assigned to them. Keep this in mind when an Agent virtual user can't find contacts it expects.

## Virtual user operations [#virtual-user-operations]

All of these are **Personal token only** and need the Admin role in the bot:

```graphql
type Mutation {
  # Creates a virtual user and returns its token once. Role: Editor or Agent.
  # Errors: VirtualUserRoleNotAllowed, VirtualUserNameInvalid, VirtualUsersLimitReached
  createVirtualUser(botID: BotID!, name: String!, role: BotRoleInputV2!): VirtualUserCreateResult!
  # Revokes the current token of a virtual user and returns a new one. Errors: NotVirtualUser
  regenerateVirtualUserToken(memberID: BotTeamMemberID!): AuthToken!
}

type VirtualUserCreateResult {
  member: TeamMember!
  authToken: AuthToken!
}

input BotRoleInputV2 {
  roleType: BotRoleTypeV2!            # Admin, Editor, Agent or Custom
  botPermissions: [PermissionInput!]! # used only for Custom; pass [] otherwise
}
```

## Teammate and invite operations [#teammate-and-invite-operations]

These operations change the team, so they are **Personal token only**:

```graphql
type Mutation {
  # Changes a member's role. A virtual user can only be switched between Editor and Agent.
  # Errors: CustomRoleNotSupported, VirtualUserRoleNotAllowed
  changeBotMemberRoleV2(memberID: BotTeamMemberID!, newRole: BotRoleInputV2!): TeamMember!
  # Removes a member. For a virtual user this deletes the account and its token.
  removeMemberFromBot(memberID: BotTeamMemberID!): Bot!
  # Creates an invite link for a human teammate. Errors: CustomRoleNotSupported
  createBotInviteV2(botID: BotID!, role: BotRoleInputV2!, wlLogin: String): BotInviteCreateResult
  botInviteDelete(inviteID: BotInviteID!): Bot!
  # Leaves a bot you are a member of. Not available to virtual users (VirtualUserNotAllowed).
  leaveBot(botID: BotID!): CurrentUserAccount!
}
```

`createBotInviteV2` returns `botInviteToken`, which a person opens in the dashboard to join the bot. Virtual users can't accept invites; create them with `createVirtualUser` instead.

## Subscription [#subscription]

```graphql
type Subscription {
  # Fires when the role of the token's owner changes in any bot. role is null after removal.
  currentUserAccountRoleInBotUpdated: CurrentUserAccountRoleInBotUpdate!
}
```

An integration can listen to this subscription with its virtual user token to notice when an Admin changes its role or removes it.

## Common issues [#common-issues]

### An Agent virtual user gets "NotEnoughPermissions" or empty lists for some contacts [#an-agent-virtual-user-gets-notenoughpermissions-or-empty-lists-for-some-contacts]

Check `bot.rolesConfig.agentRoleSettings`. When `allowOnlyAssignedToMeContacts` is on, an Agent only works with contacts assigned to it; when `allowContactsWithEmptyAssignee` is off, unassigned contacts are hidden.

### "CustomRoleNotSupported" [#customrolenotsupported]

Invites and role changes accept Admin, Editor and Agent. Custom roles can't be assigned through these mutations.

### The removal warning "FuelySwitchToHumanAssignee" [#the-removal-warning-fuelyswitchtohumanassignee]

The member is set as the person Fuely AI hands conversations to. After removal, choose another person in the automation's **Switch to human** setting so chats are not left without an assignee.


---

---
title: "Public API Versioning and Deprecation"
description: "The Public API has one unversioned endpoint. Published fields never break: changes are additive, and removals are deprecated with a date first."
canonical_url: https://chatfuel.com/docs/public-api/versioning
markdown_url: https://chatfuel.com/docs/public-api/versioning.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Public API Versioning and Deprecation

The Public API has one unversioned endpoint. Published fields never break: changes are additive, and removals are deprecated with a date first.

The Chatfuel Public API has a single endpoint, `https://panel.chatfuel.com/graphql`, with no version number in the URL or headers. Instead of versions, it follows one rule: a published field never changes in a way that breaks existing clients. New capabilities are added alongside the old ones, and anything that has to go is deprecated with a removal date first.

## What the public schema guarantees [#what-the-public-schema-guarantees]

The public schema is the contract between Chatfuel and your integration. It contains only fields that Chatfuel has explicitly published for external use; the rest of the GraphQL API used by the dashboard is internal and is not available to rely on. Once a field is published, Chatfuel:

* doesn't remove it or rename it without the deprecation process below
* doesn't change its type or make an optional argument required
* doesn't remove input fields you can send

## Changes that can happen at any time [#changes-that-can-happen-at-any-time]

Additive changes are not breaking and can ship without notice:

* new queries, mutations, subscriptions and fields
* new optional arguments and input fields
* new values in enums, for example a new `Platform` or a new sales stage
* new types in unions and new implementations of interfaces, for example a new message type in a conversation

Write clients that tolerate these changes. Select only the fields you need, handle unknown enum values with a default branch, and skip union members and message types your code doesn't know.

## How deprecation works [#how-deprecation-works]

Removing a published field takes three steps:

1. The field gets a GraphQL `@deprecated` mark with a reason in a fixed format: "Stop using by YYYY-MM-DD. Use X instead." A public replacement ships at the same time, if one is needed. The field keeps working normally.
2. After the stated date, the field is hidden from the public schema. Requests that still select it fail with a validation error.
3. Later, the field is deleted.

The date in the reason is the last day you can count on the field. Until then, migrating to the replacement is safe at any time, because both work in parallel.

## How to stay up to date [#how-to-stay-up-to-date]

Deprecations are listed on the reference pages next to the affected operation, with the date and the replacement. Check the reference for the operations your integration uses when you plan maintenance. If a code generator in your project produces types from the schema, regenerate them after updating the schema file you build against, so the compiler shows any deprecated field you still use.

Changes in a published field's behavior that keep its shape, such as a new validation rule, appear as new error codes. Handle unknown error codes as a generic failure, as described in [errors](https://chatfuel.com/docs/public-api/errors).

## Common issues [#common-issues]

### A query that worked yesterday fails because a field is not defined [#a-query-that-worked-yesterday-fails-because-a-field-is-not-defined]

The field passed its deprecation date and was hidden, or the query selects a field that was never part of the public schema. Compare the query with the reference pages and use the documented replacement.

### My code breaks on a value it doesn't know [#my-code-breaks-on-a-value-it-doesnt-know]

An enum or union got a new member, which is an additive change. Add a default branch so new values are logged and ignored instead of crashing the integration.


---

---
title: "Virtual Users in the Chatfuel Public API"
description: "A virtual user is an API-only Editor or Agent in one bot with its own token. Create, rotate, re-role and remove virtual users with your personal API token."
canonical_url: https://chatfuel.com/docs/public-api/virtual-users
markdown_url: https://chatfuel.com/docs/public-api/virtual-users.md
last_updated: 2026-10-06
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Virtual Users in the Chatfuel Public API

A virtual user is an API-only Editor or Agent in one bot with its own token. Create, rotate, re-role and remove virtual users with your personal API token.

A virtual user is an API-only member of one Chatfuel bot. It has a name, the Editor or Agent role and its own Public API token, but no login: it can't sign in to the dashboard and can't see other bots, workspaces or billing. Virtual users are how integrations should call the Public API, because each one is limited to a single bot and a single role and can be revoked without touching your own account.

Only a bot **Admin** can create, rotate, re-role or remove virtual users, and only with a [personal API token](https://chatfuel.com/docs/public-api/authentication). A bot can have up to 20 virtual users.

## How to create a virtual user [#how-to-create-a-virtual-user]

**Personal token only.** Call `createVirtualUser` with the bot ID, a name and a role:

```graphql
mutation CreateVirtualUser($botID: BotID!) {
  createVirtualUser(
    botID: $botID
    name: "HubSpot sync"
    role: { roleType: Agent, botPermissions: [] }
  ) {
    member {
      id
      role { roleTypeV2 }
      user { id name accountType }
    }
    authToken
  }
}
```

* `name` is required, 1 to 100 characters after trimming spaces. It is what your teammates see in the dashboard, so name the virtual user after the integration or customer it serves.
* `role.roleType` must be `Editor` or `Agent`. The permissions in `botPermissions` are ignored: a virtual user always gets the standard permission set of its role, adjusted by the bot's role settings. Pass an empty list.
* `authToken` in the response is the virtual user's token. It is returned only here. Store it together with `member.id`, the member ID you need for every later change.

## What Editor and Agent virtual users can do [#what-editor-and-agent-virtual-users-can-do]

A virtual user's permissions come only from its role in the bot. The two allowed roles match the Editor and Agent roles of human teammates.

An **Editor** virtual user can:

* read and edit contacts, attributes, notes, assignees and sales stages, import and export contacts
* read conversations and send messages on every channel
* build and change flows, keyword rules, Fuely AI settings, automations and broadcasts
* manage bookings, specialists, products and services
* change website widget settings and publish to the connected Instagram account

An **Agent** virtual user can:

* read contacts and export them, but not edit their names, attributes or notes
* read conversations, send messages and WhatsApp templates
* assign contacts, set the Fuely AI assignee and move contacts between sales stages
* view flows and automations and run test chats, but not change them

Neither role can rename or delete the bot, change its timezone or country, manage teammates, connect or disconnect channels, or touch workspaces and billing. Those operations need a personal API token, as listed in [authentication](https://chatfuel.com/docs/public-api/authentication). Each operation in the reference pages states the lowest role that can run it.

## How to regenerate a virtual user token [#how-to-regenerate-a-virtual-user-token]

**Personal token only.** Rotate a token when it may be exposed or when someone with access leaves:

```graphql
mutation RotateToken($memberID: BotTeamMemberID!) {
  regenerateVirtualUserToken(memberID: $memberID)
}
```

The old token stops working immediately, and the mutation returns the new token as a string. If `memberID` belongs to a human teammate, the call fails with `NotVirtualUser`.

## How to change a virtual user's role [#how-to-change-a-virtual-users-role]

**Personal token only.** Switch a virtual user between Editor and Agent with `changeBotMemberRoleV2`:

```graphql
mutation MakeEditor($memberID: BotTeamMemberID!) {
  changeBotMemberRoleV2(memberID: $memberID, newRole: { roleType: Editor, botPermissions: [] }) {
    id
    role { roleTypeV2 }
  }
}
```

The same change is available in the dashboard: **Settings → Teammates**, select the virtual user, then **Manage teammate**. Only Editor and Agent are offered for virtual users.

## How to remove a virtual user [#how-to-remove-a-virtual-user]

**Personal token only.** Removing a virtual user deletes the account and its token permanently:

```graphql
mutation RemoveVirtualUser($memberID: BotTeamMemberID!) {
  removeMemberFromBot(memberID: $memberID) { id }
}
```

In the dashboard, open **Settings → Teammates**, select the virtual user and choose **Delete API user**. The dashboard warns: "This deletes the account and its API token permanently. Anything calling the API with that token will stop working. Delete anyway?"

Deleting a bot also deletes all of its virtual users.

## How virtual users appear in the dashboard and the API [#how-virtual-users-appear-in-the-dashboard-and-the-api]

In the dashboard, a virtual user is listed in **Settings → Teammates** with the **API** label after its name. The same label appears in the contact assignee list and in the Fuely AI human handoff settings, so you can assign contacts to an integration just like to a teammate.

In the API, a virtual user's account has `accountType: Virtual`. When a virtual user reads its own account with `currentUser`, it gets itself, not the person who created it, and `currentUser.botsV2` returns only its own bot. Your account and your other bots never appear in its responses.

## Common issues [#common-issues]

### "VirtualUsersLimitReached" [#virtualuserslimitreached]

The bot already has 20 virtual users. Remove ones you no longer use with `removeMemberFromBot`, or reuse an existing virtual user for the integration.

### "VirtualUserNameInvalid" [#virtualusernameinvalid]

The name is empty or longer than 100 characters after trimming spaces.

### "VirtualUserRoleNotAllowed" [#virtualuserrolenotallowed]

The role is `Admin` or `Custom`. Virtual users can only be `Editor` or `Agent`.

### "NotVirtualUser" [#notvirtualuser]

`regenerateVirtualUserToken` was called with the member ID of a human teammate. Use the member ID returned by `createVirtualUser`, or find it in `bot(id:) { members { id user { name accountType } } }`.


---

---
title: "Chatfuel Security Controls Overview"
description: "This article provides a comprehensive view of all security controls implemented at Chatfuel."
canonical_url: https://chatfuel.com/docs/security/chatfuel-security-controls-overview
markdown_url: https://chatfuel.com/docs/security/chatfuel-security-controls-overview.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Chatfuel Security Controls Overview

This article provides a comprehensive view of all security controls implemented at Chatfuel.

## Overview [#overview]

This article provides a comprehensive view of all security controls implemented at Chatfuel. Use it as a reference when evaluating our platform for your security and compliance needs.

***

## Administrative Controls [#administrative-controls]

| Control                             | Status                  |
| ----------------------------------- | ----------------------- |
| Security Management Process         | Implemented             |
| Assigned Security Responsibility    | Implemented             |
| Workforce Security & Authorization  | Implemented             |
| Information Access Management       | Implemented             |
| Security Awareness Training         | Implemented             |
| Security Incident Procedures        | Implemented             |
| Contingency Planning                | Implemented             |
| Business Associate Agreements (BAA) | Available upon request  |
| Written Policies and Procedures     | Implemented (EN and ES) |
| Documentation Retention             | 6-year retention        |

***

## Technical Controls [#technical-controls]

| Control                               | Status                       |
| ------------------------------------- | ---------------------------- |
| **Encryption**                        |                              |
| Data encryption in transit (TLS 1.2+) | Implemented                  |
| Data encryption at rest (AES-256)     | Implemented                  |
| **Access Control**                    |                              |
| Unique User Identification            | Implemented                  |
| Role-Based Access Control (RBAC)      | Implemented                  |
| Multi-Factor Authentication (MFA)     | Implemented for admin access |
| Emergency Access (Break-glass)        | Implemented with audit trail |
| SSH Key-Based Production Access       | Implemented                  |
| Bastion Host Architecture             | Implemented                  |
| **Monitoring**                        |                              |
| Continuous Activity Monitoring        | Implemented                  |
| Comprehensive Audit Logging           | Implemented                  |
| Failed Login Monitoring               | Implemented                  |
| 24/7 Security Event Monitoring        | Implemented                  |

***

## Network and Infrastructure [#network-and-infrastructure]

| Control                           | Status      |
| --------------------------------- | ----------- |
| Firewall Protection (GCP + Azure) | Implemented |
| Intrusion Detection System (IDS)  | Implemented |
| DDoS Protection (Cloudflare)      | Implemented |
| Network Segmentation              | Implemented |
| Vulnerability Scanning            | Implemented |
| Penetration Testing               | Implemented |

***

## Application Security [#application-security]

| Control                            | Status      |
| ---------------------------------- | ----------- |
| Secure Development Lifecycle       | Implemented |
| Input Validation and Sanitization  | Implemented |
| OWASP Top 10 Protection            | Implemented |
| API Security (auth, rate limiting) | Implemented |
| Dependency Management and Patching | Implemented |
| Security-Focused Code Review       | Implemented |

***

## Data Protection [#data-protection]

| Control                 | Status      |
| ----------------------- | ----------- |
| Data Classification     | Implemented |
| Data Minimization       | Implemented |
| Secure Data Deletion    | Implemented |
| Daily Encrypted Backups | Implemented |
| Live Data Replication   | Implemented |

***

## Compliance Status [#compliance-status]

| Framework             | Status                 |
| --------------------- | ---------------------- |
| GDPR                  | Fully Compliant        |
| HIPAA-Aligned         | Safeguards implemented |
| Brazil LGPD           | Compliant              |
| Mexico LFPDPPP (2025) | Compliant              |
| Colombia Ley 1581     | Compliant              |
| Chile Ley 19.628      | Compliant              |
| Argentina Ley 25.326  | Compliant              |
| Peru Ley 29733        | Compliant              |

***

## Request Documentation [#request-documentation]

For detailed security documentation, compliance certificates, or to schedule a security review, contact: &#x2A;*[tos@chatfuel.com](mailto:tos@chatfuel.com)**


---

---
title: "How Is My Data Protected?"
description: "Chatfuel takes data protection seriously. We use enterprise-grade encryption, host on certified cloud infrastructure, and maintain comprehensive technical…"
canonical_url: https://chatfuel.com/docs/security/how-is-my-data-protected
markdown_url: https://chatfuel.com/docs/security/how-is-my-data-protected.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How Is My Data Protected?

Chatfuel takes data protection seriously. We use enterprise-grade encryption, host on certified cloud infrastructure, and maintain comprehensive technical…

## Overview [#overview]

Chatfuel takes data protection seriously. We use enterprise-grade encryption, host on certified cloud infrastructure, and maintain comprehensive technical controls to keep your data safe.

***

## Encryption [#encryption]

All data is encrypted both in transit and at rest:

* **In transit:** TLS 1.2+ encryption on all connections between your browser, our servers, and third-party services. Public endpoints use TLS 1.3.
* **At rest:** AES-256 encryption for all stored data — one of the strongest encryption standards available.

***

## Cloud Infrastructure [#cloud-infrastructure]

Our platform runs on certified cloud providers:

* **Google Cloud Platform** (US Oregon) — ISO 27001, SOC 2 Type II, HIPAA-eligible
* **Microsoft Azure** (US Virginia) — ISO 27001, SOC 2 Type II, HIPAA-compliant

Both providers maintain comprehensive physical security, redundancy, and compliance programs.

***

## Technical Safeguards [#technical-safeguards]

We implement multiple layers of protection:

* **Role-Based Access Control (RBAC)** — employees only access what they need for their job
* **Multi-Factor Authentication (MFA)** — required for all administrative access to production systems
* **Unique User Identification** — every action is logged and traceable
* **Network Protection** — firewalls, DDoS protection via Cloudflare, network segmentation between environments
* **Intrusion Detection** — continuous monitoring for threats and anomalies
* **Vulnerability Scanning** — regular automated security assessments
* **Input Validation** — protection against OWASP Top 10 vulnerabilities (SQL injection, XSS, etc.)

***

## Continuous Monitoring [#continuous-monitoring]

Our security and engineering teams monitor systems 24/7. We use automated detectors that trigger alerts within 5 minutes of any anomaly, and we conduct regular penetration testing to proactively identify weaknesses.

***

## Application Security [#application-security]

Security is built into our development process:

* Mandatory code reviews with security focus
* Automated dependency scanning and patching
* Branch protection and CI/CD security checks
* Secure API design with authentication, authorization, and rate limiting


---

---
title: "How Long Does Chatfuel Keep My Data?"
description: "Chatfuel retains different types of data for different periods, depending on the data category, legal requirements, and your workspace settings."
canonical_url: https://chatfuel.com/docs/security/how-long-does-chatfuel-keep-my-data
markdown_url: https://chatfuel.com/docs/security/how-long-does-chatfuel-keep-my-data.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How Long Does Chatfuel Keep My Data?

Chatfuel retains different types of data for different periods, depending on the data category, legal requirements, and your workspace settings.

## Overview [#overview]

Chatfuel retains different types of data for different periods, depending on the data category, legal requirements, and your workspace settings. Here's a breakdown of what we keep and for how long.

***

## Retention Periods [#retention-periods]

| Data Type                                                    | Retention Period                                                                                |
| ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| **Conversation content** (messages, metadata)                | 6 months by default. Configurable per workspace between 1 and 6 months                          |
| **Contacts and leads**                                       | While workspace is active. Inactive records auto-archived after 6 months, deleted 90 days later |
| **Account data** (workspace name, plan, billing contacts)    | Life of contract + 12 months                                                                    |
| **User identity and auth** (name, email, role)               | Life of account + 12 months                                                                     |
| **Configuration and automation** (flows, bots, integrations) | While workspace is active + 90 days after account deletion (grace period)                       |
| **Audit and operational logs**                               | 6 months                                                                                        |
| **Billing and finance** (invoices, payments)                 | 7 years (accounting and tax obligations)                                                        |

***

## Automatic Deletion [#automatic-deletion]

Chatfuel automatically handles data cleanup:

* Conversation content older than your workspace retention setting is **hard-deleted in daily rolling jobs**
* Inactive contact profiles are **auto-archived after 6 months** and permanently deleted 90 days later (unless reactivated)
* Orphaned media references are purged within 7 days

***

## What Happens When You Delete Your Account [#what-happens-when-you-delete-your-account]

1. **Verification** — we confirm you're the workspace owner or authorized admin
2. **Soft lock** — access and billing suspended immediately
3. **Grace period** — 30 days to reactivate and export your data
4. **Hard deletion** — after day 30, production data is purged within 7 days
5. **Backups** — residual backup copies expire within the standard 35-day backup retention window
6. **Subprocessors** — deletion requests are propagated to all third-party services
7. **Confirmation** — we provide a deletion confirmation upon completion

***

## Backups [#backups]

* Encrypted backups run daily with a 35-day rolling retention
* Point-in-time recovery available for up to 7 days
* Backups are for disaster recovery only — they cannot be used to retrieve selectively deleted items

***

## Special Requirements [#special-requirements]

Healthcare providers in Colombia should note that medical record retention requirements (15 years) may supersede platform defaults. Chatfuel supports extended retention configurations to meet regulatory obligations.


---

---
title: "How to Check Chatfuel Service Status"
description: "Chatfuel maintains a public status page where you can see real-time service availability, ongoing incidents, and historical uptime data."
canonical_url: https://chatfuel.com/docs/security/how-to-check-service-status
markdown_url: https://chatfuel.com/docs/security/how-to-check-service-status.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Check Chatfuel Service Status

Chatfuel maintains a public status page where you can see real-time service availability, ongoing incidents, and historical uptime data.

## Overview [#overview]

Chatfuel maintains a public status page where you can see real-time service availability, ongoing incidents, and historical uptime data.

***

## Status Page [#status-page]

Check current service status at: &#x2A;*[status.chatfuel.com](https://status.chatfuel.com)**

The status page shows:

* Current availability of all Chatfuel services (APIs, dashboard, messaging connectors)
* Active incidents with live updates
* Monthly uptime history
* Planned maintenance windows

***

## Uptime Commitment [#uptime-commitment]

Chatfuel targets **99.9% average monthly availability** across all production systems.

***

## How Incidents Work [#how-incidents-work]

### Detection [#detection]

Our monitoring systems run continuous health checks on all services. When an issue is detected, the status page is automatically updated — typically within **5 minutes** of detection.

### Classification [#classification]

| Priority        | Description                                                         |
| --------------- | ------------------------------------------------------------------- |
| **P1 Critical** | Full outage or severe degradation impacting most customers          |
| **P2 Major**    | Partial degradation or regional impact with significant user effect |
| **P3 Minor**    | Limited functionality impact or isolated integration issues         |

### Communication [#communication]

* **Initial post** — published as soon as an incident is confirmed, with current impact and next update timing
* **Regular updates** — posted throughout mitigation
* **Resolution post** — final update with scope, timeline, and follow-ups

### External Platform Issues [#external-platform-issues]

When Meta/Facebook or other external platforms experience disruptions that affect your bots, we post an incident on our status page with updates relayed within \~5 minutes of detection.

***

## Get Notified [#get-notified]

You can subscribe to status updates via email or SMS directly on the status page so you're notified immediately when something happens.

***

## After an Incident [#after-an-incident]

Every incident goes through a post-incident review including root cause analysis and corrective actions to prevent recurrence. Resolution typically happens within several hours, depending on scope and vendor dependencies.


---

---
title: "How to Request Access or Deletion of Your Data"
description: "You have the right to access, correct, delete, or export your personal data."
canonical_url: https://chatfuel.com/docs/security/how-to-request-data-access-or-deletion
markdown_url: https://chatfuel.com/docs/security/how-to-request-data-access-or-deletion.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Request Access or Deletion of Your Data

You have the right to access, correct, delete, or export your personal data.

## Overview [#overview]

You have the right to access, correct, delete, or export your personal data. Chatfuel supports all data subject rights under GDPR and Latin American data protection laws (known as ARCO rights in LATAM: Access, Rectification, Cancellation, Opposition).

***

## What You Can Request [#what-you-can-request]

* **Access** — get a copy of your personal data, including what we process, why, and who receives it
* **Rectification** — correct any inaccurate or incomplete data
* **Deletion** — request permanent removal of your personal data
* **Opposition** — object to certain types of data processing, including opting out of direct marketing
* **Portability** — receive your data in a machine-readable format (JSON/CSV) for transfer to another service
* **Restriction** — temporarily suspend processing while a dispute is being verified

***

## How to Submit a Request [#how-to-submit-a-request]

Send your request to: &#x2A;*[tos@chatfuel.com](mailto:tos@chatfuel.com)**

You can also submit requests through:

* The web form or email listed in our Privacy Policy
* Your client admin portal (if requesting on behalf of your end-users)

***

## What Happens Next [#what-happens-next]

1. **Acknowledgment** — we confirm receipt within **5 business days** with a ticket ID and expected timeline
2. **Verification** — we verify your identity using email confirmation, SMS code, or account login. If we can't verify within 10 business days, we'll let you know the next steps
3. **Fulfillment** — your request is completed within **20-30 calendar days**. If it's complex, we may extend once with justification
4. **Confirmation** — you receive confirmation of the action taken (data provided, corrected, or deleted)

***

## Data Exports [#data-exports]

When you request access or portability, we:

1. Locate your records across all our systems
2. Generate an export in JSON or CSV format
3. Redact any third-party secrets or other users' data
4. Provide a secure, time-limited download link

***

## Data Deletion [#data-deletion]

When you request deletion, we:

1. Confirm the scope and legal basis
2. Delete data from primary storage
3. Queue deletion from logs and analytics
4. Propagate deletion to all subprocessors
5. Document any exceptions with legal basis (e.g., data we must keep for tax or regulatory reasons)

Note: legal holds or regulatory retention requirements may override deletion requests for specific data.


---

---
title: "What Happens If There Is a Security Incident?"
description: "Chatfuel has a formal incident response plan with defined roles, escalation procedures, and communication protocols."
canonical_url: https://chatfuel.com/docs/security/what-happens-if-there-is-a-security-incident
markdown_url: https://chatfuel.com/docs/security/what-happens-if-there-is-a-security-incident.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What Happens If There Is a Security Incident?

Chatfuel has a formal incident response plan with defined roles, escalation procedures, and communication protocols.

## Overview [#overview]

Chatfuel has a formal incident response plan with defined roles, escalation procedures, and communication protocols. If a security incident occurs, we act quickly to contain it, notify affected parties, and prevent recurrence.

***

## Our Incident Response Process [#our-incident-response-process]

### 1. Detection [#1-detection]

Our systems run 24/7 monitoring with automated alerts. Security events are detected through:

* Continuous activity monitoring for unusual patterns
* Intrusion detection and prevention systems
* Failed login tracking and anomaly alerts
* Automated vulnerability scanning

### 2. Containment [#2-containment]

Once an incident is confirmed, our security and engineering teams immediately work to contain the threat, isolate affected systems, and prevent further impact.

### 3. Notification [#3-notification]

In the event of a confirmed data breach, affected parties are notified within **24-48 hours** in accordance with GDPR and Latin American regulatory requirements.

* **Status page** updates are published at [status.chatfuel.com](https://status.chatfuel.com)
* **Direct notification** to affected clients for security events involving their data
* **Regulatory bodies** are notified within the legally required timeframe (typically 72 hours)

### 4. Eradication and Recovery [#4-eradication-and-recovery]

We eliminate the root cause, restore affected systems, and verify that the threat has been fully resolved.

### 5. Post-Incident Review [#5-post-incident-review]

Every incident is followed by a thorough review including:

* Root cause analysis
* Corrective and preventive actions
* Reliability and security improvements
* Documentation for compliance audit trails

***

## Breach Notification by Region [#breach-notification-by-region]

| Region                     | Notification Requirement                                                        |
| -------------------------- | ------------------------------------------------------------------------------- |
| **EU (GDPR)**              | Supervisory authority within 72 hours; affected individuals without undue delay |
| **Brazil (LGPD)**          | ANPD and affected individuals within 48 hours                                   |
| **Mexico (LFPDPPP)**       | Affected individuals without undue delay                                        |
| **Colombia**               | SIC and affected individuals per regulatory guidance                            |
| **Chile, Argentina, Peru** | Per applicable local data protection law                                        |

***

## What This Means for You [#what-this-means-for-you]

* You will be notified promptly if your data is involved in any security incident
* Incident records and timelines are retained per our Data Retention & Deletion Policy
* Public incident notes never include personal or health data

***

## Contact [#contact]

If you suspect a security issue or want to report a vulnerability, contact: &#x2A;*[security@chatfuel.com](mailto:security@chatfuel.com)**

For general compliance inquiries: &#x2A;*[tos@chatfuel.com](mailto:tos@chatfuel.com)**


---

---
title: "What Regulations Does Chatfuel Comply With?"
description: "Chatfuel complies with major international and regional data protection regulations."
canonical_url: https://chatfuel.com/docs/security/what-regulations-does-chatfuel-comply-with
markdown_url: https://chatfuel.com/docs/security/what-regulations-does-chatfuel-comply-with.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# What Regulations Does Chatfuel Comply With?

Chatfuel complies with major international and regional data protection regulations.

## Overview [#overview]

Chatfuel complies with major international and regional data protection regulations. Whether you operate in Europe, the US, or Latin America, we have the safeguards and documentation to support your compliance requirements.

***

## International Standards [#international-standards]

### GDPR (European Union) [#gdpr-european-union]

Chatfuel is fully compliant with the General Data Protection Regulation. We implement all required technical and organizational measures for lawful data processing, including data minimization, purpose limitation, and full support for data subject rights.

### HIPAA-Aligned Safeguards (United States) [#hipaa-aligned-safeguards-united-states]

While Chatfuel is not a HIPAA-covered entity, we implement technical and administrative safeguards aligned with HIPAA standards — including encryption, access controls, audit logging, and breach notification procedures. Healthcare providers handling US Protected Health Information (PHI) can request a &#x2A;*Business Associate Agreement (BAA)**.

***

## Latin America [#latin-america]

Healthcare data is classified as "sensitive personal data" under all applicable LATAM laws. Chatfuel processes such data strictly as a **Data Processor** under written agreements with healthcare providers (Data Controllers).

| Country   | Regulation                 | Chatfuel Compliance                                                 |
| --------- | -------------------------- | ------------------------------------------------------------------- |
| Brazil    | LGPD (Lei 13.709/2018)     | DPA with controller/processor roles; breach notification procedures |
| Mexico    | LFPDPPP (2025 Edition)     | Updated DPA with retention policies; DSR/ARCO procedures            |
| Colombia  | Ley 1581 + Resolucion 1995 | Security controls; retention policies; cross-border safeguards      |
| Chile     | Ley 19.628 (2024 Reform)   | DSR procedures; data export; deletion protocols                     |
| Argentina | Ley 25.326                 | Standard Contractual Clauses; GDPR-level security                   |
| Peru      | Ley 29733                  | Documented security controls                                        |

***

## Infrastructure Certifications [#infrastructure-certifications]

Our cloud providers hold the following certifications:

* **ISO 27001** — information security management
* **SOC 2 Type II** — security, availability, and confidentiality controls
* **HIPAA-eligible/compliant** infrastructure

***

## Available Documentation [#available-documentation]

We can provide the following documents upon request:

* Privacy Policy (English / Spanish / Portuguese)
* Terms of Use
* Data Processing Agreement (DPA) with Standard Contractual Clauses
* Subprocessor List
* Security Policies (7 comprehensive policies)
* Business Associate Agreement (BAA) for healthcare providers

Contact &#x2A;*[tos@chatfuel.com](mailto:tos@chatfuel.com)** for any compliance documentation.


---

---
title: "Where Is My Data Stored?"
description: "Chatfuel hosts its platform on enterprise-grade cloud infrastructure in the United States."
canonical_url: https://chatfuel.com/docs/security/where-is-my-data-stored
markdown_url: https://chatfuel.com/docs/security/where-is-my-data-stored.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Where Is My Data Stored?

Chatfuel hosts its platform on enterprise-grade cloud infrastructure in the United States.

## Overview [#overview]

Chatfuel hosts its platform on enterprise-grade cloud infrastructure in the United States. All cross-border data transfers are protected by internationally recognized legal frameworks.

***

## Data Centers [#data-centers]

| Provider                  | Location    | Certifications                            |
| ------------------------- | ----------- | ----------------------------------------- |
| **Google Cloud Platform** | US Oregon   | ISO 27001, SOC 2 Type II, HIPAA-eligible  |
| **Microsoft Azure**       | US Virginia | ISO 27001, SOC 2 Type II, HIPAA-compliant |

Both data centers provide:

* Physical security with restricted access
* Redundant power and networking
* DDoS protection
* Encryption at rest and in transit

***

## Cross-Border Data Transfers [#cross-border-data-transfers]

All international data transfers comply with &#x2A;*Standard Contractual Clauses (SCCs)** approved by the European Union and recognized throughout Latin America. These clauses ensure an "adequate level of protection" for personal data regardless of where you're located.

Our transfers are supported by:

* **Standard Contractual Clauses** (EU-approved)
* **GDPR-level technical and organizational measures**
* **Comprehensive Data Processing Agreements** with all clients
* Infrastructure hosted in jurisdictions recognized as providing adequate protection

This framework satisfies transfer requirements under Brazilian LGPD, Argentine Ley 25.326, Colombian Ley 1581, Mexican LFPDPPP, and other applicable regulations.

***

## Regional Data Residency [#regional-data-residency]

Regional data residency configurations are available upon request for enterprise clients with specific localization requirements. Contact &#x2A;*[tos@chatfuel.com](mailto:tos@chatfuel.com)** to discuss options.

***

## Network Security [#network-security]

Your data is protected in transit by:

* **Cloudflare DNS** with DDoS protection
* **Google Cloud Platform firewalls** with strict rule sets
* **Network segmentation** separating production, staging, and development environments


---

---
title: "Can I send a DM after someone comments on my TikTok video?"
description: "No. TikTok does not allow sending direct messages triggered by comments."
canonical_url: https://chatfuel.com/docs/tiktok/can-i-send-dm-after-tiktok-comment
markdown_url: https://chatfuel.com/docs/tiktok/can-i-send-dm-after-tiktok-comment.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I send a DM after someone comments on my TikTok video?

No. TikTok does not allow sending direct messages triggered by comments.

No. TikTok does not allow sending direct messages triggered by comments. This is a TikTok platform restriction, not a Chatfuel limitation — which is why TikTok comment [automations](https://chatfuel.com/docs/ai-features/automations) have a **Public reply** only, with no private-reply setting.

When someone comments on your video, you can only **reply publicly under that comment** using [TikTok comment autoreply](https://chatfuel.com/docs/tiktok/tiktok-comment-autoreply).

## Why this works differently from Instagram [#why-this-works-differently-from-instagram]

On Instagram and Facebook, a comment automation can send both a **Public reply** under the comment and a **Private reply** in DMs. On TikTok, the API does not allow this — a contact must message you directly first before you can send them a DM.

For full details on what TikTok allows, see the [messaging rules for TikTok](https://chatfuel.com/docs/tiktok/messaging-rules-for-tiktok).

## What you can do instead [#what-you-can-do-instead]

* **Reply publicly** — set up [TikTok comment autoreply](https://chatfuel.com/docs/tiktok/tiktok-comment-autoreply) to respond to comments automatically. In your reply, encourage the person to DM you.
* **Automate DMs once they message you** — enable the direct-messages automation for [TikTok](/docs/tiktok/tiktok-tasks&#x29;, so Fuely AI handles the conversation once a contact reaches out via DM. You can also ask the AI Co-Worker: &#x2A;"Answer TikTok direct messages for me."*

## Example workflow [#example-workflow]

1. Someone comments on your video.
2. Fuely AI replies publicly: &#x2A;"Great question! Send me a DM and I'll share the details."*
3. The person sends you a DM.
4. Fuely AI picks up the conversation and responds automatically.


---

---
title: "Connect your TikTok account"
description: "Below, you'll learn how to connect your TikTok account to Chatfuel."
canonical_url: https://chatfuel.com/docs/tiktok/connect-your-tiktok-account
markdown_url: https://chatfuel.com/docs/tiktok/connect-your-tiktok-account.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Connect your TikTok account

Below, you'll learn how to connect your TikTok account to Chatfuel.

Below, you'll learn how to connect your TikTok account to Chatfuel. Once connected, you can enable [TikTok automations](https://chatfuel.com/docs/tiktok/tiktok-tasks) to reply to comments and direct messages.

Connecting your TikTok account is one of the few steps the AI Co-Worker can't complete for you — you need to log in to TikTok and grant permissions yourself. The Co-Worker can take you straight to the right page: just ask.

## You'll need a Business account [#youll-need-a-business-account]

Make sure you have a [TikTok Business account](https://chatfuel.com/docs/tiktok/how-to-switch-tiktok-to-business-account). If you don't have one yet, don't worry — we'll help you set it up in the process.

## How to connect your TikTok account [#how-to-connect-your-tiktok-account]

1. Open **Settings** → **TikTok**, then click **Connect TikTok**.
2. If your account is still personal, you'll be prompted to switch it to Business. Just follow each step in the pop-up window, then click **Done** on the final step.
3. Log in to your TikTok account in the pop-up window.
4. Grant permissions to Chatfuel and click **Continue**.
5. Done. Your account is now connected to Chatfuel.

> **Note:** You can configure your TikTok automations even before the account is connected — the settings are saved and go live the moment you connect.


---

---
title: "How to switch your TikTok account to a Business one"
description: "You need a TikTok Business account to connect to Chatfuel and use all automation features."
canonical_url: https://chatfuel.com/docs/tiktok/how-to-switch-tiktok-to-business-account
markdown_url: https://chatfuel.com/docs/tiktok/how-to-switch-tiktok-to-business-account.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to switch your TikTok account to a Business one

You need a TikTok Business account to connect to Chatfuel and use all automation features.

You need a TikTok Business account to [connect to Chatfuel](https://chatfuel.com/docs/tiktok/connect-your-tiktok-account) and use all automation features.

If your TikTok is currently set to personal, follow these steps to switch.

## Steps to switch your account [#steps-to-switch-your-account]

1. Tap on the **menu icon** in your TikTok application.
2. Choose **Settings and privacy**.
3. Select **Account**.
4. Select **Switch to Business Account**.
5. Skip through the promo screens by tapping **Next**.
6. Pick a **category** for your business and tap **Next**.
7. Add your **email** (optional).
8. Tap **Register now** to register your Business account.
9. Done. Your account is now switched to Business and you can use all automation features.

> **Note:** Switching to a Business account won't affect your content, followers, or messages.


---

---
title: "Messaging rules for TikTok"
description: "To prevent spam, TikTok has specific messaging limits and delivery rules."
canonical_url: https://chatfuel.com/docs/tiktok/messaging-rules-for-tiktok
markdown_url: https://chatfuel.com/docs/tiktok/messaging-rules-for-tiktok.md
last_updated: 2026-03-02
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Messaging rules for TikTok

To prevent spam, TikTok has specific messaging limits and delivery rules.

To prevent spam, TikTok has specific messaging limits and delivery rules. &#x2A;*These rules apply to TikTok only.**

## Regional restrictions [#regional-restrictions]

**US accounts**: If your TikTok account was signed up in the United States, you cannot [connect it to Chatfuel](https://chatfuel.com/docs/tiktok/connect-your-tiktok-account).

**EU accounts**: If a contact has a TikTok account from the EU, their messages will not appear in [Leads](https://chatfuel.com/docs/leads/leads), Contacts, or Chats.

## Direct messages [#direct-messages]

When a contact sends you a direct message:

* **You can send up to 10 messages** within a 48-hour window
* **The 48-hour window resets** each time the contact replies
* Once the window closes, no messages can be sent until the contact messages you again

## Comments [#comments]

When a contact leaves a comment on your TikTok content:

* **You cannot send a direct message to them** if they have never texted you in direct messages
* **No messaging window opens** from public comments
* **The contact must send you a direct message first** to enable any communication in direct messages

In other words, you can only message contacts who have messaged you in the last 48 hours.

## Voice messages [#voice-messages]

If a contact sends a voice message:

* **Voice messages are not supported** inside Chats tab
* **Fuely AI cannot reply** to voice messages — see [how AI works with voice messages](https://chatfuel.com/docs/ai-features/how-ai-works-with-voice-messages) for details on supported platforms


---

---
title: "TikTok Comment Autoreply"
description: "Fuely AI can automatically reply under comments on your TikTok videos."
canonical_url: https://chatfuel.com/docs/tiktok/tiktok-comment-autoreply
markdown_url: https://chatfuel.com/docs/tiktok/tiktok-comment-autoreply.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# TikTok Comment Autoreply

Fuely AI can automatically reply under comments on your TikTok videos.

Fuely AI can automatically reply under comments on your TikTok videos. Comments are one of the TikTok sources in [Automations](https://chatfuel.com/docs/ai-features/automations): the source has a permanent **base automation** that can answer every comment, and on top of it you can add up to 30 [custom automations](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) — named keyword rules with their own replies.

> **Note:** TikTok comment automations send a **Public reply** only — the answer visible under the comment. Unlike Instagram and Facebook, there is no private-reply setting, because TikTok [doesn't allow DMing someone based on their comment](https://chatfuel.com/docs/tiktok/can-i-send-dm-after-tiktok-comment). For DM automation, see the [TikTok automations overview](https://chatfuel.com/docs/tiktok/tiktok-tasks).

## How replies are chosen [#how-replies-are-chosen]

* **The base automation** is the catch-all: it answers any comment that no custom rule catches, adapting each reply to the comment using your instructions and knowledge base. Like every base, it starts off.
* **Custom automations** react to keywords. A rule can match the **exact** comment text, comments that **contain** the keyword, or **any** comment. Each rule has its own **Public reply**.
* In **Incoming messages** you can also choose **not to reply** on the comment source — for example, to keep the base silent so only your keyword rules answer.

When several rules could match the same comment, a [priority order picks the winner](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment): exact keyword beats contains, which beats catch-all, and custom rules beat the base.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **TikTok**, open the comments source.
3. Turn on the base automation to answer every comment, and use **Additional instructions** to shape how it talks — tone, goal, examples of what to say.
4. To react to specific words, add a custom automation: name it, set the keywords and how they match, and write its **Public reply**.
5. Turn your rules on and [test them](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) — use the **Test chat**, or leave a comment on one of your videos.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"When someone comments PROMO on my TikTok videos, reply publicly with our 20% off code SAVE20"*

It creates the rule, sets the keyword and reply, and confirms what it set.

## Examples [#examples]

### Keywords [#keywords]

Keyword rules are useful for routing people to offers or information instantly. When someone comments *PROMO*, the reply shares your discount code; when they comment *HOURS*, it shares your opening times.

Example rules:

> Keyword **PROMO** → Public reply: *Here's your 20% off code: SAVE20*
>
> Keyword **HOURS** → Public reply: *We're open Monday–Friday 9AM–6PM*

### Links [#links]

Public replies can include links — great for directing people to your website, products, or booking pages.

Example rules:

> Keyword **EBOOK** → Public reply: *Grab it here: chatfuel.com/ebook*
>
> Keyword **pricing** → Public reply: *Here's our pricing page: yoursite.com/pricing*

## Important Notes [#important-notes]

### Messaging Limits [#messaging-limits]

TikTok [limits how you can message people](https://chatfuel.com/docs/tiktok/messaging-rules-for-tiktok):

* **Comments only** — you cannot DM someone based on their comment; they must message you first.
* **48-hour window** — once someone DMs you, you have 48 hours to send up to 10 messages.
* **Window resets** — the 48-hour timer restarts each time they reply to you.

### Regional Restrictions [#regional-restrictions]

* **US accounts** — TikTok accounts signed up in the United States cannot connect to Chatfuel.
* **EU contacts** — contacts with EU TikTok accounts will not appear in Leads, Contacts, or Chats.


---

---
title: "TikTok Automations"
description: "Automations control where Fuely AI talks to your customers on TikTok and how it behaves in each place."
canonical_url: https://chatfuel.com/docs/tiktok/tiktok-tasks
markdown_url: https://chatfuel.com/docs/tiktok/tiktok-tasks.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# TikTok Automations

Automations control where Fuely AI talks to your customers on TikTok and how it behaves in each place.

[Automations](https://chatfuel.com/docs/ai-features/automations) control where [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) talks to your customers on TikTok and how it behaves in each place. (If you're looking for what used to be called TikTok tasks — they became automations.)

TikTok has three sources, each with its own automation:

* **Direct messages** — Fuely AI answers people who DM your account.
* **Comments** — Fuely AI [replies publicly under comments on your videos](https://chatfuel.com/docs/tiktok/tiktok-comment-autoreply).
* **Ads that click to TikTok** — Fuely AI picks up conversations that start from your TikTok ads.

Each source has a **base automation**, and every base starts off — turning AI on for a source means enabling its automation. Want AI in DMs but not under comments? Enable one and leave the other off.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **TikTok**, open the source you want — direct messages, comments, or ads.
3. Turn the automation on. Use **Additional instructions** to tell Fuely AI how to talk: your tone, your goal (drive DMs, answer questions, share links), examples of good replies.
4. [Test it](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) in the **Test chat** sidebar, or send a real DM and leave a comment on one of your videos.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Turn on AI for my TikTok DMs and reply to comments under my videos"*

It applies the change and confirms what it set.

## Custom automations for comments and ads [#custom-automations-for-comments-and-ads]

On the comments and ads sources you can add [custom automations](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) — named rules triggered by keywords, so specific words get a specific response while the base automation handles everything else. A comment rule's answer is its **Public reply**, posted under the comment.

> **Note:** TikTok comment automations have a **Public reply** only. Unlike Instagram and Facebook, there is no private-reply setting, because TikTok [doesn't allow sending a DM based on a comment](https://chatfuel.com/docs/tiktok/can-i-send-dm-after-tiktok-comment).

When several rules could answer the same comment, [a priority order decides which one replies](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment).

## Managing your chats [#managing-your-chats]

When someone comments, you'll see your public reply in the **Chats** tab, so all your TikTok interactions stay in one place.

### Contact properties [#contact-properties]

Contacts created from TikTok automations include properties that show where they came from:

| Contact action            | Value in the **Original source** / **Last source** property |
| ------------------------- | ----------------------------------------------------------- |
| Messages in TikTok direct | TikTok direct                                               |
| Comments from videos      | TikTok comment                                              |

## Important notes [#important-notes]

Here are some restrictions that might affect how your automations work.

### Messaging limits [#messaging-limits]

TikTok has strict messaging rules that differ from other platforms:

* **Comments only** — you cannot DM someone based on their comment alone; they must message you first.
* **48-hour window** — once someone DMs you, you have 48 hours to send up to 10 messages.
* **Window resets** — the 48-hour timer restarts each time they reply to you.

### Regional restrictions [#regional-restrictions]

US TikTok accounts cannot [connect to Chatfuel](https://chatfuel.com/docs/tiktok/connect-your-tiktok-account), and EU contacts won't appear in your dashboard.

For full details, check out our [messaging rules for TikTok](https://chatfuel.com/docs/tiktok/messaging-rules-for-tiktok).


---

---
title: "How to change the widget icon"
description: "You can customize the icon (logo) that appears inside the chat when the widget is open, but the closed widget button always uses the default Chatfuel icon —…"
canonical_url: https://chatfuel.com/docs/website/how-to-change-widget-icon
markdown_url: https://chatfuel.com/docs/website/how-to-change-widget-icon.md
last_updated: 2026-03-18
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to change the widget icon

You can customize the icon (logo) that appears inside the chat when the widget is open, but the closed widget button always uses the default Chatfuel icon —…

You can customize the icon (logo) that appears inside the chat when the widget is open, but the closed widget button always uses the default Chatfuel icon — this cannot be changed.

## What you can customize [#what-you-can-customize]

When a visitor opens the [chat widget](https://chatfuel.com/docs/website/set-up-chat-widget-for-website), they see your business icon in the chat header. To change it:

1. Go to `Settings` > `Website`.
2. Upload your company logo or icon in the appearance section.
3. Save the changes.

This icon represents your business inside the conversation and helps visitors recognize who they're chatting with.

## What you cannot customize [#what-you-cannot-customize]

The small chat button that appears in the corner of your website (the closed/minimized widget) always displays the default Chatfuel icon. There is currently no option to replace it with a custom image or your own logo.

This applies to all plans — the closed widget icon is the same for everyone.


---

---
title: "How to create a welcome message for Website widget"
description: "The Website chat widget doesn't have a dedicated welcome-message setting."
canonical_url: https://chatfuel.com/docs/website/how-to-create-a-welcome-message-for-website-widget
markdown_url: https://chatfuel.com/docs/website/how-to-create-a-welcome-message-for-website-widget.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to create a welcome message for Website widget

The Website chat widget doesn't have a dedicated welcome-message setting.

The Website chat widget doesn't have a dedicated welcome-message setting. The AI replies only after a visitor sends the first message — it can't proactively greet people the moment they open the chat.

What you *can* control is how that first reply greets them. The **Additional instructions** on the **Website widget** [automation](https://chatfuel.com/docs/ai-features/automations) shape the AI's opening style — the greeting, the introduction, the tone.

## What this means [#what-this-means]

When a customer opens your [chat widget](https://chatfuel.com/docs/website/set-up-chat-widget-for-website), they see an empty conversation. The AI activates and replies only once the customer types and sends their first message. There is no field for intro text that appears before they type.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **Website**, open the **Website widget** automation.
3. In **Incoming messages**, add **Additional instructions*&#x2A; that describe how to open the conversation — for example: &#x2A;"Start your first reply with a warm greeting, introduce yourself as our assistant, and offer help in one short sentence before answering the question."*
4. [Test it](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) in the **Test chat** to see how the first reply reads.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"When someone writes in the website chat, have the AI greet them warmly and introduce our studio before answering"*

It applies the change and confirms what it set.

## Tips [#tips]

* Add clear information to your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) so the AI gives a useful response to any opening message, not just a friendly one.
* Customize your widget's appearance (company name, logo, accent color) in `Settings` > `Website` to make the chat feel inviting before the conversation starts.


---

---
title: "Set up chat widget for website"
description: "With the website chat widget, your customers can quickly ask questions right on your site without needing to search for contact information."
canonical_url: https://chatfuel.com/docs/website/set-up-chat-widget-for-website
markdown_url: https://chatfuel.com/docs/website/set-up-chat-widget-for-website.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Set up chat widget for website

With the website chat widget, your customers can quickly ask questions right on your site without needing to search for contact information.

With the website chat widget, your customers can quickly ask questions right on your site without needing to search for contact information. They simply open the chat and start talking.

Setting it up involves a few key steps:

1. Configuring the basic widget settings
2. Adding the widget code to your website
3. Turning on AI for the widget

Installing the widget code is one of the few steps the AI Co-Worker can't complete for you — pasting the snippet into your site's HTML happens outside Chatfuel. The Co-Worker can take you straight to the right page: just ask.

## Configuring your widget [#configuring-your-widget]

First, you'll need to add basic settings.

1. Go to `Settings` > select `Website`.
2. Configure the appearance (company name, accent color, and logo).
3. Add your website domains.
4. Copy the installation code.

## Adding widget to your site [#adding-widget-to-your-site]

Next, add the code snippet from `Settings` to your site's HTML to make the chat widget appear on your website.

Place the code snippet:

* Before the `</body>` tag
* Inside the `<head>` tag

If you're not comfortable editing your website's HTML, it's best to ask your web developer for assistance.

## Set it up in Automations [#set-it-up-in-automations]

The AI in the widget is controlled by the **Website widget** [automation](https://chatfuel.com/docs/ai-features/automations). Turn it on and your [AI assistant talks to customers for you](https://chatfuel.com/docs/ai-features/why-chatfuel-does-not-use-buttons) based on the knowledge you provide about your business.

1. Go to **Fuely AI** → **Automations**.
2. Under **Website**, open the **Website widget** automation and turn it on. Like every base automation, it starts off.
3. Add information about your business to the [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) — this works the same way as setting up AI for [Instagram](https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram), [Facebook](https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook), or [WhatsApp](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp).
4. Adjust the automation's settings if you want widget-specific behavior — for example [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups), [autobooking](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-autobooking), or **Additional instructions** for how the AI talks there.
5. [Test it](https://chatfuel.com/docs/ai-features/how-to-test-your-automation) in the **Test chat** to see how the AI responds.

When a customer needs human help, an agent can [take over the conversation](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations) at any time.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Turn on the chat widget on my website and make the AI answer there."*

It enables the Website widget automation, sets up what the AI answers there, and confirms what it set.

## Turning chat widget on [#turning-chat-widget-on]

Once everything is ready, turn on your chat widget.

1. Open `Settings` > `Website`.
2. Toggle the widget on or off.


---

---
title: "24-Hour Messaging Window"
description: "If you're seeing an error that you can't send a message to a contact, or your automation stopped sending messages, it's most likely because the 24-hour…"
canonical_url: https://chatfuel.com/docs/whatsapp/24-hour-messaging-window
markdown_url: https://chatfuel.com/docs/whatsapp/24-hour-messaging-window.md
last_updated: 2026-08-17
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# 24-Hour Messaging Window

If you're seeing an error that you can't send a message to a contact, or your automation stopped sending messages, it's most likely because the 24-hour…

## Why can't I send messages to a contact? [#why-cant-i-send-messages-to-a-contact]

If you're seeing an error that you can't send a message to a contact, or your automation stopped sending messages, it's most likely because the 24-hour messaging window has closed. To reach contacts after the window closes, you need to [send a message using a WhatsApp template](https://chatfuel.com/docs/whatsapp/how-to-send-messages-outside-24-hour-window). If the messaging window isn't the issue, see [Problems with sending messages on WhatsApp](https://chatfuel.com/docs/whatsapp/problems-with-sending-messages-on-whatsapp) for a full troubleshooting checklist. This is a Meta policy that restricts businesses from messaging users more than 24 hours after their last interaction.

## What is the 24-hour messaging window? [#what-is-the-24-hour-messaging-window]

The 24-hour messaging window is a policy by Meta to prevent businesses from spamming users. It states that a business cannot send messages to a user more than 24 hours after their last interaction. Simply put, if a user hasn't messaged your automation in the last 24 hours, you can't message them.

Learn more about the 24-hour messaging window in [how messages work at WhatsApp Business](https://developers.facebook.com/docs/whatsapp/conversation-types/).

## What the window costs from 1 October [#what-the-window-costs-from-1-october]

The window itself doesn't change — what changes is the price of the messages inside it. From **1 October 2026**, Meta charges for replies sent inside the 24-hour window, which were free until then. [What Meta charges](https://chatfuel.com/docs/whatsapp/how-much-does-meta-charge-for-whatsapp-messages) covers the rates and what else is affected.

Two things worth knowing:

* **Shorter conversations now cost less.** Every reply inside the window is billed, so a flow that reaches an answer in four messages costs less than one that takes twelve.
* **Ads that click to WhatsApp still open a free 72-hour window.** Conversations that start from [a click-to-WhatsApp ad](https://chatfuel.com/docs/whatsapp/create-ads-that-click-to-whatsapp) are free for their first 72 hours, which is longer and cheaper than any other entry point.

The charges come out of your [wallet](https://chatfuel.com/docs/billing/how-your-wallet-and-credits-work), so there's nothing to set up with Meta on your side.

## How the 24-hour window affects conversations [#how-the-24-hour-window-affects-conversations]

When a contact interacts with your automation, a 24-hour window opens, allowing you to freely message them. If the contact sends another message within this window, the 24-hour period resets, and the interaction continues as a single conversation.

If the contact does not send another message within the 24-hour window and later re-engages with your automation after the window has closed, a new 24-hour window opens, and this interaction counts as a new conversation.

## Example of the 24-hour window [#example-of-the-24-hour-window]

* **Day 1**: User sends a message to your automation, opening the 24-hour window.
* **Day 2**: You can send messages within this window. If the contact responds again, the window resets.
* **Day 3**: If the contact doesn't respond within 24 hours, the window closes. If the contact re-engages with your automation on Day 3, a new 24-hour window opens, counting as a new conversation.

This way, a single contact can have multiple conversations with your automation throughout the month if they keep messaging your business outside the 24-hour window.


---

---
title: "Can I Change My WhatsApp Chatfuel Link?"
description: "When you connect a WhatsApp number to Chatfuel, the platform generates a unique shareable link for your business — for example, wa.chatfuel.com/yourbusiness."
canonical_url: https://chatfuel.com/docs/whatsapp/can-i-change-my-whatsapp-chatfuel-link
markdown_url: https://chatfuel.com/docs/whatsapp/can-i-change-my-whatsapp-chatfuel-link.md
last_updated: 2026-03-17
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Change My WhatsApp Chatfuel Link?

When you connect a WhatsApp number to Chatfuel, the platform generates a unique shareable link for your business — for example, wa.chatfuel.com/yourbusiness.

When you connect a WhatsApp number to Chatfuel, the platform generates a unique shareable link for your business — for example, `wa.chatfuel.com/yourbusiness`. This link opens a page with a QR code that starts a WhatsApp conversation with your business when someone clicks or scans it.

## Can I change the link? [#can-i-change-the-link]

No. The `wa.chatfuel.com/yourbusiness` link is generated automatically when you connect your number and cannot be changed or customized. This is a permanent link tied to your account.

## Can I change the business name shown on the link page? [#can-i-change-the-business-name-shown-on-the-link-page]

Not yet. The page at your link displays the business name that was associated with your WhatsApp account when the link was created. Chatfuel does not currently support editing this name. See [How to Change the Business Name on Your WhatsApp QR Code](https://chatfuel.com/docs/whatsapp/how-to-change-name-on-whatsapp-qr-code) for more details.

## What you can customize [#what-you-can-customize]

* **Display name** — the name customers see inside WhatsApp conversations can be changed through [WhatsApp Manager](https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-display-name). This is separate from the name shown on the link page.
* **Profile photo** — you can update your [WhatsApp Business profile photo](https://chatfuel.com/docs/whatsapp/how-to-add-profile-photo) at any time.

## Where to find your link [#where-to-find-your-link]

Go to **Settings** → **WhatsApp** in your Chatfuel dashboard. Your shareable link and QR code are displayed there.


---

---
title: "Can I Test Before Connecting My WhatsApp Number?"
description: "Yes. You can configure everything before connecting your number — every automation you set up is saved as a draft and goes live the moment the channel connects."
canonical_url: https://chatfuel.com/docs/whatsapp/can-i-test-before-connecting-whatsapp-number
markdown_url: https://chatfuel.com/docs/whatsapp/can-i-test-before-connecting-whatsapp-number.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Test Before Connecting My WhatsApp Number?

Yes. You can configure everything before connecting your number — every automation you set up is saved as a draft and goes live the moment the channel connects.

Yes. You can configure everything before connecting your number — every [automation](https://chatfuel.com/docs/ai-features/automations) you set up is saved as a draft and goes live the moment the channel connects. And you can try the behavior right away in the **Test chat**, no number required.

## What you can set up in advance [#what-you-can-set-up-in-advance]

* [Enable and configure the WhatsApp automations](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp) — direct messages, ads that click to WhatsApp, posts that click to WhatsApp — including the **Additional instructions** that shape [how the AI talks](https://chatfuel.com/docs/ai-features/how-to-set-up-fuely-ai-profile)
* Fill in your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) — About Company, Catalog, and FAQ
* Prepare **Switch to human** rules for [when the AI should pass conversations to your team](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide)
* Set up [Calendar](https://chatfuel.com/docs/calendar/calendar) — [reminders](https://chatfuel.com/docs/calendar/calendar-reminders) can even be sent from Chatfuel's own WhatsApp number, so no connection is needed for that

You can do all of this in the dashboard or by asking the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) in chat — both work the same before and after the number connects.

## Try it in the Test chat [#try-it-in-the-test-chat]

Every automation has a **Test chat** — a sidebar that [simulates a conversation with exactly that automation's settings](https://chatfuel.com/docs/ai-features/how-to-test-your-automation), using your real Knowledge Base and catalog.

1. Go to **Fuely AI** → **Automations**.
2. Open the automation you want to try — WhatsApp direct messages, an ad rule, or **Main bot**.
3. Open the **Test chat** sidebar and write as if you were the customer.

Run through typical scenarios — booking a service, asking a FAQ question, requesting a human agent — and see exactly how the AI responds before anything is live.

## What requires a connected number [#what-requires-a-connected-number]

Actual live conversations — real incoming and outgoing messages with customers on your own business number — need a [connected WhatsApp number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number).

## Bottom line [#bottom-line]

Build, test, and refine your setup in the Test chat. Once everything works the way you want, connect your number — the drafts go live on their own.


---

---
title: "Can I Use 360dialog with Chatfuel?"
description: "No. Chatfuel is a WhatsApp Business Solution Provider (BSP), just like 360dialog."
canonical_url: https://chatfuel.com/docs/whatsapp/can-i-use-360dialog-with-chatfuel
markdown_url: https://chatfuel.com/docs/whatsapp/can-i-use-360dialog-with-chatfuel.md
last_updated: 2026-03-18
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can I Use 360dialog with Chatfuel?

No. Chatfuel is a WhatsApp Business Solution Provider (BSP), just like 360dialog.

No. Chatfuel is a WhatsApp Business Solution Provider (BSP), just like 360dialog. Each phone number can only be connected to one BSP at a time — you cannot use both simultaneously.

## Why it doesn't work [#why-it-doesnt-work]

The WhatsApp Business API requires every phone number to be registered through a single BSP. Since both Chatfuel and 360dialog serve as BSPs, they cannot share the same number. Attempting to connect a number that is already registered with 360dialog will fail.

## What to do [#what-to-do]

To use your number with Chatfuel, disconnect it from 360dialog first:

1. Log in to your 360dialog account and release the phone number from their platform.
2. Make sure the number is [fully released from the API](https://chatfuel.com/docs/whatsapp/how-to-check-if-whatsapp-number-is-released) — check that it no longer appears under your WhatsApp Business Account in Meta Business Settings.
3. Once the number is released, [connect it to Chatfuel as a new number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number) or [connect your WhatsApp Business App number](https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number) if you're using the WhatsApp Business App.

If you run into issues during connection, see the [troubleshooting guide](https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues).

## Does this apply to other BSPs? [#does-this-apply-to-other-bsps]

Yes. The same limitation applies to any other WhatsApp BSP — Twilio, MessageBird, Vonage, etc. You must disconnect from your current provider before connecting to Chatfuel.


---

---
title: "Connect WhatsApp Business App Number to Chatfuel"
description: "You can bring your existing WhatsApp Business App number to Chatfuel without losing your contacts or chat history."
canonical_url: https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number
markdown_url: https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number.md
last_updated: 2026-07-03
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Connect WhatsApp Business App Number to Chatfuel

You can bring your existing WhatsApp Business App number to Chatfuel without losing your contacts or chat history.

You can bring your existing WhatsApp Business App number to Chatfuel without losing your contacts or chat history. This adds Fuely AI and automation to your existing WhatsApp workflow. If you want to connect a brand-new number instead, see [How to Connect a New Phone Number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number).

**What you get:**

* Keep your current WhatsApp Business App number — no contact information changes
* Keep all your contacts and chat history — nothing is lost in the transition
* Keep your product catalog — an existing catalog is not affected by the connection
* [Add Fuely AI to your WhatsApp chats](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp) — automate responses and improve customer service
* Connect CRMs and other tools — integrate with your existing business workflow

You'll continue using the WhatsApp Business app exactly as before, with Chatfuel layered on top.

> **Note:** Connecting a number is one of the few steps the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) can't complete for you — it requires authorizing with Meta in your own account. The Co-Worker can take you straight to the right page: just ask it to open the WhatsApp connection settings, then follow the steps below.

***

## Before You Start [#before-you-start]

Check these required permissions before connecting:

**Role in Chatfuel:** Open Settings and confirm you have an **Admin** or **Editor** role. If not, ask your admin to upgrade your access.

**Meta Business Account:** Open [Meta Business Account settings](https://business.facebook.com/settings/people) and confirm you have **Full control** next to your name.

***

## How to Connect Your Number [#how-to-connect-your-number]

**1.** Go to [panel.chatfuel.com](https://panel.chatfuel.com) and open **Settings** in the left sidebar.

**2.** Click **Add number** in the WhatsApp section.

**3.** An authentication screen appears. Log in to your Facebook account and click **Continue**.

**4.** Click **Continue** to authorize Chatfuel to connect with your WhatsApp Business account.

**5.** On the next screen:

* Select your existing **business portfolio**, or create a new one. This is your Meta Business account where all your business tools live.
* Select **Connect a WhatsApp Business app** to link a number already in use in WhatsApp Business.
* Click **Next**.

**6.** If you created a new business portfolio in step 5, fill out all business information. Even optional fields are worth completing for better account verification. Click **Next** when done.

**7.** Enter your active WhatsApp Business phone number and click **Next**.

> **Troubleshooting: Can't add your number?**
> If you see an error that your number is not associated with the selected business:
>
> 1. Open [Phone numbers](https://business.facebook.com/latest/whatsapp_manager/phone_numbers/) in Meta.
> 2. Check each business portfolio in the left sidebar until you find your number.
> 3. Either select that portfolio in Chatfuel (return to step 5), or unlink your number from that portfolio and connect it to your current one.

**8.** A QR code appears on screen.

**9.** Scan the QR code from your phone:

* Open **WhatsApp Business app** on your phone. Look for a message from **Facebook Business** (usually arrives within seconds) and tap **Connect**.
* If you don't see the message, go to **Settings → Account → Business Platform**, then tap **Connect to the Business Platform**.
* Scan the QR code displayed on your computer.

> **Troubleshooting: "Couldn't scan code" error**
> This usually means you have unpaid bills with Meta.
>
> 1. Open [Billing hub](https://business.facebook.com/billing_hub/accounts) in Meta Business Suite.
> 2. Look for "Payment failed" notifications next to your Ad and WhatsApp Business accounts.
> 3. Pay any outstanding amounts and wait \~10 minutes.
> 4. Try scanning the QR code again.

**10.** You'll be asked whether to share your chat history with Chatfuel:

* **Share chats** — imports up to 6 months of chat history and contacts (recommended).
* **Don't share chats** — only future conversations will be managed through Chatfuel.

⚠️ This choice cannot be changed later. Tap your preferred option, then scan the QR code with your phone.

**11.** Make sure your timezone is set correctly, then click **Next**. The correct timezone ensures your scheduled messages and automation run at the right times.

**12.** Review what Chatfuel will access and do with your WhatsApp Business account, then click **Confirm**.

**13.*&#x2A; You'll see: &#x2A;*"Your account is connected to Chatfuel."** Click **Continue to feature setup** to proceed.

✔ &#x2A;*Done.** Your WhatsApp number will now appear in Settings. If you run into other issues during connection, see [Troubleshooting phone connection issues](https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues).

***

## Shared Contacts [#shared-contacts]

If you chose to share contacts during setup, you can find them in the **Contacts** tab.

All imported contacts will have &#x2A;*"Imported from WhatsApp Business App"** in the **Original source** property.


---

---
title: "Create Ads that Click to WhatsApp"
description: "Ads that click to WhatsApp let people start chatting with your business the moment they tap your Facebook or Instagram ad."
canonical_url: https://chatfuel.com/docs/whatsapp/create-ads-that-click-to-whatsapp
markdown_url: https://chatfuel.com/docs/whatsapp/create-ads-that-click-to-whatsapp.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Create Ads that Click to WhatsApp

Ads that click to WhatsApp let people start chatting with your business the moment they tap your Facebook or Instagram ad.

**Ads that click to WhatsApp** let people start chatting with your business the moment they tap your Facebook or Instagram ad. Paired with Chatfuel, that chat isn't a dead end: [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) greets the lead, answers questions, recommends products, and can close the sale.

Setup has two parts: create the ad in Meta Ads Manager, then decide in Chatfuel how those leads get answered.

Creating the ad itself is one of the few steps the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) can't complete for you — it happens in Meta Ads Manager, inside your own Meta account. Everything on the Chatfuel side — enabling AI for ad leads, setting up per-ad rules — works both in the dashboard and through the Co-Worker.

## Create your ad in Meta Ads Manager [#create-your-ad-in-meta-ads-manager]

*Skip this section if you already have a live ad.*

1. Open [Ads Manager](https://adsmanager.facebook.com/ads/manager/) and create a new ad campaign.

2. Choose your campaign objective, for example **Traffic**, and click **Continue**.

3. Select a campaign setup — **Recommended** or **Manual** — and click **Continue**.

4. Select the settings you want and click **Next**.

5. Under Conversion, choose **Messaging apps**.

6. Under **Messaging apps**, choose **WhatsApp** as the *only* destination. Select your WhatsApp number from the list. Make sure you're connecting a [number linked to Chatfuel](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number).

   > If you don't see your number in the list, click **Connect account**.

7. Set your **Budget & schedule**.

8. Configure your **Audience controls**.

9. Click **Next**.

10. In **Ad creative**, click **Set up creative**. Configure your ad image or video, plus any text needed, like ad description.

11. Under **Message template**, click **Edit** to edit the default template. A message template is the first thing your customers will see after opening a chat with your business.

12. Set up a pre-filled message that will appear in your customer's chat window after they open your ad. Click **Save** when you're done.

13. Your ad is now ready. Click **Publish** to launch it.

## Set it up in Automations [#set-it-up-in-automations]

Leads from these ads arrive through the **ads that click to WhatsApp** source, and that source has its own [automation](https://chatfuel.com/docs/ai-features/automations) in Chatfuel.

1. Go to **Fuely AI** → **Automations**.
2. Under **WhatsApp**, open **ads that click to WhatsApp**.
3. Turn the automation on.

Fuely AI now answers messages from all your active ads, using the automation's settings and your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base). For most businesses this is the whole setup: one automation, every ad covered.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Make the AI answer leads coming from my WhatsApp ads."*

It applies the change and confirms what it set.

## Different behavior for different ads [#different-behavior-for-different-ads]

If one campaign needs its own greeting, offer, or tone, create a [custom automation targeted at that specific ad](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads) on the **ads that click to WhatsApp** source. In the rule's ad list, paste the ad ID from Meta Ads Manager — or simply paste the full Ads Manager URL, and Chatfuel extracts the ad ID from the link automatically. You can also add keywords to narrow the rule further — for example, react only when the lead's message mentions a particular offer.

Leads from ads you didn't target keep falling through to the base automation, so nothing goes unanswered.

If your ads differ mainly by their pre-filled message, you can also [route leads with keywords alone](https://chatfuel.com/docs/whatsapp/how-to-route-ad-leads-with-keywords) — one rule per message, no ad IDs needed.


---

---
title: "How Much Does Meta Charge for WhatsApp Messages?"
description: "Meta charges for WhatsApp Business messaging, and the cost depends on two things: the type of message and the country where the end user's phone number is…"
canonical_url: https://chatfuel.com/docs/whatsapp/how-much-does-meta-charge-for-whatsapp-messages
markdown_url: https://chatfuel.com/docs/whatsapp/how-much-does-meta-charge-for-whatsapp-messages.md
last_updated: 2026-08-17
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How Much Does Meta Charge for WhatsApp Messages?

Meta charges for WhatsApp Business messaging, and the cost depends on two things: the type of message and the country where the end user's phone number is…

## Overview [#overview]

Meta charges for WhatsApp Business messaging, and the cost depends on two things: the **type of message** and the **country** where the end user's phone number is registered.

These fees are set by Meta, not by Chatfuel. They apply to every business and every provider on the WhatsApp Business Platform. On the current platform they come out of your [wallet](https://chatfuel.com/docs/billing/how-your-wallet-and-credits-work) along with everything else, so you get one bill instead of setting up billing with Meta yourself.

***

## What changes on 1 October [#what-changes-on-1-october]

Meta announced in July 2026 that from **1 October** it starts charging for service messages. Two things that were free become paid:

* **Free-form replies inside the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window)** — free since November 2024
* **Utility templates sent inside that window**

Service messages are billed at the same per-market rate Meta already charges for utility and authentication templates, and there are **no volume discounts** on them — the rate is the same whether you send a hundred messages or a hundred thousand.

**Ads that click to WhatsApp are not affected.** They still open a free 72-hour window, and everything you send inside it stays free — which makes [click-to-WhatsApp ads](https://chatfuel.com/docs/whatsapp/create-ads-that-click-to-whatsapp) the cheapest way to start a conversation.

***

## Message categories [#message-categories]

Meta groups WhatsApp messages into four categories, each with its own price:

* **Marketing** — promotional messages, offers, product announcements
* **Utility** — transactional updates like order confirmations, shipping notifications, and appointment reminders
* **Authentication** — one-time passcodes and verification codes
* **Service** — replies to a customer inside the 24-hour window, paid from 1 October

When you [send a template outside the 24-hour window](https://chatfuel.com/docs/whatsapp/how-to-send-messages-outside-24-hour-window), the category is set by the template type you created.

***

## Where to check current prices [#where-to-check-current-prices]

Meta publishes the exact per-country rates, including the new service message rates, on its own pricing page:

**[WhatsApp Business Pricing — Meta for Developers](https://developers.facebook.com/docs/whatsapp/pricing)**

The page lets you filter by country and category to see exact costs.

To see what your own account is actually spending, open your billing page — it breaks every charge down by day and by type. If the balance runs out, [messages stop going out](https://chatfuel.com/docs/billing/what-to-do-when-you-hit-your-limit) until you top up, so it's worth leaving auto-top-up on.


---

---
title: "How to Activate AI in WhatsApp"
description: "On WhatsApp, Fuely AI starts switched off. Each WhatsApp traffic source — direct messages, ads that click to WhatsApp, posts that click to WhatsApp — has its…"
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp.md
last_updated: 2026-09-08
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Activate AI in WhatsApp

On WhatsApp, Fuely AI starts switched off. Each WhatsApp traffic source — direct messages, ads that click to WhatsApp, posts that click to WhatsApp — has its…

On WhatsApp, [Fuely AI](https://chatfuel.com/docs/ai-features/what-is-fuely-ai) starts switched off. Each WhatsApp traffic source — direct messages, ads that click to WhatsApp, posts that click to WhatsApp — has its own [automation](https://chatfuel.com/docs/ai-features/automations), and activating AI means turning on the automations for the sources you want answered.

Before you start, make sure your [WhatsApp number is connected](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number). If it isn't yet, you can still [configure everything in advance](https://chatfuel.com/docs/whatsapp/can-i-test-before-connecting-whatsapp-number) — the setup is saved as a draft and goes live the moment the number connects.

> **Also on Instagram or Facebook?** See [How to activate AI in Instagram](https://chatfuel.com/docs/instagram/how-to-activate-ai-in-instagram) and [How to activate AI in Facebook](https://chatfuel.com/docs/facebook/how-to-activate-ai-in-facebook) for platform-specific steps.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Find the **WhatsApp** channel. It has an automation for each source: **direct messages**, **ads that click to WhatsApp**, and **posts that click to WhatsApp**.
3. Turn on the automations for the sources you want AI to answer. Enable all of them to cover every WhatsApp conversation, or just one — for example, only **ads that click to WhatsApp** if AI should talk to ad leads and nothing else.

Once **direct messages** is on, the AI replies to every incoming message, including [voice messages](https://chatfuel.com/docs/whatsapp/is-whatsapp-audio-listening-enabled). Each automation carries its own settings — reply instructions, delays, working hours, handoff rules — inherited from **Main bot** until you override them.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Answer all WhatsApp messages"&#x2A; — or, to cover ad leads only, &#x2A;"Only answer WhatsApp leads coming from ads."*

It enables the right automations and confirms what it set. You can change this at any time the same way — just say what to start or stop answering.

## Fill the Knowledge Base [#fill-the-knowledge-base]

Turning automations on tells the AI *where* to reply; the [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base) gives it *what to know*. Without it, AI can only give generic replies. For a detailed walkthrough of every section, see the [definitive AI setup guide](https://chatfuel.com/docs/ai-features/how-to-set-up-ai-the-definitive-guide).

What to add:

* **FAQs** — common questions and your preferred answers
* **Product or service descriptions** — what you sell or offer
* **Policies** — shipping, returns, working hours, etc.
* **Contact details** — where to send customers who need human help

The more relevant content you add, the better AI will answer your customers.

## Test your setup [#test-your-setup]

Open the automation you enabled and use the **Test chat** sidebar — it [simulates a conversation with exactly that automation's settings](https://chatfuel.com/docs/ai-features/how-to-test-your-automation), using your real Knowledge Base. Once you're live, you can also message your business number from a personal phone and check that the answers are accurate.

If AI doesn't reply, check that the automation is turned on and that your WhatsApp number is still connected.

## Important notes [#important-notes]

### 24-hour messaging window [#24-hour-messaging-window]

WhatsApp limits when businesses can message users. Once a contact sends you a message, you have 24 hours to reply freely. After that window closes, you can only reach them using [approved message templates](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates). See [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) for full details.

### Human takeover [#human-takeover]

Agents can take over any AI-handled conversation at any time. See [How to stop AI during active conversations](https://chatfuel.com/docs/ai-features/how-to-stop-ai-during-active-conversations).


---

---
title: "How to add a WhatsApp Business profile photo"
description: "A profile photo is not required for a WhatsApp Business account."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-add-profile-photo
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-add-profile-photo.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to add a WhatsApp Business profile photo

A profile photo is not required for a WhatsApp Business account.

A profile photo is not required for a WhatsApp Business account. However, it is highly recommended — it increases trust in your business and raises customer engagement with your profile. Along with [choosing the right display name](https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-display-name), a profile photo is one of the first things customers notice.

## Adding a profile photo [#adding-a-profile-photo]

1. Open [WhatsApp Manager](https://business.facebook.com/wa/manage/home/), then click on the phone number title.

2. Open the settings next to your number.

3. Click **Choose file** and upload your photo.

## Profile photo requirements [#profile-photo-requirements]

* Square image
* Minimum resolution: 640×640 px
* Max file size: 5 MB
* File format: PNG, JPG (recommended)


---

---
title: "How to Change the Facebook Account Linked to WhatsApp"
description: "Your WhatsApp Business Account is connected to a specific Facebook (Meta) account."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-change-linked-facebook-account
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-change-linked-facebook-account.md
last_updated: 2026-04-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Change the Facebook Account Linked to WhatsApp

Your WhatsApp Business Account is connected to a specific Facebook (Meta) account.

Your WhatsApp Business Account is connected to a specific Facebook (Meta) account. If you need to switch to a different Facebook account — for example, because a team member left or you're consolidating business assets — you'll need to make the change in Meta Business Suite, not in Chatfuel.

## Why this can't be done inside Chatfuel [#why-this-cant-be-done-inside-chatfuel]

Chatfuel connects to your WhatsApp number through the Meta (Facebook) platform. The link between your Facebook account and WhatsApp Business Account is managed entirely on Meta's side. Chatfuel reads this connection but cannot change it.

## How to change the linked Facebook account [#how-to-change-the-linked-facebook-account]

1. Open [Meta Business Settings](https://business.facebook.com/latest/settings/).

2. Go to **People** and add the new Facebook account as an admin with **Full Control** permissions.

3. Log in to Meta Business Suite using the **new** Facebook account and confirm you have access to the WhatsApp Business Account under **Accounts → WhatsApp accounts**.

4. Once the new account has full access, you can remove the old Facebook account from the Business Portfolio under **People**.

5. Next time you need to manage your WhatsApp connection in Chatfuel — for example, to [reconnect your phone number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number) — log in with the new Facebook account when prompted.

## Important notes [#important-notes]

* The new Facebook account must have **admin-level access** to the Meta Business Portfolio that owns the WhatsApp Business Account. Without this, the account won't see the WhatsApp number during setup.

* Do **not** remove the old account before the new one has full access — you could lose access to your [WhatsApp Business Account entirely](https://chatfuel.com/docs/whatsapp/link-whatsapp-to-business-manager).

* If the old Facebook account is restricted or disabled, you may need to contact [Meta Support](https://business.facebook.com/business-support-home) to transfer ownership. See our [troubleshooting guide](https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues) for more details on restricted accounts.

* Changing the linked Facebook account does **not** affect your WhatsApp phone number, display name, or conversation history in Chatfuel. Everything stays the same — only the Meta login changes.


---

---
title: "How to Change the Business Name on Your WhatsApp QR Code"
description: "When you generate a WhatsApp QR code through Chatfuel (links like wa.chatfuel.com/yourbusiness), the QR code page displays the business name associated with…"
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-change-name-on-whatsapp-qr-code
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-change-name-on-whatsapp-qr-code.md
last_updated: 2026-03-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Change the Business Name on Your WhatsApp QR Code

When you generate a WhatsApp QR code through Chatfuel (links like wa.chatfuel.com/yourbusiness), the QR code page displays the business name associated with…

When you generate a WhatsApp QR code through Chatfuel (links like `wa.chatfuel.com/yourbusiness`), the QR code page displays the business name associated with your WhatsApp account. If you've rebranded or registered a different company since setting up your account, that old name may still appear on the QR code.

## Can I change the name on the QR code? [#can-i-change-the-name-on-the-qr-code]

Not yet. Chatfuel does not currently support editing the business name shown on your WhatsApp QR code page. This feature is in development and will be available in a future update.

## What you can do now [#what-you-can-do-now]

While the QR code page name cannot be changed yet, you can update other parts of your WhatsApp Business identity:

* **Display name** — the name customers see inside WhatsApp conversations can be changed through [WhatsApp Manager](https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-display-name). This is separate from the name shown on the QR code page.
* **Profile photo** — you can update your [WhatsApp Business profile photo](https://chatfuel.com/docs/whatsapp/how-to-add-profile-photo) at any time.

## What is the QR code page? [#what-is-the-qr-code-page]

Chatfuel generates a shareable link (e.g. `wa.chatfuel.com/yourbusiness`) that opens a page with a QR code. When someone scans it or clicks the link, it starts a WhatsApp conversation with your business. The page shows the business name that was associated with your account when the QR code was created.


---

---
title: "How to Change Your WhatsApp Display Name"
description: "Your WhatsApp Business display name is part of your digital identity — it's how customers recognize you on WhatsApp."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-display-name
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-display-name.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Change Your WhatsApp Display Name

Your WhatsApp Business display name is part of your digital identity — it's how customers recognize you on WhatsApp.

Your WhatsApp Business display name is part of your digital identity — it's how customers recognize you on WhatsApp. Whether you're rebranding or fixing a typo, changing this name is a simple process.

## Changing your display name [#changing-your-display-name]

1. Open [WhatsApp Manager](https://business.facebook.com/wa/manage/home/) and choose the account you wish to update.

2. Open **Phone numbers**.

3. Hover over your current name and wait for the edit icon (pencil) to appear.

4. Click the icon to edit your display name.

5. Edit your display name and click **Next** to send it for approval.

6. Go back to Chatfuel **Settings** and click **Sync data** to save changes.

## Rules for display names [#rules-for-display-names]

WhatsApp reviews every display name you submit. Approval isn't guaranteed, so learn these rules before you submit. If your name breaks WhatsApp's rules, they'll reject it and you'll need to start over.

| Rule                   | Good practices                                                                 | What NOT to do                                                | Good example                                  | Bad example                               |
| ---------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------- | --------------------------------------------- | ----------------------------------------- |
| Match your brand       | Use your real business name (same as your website, invoices, or legal docs)    | Use generic words like *fashion* or someone else's brand name | Sweet Treats, QuickPay Solutions              | Best Fashion, Nike Store                  |
| Format properly        | Capitalize the first letter of each word, single spaces, at least 4 characters | ALL CAPS, extra spaces, emojis, or symbols like @, $          | Tammy's Burritos & Tacos, HappyPaws Grooming  | SWEET TREATS, Coffee Shop , Cupcake\@2025 |
| Avoid misleading terms | Keep it simple unless these words are actually your registered business name   | Don't use "WhatsApp", "Meta", "Official", "Bot"               | Green Leaf Clinic — Mexico, Acme Corp Support | My Cars WhatsApp, Sweet Treats Bot        |

If you run into issues after changing your display name and your phone number stops working correctly, check the [troubleshooting guide for phone connection issues](https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues).


---

---
title: "How to Change Your WhatsApp Number"
description: "To switch to a different WhatsApp number in Chatfuel, disconnect your current number first, then connect the new one."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-number
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-number.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Change Your WhatsApp Number

To switch to a different WhatsApp number in Chatfuel, disconnect your current number first, then connect the new one.

To switch to a different WhatsApp number in Chatfuel, disconnect your current number first, then connect the new one.

Connecting the new number is one of the few steps the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) can't complete for you — it requires authorizing with Meta in your own account. The Co-Worker can take you straight to the connection page: just ask. Disconnecting the old number works both ways — in Settings or through the Co-Worker.

## Set it up in Settings [#set-it-up-in-settings]

### Step 1: Disconnect your current number [#step-1-disconnect-your-current-number]

1. Open **Settings** in the left sidebar.
2. Find your current number in the **WhatsApp** section.
3. Click **Disconnect** next to the number you want to remove.
4. Confirm the disconnection when prompted.

### Step 2: Connect your new number [#step-2-connect-your-new-number]

Once the old number is disconnected, [connect your new phone number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number) following the standard setup process. If you're migrating a number already in use with the WhatsApp Business App, follow the [WhatsApp Business App connection guide](https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number) instead.

After connecting, [activate AI on your new WhatsApp channel](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp) to resume automation.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Disconnect my current WhatsApp number."*

It applies the change and confirms what it set. Then connect the new number yourself following Step 2 above.

If you run into issues during the process, see the [troubleshooting guide for phone connection issues](https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues).


---

---
title: "How to Check if Your WhatsApp Number Is Released from the API"
description: "If you need to confirm whether your WhatsApp number has been released from the API, you can check it directly in Meta Business Settings."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-check-if-whatsapp-number-is-released
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-check-if-whatsapp-number-is-released.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Check if Your WhatsApp Number Is Released from the API

If you need to confirm whether your WhatsApp number has been released from the API, you can check it directly in Meta Business Settings.

If you need to confirm whether your WhatsApp number has been released from the API, you can check it directly in Meta Business Settings.

## How to check [#how-to-check]

1. Open [Meta Business Settings](https://business.facebook.com/latest/settings/whatsapp_account) and go to **Accounts** → **WhatsApp accounts**. If you're not sure how to get there, see [Link WhatsApp to Business Manager](https://chatfuel.com/docs/whatsapp/link-whatsapp-to-business-manager) for a step-by-step walkthrough.

2. Click on the WhatsApp Business Account that was connected to your number.

3. Go to **Phone numbers** inside that account.

4. If your number still appears in the list, it has **not** been released yet.

5. If your number is **not** in the list, it has been successfully released.


---

---
title: "How to Connect a New Phone Number"
description: "This guide walks you through connecting a new phone number to Chatfuel via WhatsApp."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number.md
last_updated: 2026-07-03
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Connect a New Phone Number

This guide walks you through connecting a new phone number to Chatfuel via WhatsApp.

This guide walks you through connecting a new phone number to Chatfuel via WhatsApp. If you want to connect a number that's already in use with the WhatsApp Business App, see [Connect WhatsApp Business App Number to Chatfuel](https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number) instead.

> **Note:** Connecting a number is one of the few steps the AI Co-Worker can't complete for you — it requires authorizing with Meta in your own account. The Co-Worker can take you straight to the right page: just ask.

> Make sure you have all the required permissions before beginning this process. See the WhatsApp permission checklist.

## Step-by-step setup [#step-by-step-setup]

1. Go to [panel.chatfuel.com](https://panel.chatfuel.com) and open **Settings** in the left sidebar.

2. Click **Add number** in the WhatsApp section.

3. You'll see an authentication screen. Log in to your Facebook account and click **Continue**.

4. Click **Continue** to authorize Chatfuel to connect with your WhatsApp Business account.

5. On this screen you need to:
   * Select your existing business portfolio or create a new one. This is your Meta Business account where all your business tools live.
   * Select **Create a WhatsApp Business account** to connect a new phone number. This option allows you to link a number that's not currently in use in WhatsApp Business.
   * Click **Next** to continue.

6. If you selected **Create a Business Portfolio** in the previous step, fill out all business information. Even if some fields are marked as optional, it's best to complete them for smoother account verification. Click **Next** when done.

7. Fill in all required business information for your new WhatsApp account. Provide the [display name](https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-display-name) that appears in WhatsApp chat headers and your business catalog. Click **Next**.

   Meta reviews your display name and may restrict your account if it violates their naming policy. Use your real business name, avoid excessive punctuation or special characters, and don't include "WhatsApp" or "Meta" in the name.

8. Choose **Add a new number**, enter your phone number, and pick a verification method (text message or phone call). Click **Next**.

9. Enter the verification code you received and click **Next**.

10. Review what Chatfuel will be able to access and do with your WhatsApp Business account, then click **Confirm**.

11. You'll see a success message: &#x2A;*"Your account is connected to Chatfuel"**. Click **Finish** to complete the connection.

Your WhatsApp number now appears in Settings. Next, [activate AI on your WhatsApp channel](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp) to start automating conversations.

If the number doesn't appear or you run into errors during setup, check our [troubleshooting guide for phone connection issues](https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues).


---

---
title: "How to Create a Broadcast List"
description: "A broadcast list lets you send a message to multiple contacts at once, even if their 24-hour messaging window has expired."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-create-a-broadcast-list
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-create-a-broadcast-list.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Create a Broadcast List

A broadcast list lets you send a message to multiple contacts at once, even if their 24-hour messaging window has expired.

## Overview [#overview]

A broadcast list lets you send a message to multiple contacts at once, even if their [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) has expired. Because these messages are sent outside the conversation window, they use pre-approved WhatsApp templates and require a connected payment method.

## How to Create a Broadcast List [#how-to-create-a-broadcast-list]

1. Open the **Broadcasts** tab in the main menu.
2. Click **Create re-engage**.
3. Choose a **WhatsApp template** — this is the message your contacts will receive. Templates must be [pre-approved by Meta](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates) before they can be used.
4. Connect a **payment method** — broadcast messages are template messages, and Meta charges per message sent. Make sure your payment method is active in your [billing settings](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing).
5. Choose your **audience** — select which contacts should receive the message. You can target specific segments or your full contact list.
6. Choose **when to send** — schedule the message for a specific date and time, or send it immediately.

## Good to Know [#good-to-know]

* **Broadcast list = re-engage** — in Chatfuel, broadcast lists are created through the Re-engage feature. The steps above walk you through exactly that.
* **Template approval** — WhatsApp templates need to be approved by Meta before you can use them. This can take a few minutes to a few hours.
* **Delivery issues** — if your broadcast messages aren't being delivered, check [Problems with sending messages on WhatsApp](https://chatfuel.com/docs/whatsapp/problems-with-sending-messages-on-whatsapp) for troubleshooting steps.
* **Re-engages vs. follow-ups** — broadcast lists target contacts whose messaging window has closed. If you want to nudge contacts who stopped responding during an active conversation, use [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups) instead.


---

---
title: "How to Create Re-Engage Messages"
description: "Re-engage messages let you reach out to contacts whose 24-hour messaging window has expired."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-create-re-engage-messages
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-create-re-engage-messages.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Create Re-Engage Messages

Re-engage messages let you reach out to contacts whose 24-hour messaging window has expired.

## Overview [#overview]

Re-engage messages let you reach out to contacts whose [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) has expired. Because these messages are sent outside the conversation window, they use pre-approved WhatsApp templates and require a connected payment method.

## How to Create a Re-Engage Message [#how-to-create-a-re-engage-message]

1. Open the **Broadcasts** tab in the main menu.
2. Click **Create re-engage**.
3. Choose a **WhatsApp template** — this is the message your contacts will receive. Templates must be [pre-approved by Meta](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates) before they can be used.
4. Connect a **payment method** — re-engage messages are template messages, and Meta charges per message sent. Make sure your payment method is active in your [billing settings](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing).
5. Choose your **audience** — select which contacts should receive the message. You can target specific segments or your full contact list.
6. Choose **when to send** — schedule the message for a specific date and time, or send it immediately.

## Good to Know [#good-to-know]

* **Re-engages vs. follow-ups** — re-engage messages target contacts whose messaging window has closed. If you want to nudge contacts who stopped responding during an active conversation, use [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups) instead.
* **Template approval** — WhatsApp templates need to be approved by Meta before you can use them. This can take a few minutes to a few hours.
* **Delivery issues** — if your re-engage messages aren't being delivered, check [Problems with sending messages on WhatsApp](https://chatfuel.com/docs/whatsapp/problems-with-sending-messages-on-whatsapp) for troubleshooting steps.


---

---
title: "How to Create WhatsApp Templates"
description: "If you want to message your contacts after the 24-hour messaging window has closed, you need to create a template."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates.md
last_updated: 2026-03-02
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Create WhatsApp Templates

If you want to message your contacts after the 24-hour messaging window has closed, you need to create a template.

## Overview [#overview]

If you want to message your contacts after the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) has closed, you need to create a template. Templates are required for starting [business-initiated conversations](https://developers.facebook.com/docs/whatsapp/conversation-types) on WhatsApp and can include customer care messages, appointment reminders, payment updates, shipping notifications, and more.

### Types of message templates [#types-of-message-templates]

* **Marketing** — promotional offers and product announcements
* **Authentication** — secure account access codes
* **Utility** — important information like account updates and alerts

***

## Creating a template [#creating-a-template]

1. Open [WhatsApp Manager](https://business.facebook.com/wa/manage/home&#x29;. Go to &#x2A;*…** → **Manage message templates**. You'll be redirected to the message templates page.

2. Click **Create Template**.

3. Choose a category for your template: Marketing, Utility, or Authentication.

4. Give the template a unique name and select the language, then click **Continue**.

5. Add content to your template. Only the **Body** section is required.

6. **Header** — can contain text or media (image, video, document) and supports one variable.

7. **Body** — supports basic formatting and multiple variables (depending on text length).

8. **Footer** — supports text only, no variables.

9. **Buttons** — for Marketing templates, you can add interactive buttons. Two call-to-action button types are available:

   * Call Phone Number
   * Visit Website (static or dynamic)

   You can also add up to 3 Quick Reply buttons.

10. Click **Submit** to send your template for Meta's approval. The Meta team will review it within 24 hours. You can check the status in your templates list.

***

## Important notes [#important-notes]

### Template categories and opt-out [#template-categories-and-opt-out]

Only Marketing templates can include an Opt-out button. Utility and Authentication templates don't support this feature — your contacts can only unsubscribe from Marketing messages.

### Template status notifications [#template-status-notifications]

To get updates on whether your template was approved or rejected:

1. Open [Business settings](https://business.facebook.com/settings/preferences) in Meta Business Suite.
2. Go to the **Notifications** tab.
3. Switch the toggles on under **WhatsApp accounts**.

### Missing templates [#missing-templates]

If your template isn't appearing in your list, check if it contains only supported button types:

* Call Phone Number
* Visit Website

Templates with unsupported button types won't appear in your available templates list.


---

---
title: "How to Find Your Connected WhatsApp Number"
description: "If you need to check which WhatsApp number is currently connected to your Chatfuel account, it's shown in your account settings."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-find-your-connected-whatsapp-number
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-find-your-connected-whatsapp-number.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Find Your Connected WhatsApp Number

If you need to check which WhatsApp number is currently connected to your Chatfuel account, it's shown in your account settings.

If you need to check which WhatsApp number is currently connected to your Chatfuel account, it's shown in your account settings.

## Find it in Settings [#find-it-in-settings]

1. Open **Settings** in the left sidebar.
2. Go to the **WhatsApp** section.
3. Your connected phone number is displayed there.

If you don't see a number, it means no WhatsApp number has been [connected to your account](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number) yet.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Which WhatsApp number is connected to my account?"*

It looks it up and tells you right away.


---

---
title: "How to Get a Green Badge for Your Business"
description: "To get a green badge (green checkmark) on WhatsApp, you need an Official Business Account (OBA)."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-get-a-green-badge
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-get-a-green-badge.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Get a Green Badge for Your Business

To get a green badge (green checkmark) on WhatsApp, you need an Official Business Account (OBA).

To get a green badge (green checkmark) on WhatsApp, you need an Official Business Account (OBA). This means upgrading from a regular business account.

> **Not the same as business verification.** [Business verification](https://chatfuel.com/docs/whatsapp/verify-your-meta-business-account) is a separate process that unlocks higher messaging limits. It's a *prerequisite* for the green badge, but completing business verification alone does **not** give you a green badge — you still need to apply for OBA separately.

Here's what changes with an Official Business Account:

* Your contacts see your business name instead of your phone number
* Your contacts see a green badge next to your business name

## Requirements [#requirements]

Meta requires your WhatsApp brand to be **authentic** and **notable**.

*Authenticity* means completing these verifications:

* [Business Verification](https://chatfuel.com/docs/whatsapp/verify-your-meta-business-account)
* [Two-step verification](https://developers.facebook.com/docs/whatsapp/api/settings/two-step-verification) (2FA)

[Notability](https://developers.facebook.com/docs/whatsapp/overview/business-accounts/#notability) means your brand appears in news articles and online coverage. Paid or promotional content doesn't count. This shows how well-known your business is and how often people search for it.

## How to request an Official Business Account (OBA) [#how-to-request-an-official-business-account-oba]

1. Open [WhatsApp Manager](https://business.facebook.com/wa/manage/home/), then **Overview**. Click on the phone number you want to request OBA for.

2. Turn on **Two-step verification** for this phone number. Make sure to complete your [Business Verification](https://www.facebook.com/business/help/2058515294227817) and [Display Name](https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-display-name) before applying for OBA.

3. Submit your request by filling out the required information. You can include up to 5 supporting links that show your business is notable.

The approval process takes 1–2 business days. Meta will review your request and notify you whether your account receives OBA status. Once approved, you'll see a green badge next to your business name.

If your request is rejected, you can submit a new request after 30 days.

## Important limitations [#important-limitations]

Meta doesn't grant Official Business Accounts to employee accounts, test accounts, or Business App accounts. OBAs are only available to WhatsApp Business Platform users since Business App accounts don't go through Business Verification.

You can learn more about OBAs, their requirements, and limitations in [Meta's official documentation](https://developers.facebook.com/docs/whatsapp/overview/business-accounts).


---

---
title: "How to Get a Blue Verification Badge on WhatsApp"
description: "The blue verification badge (blue checkmark) on WhatsApp is part of Meta Verified, a paid subscription offered by Meta."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-get-blue-verification-badge
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-get-blue-verification-badge.md
last_updated: 2026-03-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Get a Blue Verification Badge on WhatsApp

The blue verification badge (blue checkmark) on WhatsApp is part of Meta Verified, a paid subscription offered by Meta.

The blue verification badge (blue checkmark) on WhatsApp is part of [**Meta Verified**](https://business.whatsapp.com/resources/resource-library/meta-verified-business), a paid subscription offered by Meta. It is **not available** through Chatfuel.

> **Not the same as business verification or green checkmark.** [Business verification](https://chatfuel.com/docs/whatsapp/verify-your-meta-business-account) is a separate process that unlocks messaging limits — it does not give you any badge. The [green checkmark](https://chatfuel.com/docs/whatsapp/how-to-get-a-green-badge) (Official Business Account) is also a different process.

## Can I get the blue badge with Chatfuel? [#can-i-get-the-blue-badge-with-chatfuel]

It depends on how you connect your number:

* **WhatsApp Business App number** — subscribe to [Meta Verified](https://business.whatsapp.com/resources/resource-library/meta-verified-business) in the WhatsApp Business App to get the blue badge.
* **New number from Chatfuel** — if you get a new number through Chatfuel, it's connected via the API and is not eligible for Meta Verified. You cannot get the blue badge for this number.

## What you can get instead [#what-you-can-get-instead]

If you're using Chatfuel (WhatsApp Business Platform), you can apply for:

* **[Green badge](https://chatfuel.com/docs/whatsapp/how-to-get-a-green-badge)** — Official Business Account (OBA) status, which shows your business name with a green checkmark. This is the equivalent verification for API-connected numbers.
* **[Business verification](https://chatfuel.com/docs/whatsapp/verify-your-meta-business-account)** — verifies your Meta business portfolio, unlocks higher messaging limits, and is a prerequisite for the green badge.

## Summary [#summary]

| Badge                          | Available through Chatfuel? | How to get                                                                |
| ------------------------------ | --------------------------- | ------------------------------------------------------------------------- |
| Blue checkmark (Meta Verified) | No                          | Only via WhatsApp Business App + paid Meta subscription                   |
| Green checkmark (OBA)          | Yes                         | Apply through [WhatsApp Manager](https://chatfuel.com/docs/whatsapp/how-to-get-a-green-badge) |


---

---
title: "How to Get a Free WhatsApp Button"
description: "A WhatsApp button is a small widget you can add to your website that lets visitors start a WhatsApp conversation with your business in one click."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-get-free-whatsapp-button
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-get-free-whatsapp-button.md
last_updated: 2026-03-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Get a Free WhatsApp Button

A WhatsApp button is a small widget you can add to your website that lets visitors start a WhatsApp conversation with your business in one click.

A WhatsApp button is a small widget you can add to your website that lets visitors start a WhatsApp conversation with your business in one click. Chatfuel offers a free WhatsApp button generator — no paid plan required.

## How to create your WhatsApp button [#how-to-create-your-whatsapp-button]

1. Go to [chatfuel.com/wa-widget](https://chatfuel.com/wa-widget).
2. Enter your WhatsApp phone number.
3. Customize the button appearance — choose a style, position, and welcome message.
4. Copy the generated code snippet.
5. Paste the code into your website's HTML, before the `</body>` tag.

That's it. Visitors will now see a WhatsApp button on your site and can message you directly.

## What happens when someone clicks the button [#what-happens-when-someone-clicks-the-button]

When a visitor clicks the button, it opens a WhatsApp chat with your business number pre-filled. If your number is [connected to Chatfuel](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number), incoming messages are handled automatically by your AI or automation setup.

## WhatsApp button vs. website chat widget [#whatsapp-button-vs-website-chat-widget]

The WhatsApp button redirects visitors to WhatsApp, where the conversation continues inside the WhatsApp app. The [website chat widget](https://chatfuel.com/docs/website/set-up-chat-widget-for-website) keeps the conversation on your site in a built-in chat window. Choose whichever fits your workflow — or use both.

## Do I need a Chatfuel account? [#do-i-need-a-chatfuel-account]

No. The WhatsApp button generator at [chatfuel.com/wa-widget](https://chatfuel.com/wa-widget) is completely free and does not require a Chatfuel account. However, if you want AI to automatically respond to incoming WhatsApp messages, you'll need to [connect your number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number) and [set up Fuely AI](https://chatfuel.com/docs/whatsapp/how-to-activate-ai-in-whatsapp).


---

---
title: "How to Plan Messages"
description: "Planning messages in Chatfuel means scheduling a broadcast to be sent at a specific date and time."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-plan-messages
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-plan-messages.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Plan Messages

Planning messages in Chatfuel means scheduling a broadcast to be sent at a specific date and time.

## Overview [#overview]

Planning messages in Chatfuel means scheduling a broadcast to be sent at a specific date and time. This is done through the Re-engage feature — it lets you pick an audience, choose a [WhatsApp template](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates), and set a delivery time in the future.

## How to Plan a Message [#how-to-plan-a-message]

1. Open the **Broadcasts** tab in the main menu.
2. Click **Create re-engage**.
3. Choose a **WhatsApp template** — this is the message your contacts will receive. Templates must be pre-approved by Meta before they can be used.
4. Connect a **payment method** — Meta charges per template message sent. Make sure your payment method is active in your [billing settings](https://chatfuel.com/docs/billing/chatfuel-plans-and-pricing).
5. Choose your **audience** — select which contacts should receive the message. You can target specific segments or your full contact list.
6. Set the **date and time** — pick when you want the message to go out. You can also send it immediately if you don't need to schedule it.

## Good to Know [#good-to-know]

* **Planned message = broadcast = re-engage** — these are all the same thing in Chatfuel. If you see "broadcast" or "re-engage" mentioned elsewhere, it refers to this exact feature.
* **Templates must be approved first** — you can't plan a message until your template is approved by Meta, which can take up to 24 hours. Create your templates ahead of time so they're ready when you need them.
* **Only works outside the 24-hour window** — planned messages use WhatsApp templates, which are designed for reaching contacts after the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) has closed. If your contact is still actively chatting, you don't need a broadcast — the AI handles the conversation automatically.
* **Messages not arriving?** — check [Problems with sending messages on WhatsApp](https://chatfuel.com/docs/whatsapp/problems-with-sending-messages-on-whatsapp) for troubleshooting steps.
* **Want automatic nudges instead?** — if you'd rather have the AI follow up with quiet contacts on its own, use [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups) instead of planning a manual broadcast.


---

---
title: "How to Route Ad Leads with Keywords"
description: "When someone taps your ad that clicks to WhatsApp, they usually send the pre-filled message you set in the ad."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-route-ad-leads-with-keywords
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-route-ad-leads-with-keywords.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Route Ad Leads with Keywords

When someone taps your ad that clicks to WhatsApp, they usually send the pre-filled message you set in the ad.

When someone taps your ad that clicks to WhatsApp, they usually send the **pre-filled message** you set in the ad. You can use that message to give each ad its own conversation: create a [custom automation](https://chatfuel.com/docs/ai-features/how-to-create-a-custom-automation) on the **ads that click to WhatsApp** source for each pre-filled message, each with its own **Additional instructions** and replies.

## How it works [#how-it-works]

1. In your ad, you set a pre-filled message that appears in the customer's WhatsApp chat when they tap it — e.g., "I want info about Plan A". See [how to create ads that click to WhatsApp](https://chatfuel.com/docs/whatsapp/create-ads-that-click-to-whatsapp) for the full ad setup. Keep these messages short and distinct so keywords can match them reliably.

2. In Chatfuel, you create a custom automation whose **keyword** matches that pre-filled message.

3. When the lead sends the message, that automation answers — with its own instructions, so a whitening lead and an emergency lead get completely different conversations from the same number.

Messages that match no keyword fall through to the source's base [automation](https://chatfuel.com/docs/ai-features/automations), so no lead goes unanswered.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **WhatsApp**, open **ads that click to WhatsApp**.
3. For each ad message, create a custom automation: give it a name, add the pre-filled message as a **keyword** (e.g., `Service A`), and write the **Additional instructions** for how the AI should handle that lead.
4. Turn each rule on.

Repeat for each ad variant. The customer experience now changes depending on which ad they clicked.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"For WhatsApp ad leads whose first message is 'Free consultation', create an automation that offers to book a slot this week."*

It creates the rule and confirms what it set.

## Example [#example]

You run a dental clinic with three Facebook ads, all pointing to the same WhatsApp number:

| Ad                    | Pre-filled message | Custom automation | What its instructions do                    |
| --------------------- | ------------------ | ----------------- | ------------------------------------------- |
| Teeth whitening promo | `Whitening`        | **Whitening**     | Presents the offer and its price            |
| Dental implants       | `Implants`         | **Implants**      | Qualifies the lead and books a consultation |
| Emergency dental      | `Urgent`           | **Urgent**        | Triages and offers the nearest slot         |

A lead who taps the whitening ad sends "Whitening" and the **Whitening** automation takes over. A lead from the emergency ad sends "Urgent" and gets triaged right away. Someone who edits their message into something unrecognizable falls through to the base automation.

## Tips [#tips]

* **Exact matches win.** A rule matching the exact text beats a rule that merely contains it — Chatfuel picks the winner by [a fixed priority order](https://chatfuel.com/docs/ai-features/which-automation-replies-to-a-message-or-comment). Use the same text in your ad's pre-filled message and in the rule's keyword.
* **Keep messages simple.** One or two words work best. Long sentences are harder to match, and customers sometimes edit them.
* **The base automation is your safety net.** Keep it enabled with good general instructions so unmatched leads still get a useful answer from your [Knowledge Base](https://chatfuel.com/docs/ai-features/how-to-set-up-knowledge-base).
* **Prefer targeting the ad itself?** Instead of keywords, a custom automation can [target a specific ad by its ID](https://chatfuel.com/docs/ai-features/how-to-set-up-automation-for-specific-posts-or-ads) — useful when several ads share the same pre-filled message.
* **Multiple ads, one number.** Run as many ads as you want pointing to the same WhatsApp number; the rules keep each lead on the right path.


---

---
title: "Can You Send a Template for Me?"
description: "No — the AI Co-Worker can't send templates on your behalf. But you can easily do it yourself right from the live chat."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-send-a-template-from-live-chat
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-send-a-template-from-live-chat.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Can You Send a Template for Me?

No — the AI Co-Worker can't send templates on your behalf. But you can easily do it yourself right from the live chat.

## Short answer [#short-answer]

No — the [AI Co-Worker](https://chatfuel.com/docs/ai-features/what-the-ai-co-worker-can-do-for-you) can't send templates on your behalf. But you can easily do it yourself right from the live chat.

## How to send a template yourself [#how-to-send-a-template-yourself]

1. Go to **Chats** and open the conversation with the contact you want to message.
2. Below the message input field, click **Choose template**.
3. Select the approved template you want to send.
4. Fill in any variables if the template requires them.
5. Click **Send**.

That's it — the [template](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates) will be delivered to the contact. Once they reply, a new [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) will open.

## Good to know [#good-to-know]

* You can only send templates that have been approved by Meta. If yours isn't showing up, check its status in [WhatsApp Manager](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates).
* For reaching multiple contacts at once, use [Re-engage messages](https://chatfuel.com/docs/whatsapp/how-to-send-messages-outside-24-hour-window) instead.


---

---
title: "How to Send a Broadcast on a Client's Birthday"
description: "Sending an automatic message on each contact's birthday isn't natively supported in Chatfuel yet — it's on our roadmap and we're actively working on it."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-send-birthday-broadcast
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-send-birthday-broadcast.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Send a Broadcast on a Client's Birthday

Sending an automatic message on each contact's birthday isn't natively supported in Chatfuel yet — it's on our roadmap and we're actively working on it.

## Overview [#overview]

Sending an automatic message on each contact's birthday isn't natively supported in Chatfuel yet — it's on our roadmap and we're actively working on it. Until it ships, you can approximate the flow with a manual workaround: store each contact's birthday as a custom attribute, then send a [broadcast](https://chatfuel.com/docs/whatsapp/how-to-create-a-broadcast-list) to the contacts whose birthday matches today's date.

## Current Status [#current-status]

* **Not available natively** — there's no built-in trigger that fires a message automatically on a contact's birthday.
* **In development** — a birthday-based audience and scheduling option is planned. Once released, you'll be able to configure it directly inside the **Broadcasts** tab without manual work.

## Workaround Until It Ships [#workaround-until-it-ships]

### 1. Capture the birthday [#1-capture-the-birthday]

Store each contact's birthday as a custom attribute (for example `birthday` in `MM-DD` format). You can collect it through the conversation flow — ask the contact for their birthday and save the answer to the attribute.

### 2. Build a birthday audience [#2-build-a-birthday-audience]

Each day, filter your contacts by the `birthday` attribute to find everyone whose birthday matches today's date. This becomes the audience for your broadcast.

### 3. Send the broadcast [#3-send-the-broadcast]

Create a [re-engage / broadcast](https://chatfuel.com/docs/whatsapp/how-to-plan-messages) with a friendly birthday [WhatsApp template](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates) and send it to the audience from step 2. Because this goes out as a template message, it will reach contacts even after the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) has closed — and Meta will charge per message sent.

### 4. Repeat daily [#4-repeat-daily]

Since there's no automatic scheduler for birthdays yet, this filter-and-send step needs to be done each day. Some teams batch it weekly instead (for example, greet everyone with a birthday in the next 7 days), which is less precise but easier to operate.

## Good to Know [#good-to-know]

* **Template must be pre-approved** — the birthday message goes out as a WhatsApp template, so Meta has to approve it before you can send. Get it approved once and reuse it every day.
* **Coming soon** — once native birthday broadcasts are released, you'll be able to migrate the same template and attribute into the automated flow without recreating anything.
* **Delivery issues?** — check [Problems with sending messages on WhatsApp](https://chatfuel.com/docs/whatsapp/problems-with-sending-messages-on-whatsapp) if your birthday messages aren't arriving.


---

---
title: "How to Send Messages Outside the 24-Hour Window"
description: "WhatsApp only allows free-form messages while the 24-hour messaging window is open."
canonical_url: https://chatfuel.com/docs/whatsapp/how-to-send-messages-outside-24-hour-window
markdown_url: https://chatfuel.com/docs/whatsapp/how-to-send-messages-outside-24-hour-window.md
last_updated: 2026-08-17
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# How to Send Messages Outside the 24-Hour Window

WhatsApp only allows free-form messages while the 24-hour messaging window is open.

## Overview [#overview]

WhatsApp only allows free-form messages while the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) is open. Once it closes — meaning your contact hasn't written to you in more than 24 hours — you can no longer send regular messages to them. The only way to reach out is with a **pre-approved WhatsApp template**.

Templates are structured message formats reviewed and approved by Meta. Because they're vetted upfront, WhatsApp allows businesses to send them at any time, regardless of the messaging window.

***

## Step 1: Create and get a template approved [#step-1-create-and-get-a-template-approved]

Before you can send anything outside the 24-hour window, you need at least one approved template.

1. Go to [WhatsApp Manager](https://business.facebook.com/wa/manage/home&#x29; → &#x2A;*…** → **Manage message templates**.
2. Click **Create Template** and choose a category:
   * **Marketing** — promotions, offers, announcements
   * **Utility** — order updates, appointment reminders, account alerts
   * **Authentication** — one-time passcodes
3. Write your message. The **Body** is required; Header, Footer, and Buttons are optional.
4. Click **Submit**. Meta reviews templates within 24 hours.

For a full walkthrough including variables, buttons, and troubleshooting missing templates, see [How to Create WhatsApp Templates](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates).

***

## Step 2: Send the template using Re-engage [#step-2-send-the-template-using-re-engage]

Once your template is approved, use the Re-engage feature in Chatfuel to send it to contacts whose messaging window has closed.

1. Open the **Broadcasts** tab in the main menu.
2. Click **Create re-engage**.
3. Select your approved **WhatsApp template**.
4. Add a **payment method** — Meta charges per template message sent.
5. Choose your **audience** — target specific segments or your full contact list.
6. Set **when to send** — immediately or at a scheduled time.

***

## Good to Know [#good-to-know]

* **Templates cost money** — Meta bills every template message, and from 1 October it also bills [replies sent inside the 24-hour window](https://chatfuel.com/docs/whatsapp/how-much-does-meta-charge-for-whatsapp-messages). Both come out of your [wallet](https://chatfuel.com/docs/billing/how-your-wallet-and-credits-work), so keep a card on file with auto-top-up on.
* **Approval can take up to 24 hours** — plan ahead if you need a template for a scheduled campaign.
* **Contact hasn't gone cold, just quiet?** — if a contact is still within the 24-hour window but just stopped responding, use [follow-ups](https://chatfuel.com/docs/ai-features/how-to-set-up-follow-ups) instead of a re-engage message.
* **Template rejected?** — check that the content matches the category you selected and doesn't violate [WhatsApp's messaging policies](https://chatfuel.com/docs/whatsapp/whatsapp-rules-or-how-to-avoid-bans).


---

---
title: "Is WhatsApp Audio Listening Enabled?"
description: "There is no separate setting for audio listening on WhatsApp."
canonical_url: https://chatfuel.com/docs/whatsapp/is-whatsapp-audio-listening-enabled
markdown_url: https://chatfuel.com/docs/whatsapp/is-whatsapp-audio-listening-enabled.md
last_updated: 2026-08-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Is WhatsApp Audio Listening Enabled?

There is no separate setting for audio listening on WhatsApp.

There is no separate setting for audio listening on WhatsApp. Voice message processing is built into Fuely AI and works automatically — as long as the WhatsApp direct messages [automation](https://chatfuel.com/docs/ai-features/automations) is on, the AI also listens and replies to voice messages.

## How it works [#how-it-works]

When a customer sends a voice message, Fuely AI [transcribes the audio and processes it as text](https://chatfuel.com/docs/ai-features/how-ai-works-with-voice-messages). The response is sent back as a regular text message. This happens for every voice message, just like it does for typed messages — the two share the same pipeline, so if the AI is replying to text on WhatsApp, it is processing voice too. There is no additional toggle, checkbox, or setting specifically for audio.

## Set it up in Automations [#set-it-up-in-automations]

1. Go to **Fuely AI** → **Automations**.
2. Under **WhatsApp**, open **direct messages**.
3. Make sure the automation is turned on.

## Or ask the AI Co-Worker [#or-ask-the-ai-co-worker]

Tell it what you want in chat:

*"Is AI answering WhatsApp messages?"&#x2A; — and if it's off, &#x2A;"Answer all WhatsApp messages."*

It applies the change and confirms what it set.

## Audio not being processed? [#audio-not-being-processed]

If voice messages are not getting a response, the issue is almost certainly that the automation is off — not that audio is disabled. See [Why Chatfuel does not process audio messages](https://chatfuel.com/docs/ai-features/why-chatfuel-does-not-process-audio-messages) for a step-by-step checklist.


---

---
title: "Link WhatsApp to Business Manager"
description: "Any third-party app requires that your WhatsApp number is linked to Business Manager."
canonical_url: https://chatfuel.com/docs/whatsapp/link-whatsapp-to-business-manager
markdown_url: https://chatfuel.com/docs/whatsapp/link-whatsapp-to-business-manager.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Link WhatsApp to Business Manager

Any third-party app requires that your WhatsApp number is linked to Business Manager.

Any third-party app requires that your WhatsApp number is linked to Business Manager. Luckily, you can do this in just several steps.

1. Open [Meta Business Settings](https://business.facebook.com/latest/settings/whatsapp_account).

2. Go to **Accounts** ➜ **WhatsApp accounts**.

3. Click on **+ Add** on the top right.

4. Choose &#x2A;*Link a WhatsApp Business Account.**

5. Add your WhatsApp business number.

6. You'll get a code to your WhatsApp business app, enter it to complete linking accounts.

Done. You can now [connect your WhatsApp number to Chatfuel](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number).


---

---
title: "\"Phone number connected to another bot/account/company\" Error"
description: "\"Phone number connected to another bot/account/company\" means the number is already linked to another bot in your workspace. Disconnect it there first."
canonical_url: https://chatfuel.com/docs/whatsapp/phone-number-connected-to-another-bot-error
markdown_url: https://chatfuel.com/docs/whatsapp/phone-number-connected-to-another-bot-error.md
last_updated: 2026-09-09
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# "Phone number connected to another bot/account/company" Error

"Phone number connected to another bot/account/company" means the number is already linked to another bot in your workspace. Disconnect it there first.

When [connecting a WhatsApp number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number), you may see this error:

> **Phone number connected to another bot/account/company.**

This means the number is already linked to a different bot inside your Chatfuel workspace (or to another company you have access to). WhatsApp only allows one active connection per number, so you need to release it from the old bot before connecting it to the new one.

## How to fix it [#how-to-fix-it]

1. Open the **companies list** in Chatfuel by clicking your workspace name in the top-left corner of the panel.
2. Go through each company and open its bots.
3. Find the bot where this phone number is currently connected.
4. Open that bot's **Settings → WhatsApp** and disconnect the number.
5. Return to the bot where you actually want the number, and run the connection flow again.

The number should now connect successfully.

## If you can't find the bot [#if-you-cant-find-the-bot]

If you've checked every company you have access to and still can't locate where the number is connected, it may be linked to a company owned by someone else — for example, a colleague or a former teammate. Ask around your team to find the owner, or contact Chatfuel support so we can help identify the company holding the number.

For other connection problems, see the [troubleshooting guide for phone connection issues](https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues).


---

---
title: "Problems with Sending Messages on WhatsApp"
description: "When a user reaches out about unusual message-sending failures and you're not sure how to proceed, follow the steps below."
canonical_url: https://chatfuel.com/docs/whatsapp/problems-with-sending-messages-on-whatsapp
markdown_url: https://chatfuel.com/docs/whatsapp/problems-with-sending-messages-on-whatsapp.md
last_updated: 2026-03-02
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Problems with Sending Messages on WhatsApp

When a user reaches out about unusual message-sending failures and you're not sure how to proceed, follow the steps below.

When a user reaches out about unusual message-sending failures and you're not sure how to proceed, follow the steps below. Always ask the user for a screenshot or a screen recording of every key step — they can easily miss something.

## Step 1: Check Business Portfolio and WABA status [#step-1-check-business-portfolio-and-waba-status]

Go to the [WhatsApp Manager partner home](https://business.facebook.com/latest/whatsapp_manager/) and check the status of the Business Portfolio and WABA.

* If the **WABA is banned**, the user can request a review in [Meta Support Home](https://business.facebook.com/business-support-home).
* If the **Business Portfolio isn't verified**, ask the user to [verify it](https://chatfuel.com/docs/whatsapp/verify-your-meta-business-account). They can do this in Chatfuel → Settings → WhatsApp by uploading documents in the Chatfuel UI, or directly in Meta in [Business Info settings](https://business.facebook.com/latest/settings/business_info). For more details on verification and other connection blockers, see [Troubleshooting Phone Connection Issues](https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues).
* If neither the WABA nor the Business Portfolio can be found, it means Chatfuel no longer has access to them. Ask the user to reconnect their WABA and phone number.

## Step 2: Verify the phone number exists [#step-2-verify-the-phone-number-exists]

Manually verify that the failing phone number is a real WhatsApp account. Open `https://wa.me/<phone_number>` (replace `<phone_number>` with the actual number). Does it open a WhatsApp chat? If not, the user likely imported a non-existent number or entered the number in the wrong format.

Also keep in mind that messages may fail due to the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) — if the conversation window has expired, the business cannot send free-form messages until the user writes again.

## Step 3: Sync data in Chatfuel [#step-3-sync-data-in-chatfuel]

Click the **Sync data** button in Chatfuel (found in Settings → WhatsApp) to refresh the connection state.

## Step 4: Check CoEx number connection [#step-4-check-coex-number-connection]

Is Chatfuel connected to the number? Ask the user to open the WhatsApp Business app → Settings → Account → Business Platform and send a screenshot.

If Chatfuel is not listed as the connected platform, ask the user to [reconnect the phone number](https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number) to Chatfuel.

## Step 5: Confirm the phone number is Active in WhatsApp Manager [#step-5-confirm-the-phone-number-is-active-in-whatsapp-manager]

In the user's WhatsApp Manager (open it via Chatfuel → Settings → WhatsApp → WhatsApp Manager), confirm the connected phone number status is **Active**.

If the status is not Active:

1. Ask the user to open [WhatsApp Account settings](https://business.facebook.com/latest/settings/whatsapp_account) → **Partners** and remove Chatfuel from the partner list.
2. Then go to Chatfuel → Settings → WhatsApp and reconnect the phone number.


---

---
title: "Troubleshooting Meta Business Verification"
description: "If your Meta business verification was rejected or you're seeing an error, this guide covers the most common issues and how to fix them."
canonical_url: https://chatfuel.com/docs/whatsapp/troubleshooting-meta-business-verification
markdown_url: https://chatfuel.com/docs/whatsapp/troubleshooting-meta-business-verification.md
last_updated: 2026-03-12
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Troubleshooting Meta Business Verification

If your Meta business verification was rejected or you're seeing an error, this guide covers the most common issues and how to fix them.

If your [Meta business verification](https://chatfuel.com/docs/whatsapp/verify-your-meta-business-account) was rejected or you're seeing an error, this guide covers the most common issues and how to fix them.

## Your document was not accepted [#your-document-was-not-accepted]

Meta only accepts specific types of business documents. Personal documents like passports or driver's licenses will be rejected.

Accepted documents:

* Government tax document (from the tax authority)
* Business registration or license document
* Certificate or articles of incorporation
* Business bank statement

If your document was rejected, resubmit with one of the accepted types listed above. Make sure the legal business name on the document matches the name in your [Meta Business Info settings](https://business.facebook.com/latest/settings/business_info).

## Legal business name does not match [#legal-business-name-does-not-match]

This is the most common rejection reason. It means the name on your document doesn't match the legal business name in your Meta Business settings.

To fix this:

1. Open your [Meta Business Info page](https://business.facebook.com/latest/settings/business_info).
2. Check the **Legal business name** field.
3. Update it to match *exactly* what appears on your document — or upload a document that matches the name already set in Meta.
4. Let us know once updated, and we'll resubmit your verification.

## Chatfuel doesn't have access to your WhatsApp Business account [#chatfuel-doesnt-have-access-to-your-whatsapp-business-account]

This error means your WhatsApp number is no longer connected to Chatfuel. You may have disconnected the number or deleted the WhatsApp Business account.

To proceed with verification, [reconnect a phone number](https://chatfuel.com/docs/whatsapp/how-to-connect-a-new-phone-number) to Chatfuel first.

## Your business account was disabled by Meta [#your-business-account-was-disabled-by-meta]

If Meta has disabled your business account, we cannot submit your verification. This happens when Meta determines the account doesn't follow their [WhatsApp Business Terms of Service](https://www.whatsapp.com/legal/business-terms/).

If you believe this is a mistake, request a review directly in [Meta Support Home](https://business.facebook.com/business-support-home).

## Your business is not yet eligible for verification [#your-business-is-not-yet-eligible-for-verification]

This usually means your business information on Meta is incomplete.

To fix this:

1. Go to your [Meta Business Info page](https://business.facebook.com/latest/settings/business_info).
2. Fill in **all** fields — even those marked as optional.
3. Let us know once everything is complete, and we'll resubmit.

If the error persists after 24 hours with all fields filled in, contact us with a screenshot of your Business Info page (including the browser URL bar) so we can investigate further.

## There is a pending verification request [#there-is-a-pending-verification-request]

If you or someone else already submitted a verification request, Meta requires a 3-day waiting period before a new one can be submitted. No action is needed — we'll retry automatically. If the issue persists after 3 days, we'll escalate it to Meta support.

## Verification submission limit reached [#verification-submission-limit-reached]

As a Meta Solution Partner, Chatfuel can submit verification on your behalf up to three times. If all attempts have been used, you can still apply for verification directly:

1. Go to [Meta Security Center](https://business.facebook.com/latest/settings/security_center).
2. Follow the steps to submit your business verification.

## Verification is taking longer than expected [#verification-is-taking-longer-than-expected]

In rare cases, a technical issue on Meta's side may delay the process. If this happens, we submit a support ticket to Meta on your behalf. Unfortunately, resolution times depend on Meta and we cannot provide an estimated timeframe.


---

---
title: "Troubleshooting Phone Connection Issues"
description: "When a user reaches out about unusual issues related to phone connection and you're not sure how to proceed, work through the steps below in order."
canonical_url: https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues
markdown_url: https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues.md
last_updated: 2026-03-02
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Troubleshooting Phone Connection Issues

When a user reaches out about unusual issues related to phone connection and you're not sure how to proceed, work through the steps below in order.

When a user reaches out about unusual issues related to phone connection and you're not sure how to proceed, work through the steps below in order. Always ask the user for a screenshot or screen recording at every key step — they can easily miss something.

***

## Step 1: Verify the Business Portfolio [#step-1-verify-the-business-portfolio]

Ask the user to send a screenshot of their [Business info page](https://business.facebook.com/latest/settings/business_info).

If the Business Portfolio is not verified, ask the user to complete verification from the same page before proceeding.

***

## Step 2: Check for restricted categories [#step-2-check-for-restricted-categories]

Confirm that both the **business category** and the **WABA (WhatsApp Business Account) category** are not on the restricted list.

See the full list of restricted categories in the [WhatsApp rules guide](https://chatfuel.com/docs/whatsapp/whatsapp-rules-or-how-to-avoid-bans).

***

## Step 3: Validate the display name [#step-3-validate-the-display-name]

Check whether the **display name** for the phone number follows [WhatsApp's naming rules](https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-display-name).

***

## Step 4: QR code can't be scanned (CoEx) [#step-4-qr-code-cant-be-scanned-coex]

If the user is [connecting a WhatsApp Business App number](https://chatfuel.com/docs/whatsapp/connect-whatsapp-business-app-number) and the QR code can't be scanned, first ask them to try again after a few minutes.

If the issue persists, ask them to:

1. Open [Billing hub](https://business.facebook.com/billing_hub/accounts) in Meta Business Suite.
2. Look for &#x2A;*"Payment failed"** notifications next to their Ad and WhatsApp Business accounts.
3. Pay any outstanding amounts and wait \~10 minutes.
4. Try scanning the QR code again.

***

## Step 5: "Your account is using marketing messages" error (CoEx) [#step-5-your-account-is-using-marketing-messages-error-coex]

If the user sees an error saying &#x2A;*"Your account is using marketing messages"** during connection, ask them to:

1. Open the **WhatsApp Business** app on their phone.
2. Go to **Tools → Marketing messages**.
3. Delete all marketing messages listed there.
4. Try connecting the phone number to Chatfuel again.

***

## Step 6: Check if the Facebook account is restricted [#step-6-check-if-the-facebook-account-is-restricted]

Ask the user to check whether their personal Facebook account is restricted by visiting [Ads Manager](https://adsmanager.facebook.com/adsmanager/manage/accounts).

If the account is restricted, they have two options:

* **File an appeal** with Meta Support at [Business Support Home](https://www.facebook.com/business-support-home/).
* **Use a colleague's account** — grant a colleague admin permissions on the business account and have them connect the phone number instead. Important: warn the user **not** to log in to Facebook using their colleague's credentials, as this will get the colleague's account restricted too.

***

## Step 7: Business account not visible in the popup [#step-7-business-account-not-visible-in-the-popup]

If the user wants to connect their WhatsApp to the bot but does not see their Business account in the popup window during setup, ask them to verify they have **Full Control** rights on the Meta Business Account they are trying to connect.

They can check this at [Meta Business Account settings → People](https://business.facebook.com/settings/people).


---

---
title: "Verify your Meta business account"
description: "Without verification, your WhatsApp messaging is severely restricted."
canonical_url: https://chatfuel.com/docs/whatsapp/verify-your-meta-business-account
markdown_url: https://chatfuel.com/docs/whatsapp/verify-your-meta-business-account.md
last_updated: 2026-03-16
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Verify your Meta business account

Without verification, your WhatsApp messaging is severely restricted.

> **This is not about green or blue checkmarks.** Business verification unlocks higher messaging limits and reduces ban risk. It does **not** give you a green or blue checkmark. If you want a green checkmark (Official Business Account), see [How to get a green badge](https://chatfuel.com/docs/whatsapp/how-to-get-a-green-badge). If you want a blue checkmark (Meta Verified), see [How to get a blue verification badge](https://chatfuel.com/docs/whatsapp/how-to-get-blue-verification-badge).

## Why verify? [#why-verify]

**Without verification**, your WhatsApp messaging is severely restricted. Here's what can happen to unverified business accounts:

* **250 chats limit:** You can only message 250 people per day
* **High risk of bans:** Unverified accounts are more likely to [get banned](https://chatfuel.com/docs/whatsapp/whatsapp-rules-or-how-to-avoid-bans)
* **Messaging blocked:** Some accounts can't [send any messages](https://chatfuel.com/docs/whatsapp/problems-with-sending-messages-on-whatsapp) at all until verified

**With verification**, you avoid these risks and your messaging limits scale automatically. Verified accounts can eventually reach:

* 1K unique customers per day
* 10K unique customers per day
* 100K unique customers per day
* Unlimited customers per day

Verification is also a prerequisite for getting a [green badge](https://chatfuel.com/docs/whatsapp/how-to-get-a-green-badge) (Official Business Account).

Learn more about [messaging limits](https://developers.facebook.com/docs/whatsapp/messaging-limits) in Meta's documentation.

## How to verify your Meta business [#how-to-verify-your-meta-business]

1. Open **Settings** > **WhatsApp**.

2. Click **Verify** under "Verify your Meta business portfolio".

3. Add your documents. These could include:

   * Government tax document (from tax authority)
   * Business registration or license document
   * Certificate or articles of incorporation
   * Business bank statement

   **Important:** Check your *legal business name* carefully. Make sure it matches *exactly* what you entered in your [Business Info settings](https://business.facebook.com/latest/settings/business_info). If the names don't match, your verification **will be rejected**.

   > More documents is usually better, but don't just upload random files. Stick to the document types listed above — if you don't have a document from the list, skip it.

4. Enter a WhatsApp number where you can actually be reached. We'll only contact you if there are any issues with your documents or verification.

   > Using a fake or unreachable number means you won't know if there's a problem that needs your attention.

5. Done! You can track your verification progress directly in the WhatsApp tab:

   * **Documents saved** — Your documents are uploaded and will be sent for review soon
   * **Pending review** — Meta is currently reviewing your documents
   * **Verified** — Your business has been approved and now has access to increased messaging limits

   The whole process should take around 2–3 hours.

If your verification is rejected or you see an error, check the [troubleshooting guide for Meta business verification](https://chatfuel.com/docs/whatsapp/troubleshooting-meta-business-verification).


---

---
title: "WhatsApp rules or how to avoid bans"
description: "This guide will help you avoid getting banned from Meta Business and keep your messaging running smoothly."
canonical_url: https://chatfuel.com/docs/whatsapp/whatsapp-rules-or-how-to-avoid-bans
markdown_url: https://chatfuel.com/docs/whatsapp/whatsapp-rules-or-how-to-avoid-bans.md
last_updated: 2026-03-02
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# WhatsApp rules or how to avoid bans

This guide will help you avoid getting banned from Meta Business and keep your messaging running smoothly.

This guide will help you avoid getting banned from Meta Business and keep your messaging running smoothly. You'll learn:

* What display names and business types WhatsApp allows
* How to message customers without breaking rules
* Common mistakes that get accounts suspended
* A checklist to keep your business compliant

## Why this matters [#why-this-matters]

WhatsApp constantly checks display names, message templates, user feedback, and how your account performs. Breaking their rules can seriously hurt your business presence or stop it completely.

**What can happen:**

1. **Rate limits** — you can send fewer messages per day
2. **Limits on templates** — your templates get rejected or paused
3. **Temporary bans** — 24-48 hours with no messaging
4. **Permanent bans** — you lose WhatsApp Business completely

Getting things right from the start is way easier than trying to get unbanned later.

## Display-name rules [#display-name-rules]

Your [display name](https://chatfuel.com/docs/whatsapp/how-to-change-whatsapp-display-name) appears in chat headers and your business catalog. WhatsApp reviews it when you create your account and again when you apply for verification. Here's what you need to check:

| **Rule**               | **Good practices**                                                             | **What NOT to do**                                            | **Good example**                               | **Bad example**                           |
| ---------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------- | ---------------------------------------------- | ----------------------------------------- |
| Match your brand       | Use your real business name (same as your website, invoices, or legal docs)    | Use generic words like *fashion* or someone else's brand name | Sweet Treats, QuickPay Solutions               | Best Fashion, Nike Store                  |
| Format properly        | Capitalize the first letter of each word, single spaces, at least 4 characters | ALL CAPS, extra spaces, emojis, or symbols like @, $, ☕       | Tammy's Burritos & Tacos, HappyPaws Grooming   | SWEET TREATS, Coffee Shop , Cupcake\@2025 |
| Avoid misleading terms | Keep it simple unless these words are actually your registered business name   | Don't use "WhatsApp", "Meta", "Official", "Bot"               | Green Leaf Clinic -- Mexico, Acme Corp Support | My Cars WhatsApp, Sweet Treats Bot        |

## Is your business allowed? [#is-your-business-allowed]

Some businesses are completely banned from WhatsApp due to Meta's policies. Make sure you're on the allowed list — if your business type is prohibited, you'll get banned regardless of how well you follow other rules.

**Safe businesses:** Retail, e-commerce, online stores, clothing shops, electronics, food delivery, restaurants, catering, hotels, travel agencies, booking services, schools, online courses, tutoring, law firms, accounting, consulting, professional services, pet food, pet goods, grooming services, government agencies.

**Banned businesses:** Alcohol, tobacco, vaping, drugs (illegal, prescription, recreational), weapons, guns, ammunition, explosives, knives, pornography, escort services, adult entertainment, gambling, casinos, betting, lottery, poker, MLM, get-rich-quick schemes, pyramid schemes, cryptocurrency sales, payday loans, debt collection, live animals, endangered species, prescription drugs, supplements, telemedicine.

**Website and links rules:**

* **Allowed** — your official business website, social media profiles, branded domains
* **Not allowed** — third-party marketplaces (Amazon, Etsy), booking platforms (Booking.com, Airbnb), aggregator sites

If any banned items are part of your business, don't mention them on WhatsApp anywhere — not in your business description or any communication with customers.

## How messaging works [#how-messaging-works]

WhatsApp has strict rules about when and how you can message customers. Understanding these timing rules and consent requirements will keep you out of trouble.

### 24-hour rule [#24-hour-rule]

When someone messages your business, you get a [24-hour window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window) to chat with them freely. After that, you'll need to wait for them to message you again before you can continue the chat. Every time they send a new message, your 24-hour timer resets.

**For example:**

* New message from customer → 24-hour window opens → you can send any replies freely
* 24 hours pass with no customer reply → window closes → you must wait for them to message you or use templates
* Customer replies within 24 hours → window resets → another 24 hours to keep chatting
* Customer messages again after window closed → new 24-hour window opens → back to free replies

### You will need customer consent [#you-will-need-customer-consent]

You can **only** message people who both gave you their phone number **and** clearly agreed to receive WhatsApp messages from your business.

**How to collect consent properly:**

* Checkout/signup forms → include clear opt-in checkbox → *I agree to receive WhatsApp updates and offers*
* Website/email collection → be specific about message types → *Get order updates and weekly promotions*
* QR code campaigns → tell people what they're signing up for → *Scan for exclusive deals via WhatsApp*
* SMS or other channels → ask permission to switch to WhatsApp → *Reply YES to get these updates on WhatsApp instead*

**Rules to remember:**

1. Tell them exactly what messages they'll receive
2. Give an easy way to opt-out (*Reply STOP to unsubscribe*)
3. Unsubscribe them immediately if they ask
4. Make it completely voluntary — no forced opt-ins

### Templates [#templates]

[Templates](https://chatfuel.com/docs/whatsapp/how-to-create-whatsapp-templates) are how you can reach customers if the 24-hour window has closed. There are rules on what you can send, but the basic types are:

| **Type**       | **Typical use**                                   | **Must not include**    |
| -------------- | ------------------------------------------------- | ----------------------- |
| Utility        | Receipts, shipping notices, appointment reminders | Sales pitches           |
| Authentication | One-time passwords (OTP) / 2-FA codes             | Any extra text          |
| Marketing      | Coupons, back-in-stock alerts, newsletters        | Misleading offers, spam |

Templates are a paid feature charged directly by Meta (not by Chatfuel). The cost changes by region and message type.

### Quality rating [#quality-rating]

If too many customers report or block you, your Quality Rating will suffer. This results in lower rate limits or even bans. To avoid this — don't spam people and only send relevant messages.

## Banned content [#banned-content]

Certain content will get you banned immediately, no warnings. &#x2A;*Never send any of this:**

* Hate speech, threats, or harassment
* Pornography, nudity, or sexually explicit images
* False claims, phishing, or deceptive offers
* Instructions for illegal activity or violence
* Requests for card numbers, passwords, or government IDs
* Unlicensed trademarks or pirated files
* Discrimination based on race, gender, religion, or other personal identity traits
* Sharing personal data without consent
* Misleading political content, including false information about elections, candidates, or voting procedures
* Anything from the banned businesses list above

## What happens when you break the rules [#what-happens-when-you-break-the-rules]

WhatsApp uses a progressive penalty system — violations start small but escalate quickly. If you get a warning, lay low and review this guide carefully. Better to cover all your bases than risk losing your account completely.

| **Level**     | **What happens**               | **What triggered it**                                               |
| ------------- | ------------------------------ | ------------------------------------------------------------------- |
| Warning       | Email or dashboard notice      | First rejected template, customers starting to block you            |
| Rate limits   | Fewer messages allowed per day | Multiple complaints, low quality rating                             |
| Temporary ban | No messaging for 24-48 hours   | Continued spam or policy violations                                 |
| Permanent ban | Account completely shut down   | Severe violations (selling restricted items, hate speech, phishing) |

**Can you appeal?** Yes, through Facebook Business Support — but reversals are extremely rare. It's much better to follow the rules from the start.

## Checklist [#checklist]

Check every box honestly. If you can say yes to all of these, you probably won't get banned.

* Display name follows WhatsApp's formatting rules
* Business is allowed and follows WhatsApp policies
* Your contacts agreed to get messages from you explicitly
* Messages are relevant and honest — no spam or misleading content
* You unsubscribe contacts when they ask
* All links and files are legal and don't violate copyrights
* Anyone on your team who messages customers knows these rules


---

---
title: "Why the Bot Sometimes Doesn't Respond to a Message"
description: "Occasionally a customer sends a message to your WhatsApp number, the message shows as delivered in their app, but the bot never replies."
canonical_url: https://chatfuel.com/docs/whatsapp/why-bot-sometimes-misses-messages
markdown_url: https://chatfuel.com/docs/whatsapp/why-bot-sometimes-misses-messages.md
last_updated: 2026-03-04
lang: en
site: https://chatfuel.com/docs
llms_txt: https://chatfuel.com/llms.txt
---

# Why the Bot Sometimes Doesn't Respond to a Message

Occasionally a customer sends a message to your WhatsApp number, the message shows as delivered in their app, but the bot never replies.

Occasionally a customer sends a message to your WhatsApp number, the message shows as delivered in their app, but the bot never replies. This page explains why that happens and what to do about it.

## What's happening [#whats-happening]

When a customer sends you a WhatsApp message, WhatsApp needs to notify your automation so it can respond. That notification travels through WhatsApp's own delivery infrastructure before it reaches your bot.

Sometimes that notification is delayed or doesn't arrive at all — for a few seconds, a few minutes, or in rare cases longer. This is a transient issue on the WhatsApp platform side. When it happens, your bot never "sees" the message and stays silent, even though the customer's app shows the message as delivered.

This is not a sign that your bot is broken or misconfigured. It's an occasional gap in WhatsApp's own message routing, and it typically resolves on its own.

## What to do [#what-to-do]

**First, ask the customer to send the message again.** Most of the time, the next message goes through normally. Retrying is the fastest fix.

**Then check that your bot is working at all** by sending a test message yourself from a personal phone. If the bot responds to your test, the setup is fine and the original miss was a one-time delivery hiccup.

**If the bot doesn't respond to your test message either**, the issue may be with your WhatsApp connection rather than a delivery gap. Check the following:

* Make sure the phone number is still connected in Chatfuel → Settings → WhatsApp. If there's a warning or a "Reconnect" button, follow the steps in [Troubleshooting Phone Connection Issues](https://chatfuel.com/docs/whatsapp/troubleshooting-phone-connection-issues).
* If the bot is connected but still not responding, work through the [Problems with Sending Messages on WhatsApp](https://chatfuel.com/docs/whatsapp/problems-with-sending-messages-on-whatsapp) checklist.

## When the bot goes silent for many customers at once [#when-the-bot-goes-silent-for-many-customers-at-once]

If multiple customers report no response at the same time, and your own test message also gets no reply, there may be a broader temporary disruption affecting WhatsApp's delivery to automation platforms. In this case:

1. Wait 15–30 minutes and test again.
2. Check the [Meta Status page](https://metastatus.com/) to see if WhatsApp is reporting an incident.
3. If the issue continues beyond an hour, contact Chatfuel support with the affected phone number and approximate time the problem started.

## This is not the same as the 24-hour window [#this-is-not-the-same-as-the-24-hour-window]

If the bot stopped responding only to a *specific contact* — not to new messages from other people — the more likely cause is the [24-hour messaging window](https://chatfuel.com/docs/whatsapp/24-hour-messaging-window): the automation can only reply freely within 24 hours of the last message from that contact. This is a Meta policy, not a delivery issue.
