# Zapier

> Send chat events to a Zap, with what each event contains.

Source: https://anystoreai.com/docs/marketing/zapier/  
Last updated: 2026-10-11

Connect Zapier to send chat events to any app, like a Google Sheet, Slack or your CRM. Go to **Integrations > Zapier**. On Growth and Pro, for Shopify and custom website stores. Each store has its own Zap.

## Connect

1. **In Zapier, create a Zap** with the trigger **Webhooks by Zapier > Catch Hook**. Copy the hook URL.
2. **In Any Store AI, go to Integrations > Zapier** and paste it. It starts with https://hooks.zapier.com/hooks/catch/.
3. **Pick the events** to send and select **Connect**. We send a test event straight away.
4. **Back in Zapier, select Test trigger.** The test event's fields are there to map in your next step.

Select **Send test event** any time to send the sample shown in the window. Test events have **test** set to true, so a Zap can filter them out.

## Events

| Event | Sent when |
|---|---|
| Chat started (conversation.started) | A shopper sends their first message |
| Email captured (contact.captured) | A shopper gives their email in the chat |
| Person requested (conversation.handoff_requested) | A shopper asks to talk to a person |
| Chat rated (conversation.rated) | A shopper rates the chat |
| Order from chat (order.attributed) | A paid order comes from a chat. Shopify stores only |

Each event is sent once. If your Zap doesn't answer, we try again after 1, 5 and 30 minutes and 2 hours. Test chats from the dashboard send nothing.

## What an event looks like

Every event has the same outer fields. **data** depends on the event.

```json
{
  "id": "8d7f0c9a-51b2-4e3c-a6d4-0f1e2b3c4d5e",
  "type": "contact.captured",
  "created_at": "2026-01-15T10:30:00+00:00",
  "store": { "id": "…", "name": "Your store", "url": "https://yourstore.com" },
  "data": {
    "conversation_id": "3f2b6c1e-8a4d-4e0b-9c57-2d1a7e5b9f10",
    "email": "sam@example.com",
    "name": "Sam Carter",
    "source": "contact_form",
    "url": "https://app.anystoreai.com/conversations/3f2b6c1e-8a4d-4e0b-9c57-2d1a7e5b9f10"
  }
}
```

| Event | Fields in data |
|---|---|
| conversation.started | conversation_id, message, customer (name, email), url |
| contact.captured | conversation_id, email, name, source (chat, contact_form or newsletter), url |
| conversation.handoff_requested | conversation_id, customer (name, email), requested_at, url |
| conversation.rated | conversation_id, rated (assistant or team), customer (name, email), url. For the assistant: rating (helpful or not_helpful) and comment. For your team: score (1 to 5) and team_member |
| order.attributed | conversation_id, order_id, order_number, total, currency, placed_at, match (chat_cart or after_chat) |

**url** opens the conversation in your dashboard. Names and emails are empty when the shopper hasn't given them.

## If something goes wrong

- The card shows **Needs attention** when events stop reaching your Zap, and the account owner gets an email. Check the Zap is on and the hook URL hasn't changed.
- Turn off **Send events** to pause without losing the setup.
- Events still waiting after 3 days are dropped.

> [!TIP]
> Want the same events on your own server? Use **Integrations > Webhooks**. It sends these events and more to any HTTPS address, signed with a secret.
