Zapier
Send data from Zeotap to Zapier Catch Hook webhooks. The payload is delivered to a Zap trigger that can then route data to any of Zapier’s 6,000+ connected apps (Google Sheets, Slack, Salesforce, HubSpot, and more).
Because the Catch Hook URL itself contains a unique authentication secret, there is no separate API key or OAuth flow — the URL is the credential.
Prerequisites
- A Zapier account with at least one Zap using the Webhooks by Zapier app
- A Catch Hook trigger configured inside that Zap
- The Catch Hook URL copied from the Zap’s trigger test step
Authentication
Zapier Catch Hook URLs are self-authenticating. The URL path contains a unique, hard-to-guess token generated by Zapier, so Zeotap does not require a separate API key, bearer token, or OAuth authorization.
To obtain the URL:
- In Zapier, open or create a Zap.
- Choose Webhooks by Zapier as the trigger app.
- Select the Catch Hook event.
- In the trigger test step, copy the URL shown (it will look like
https://hooks.zapier.com/hooks/catch/123456/abcdef/). - Paste that URL into the Zeotap destination configuration.
Keep the webhook URL private. Anyone with the URL can post arbitrary data into your Zap.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Webhook URL | Text | Yes | The full Catch Hook URL from your Zap. Must start with https://hooks.zapier.com/. |
Target Settings
Zapier destinations do not require additional target settings. Every synced row is sent to the configured webhook URL.
Supported Operations
Sync Modes
| Mode | Supported |
|---|---|
| Insert | Yes |
| Upsert | Yes |
| Update | No |
| Mirror | No |
Audience Sync Modes
| Mode | Supported |
|---|---|
| Add | Yes |
| Remove | Yes |
| Mirror | Yes |
| Upsert | Yes |
Zapier is a passthrough destination: Zeotap forwards the sync intent (added / changed / removed) to your Zap via the request payload and HTTP headers. The Zap itself decides how to act on each operation — for example, by branching with Filter or Paths on the operation field.
Features
- Field Mapping: No — the full row is sent as a JSON object inside the payload.
- Schema Introspection: No — Catch Hook accepts arbitrary JSON, so there is no fixed schema.
How It Works
For every batch, Zeotap sends a single HTTPS POST request to your Catch Hook URL:
- Rows are collected into a batch.
- A JSON payload is built containing the sync mode and a list of rows with their data, operation, and primary key.
- The request is sent with
Content-Type: application/jsonplus the metadata headersX-Webhook-Sync-ModeandX-Webhook-Batch-Size. - A 2xx response is treated as a successful delivery of every row in the batch.
Request Format
{
"sync_mode": "mirror",
"rows": [
{
"data": {
"email": "user@example.com",
"name": "Jane Doe",
"plan": "pro"
},
"operation": "added",
"primary_key": "user-123"
},
{
"data": {
"email": "old@example.com"
},
"operation": "removed",
"primary_key": "user-456"
}
]
}The operation field reflects the diff status of each row (added, changed, or removed) for audience syncs that use mirror mode. The primary_key field contains the row’s primary key value when one is available.
Response Handling
- 2xx — delivery succeeded. Zapier always returns 200 for a valid, active Catch Hook URL, even if the Zap itself fails downstream.
- 404 — the Zap is turned off or has been deleted. Re-enable it in Zapier or create a new Catch Hook trigger and update the destination with the new URL.
- 413 — the batch exceeded Zapier’s 5MB action payload limit. Reduce the sync’s batch size.
- 429 — Zapier rate-limited the Zap. Legacy webhook routes allow 1,000 requests per 5-minute window per Zap.
- 5xx — Zapier is temporarily unavailable. Zeotap will retry on the next scheduled run.
Rate Limits
Zapier enforces a webhook rate limit of roughly 1,000 requests per 5 minutes per Zap on legacy webhook routes. Paid plans may receive higher limits. If you regularly sync more than a few thousand rows per run, keep Zeotap’s batch size high and the sync cadence modest to stay under the limit.
Best Practices
- Verify the Zap is turned on. A disabled Zap returns HTTP 404 and silently drops deliveries until re-enabled.
- Use Paths or Filter steps inside Zapier to branch on the
operationfield (added/changed/removed) rather than creating separate Zaps for each mode. - Store the primary key downstream so later updates can be matched to the same record.
- Rotate the webhook URL if it leaks: delete the existing Catch Hook trigger, create a new one, and update the Zeotap destination with the new URL.
Troubleshooting
Webhook URL must start with https://hooks.zapier.com/
Zeotap rejects any URL that is not an official Zapier Catch Hook. Copy the exact URL shown in your Zap’s Catch Hook trigger test step — do not use a proxy or a shortened link.
Zap is not receiving data (HTTP 404)
A 404 response means the Zap is turned off or has been deleted. Turn the Zap back on in the Zapier dashboard, or build a new Zap with a fresh Catch Hook trigger and update the destination with the new URL.
Payload too large (HTTP 413)
Zapier action webhooks accept up to 5MB per request. Reduce the sync’s batch size or remove very large fields from the mapped columns.
Rate limit exceeded (HTTP 429)
Zapier throttles legacy webhook routes at about 1,000 requests per 5 minutes per Zap. Lower the sync frequency or upgrade your Zapier plan for higher limits.
Zap runs slowly or appears delayed
During periods of high load, Zapier may still return a 200 response but delay processing by several minutes. This is a Zapier-side queuing behavior, not a Zeotap delivery issue.
Authentication failed (HTTP 401/403)
This typically means the webhook URL is wrong or has been revoked. Re-copy the Catch Hook URL from the trigger test step in Zapier and update the destination.