Zapier Catch Hook webhooks
Send Jambo events to Zapier using Webhooks by Zapier → Catch Hook — with worked examples for Slack alerts on new contacts and form submissions.
Use Webhooks by Zapier → Catch Hook when you want Jambo to POST events to a Zapier URL you control. This path does not require a Jambo Zapier API key — you paste the Zapier hook URL into Settings → Integrations → Webhooks and pick which events to send.
(screenshot or media)Zapier Catch Hook trigger with a copied webhook URL
Catch Hook vs the official Zapier app
| Approach | Where you configure | Best for |
|---|---|---|
| Catch Hook (this guide) | Zapier trigger → copy URL → Jambo Webhooks | Quick one-off Zaps, any app Zapier supports, no Jambo API key |
| Official Jambo Contact app | Settings → Integrations → Zapier → API key → pick trigger in Zapier | Named triggers, sample data in the Zap editor, managed subscribe/unsubscribe |
Both receive the same signed JSON envelope from Jambo. Catch Hook is the flexible fallback; the official app is nicer when you want pre-labeled trigger fields.
Jambo sends
Content-Type: application/json. Use Catch Hook (parsed JSON). Catch Raw Hook only exposes the body as one string — use it only if you plan to parse JSON yourself in a Code step.
How the payload looks in Zapier
Every delivery is a versioned JSON envelope. Zapier flattens nested keys with double underscores (__):
| Jambo field | In Zapier (Catch Hook) |
|---|---|
type | type |
occurredAt | occurredAt |
data.fullName | data__fullName |
data.email | data__email |
data.formName | data__formName |
data.fieldValues.company | data__fieldValues__company |
Example submission.created body Jambo POSTs:
{
"id": "550e8400-e29b-41d4-a716-446655440099",
"type": "submission.created",
"version": 1,
"occurredAt": "2026-06-11T10:00:00.000Z",
"workspaceId": "00000000-0000-0000-0000-000000000001",
"object": { "type": "submission", "id": "00000000-0000-0000-0000-000000000003" },
"data": {
"fullName": "Jane Doe",
"email": "[email protected]",
"phone": "+15551234567",
"message": "I would like a demo.",
"formId": "00000000-0000-0000-0000-000000000001",
"formName": "Contact us",
"contactId": "00000000-0000-0000-0000-000000000002",
"leadId": "00000000-0000-0000-0000-000000000003",
"conversationId": "00000000-0000-0000-0000-000000000004",
"fieldValues": { "company": "Example Co", "budget": "5k-10k" }
}
}
Example contact.created data object:
{
"contactId": "00000000-0000-0000-0000-000000000002",
"fullName": "Jane Doe",
"email": "[email protected]",
"phone": "+15551234567",
"company": "Example Co"
}
Subscribe to the events you care about in Jambo — see Integrations overview for the full list (submission.created, contact.created, message.received, task.*, etc.).
General setup (any Zap)
- In Zapier, create a Zap. For the trigger, choose Webhooks by Zapier → Catch Hook.
- Leave Pick off a Child Key blank (Jambo sends the full envelope).
- Copy the Custom Webhook URL Zapier shows (looks like
https://hooks.zapier.com/hooks/catch/…). - In Jambo: Settings → Integrations → Webhooks → Add Endpoint. Paste the URL, name it (e.g. "Zapier — Slack leads"), and tick the event types for this Zap.
- Back in Zapier, click Test trigger. In Jambo, either submit a real form / create a contact, or open the endpoint and click Send test (
test.ping) to load sample fields. - Add your action app (Slack, Google Sheets, HubSpot, etc.) and map fields from the trigger step.
Tip: Subscribe each Zap to one event type when possible (e.g. only
submission.created). That keeps field mapping simple and avoids Filter steps.
Example 1 — Slack alert when a form is submitted
Goal: Post a channel message whenever someone submits a published form.
Trigger
- Webhooks by Zapier → Catch Hook → copy the hook URL.
- In Jambo Webhooks, add the endpoint and enable Form submission received (
submission.created) only. - Submit a test lead on one of your forms (test-mode submissions are not emitted).
- In Zapier, Test trigger and confirm fields like
data__fullNameanddata__formNameappear.
Action — Slack → Send Channel Message
Connect your Slack workspace, pick a channel, and set Message Text to something like:
New form submission: {{data__formName}}
Name: {{data__fullName}}
Email: {{data__email}}
Phone: {{data__phone}}
Message:
{{data__message}}
Optional extras:
- Add
Company: {{data__fieldValues__company}}if your form maps custom fields. - Add a link back to Jambo:
https://jambo.contact/dashboard/inbox/{{data__conversationId}}(adjust if you use a custom domain).
Turn the Zap on. Each new submission POSTs to Zapier within seconds.
Example 2 — Slack alert when a new contact is added
Goal: Notify sales when a contact row is created — from a form, inbound email, import, or manual entry.
Trigger
- Catch Hook → copy URL → Jambo Webhooks endpoint with Contact created (
contact.created) only. - Create a contact (submit a form, or add one under Contacts).
- Test trigger in Zapier.
Action — Slack → Send Channel Message
New contact in Jambo
Name: {{data__fullName}}
Email: {{data__email}}
Phone: {{data__phone}}
Company: {{data__company}}
Note:
submission.createdandcontact.createdoften fire together when someone submits a form (submission first, then contact). Use separate Zaps with different Slack channels or message templates, or subscribe only tosubmission.createdif you do not need duplicate alerts.
Example 3 — One hook, multiple events (Filter step)
If one Catch Hook URL must receive several event types, add Filter by Zapier after the trigger:
| Continue only if… | Value |
|---|---|
type (Text) Exactly matches | submission.created |
Duplicate the Zap for other types (contact.created, task.created, …) with different filter values or Slack messages.
For message.received, map data__contentText or data__message. For tasks, data__title, data__status, and the preformatted data__message note work well in Slack.
Testing and troubleshooting
| Issue | What to try |
|---|---|
| Zapier says "We couldn't find a request" | Submit a real event or use Jambo Send test on the endpoint, then click Test trigger again. |
| Fields are empty in Slack | Re-test the trigger after a fresh event; field names are case-sensitive (data__email, not Data Email unless Zapier relabeled them). |
| Duplicate Slack messages | You may have both submission.created and contact.created enabled on the same Zap, or two endpoints pointing at the same hook. Narrow subscriptions. |
| Endpoint paused in Jambo | After repeated delivery failures, Jambo auto-pauses the endpoint. Fix the Zap error, re-enable the endpoint, and Replay failed deliveries from the webhook detail view. |
| Need payload reference | See Webhooks and the in-app catalog at /developers/webhooks. |
Deliveries are at-least-once — the same id may arrive twice. For high-volume Zaps, add a Zapier Storage or Code dedupe step keyed on id if duplicates matter.
Custom backends should verify
X-Jambo-Signature; Zapier Catch Hook does not. That is fine for notifications — your endpoint URL is the secret.
More in Integrations & developers