Pipeline
Webhooks
Configure signed webhook delivery for translation events.
Webhooks let WebLingo notify your system when a site emits important translation events. They are site-scoped, signed, and intentionally simple: one destination per site for now.
Currently supported events
translation.completedtranslation.failedtranslation.summary
Configuration
From the site admin page, set:
- Webhook URL
- Signing secret
- Event allowlist
Behavior to know:
- If
webhookEventsis omitted, WebLingo enables all currently supported events. - If
webhookEventsis an empty array, delivery is disabled for that site. - Only currently supported events are configurable in the UI.
Delivery contract
Every delivery is a signed POST to your endpoint.
Headers include:
X-WebLingo-Delivery-IdX-WebLingo-TimestampX-WebLingo-SignatureX-WebLingo-Signature-V2
Use the signature headers to verify the payload and reject replays outside your allowed time window. WebLingo delivers events at least once, so your receiver should be idempotent.
What the payload looks like
The exact JSON body depends on the event, but the receiver should expect:
- an event name
- a delivery id
- a timestamp
- site context
- event-specific data
Example shape:
{
"event": "translation.completed",
"deliveryId": "del_123",
"timestamp": "2026-04-20T10:00:00.000Z",
"siteId": "site_123",
"payload": {
"targetLang": "fr",
"runId": "run_123"
}
}
Setup checklist
- Create or edit the site.
- Enter the webhook URL.
- Set a signing secret.
- Select the events you want.
- Verify your receiver checks the signature headers.
- Make the receiver idempotent.
Troubleshooting
- No events arrive:
- confirm the URL is HTTPS and publicly reachable
- confirm at least one event is selected
- confirm the site is active
- Duplicate deliveries:
- this is expected with at-least-once delivery; dedupe by delivery id
- Signature mismatch:
- confirm the shared secret matches the site setting