api_version: "2026-07-06" (also sent as X-Macro-Api-Version). Request headers
| Name | Type | Description |
|---|---|---|
Content-Type | header | Always application/json (unless you override payload content type). |
X-Macro-Trigger | header | Trigger id, e.g. content.published. |
X-Macro-Event | header | Same as trigger (legacy alias). |
X-Macro-Event-Id | header | Unique event id — use for idempotency. |
X-Macro-Delivery-Id | header | Unique delivery attempt id. |
X-Macro-Timestamp | header | Unix seconds when the request was signed. |
X-Macro-Api-Version | header | Payload schema version (2026-07-06). |
X-Macro-Signature | header | sha256= + HMAC-SHA256 of {timestamp}.{rawBody}. |
Envelope shape (default)
With payloadMode: "envelope" (default), the body is a Macro event object. Prefer trigger over the legacy alias type. Integration-specific fields live under message.
{
"id": "evt_…",
"object": "event",
"api_version": "2026-07-06",
"created": "2026-07-06T12:00:00.000Z",
"livemode": true,
"trigger": "content.published",
"type": "content.published",
"message": {
"websiteId": "69a6190c-94bd-465b-ae2f-6356bb320151",
"paths": ["/", "/contact.html"],
"encodedSlugs": ["home", "contact"],
"locale": "en",
"publishedAt": "2026-07-06T12:00:00.000Z"
}
}Payload modes
| Name | Type | Description |
|---|---|---|
envelope | default | Full Macro event object (id, object, api_version, created, livemode, trigger, type, message). |
message | mode | Body is only the trigger-specific message object. |
custom | mode | Render payloadTemplate with {{…}} placeholders against the envelope. |
Message-only mode
Sends JSON.stringify(envelope.message) as the body. Useful when your receiver already expects a flat publish payload (paths, locale, …) without the Macro wrapper.
Custom templates
Provide payloadTemplate with mustache-style placeholders. Supported keys include trigger, eventId, created, api_version, livemode, json envelope, json message, dotted message.*, and envelope.* — wrap each key in double curly braces as shown below.
{
"event": "{{trigger}}",
"paths": {{json message}}
}Custom headers
Optional newline KEY=value lines. You cannot override Macro system headers (Content-Type, X-Macro-*). System headers always win on merge.
Sample message: content.published
{
"websiteId": "69a6190c-94bd-465b-ae2f-6356bb320151",
"paths": ["/", "/contact.html"],
"encodedSlugs": ["home", "contact"],
"locale": "en",
"publishedAt": "2026-07-06T12:00:00.000Z"
}HTTP methods
Deliveries use POST by default. You may set PUT or PATCH when creating or editing the endpoint if your receiver requires it.