Webhooks

A playbook person waits for a person

Sent to endpoints subscribed to playbook.person_waiting or all. Verify the signature as the Webhooks tag describes and deduplicate on the event ID.

postWebhookplaybook.person_waiting

Headers

X-GTM-Swag-Event-Idstring required

The event id; identical on every attempt. Deduplicate on it.

X-GTM-Swag-Signaturestring required

t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>" keyed with the endpoint secret>. The example signs the compact JSON of the send.link_opened example with the secret from the POST /webhooks example, so a verifier can be tested against it.

Payload

idstring required

Event ID (32 hex); the X-GTM-Swag-Event-Id header.

type'playbook.person_waiting' required
timestampstring required
campaignIdstring required

The playbook (cmp_).

recipientIdstring required
sourceSystemstring
externalIdstring
reason'auto_approve_off' | 'over_gift_limit' | 'monthly_cap' | 'low_balance' | 'repeat_recipient' | 'photo_review' | 'age_restricted' | 'shipping_quote' | 'email_unverified' | 'blocked' required

Why the person waits for a person: auto_approve_off (no auto-approve on this playbook), over_gift_limit (the gift costs more than the per-gift limit), monthly_cap (the monthly budget is used up), low_balance (the balance cannot cover the gift; adding funds does not re-check waiting people), repeat_recipient (already gifted by another campaign), photo_review (a photo must be sourced or approved), age_restricted (alcohol always waits), shipping_quote (delivery is not priced yet, so these gifts always wait), email_unverified (the person who turned it on has not verified their email), blocked (anything else, such as an unavailable or unverified gift, or with mode live a person without a sender-supplied address).

approvalUrlstring required

Hand this to a person to approve.

Response

Any 2xx acknowledges the delivery.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.