message.delivered
An outbound message reached the recipient device.
Ricky signs every delivery: X-Ricky-Signature: v1=<hex> is the HMAC-SHA256 of <X-Ricky-Timestamp>.<raw body> keyed with the webhook signing_secret. After a secret rotation the header carries two comma-separated signatures, new first, until the previous secret expires: accept the event if any v1= value matches. Ricky sends it within seconds of the event. Answer any 2xx within 10 seconds; Ricky makes up to ten attempts with growing waits and may deliver an event twice, so deduplicate by id.
X-Ricky-Delivery-Id*stringDelivery ID; equals the body id.
X-Ricky-Timestamp*stringUnix time of the attempt.
X-Ricky-Signature*stringv1= and the hex HMAC-SHA256; two comma-separated values during a secret rotation.
application/json- body
The JSON body Ricky posts to a webhook endpoint.
id*stringDelivery ID. Deduplicate by it.
uuidtype*string"message.received""message.sent""message.delivered""message.read""message.failed""conversation.opened""conversation.closed""conversation.assignment_changed""contact.created""contact.updated""webhook.test"occurred_at*stringWhen it happened.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$date-timeorganization_id*stringOrganization.
uuiddata*Received.
Example Requests
The JSON body Ricky posts to a webhook endpoint.
/message.deliveredmessage.sent Webhook
The provider accepted a message from the organization. Ricky signs every delivery: `X-Ricky-Signature: v1=<hex>` is the HMAC-SHA256 of `<X-Ricky-Timestamp>.<raw body>` keyed with the webhook `signing_secret`. After a secret rotation the header carries two comma-separated signatures, new first, until the previous secret expires: accept the event if any `v1=` value matches. Ricky sends it within seconds of the event. Answer any 2xx within 10 seconds; Ricky makes up to ten attempts with growing waits and may deliver an event twice, so deduplicate by `id`.
message.read Webhook
The recipient read an outbound message. Ricky signs every delivery: `X-Ricky-Signature: v1=<hex>` is the HMAC-SHA256 of `<X-Ricky-Timestamp>.<raw body>` keyed with the webhook `signing_secret`. After a secret rotation the header carries two comma-separated signatures, new first, until the previous secret expires: accept the event if any `v1=` value matches. Ricky sends it within seconds of the event. Answer any 2xx within 10 seconds; Ricky makes up to ten attempts with growing waits and may deliver an event twice, so deduplicate by `id`.