campaign.created.v1.
This webhook is scoped to a specific pipeline. When a new campaign is created in that pipeline, Pryzm sends a signed POST request to your target URL.
Available Event
| Event | When it fires | Scope |
|---|---|---|
campaign.created.v1 | After a new campaign is created | One pipeline (pipeline_id) |
Create a Webhook
Webhook subscriptions are created and managed in the Pryzm frontend at the pipeline level. Notes:webhook_typecurrently supports onlycampaign.created.v1target_urlmust be a public HTTPS URL- Only admins can create or deactivate webhook subscriptions
- Pryzm returns the signing
secretonly when the webhook is created, so store it when you receive the response
Request Body
Pryzm sends aPOST request with this envelope:
data object uses the same campaign shape returned by the External API’s Get Record by ID endpoint for campaign records.
The event field is also provided in the X-Pryzm-Event header for routing convenience.
For the exact campaign payload structure, see:
Headers
Each outbound request includes:| Header | Description |
|---|---|
Content-Type | Always application/json |
X-Pryzm-Event | Event name, currently campaign.created.v1 |
X-Pryzm-Event-Id | Unique Pryzm event ID for this webhook delivery |
X-Pryzm-Timestamp | Unix timestamp in seconds |
X-Pryzm-Signature | HMAC SHA-256 signature in the format t=<timestamp>,v1=<signature> |
Signature Verification
Use the webhooksecret returned at creation time to verify the request:
- Read the raw request body exactly as sent.
- Build the signed payload as
<timestamp>.<raw_body>. - Compute the HMAC SHA-256 digest using your webhook secret.
- Compare the digest to
v1fromX-Pryzm-Signature.
X-Pryzm-Event-Id is not part of the signature payload. Use it as a stable event identifier for idempotency, logging, and delivery tracing on your side.
Delivery and Retries
- Pryzm sends webhook deliveries with a 5 second timeout
- Redirects are not followed
- Pryzm retries delivery on network errors,
429, and5xxresponses - Pryzm does not retry other
4xxresponses - Retries use exponential backoff with jitter, starting at 120 seconds and capped at 1800 seconds
- With the current worker configuration, a delivery can be attempted up to 6 times total
- If a webhook reaches 50 consecutive final-attempt failures, Pryzm automatically deactivates it and emails the webhook owner
Versioning and Migrations
Webhook event types include a version suffix (e.g.campaign.created.v1). When the payload schema for an event changes, Pryzm releases a new version (e.g. campaign.created.v2) rather than modifying the existing one.
- Both versions run concurrently for a limited transition period so existing integrations are not disrupted.
- During the transition period you can create new webhooks on either version.
- Pryzm will announce new versions and deprecation timelines in advance.
- Once the transition period ends, the older version will stop firing and any webhooks still registered on it will be deactivated.