4 min read
Zapier catch-hook
Wire Zenovay events into any of Zapier's 5,000+ supported apps — Notion, Airtable, HubSpot, Linear, Trello, Gmail, you name it.
This recipe uses Zapier's Webhooks by Zapier → Catch Hook trigger.
Outbound webhooks are a Zenovay Pro+ feature. The Zapier Catch Hook trigger requires a Zapier Free plan or higher; Zapier Premium webhooks (Catch Raw Hook) need a Zapier Starter plan or higher.
1. Create a Zap with a Catch Hook trigger
- In Zapier, click Create Zap.
- For the trigger, pick Webhooks by Zapier → choose Catch Hook.
- Skip the "Pick off a Child Key" prompt (leave it blank — we want the full event payload).
- Zapier shows a Custom Webhook URL like
https://hooks.zapier.com/hooks/catch/12345678/abcdef/— copy it.
2. Add the webhook in Zenovay
- In
app.zenovay.com, go to Settings → Webhooks. - Pick the website that should fire events into this zap.
- Click Add webhook.
- Fill in:
- Name:
Zapier — <what the zap does>(e.g.Zapier — Add to Notion) - URL: paste the Zapier Catch Hook URL from Step 1
- Events: pick the events the zap should react to
- Name:
- Click Create webhook.
- Click Send test event (paper-plane icon).
3. Test the trigger in Zapier
- Back in Zapier, click Test trigger. Zapier should now show the Zenovay test event payload.
- Click Continue with selected record.
- Build the rest of the zap (the action steps) using fields from the Zenovay payload — common picks:
event_type(e.g.traffic_spike,goal_completed)website_iddata.*(event-specific payload)timestamp
4. Common zap recipes
| When this Zenovay event fires… | …do this in Zapier |
|---|---|
goal_completed | Add a row to Airtable / HubSpot CRM contact |
traffic_spike | Send a Slack DM to the on-call person |
website_down | Create an urgent Linear issue / page someone via Twilio |
error_spike | Open a Sentry alert (or escalate via PagerDuty) |
5. Verify Zenovay's signature (advanced)
Zapier's Catch Hook does not natively verify HMAC signatures. For production zaps where signature verification matters (e.g. compliance), front the zap with a Cloudflare Worker that verifies, then forwards:
import { createHmac } from 'crypto';
export default {
async fetch(req) {
const rawBody = await req.text();
const signature = req.headers.get('x-zenovay-signature') || '';
const provided = signature.replace(/^sha256=/, '');
const expected = createHmac('sha256', YOUR_WEBHOOK_SECRET)
.update(rawBody)
.digest('hex');
if (provided !== expected) return new Response('invalid signature', { status: 401 });
// Forward to Zapier
await fetch(ZAPIER_CATCH_HOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: rawBody,
});
return new Response('ok');
},
};
Your webhook secret is shown in Settings → Webhooks → click the eye icon on the webhook card.
Troubleshooting
- Zapier "We didn't find a request": click Send test event in Zenovay AFTER you click Test trigger in Zapier — Zapier listens for ~10 minutes.
- Zap fires repeatedly on the same data: Zapier's Catch Hook does NOT deduplicate. If you want idempotency, filter on the
idempotency_keyZenovay sends in the payload (or in the action step, use aFilter by Zapierstep that checks against an existing record). - Long fields truncated: Zapier truncates response samples in the editor, but the full payload is delivered at runtime.
Related
Was this page helpful?