Docs navigation
Zapier Webhook
Send leads into Zapier as the trigger for any Zap. Uses Zapier's "Catch Hook" trigger — the URL itself is the credential.
What this is
Zapier is a low-code automation platform with thousands of pre-built connectors. LeadRails fires a POST to your Zapier Catch Hook URL with the lead event; your Zap then runs whatever steps you've configured downstream (CRM, email, Slack, Google Sheets, anything in Zapier's catalog).
Where to find your webhook URL
- Sign in to your Zapier account.
- Click "Create Zap".
- For the Trigger (step 1 of the Zap), pick "Webhooks by Zapier" (a built-in app).
- Pick the "Catch Hook" event.
- Click Continue — Zapier generates a unique webhook URL.
-
Copy the URL — it looks like
https://hooks.zapier.com/hooks/catch/12345678/abcdefg. - Click "Test trigger" → fire a test request OR skip the test and continue.
- Add subsequent action steps in your Zap (the lead data flows into them as fields).
- Turn the Zap ON (top-right toggle).
Domain enforcement
LeadRails validates that the URL is exactly
https://hooks.zapier.com/hooks/catch/* at create time. URLs
that don't match this pattern are rejected to prevent typo-based
misrouting.
Set up your destination in LeadRails
- Sign in → Destinations → New.
- Adapter type:
Zapier Webhook. - Webhook URL: paste the Zapier hook URL.
- Click Create.
Test it
- Sources → your source → Settings → ensure a route exists to your Zapier destination.
- Click "Send test event".
- Zapier shows the inbound event in the Zap's "History" tab within seconds.
- If Test trigger was skipped in Zapier, this real event will populate the field schema for subsequent action steps.
What gets sent
Default body: { event_id, normalized_lead: {...}, raw_event: {...}, sent_at }.
Zapier's "Catch Hook" parses the JSON and exposes each top-level field
as a step output. To access nested fields like
normalized_lead.email, use Zapier's dot-notation field picker.
Per-route mapping: customize the shape via Routes → Mapping editor.
Recommended if you want flat fields (email, phone)
instead of nested (normalized_lead.email).
Important: Zap must be ON
- Newly created Zaps default to OFF. They won't process Catch Hook requests until you flip the toggle to ON.
- If LeadRails reports 2xx but no Zap runs: check the Zap is ON. Catch Hook returns 200 even when the Zap is OFF — the request is just buffered until you turn the Zap on (and may eventually be dropped).
Troubleshooting
-
invalid_zapier_catch_hook_url→ URL doesn't matchhooks.zapier.com/hooks/catch/*. Copy the URL exactly from Zapier; trailing slashes / extra paths are rejected. - Zap isn't running but 2xx response → Zap is OFF. Turn it ON.
- Zap runs but downstream step fails → Check the Zap's Task History → click the failed task → see the actual error (Zapier's diagnostic UI).
- High volume → rate limited → Zapier's free plan has task limits. Upgrade or use per-route filtering to send only qualifying leads.
Zapier task pricing
- Every lead that hits your Zap consumes 1+ task in your Zapier billing plan. If you route 10,000 leads/month through a Zap with 3 action steps, that's 30,000 tasks.
-
Consider per-route filtering in LeadRails to only forward qualified
leads (e.g. only
Lead.score >= 70) so you don't burn Zapier tasks on junk traffic.