Webhooks

Carrier tracking changed

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

postWebhooksend.tracking_changed

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. Deduplicate on it.

cursorstring required

This event's position in GET /events.

type'send.tracking_changed' required
timestampstring required

When the event happened (ISO 8601, UTC).

sendIdstring required

The gift (send_).

campaignIdstring nullable required
attributionobject

The gift's reporting references (externalId, source, contactId, accountId, opportunityId, metadata).

mode'test' | 'live' required
status'awaiting_address' | 'queued' | 'in_production' | 'shipped' | 'delivered' | 'cancelled' required
outcome'none' | 'replied' | 'meeting_booked' | 'meeting_held' required
orderStatestring nullable
carrierstring nullable
trackingNumberstring nullable
trackingUrlstring nullable
generationinteger

send.link_opened: the link generation that was opened.

sourcestring

send.outcome_reported: the reporting source.

externalEventIdstring

send.outcome_reported: the source's event ID.

occurredAtstring

send.outcome_reported: when the outcome happened.

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.