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

# Chatwoot

> Configure Chatwoot integration and import data with the PHP SDK

Use `$vzaps->chatwoot()` to connect a VZaps instance to Chatwoot.

Common fields on all calls:

| Field           | Type     | Required | Description     |
| --------------- | -------- | -------- | --------------- |
| `instanceId`    | `string` | Yes      | Instance ID.    |
| `instanceToken` | `string` | Yes      | Instance token. |

## `chatwoot()->get($instanceId, $instanceToken = null)`

Reads the current configuration, including `webhookUrl` and `tokenMasked` when applicable.

```php theme={null}
$chatwoot = $vzaps->chatwoot()->get('VZ...', 'instance-token');

print_r($chatwoot);
```

**Return:** Chatwoot config (`enabled`, `url`, `account_id`, `webhook_url`, `token_masked`, etc.).

## `chatwoot()->set($request)`

Creates or updates the instance Chatwoot integration.

```php theme={null}
$saved = $vzaps->chatwoot()->set([
    'instanceId' => 'VZ...',
    'instanceToken' => 'instance-token',
    'enabled' => true,
    'url' => 'https://app.chatwoot.com',
    'accountId' => '1',
    'token' => 'chatwoot-api-token',
    'nameInbox' => 'WhatsApp VZaps',
    'signMsg' => true,
    'signDelimiter' => "\n",
    'number' => '5511999999999',
    'reopenConversation' => true,
    'conversationPending' => false,
    'importContacts' => true,
    'importMessages' => true,
    'daysLimitImportMessages' => 30,
    'autoCreate' => true,
    'organization' => 'My company',
    'logo' => '',
    'ignoreGroups' => false,
    'ignoreJids' => [],
]);

print_r($saved);
```

**Return:** saved config (includes `webhook_url` when generated).

Main payload fields:

| Field                     | Type      | Required | Description                                 |
| ------------------------- | --------- | -------- | ------------------------------------------- |
| `enabled`                 | `boolean` | Yes      | Enables or disables the integration.        |
| `url`                     | `string`  | Yes      | Chatwoot base URL.                          |
| `accountId`               | `string`  | Yes      | Numeric account ID.                         |
| `token`                   | `string`  | Yes      | Chatwoot API token.                         |
| `nameInbox`               | `string`  | No       | API inbox name.                             |
| `autoCreate`              | `boolean` | No       | Creates inbox and webhook automatically.    |
| `importContacts`          | `boolean` | No       | Imports contacts in the initial flow.       |
| `importMessages`          | `boolean` | No       | Imports messages in the initial flow.       |
| `daysLimitImportMessages` | `number`  | No       | Message import window in days. Minimum `1`. |
| `ignoreGroups`            | `boolean` | No       | Ignores group messages.                     |
| `ignoreJids`              | `array`   | No       | JIDs to ignore.                             |

<Tip>
  Copy `webhookUrl` from the response into the Chatwoot API inbox when `autoCreate` does not apply by itself.
</Tip>

## `chatwoot()->delete($instanceId, $instanceToken = null)`

Removes the Chatwoot integration from the instance.

```php theme={null}
$vzaps->chatwoot()->delete('VZ...', 'instance-token');
```

**Return:** integration removal confirmation.

## `chatwoot()->triggerImport($request)`

Triggers a manual import of contacts, messages, or both.

Import contacts:

```php theme={null}
$vzaps->chatwoot()->triggerImport([
    'instanceId' => 'VZ...',
    'instanceToken' => 'instance-token',
    'what' => 'contacts',
]);
```

**Return:** import job confirmation (`contacts`, `messages`, or `all`).

Import messages:

```php theme={null}
$vzaps->chatwoot()->triggerImport([
    'instanceId' => 'VZ...',
    'instanceToken' => 'instance-token',
    'what' => 'messages',
]);
```

Import everything:

```php theme={null}
$vzaps->chatwoot()->triggerImport([
    'instanceId' => 'VZ...',
    'instanceToken' => 'instance-token',
    'what' => 'all',
]);
```

Accepted values for `what`: `contacts`, `messages`, `all`.
