Overview
- The instance worker syncs WhatsApp -> Chatwoot (contacts, conversations, text and media where supported).
- Chatwoot posts events to the VZaps webhook; the API forwards them to the worker for Chatwoot -> WhatsApp (agent messages).
- The
webhook_urlfield returned byGETorPOSTmust be set on the Chatwoot API inbox (or applied automatically whenauto_create = trueon save). - Messages that originated on WhatsApp use a
source_idprefixed withWAID:so the webhook can ignore them and prevent loops.
Configuration fields
| Field | Description |
|---|---|
enabled | Turns the integration on or off for the instance. |
url | Chatwoot API base URL (e.g. https://app.chatwoot.com). |
account_id | Numeric account id in Chatwoot. |
token | API token (api_access_token) for a Chatwoot user or agent. |
name_inbox | Name of the API inbox to create or bind when auto_create is used. |
sign_msg | When true, prefixes outbound WhatsApp messages with the agent signature. |
sign_delimiter | Text between agent name and message body (e.g. newline). |
number | Phone number context for the inbox (E.164 or format accepted by Chatwoot). |
reopen_conversation | Reopens an existing conversation when the contact writes again. |
conversation_pending | Opens new conversations in pending state. |
import_contacts / import_messages | Flags for the initial history import flow. |
days_limit_import_messages | Day window for message import; minimum valid value is 1. |
auto_create | When true, the API tries to create/update the API inbox and set the webhook. |
organization / logo | Optional metadata for Chatwoot display. |
ignore_jids | JSON array of JIDs to ignore (e.g. specific groups or contacts). |
ignore_groups | When true, group messages are not sent to Chatwoot. |
webhook_url | Read-only in responses: URL to configure in Chatwoot (GET/POST). |
Endpoints
GET /instances/{id}/chatwoot- read configuration (includeswebhook_urlandtoken_maskedwhen applicable).POST /instances/{id}/chatwoot- create or update configuration (bodyInstanceChatwootUpsertDto).DELETE /instances/{id}/chatwoot- remove configuration from the instance.POST /instances/{id}/chatwoot/import/{what}- schedule a manual import;what=contacts,messages, orall.POST /chatwoot/webhook/{instanceId}- Chatwoot callback (no JWT); use only in inbox settings or controlled tests; this is not the VZaps instance webhook.
Example: save configuration
webhook_url from the response into the Chatwoot API inbox if auto_create did not apply it automatically.
Best practices
- Treat
tokenlike any API secret; prefer a dedicated integration user with minimal scope in Chatwoot. - Use
ignore_groupsorignore_jidsto filter groups or numbers that should not open Chatwoot conversations. - After changing URL or account, confirm the Chatwoot inbox webhook still points at this instance
webhook_url.

