LeadRails
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

  1. Sign in to your Zapier account.
  2. Click "Create Zap".
  3. For the Trigger (step 1 of the Zap), pick "Webhooks by Zapier" (a built-in app).
  4. Pick the "Catch Hook" event.
  5. Click Continue — Zapier generates a unique webhook URL.
  6. Copy the URL — it looks like https://hooks.zapier.com/hooks/catch/12345678/abcdefg.
  7. Click "Test trigger" → fire a test request OR skip the test and continue.
  8. Add subsequent action steps in your Zap (the lead data flows into them as fields).
  9. 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

  1. Sign in → Destinations → New.
  2. Adapter type: Zapier Webhook.
  3. Webhook URL: paste the Zapier hook URL.
  4. Click Create.

Test connection

The destination's "Test connection" check posts a tiny marker body — { "_lead_rails_verify": true } — to your Catch Hook URL and reads the response. It reports:

  • Valid → Zapier returned 200 with its request_id acknowledgement; the hook is live. When present, we quote the request_id back so you can match it in Zapier.
  • Disabled (410 Gone) → the Zap was turned off or deleted on Zapier's side.
  • Not recognized (404) → Zapier doesn't know this hook URL; the Zap was likely deleted.
  • Server error (5xx) → a transient Zapier-side problem; try again in a moment.
  • unsafe_url → the URL (or a redirect behind it) resolves to a private/blocked address and is refused before any request is sent.

Heads up on quota: Zapier has no separate test mode for Catch Hooks, so a passing connection test consumes one Zap task, just like a real lead. The _lead_rails_verify marker lets you filter these pings out with a Filter step in your Zap if you want.

Test it end to end

  1. Sources → your source → Settings → ensure a route exists to your Zapier destination.
  2. Click "Send test event".
  3. Zapier shows the inbound event in the Zap's "History" tab within seconds.
  4. If Test trigger was skipped in Zapier, this real event will populate the field schema for subsequent action steps.

What gets sent

  • POST with an application/json body.
  • Default (no per-route mapping): the raw lead event is forwarded verbatim — the same JSON your source sent, e.g. { schema_version, event_type, source: {...}, lead: {...}, submitted_at }. Zapier's "Catch Hook" parses this and exposes each top-level field as a step output; use Zapier's dot-notation field picker to reach nested fields like lead.email.
  • Per-route mapping: customize the shape via Routes → Mapping editor — recommended if you want flat fields (email, phone) instead of the nested raw event.
  • Every request carries an X-Idempotency-Key header derived from the delivery job id. Zapier does not deduplicate on it automatically, but a Filter step in your Zap can read it to drop replays.

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 match hooks.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.
← All destination guides