Skip to content

template.status ​

POSTyour webhook address

Template reviewed. A template version was approved or rejected. An approved version can be sent at once with POST /messages; category is the category it was approved in (null for a rejected one).

Body ​

FieldTypeDescription
typestringAlways template.status.
timestampstring (date-time)When the event happened, UTC.
dataobject
data.templateobject
data.template.namestringThe name to send the template with.
data.template.versionintegerThe number of the reviewed version.
data.statusstringOne of: approved, rejected.
data.categorystring, nullableThe category of an approved version.
json
{
  "type": "template.status",
  "timestamp": "2026-11-02T12:00:04+00:00",
  "data": {
    "template": {
      "name": "welcome_bonus",
      "version": 3
    },
    "status": "approved",
    "category": "marketing"
  }
}

Headers ​

HeaderDescription
webhook-idThe delivery, whd_…. The same on every attempt of one delivery: use it to drop a repeated delivery.
webhook-timestampUnix time of the attempt, in seconds. Refuse deliveries older than 5 minutes.
webhook-signaturev1, and the base64 HMAC-SHA256 of {webhook-id}.{webhook-timestamp}.{body}, keyed with the secret (the part after whsec_, base64-decoded).
content-typeapplication/json
user-agentACE-SEND-Webhooks/1

Check the signature before you trust the body, answer 2xx within 5 seconds and do the work afterwards. See Webhooks for the signature check, retries and duplicates.

ACE SEND API v1