Outbound Webhooks
Receive an HTTP callback every time a segment finishes recomputing. Webhooks let you trigger downstream workflows — syncing CRMs, invalidating caches, updating data warehouses — without polling.
How it works#
After every successful segment recompute, SegOps POSTs a signed JSON payload to each active webhook URL registered for the tenant. Delivery is fire-and-forget; no retry on failure.
Configuration#
Webhooks are managed at Settings → Webhooks. You can also use the API — see activations API reference.
Fields#
| Field | Required | Description |
|---|---|---|
url | Yes | HTTPS endpoint that receives the POST |
secret | No | If set, every request includes X-SegOps-Signature: sha256=<hmac> |
description | No | Free-text label visible in the dashboard |
is_active | — | Toggle to pause delivery without deleting |
Payload#
computed_at is ISO 8601 UTC. member_count reflects the materialized count at delivery time.
Signature verification#
When a secret is configured, the X-SegOps-Signature header contains sha256=<hex> — a HMAC-SHA256 of the raw request body.
Always use constant-time comparison (timingSafeEqual / hmac.compare_digest) to prevent timing attacks.
Delivery semantics#
- Fire-and-forget — SegOps makes one attempt per recompute; no retry on non-2xx responses.
- Timeout — 10 seconds per request; return
2xxquickly and process asynchronously. - Order — all active webhooks for a tenant fire in parallel after the recompute task finishes.
- Deduplication — one delivery per recompute. If the same segment recomputes twice in quick succession, two separate payloads fire.
Related#
- Activation Connectors — push membership directly to Klaviyo, Braze, TalonOne
- Segment Compute — trigger recompute manually