Jambo
Help centerIntegrations & developers7 min read

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

ApproachWhere you configureBest for
Catch Hook (this guide)Zapier trigger → copy URL → Jambo WebhooksQuick one-off Zaps, any app Zapier supports, no Jambo API key
Official Jambo Contact appSettings → Integrations → Zapier → API key → pick trigger in ZapierNamed 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 fieldIn Zapier (Catch Hook)
typetype
occurredAtoccurredAt
data.fullNamedata__fullName
data.emaildata__email
data.formNamedata__formName
data.fieldValues.companydata__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)

  1. In Zapier, create a Zap. For the trigger, choose Webhooks by Zapier → Catch Hook.
  2. Leave Pick off a Child Key blank (Jambo sends the full envelope).
  3. Copy the Custom Webhook URL Zapier shows (looks like https://hooks.zapier.com/hooks/catch/…).
  4. 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.
  5. 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.
  6. 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

  1. Webhooks by Zapier → Catch Hook → copy the hook URL.
  2. In Jambo Webhooks, add the endpoint and enable Form submission received (submission.created) only.
  3. Submit a test lead on one of your forms (test-mode submissions are not emitted).
  4. In Zapier, Test trigger and confirm fields like data__fullName and data__formName appear.

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

  1. Catch Hook → copy URL → Jambo Webhooks endpoint with Contact created (contact.created) only.
  2. Create a contact (submit a form, or add one under Contacts).
  3. 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.created and contact.created often fire together when someone submits a form (submission first, then contact). Use separate Zaps with different Slack channels or message templates, or subscribe only to submission.created if 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 matchessubmission.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

IssueWhat 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 SlackRe-test the trigger after a fresh event; field names are case-sensitive (data__email, not Data Email unless Zapier relabeled them).
Duplicate Slack messagesYou 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 JamboAfter 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 referenceSee 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.