Status polling is a fallback for resync or recovery only — not a real-time channel.
Event envelope
Every webhook request is aPOST to your endpoint with a JSON body matching this shape:
Headers
Every webhook request includes:Verify signatures
- Retrieve your Webhook Secret from your supplier settings (format:
whsec_...). - Extract the
Tera-Webhook-TimestampandTera-Webhook-Signatureheaders from the incoming request. - Compute the signed payload:
where
body_bytesis the raw request body (not parsed JSON). - Sign with HMAC-SHA256 using your secret as the key:
- Compare the computed signature with the one in the header (after the
v1=prefix). If they match, the webhook is authentic. - Check that
Tera-Webhook-Timestampis within the last 300 seconds to reject replay attacks.
Example verification (Node.js)
Response handling
Accept any HTTP 2xx response as successful. Tera waits up to 10 seconds for your endpoint to respond. If your endpoint:- Returns any 2xx status: delivery is considered successful
- Returns 3xx, 4xx, or 5xx: delivery fails and will retry
- Times out (>10 seconds): delivery fails and will retry
- Redirects: redirects are not followed; treat 3xx as failed
Event lifecycle
- Event created — submission status changes in Pre-Underwriting or shortly after.
- Tera sends webhook — POST to your endpoint with signature.
- Your endpoint responds — any 2xx is treated as success.
- Delivery completes — or enters retry loop on failure.
id) is sent at most once per unique state. If the same status is already delivered, Tera will not re-emit.
See also
- Webhooks guide — detailed setup and best practices.
- Lead Return guide — handling
status: "returned"and Return Reason Categories. - Status polling — recovery and resync strategies.
