> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pilotstatus.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Chatwoot

> Connect any WhatsApp number to Chatwoot with three credentials — Pilot Status auto-creates the inbox and webhook and keeps conversations in bidirectional sync.

Pilot Status has a native Chatwoot integration: connect any WhatsApp number to a Chatwoot account and conversations sync **bidirectionally** — inbound WhatsApp messages appear in Chatwoot, and agent replies in Chatwoot are delivered on WhatsApp.

## Prerequisite: `FRONTEND_URL` (self-hosted Chatwoot)

If you run a **self-hosted** Chatwoot, its `FRONTEND_URL` environment variable **must** be set before connecting:

```env theme={null}
FRONTEND_URL=https://chatwoot.your-domain.com
```

* Use the exact **public** URL (same scheme/host as the browser), **no trailing slash**, reachable from the internet — never `localhost` or an internal IP.
* Restart **both** the web and sidekiq containers afterwards (Rails derives `default_url_options[:host]` from it at boot).

<Warning>
  Without `FRONTEND_URL`, Chatwoot cannot build absolute attachment URLs or valid outgoing webhooks. Symptoms in Pilot Status: messages marked **"Failed to send"**, media never delivered, and `ArgumentError: Missing host to link to!` in the Chatwoot/sidekiq logs.
</Warning>

To validate: send a message with an attachment in a test conversation — no `Missing host to link to!` in the logs, the message shows as sent in Pilot Status, and the media arrives on WhatsApp.

## Set up the integration

The integration is configured **per number** on the **Chatwoot** page of the Pilot Status dashboard.

<Steps>
  <Step title="Gather three credentials from Chatwoot">
    * **Instance URL** — your Chatwoot base URL (e.g. `https://chatwoot.your-domain.com` or `https://app.chatwoot.com`).
    * **Account ID** — the number in your Chatwoot URL after `/app/accounts/`.
    * **User Access Token** — from your Chatwoot profile settings.
  </Step>

  <Step title="Connect in Pilot Status">
    Open the **Chatwoot** page in the dashboard, select the WhatsApp number, and paste the three values. Pilot Status **automatically creates an API inbox and the webhook** in your Chatwoot account — you never paste a webhook URL manually.
  </Step>

  <Step title="Talk">
    Inbound WhatsApp messages (including media) open conversations in the new inbox; agent replies flow back to WhatsApp. Message history and delivery status stay in sync.
  </Step>
</Steps>

## Pause or disconnect

On the same Chatwoot page you can **pause** the sync per number (a toggle — nothing is deleted; flip it back to resume) or **disconnect** the integration entirely.

## Voice calls

Chatwoot **v4.15+** ships voice-call support. Independently of Chatwoot, the Pilot Status **/chat** panel includes a built-in softphone for **Meta Cloud API numbers**, so you can answer and place WhatsApp Business calls straight from the dashboard.

## Related

* [Live Chat dashboard](/dashboard/live-chat)
* [Data Retention & PII Modes](/trust/data-retention) — the Chatwoot relay keeps working even in `RELAY_ONLY` mode.
