Guide🇹🇷 Türkçe

Channels

SupportBot is channel-agnostic: messages from every channel connected to Chatwoot flow through the same bot pipeline. The web widget comes ready with the installation; WhatsApp and Instagram are added through Chatwoot configuration — no code changes.

How It Works

Each channel is an "inbox" in Chatwoot. Whatever channel a message arrives from, it reaches the AI through the bot bridge, and the bot's reply goes back on the same channel. Human handoff (bot can't resolve → hand to agent) works identically across channels.

Bot replies are plain text (no markdown) — a perfect match for how WhatsApp/Instagram render messages.

Web Widget

Created automatically during installation (the "Web Sohbet" inbox). For adding it to your site and styling it: Site Widget.

WhatsApp (Cloud API)

No environment variables needed; everything happens in Chatwoot:

  1. Get WhatsApp Cloud API access in Meta Business (phone number ID + permanent token).
  2. Chatwoot → Inboxes → Add Inbox → WhatsApp → choose "WhatsApp Cloud"; enter the phone number ID, Business account ID, and token.
  3. For Meta's webhook verification, register the callback URL and verify token that Chatwoot provides in the Meta panel.
  4. Done — bot binding is automatic (see below).

Instagram / Messenger

Requires a Meta app identity, written once into .env:

  1. Create an app at developers.facebook.com (Instagram Graph API + Messenger permissions).

  2. Fill in the relevant variables in infra/.env:

    • For Messenger: FB_APP_ID, FB_APP_SECRET, FB_VERIFY_TOKEN
    • For Instagram: INSTAGRAM_APP_ID, INSTAGRAM_APP_SECRET, INSTAGRAM_VERIFY_TOKEN
  3. Restart Chatwoot:

    cd infra
    docker compose up -d chatwoot chatwoot-sidekiq
    

    Chatwoot's Instagram/Messenger inbox options become available.

  4. Connect the account via Chatwoot → Add Inbox → Instagram (or Messenger).

Binding the Bot to Channels

When you add a new inbox, you never bind the bot by hand:

  • On the next docker compose up, the provisioning job automatically binds the bot to every inbox in the account.

  • To bind immediately without waiting:

    docker compose up -d --no-deps init-chatwoot-provision
    

To keep exceptions (e.g. a VIP line handled only by human agents): list the inbox ids in the BOT_BIND_EXCLUDE_INBOX_IDS variable in infra/.env, comma-separated (e.g. 3,5). The bot won't bind to those inboxes, and an inbox whose bot you removed in the Chatwoot UI won't be re-bound.

Troubleshooting

Symptom Check
WhatsApp messages arrive but the bot doesn't reply Make sure the inbox is bound to the bot (provisioning command above); watch the flow in Panel → Webhook Events.
Instagram inbox option not visible Are the INSTAGRAM_* variables filled, and were chatwoot + chatwoot-sidekiq restarted?
Meta webhook verification fails Is the callback URL reachable via chat.<your-domain>, and does the verify token match exactly?