Skip to main content
WEBHOOK
Guide: Webhooks

Authorizations

Authorization
string
header
required

Authorization: Bearer . An application key (tk_live_, tk_test_) has full access, which covers every product and any product added later, or custom access, chosen when the key is created: one or more of the scopes verify:check, verify:send (includes verify:check), notifications:read, notifications:send (includes notifications:read), email:read, email:send (includes email:read), email:manage (includes email:send), webhooks:manage, email:inbound, notifications:templates (includes notifications:read), chat:menus, chat:attendant. No key made on the API keys page holds notifications:templates, full access included: the three template writes answer such a key 403 insufficient_scope. A connected app's key holds it. Nor chat:menus: the five conversation menu operations answer such a key 403 insufficient_scope, and a connected app's key holds it once the client approved it. Nor chat:attendant: the five auto-attendant operations answer such a key 403 insufficient_scope too, and a connected app's key holds it once the client approved it. email:manage and webhooks:manage are held only by a key someone chose them for: a full-access key, old or new, never holds them. email:inbound, which reads, deletes and forwards received e-mail, is opt-in on every key, full access included: a key holds it only when it was turned on when the key was created. A call outside the key's access answers 403 insufficient_scope and names the scope it needs in the WWW-Authenticate response header. A partner key (tk_partner_) always has full access. Whatever its access, a key is a server-side secret.

Headers

tawked-timestamp
string
required

Milliseconds since the epoch, as a string; the same value as sent_at.

tawked-signature
string
required

Hex HMAC-SHA256 of "{timestamp}.{raw body}" with your webhook secret.

tawked-event
enum<string>
required

The event name, the same as event in the body.

Available options:
domain.verified
tawked-webhook-id
string<uuid>
required

The event's id, the same on every retry and on a delivery sent again from the console: dedupe on it.

webhook-id
string

Standard Webhooks, sent when the endpoint's Standard signing is on: the same as tawked-webhook-id.

webhook-timestamp
string

Standard Webhooks, sent when the endpoint's Standard signing is on: the same instant as tawked-timestamp, in seconds.

webhook-signature
string

Standard Webhooks, sent when the endpoint's Standard signing is on: v1,<base64> of HMAC-SHA256 of "{webhook-id}.{webhook-timestamp}.{raw body}" with the base64-decoded part of your whsec_ secret; during a rotation's grace a space and the previous secret's signature follow.

Body

application/json
event
string
data
object
type
string
timestamp
string<date-time>
sent_at
string
mode
enum<string>

On a test key's event only (simulated: nothing was sent or received). On email.received it is the only sign of a simulated e-mail.

Available options:
test
test
boolean

true on a console test event and on Tawked's test message to a new receiving address; never on a customer's event.

Response

200

Any 2xx answer within 5 seconds acknowledges the delivery. Anything else, a redirect or no answer in time is retried: 5 attempts in all, the first at once and the next after 1 min, 5 min, 30 min, 2 h.