# Connect intoCHAT to Zapier and Make

> Use intoCHAT in Zapier and Make: instant triggers for new leads, form submissions, bookings, return requests, hand-offs and live chat requests, actions to chat with an agent and add knowledge, and how to connect with an API key.

intoCHAT has apps for Zapier and Make. They start a Zap or scenario the moment something happens on your agent, such as a new lead, and they let a Zap or scenario send a message to your agent or add to its knowledge. They are built on the [REST API](/en/docs/rest-api) and [webhooks](/en/docs/webhooks), so they work with the same data and the same limits.

> The apps are built, and they become available in Zapier's and Make's app directories once they are published there. Until then, you can connect either tool today with its own incoming-webhook step and an intoCHAT [webhook](/en/docs/webhooks#add-a-webhook), or call the [REST API](/en/docs/rest-api) from its HTTP step.

## Which plans include the apps

The apps use the REST API, which is included on **Starter**, **Pro** and **Enterprise**. On **Free** you can't create the API key they need. If your account moves back to Free, the apps stop working until it is on Starter or higher again. See [Which plans include the API](/en/docs/rest-api#which-plans-include-the-api).

Each reply the agent writes for **Send a message to an agent** counts as one message on your plan, as in the chat widget. Triggers and the other actions use no messages.

## What's available

### Triggers

| Trigger | Starts when | Event |
| --- | --- | --- |
| **New lead** | A visitor leaves their contact details, in the [lead form](/en/docs/lead-collection) or in the chat. | `lead.created` |
| **New form submission** | A visitor sends one of your [chat forms](/en/docs/chat-forms). | `form.submitted` |
| **New booking** | A visitor books a meeting from the chat. See [Booking with Cal.com or Calendly](/en/docs/booking). | `booking.created` |
| **New return request** | A visitor asks to return or exchange items of a verified order. See [Order status and returns](/en/docs/orders). | `return.requested` |
| **Hand-off requested** | The agent emails a conversation to your team. See [Hand-off by email](/en/docs/handoff). | `handoff.requested` |
| **Live chat requested** | The agent asks your team to join a chat. See [Live chat](/en/docs/live-chat). | `live_chat.requested` |
| **New conversation** | A new conversation starts with the agent. | `conversation.created` |

The first six are instant: intoCHAT sends the event within seconds, the same way it sends a [webhook](/en/docs/webhooks#events). **New conversation** has no webhook, so the tool checks for new conversations on its own schedule, for example every few minutes in Zapier, depending on your Zapier or Make plan.

Each trigger asks for the **Agent** it watches; the list shows every agent in your account. The trigger's output is the event's `data` with the fields described under [What is sent](/en/docs/webhooks#what-is-sent), for example `email`, `name` and `conversationId` for a new lead.

### Actions

| Action | What it does |
| --- | --- |
| **Send a message to an agent** | Sends a message and returns the agent's reply and the conversation ID. Give a **Session ID**, such as the customer's email address, to continue the same conversation each time. See [Send a message](/en/docs/rest-api#send-a-message). |
| **Add a Q&A pair** | Adds a question and its answer to the agent's knowledge and starts training. A question the agent already has gets the new answer. |
| **Add a text snippet** | Adds a titled text to the agent's knowledge and starts training. |
| **Find conversation** (a search in Zapier, **Get a conversation** in Make) | Finds a conversation by its ID, with its transcript. Use it after a trigger to read the whole chat. |

New knowledge counts toward the agent's training characters, and the agent uses it once training has finished. See [Text and Q&A](/en/docs/text-and-qa).

## Connect with an API key

1. In intoCHAT, in the sidebar under **Settings**, click **API keys**.
2. Under **Create a key**, give the key a **Name** you will recognize, for example `Zapier`.
3. Under **Access**, keep **Every scope, including ones added later**. To limit the key instead, pick **Only the scopes I choose** and tick the scopes in the table below.
4. Click **Create key**, then **Copy**.
5. In Zapier or Make, add an intoCHAT step, choose to connect a new account, and paste the key into **API key**.

Use one key per tool, so you can revoke one without stopping the other. See [Create an API key](/en/docs/rest-api#create-an-api-key).

| Scope | Needed for |
| --- | --- |
| `agents:read` | Connecting, and the **Agent** list |
| `webhooks:write` | The instant triggers |
| `leads:read` | Sample data for **New lead**, **New form submission**, **New booking** and **New return request** in Zapier |
| `conversations:read` | **New conversation**, **Find conversation**, and sample data for **Hand-off requested** and **Live chat requested** in Zapier |
| `chat` | **Send a message to an agent** |
| `sources:write` | **Add a Q&A pair** and **Add a text snippet** |

## How instant triggers work

When you turn on a Zap, or add an instant trigger in a Make scenario, the tool asks intoCHAT to send that event to an address of its own. intoCHAT saves that as a webhook on the agent:

- It appears on the agent's **Leads** tab under **Webhooks**, marked **via Zapier** or **via Make**. See [Webhooks created by integrations](/en/docs/webhooks#webhooks-created-by-integrations).
- It is delivered, retried and logged like any webhook, so **Recent deliveries** shows what was sent to the tool.
- When you turn the Zap off, or delete the trigger or scenario in Make, the tool removes the webhook again.

Each event's webhook is signed, but Zapier and Make can't check the signature, so the apps don't use the signing secret. The address the tool gives intoCHAT is private to your Zap or scenario.

### Sample data

When you test a trigger, Zapier loads up to three of the agent's latest real events of that kind. If there are none yet, for example before your first booking, it shows an example with the same fields, so you can map them anyway. In Make, the example comes with the module; run the scenario once and trigger a real event to see real data.

## Revoke a key

Revoking a key in **Settings**, **API keys** stops the apps that use it from their next request, and deletes the webhooks that key created for Zapier or Make, with their delivery history. The Zaps and scenarios stay on but get no more events. To reconnect, create a new key, update the connection in Zapier or Make, and turn the Zap off and on again (in Make, recreate the trigger's webhook), so a new webhook is created.

## Limits

- The REST API's limits apply: 60 requests a minute per key, and the plan's messages for **Send a message to an agent**. See [Rate limits](/en/docs/rest-api#rate-limits).
- An agent can have up to 25 webhooks from integrations, apart from the 5 you add yourself. Turning off Zaps you no longer use frees them.
- The triggers don't include changes made later, such as a cancelled booking or a handled return request.
- **Hand-off requested** sample data rebuilt from past hand-offs has no `summary` (it isn't stored); live events have it.

## Troubleshooting

- **The connection fails.** Check that the key starts with `ic_live_`, hasn't been revoked, and that your account is on Starter or higher.
- **A trigger says the key lacks a scope.** Create a key with **Every scope**, or with the scopes listed above, and reconnect.
- **A Zap stopped receiving events.** Check the agent's **Leads** tab: if its **via Zapier** webhook is gone, it was removed in intoCHAT or its key was revoked. Turn the Zap off and on to subscribe again. If the webhook is **Paused**, switch it back on.
- **Too many webhooks.** Turn off Zaps or delete Make triggers you no longer use, or remove their webhooks on the **Leads** tab.

## Next steps

- What each event contains: [Webhooks](/en/docs/webhooks).
- Every endpoint the apps use: [REST API](/en/docs/rest-api).
- Post the same events to a Slack channel without any tool: [Slack alerts](/en/docs/lead-alerts-and-export#slack-alerts).
