Webhooks
Have transglot POST a signed event to your own endpoint when something changes in a project, instead of polling.
A webhook endpoint is an HTTPS URL of yours that transglot sends a POST to when something happens in a project: a translation run finishes, keys are created, a language is removed. Use webhooks to start a deploy when translations land, rebuild a static site, invalidate a cache or post to a channel, without polling the API.
How it works
- Per project. Endpoints belong to one project. A project can have several, each subscribed to its own set of events.
- You choose the events. An endpoint receives only the events it subscribed to. There are twelve; see the event reference.
- Signed. Every delivery carries an
X-Transglot-Signatureheader, an HMAC-SHA256 of the timestamp and body keyed with the endpoint's signing secret. Verify it before you act on a delivery. - Coalesced where it matters. High-frequency events are counted over a short window and delivered once, carrying a
countand up to 20 samples. A bulk edit of 5,000 strings becomes one request, not 5,000. - Retried. A delivery that does not get a
2xxwithin 10 seconds is retried three more times over about six minutes. Every attempt is in the endpoint's delivery log, where you can redeliver it. See Retries and redelivery.
A delivery
Content-Type: application/json
User-Agent: transglot-webhooks/1
X-Transglot-Event: batch.completed
X-Transglot-Delivery: 0f6d1c0e-6a4b-4f7e-9a51-3c2b8d7e4a19
X-Transglot-Timestamp: 1791820860
X-Transglot-Signature: sha256=5d1c3e8f0a2b4c6d8e0f1a3b5c7d9e1f3a5b7c9d1e3f5a7b9c1d3e5f7a9b1c3d
{"batch":{"id":4821,"total":240,"failed":0,"status":"completed","skipped":12,"trigger":"push","completed":240,"tm_served":37,"started_at":"2026-10-12T09:39:13+00:00","finished_at":"2026-10-12T09:41:00+00:00","skipped_reasons":{"human_value_stale":12},"language_breakdown":{"de":120,"fr":120}},"event":"batch.completed","project":{"id":12,"slug":"acme-web"},"delivered_at":"2026-10-12T09:41:00+00:00"}Every payload has the same three fields, event, delivered_at and project (id and slug), plus fields that depend on the event. The body is compact JSON and the order of its keys is not meaningful: read fields by name, and verify the signature against the raw bytes you received.
Requirements
- Plan. Webhooks need the Starter plan or higher. If the account's plan stops including them, deliveries stop until it does again; endpoints are kept.
- Permission. Owners and admins create and manage endpoints.
- A public HTTPS URL. Endpoints must be publicly reachable HTTPS URLs on port 443; private and internal addresses are refused. The address is checked when you create the endpoint and again before every delivery.
Get started
Create a webhook endpoint
In the console or with the API, and where the signing secret appears.
Event reference
Every event, when it fires and its payload.
Verify signatures
Check a delivery is genuine, in Node.js, Python and PHP.
Retries and redelivery
The retry schedule, the delivery log and manual redelivery.