Why events matter
Traditional polling-based integrations check for changes on a schedule, which means you are always slightly behind. With Synq’s event-driven model, your systems receive a notification the moment something changes — no polling, no delay, no missed updates. Because every event carries a unique ID, a precise timestamp, and the full identity context of who triggered the action, you get end-to-end traceability across every operation without any extra instrumentation.Reliable delivery
If your endpoint is temporarily unavailable, Synq retries delivery automatically so you never miss a change.
Fully auditable
Every event records the exact user, organization, and tenant responsible for the action, giving you a complete audit trail.
Consistent structure
All events share the same envelope format regardless of type, so your consumer code stays simple and predictable.
Tenant-isolated
Your webhook endpoint only ever receives events that originated within your own Tenant — never events from other organizations on the platform.
Common event types
| Event type | Triggered when |
|---|---|
order.created | A new order is placed or imported into Synq |
order.updated | An existing order’s status, line items, or details change |
product.created | A new product is added to your catalog |
product.updated | A product’s price, description, or attributes are modified |
inventory.adjusted | Stock levels change due to a sale, return, or manual adjustment |
integration.synced | A connected sales channel or ERP completes a synchronization cycle |
Event payload structure
Every Synq event uses the sameDomainEvent envelope regardless of type. The payload field contains the data specific to the event that occurred.
| Field | Type | Description |
|---|---|---|
event_id | string (UUID) | Unique identifier for this event instance. Use it to deduplicate deliveries. |
event_type | string | The event category in domain.action format |
timestamp | string (ISO 8601) | UTC timestamp of when the event was published |
tenant_id | string (UUID) | The Tenant in which the event occurred |
org_id | string (UUID) | The Organization whose action triggered the event |
user_id | string (UUID) | The user who performed the action |
role | string | The role of the user at the time of the action |
payload | object | Event-specific data — structure varies by event_type |
The
event_id is unique per event. Store it and check for duplicates in your handler to make your consumer idempotent — Synq may re-deliver an event if it does not receive a successful acknowledgement from your endpoint.Receiving events via webhooks
To start receiving events, register a webhook endpoint in your Synq dashboard or through the API. Synq willPOST each matching event to your URL as it occurs.
Create a webhook endpoint
Navigate to Settings → Webhooks in the dashboard and click Add Endpoint. Enter the HTTPS URL of your listener and select the event types you want to receive.
Verify the signature
Each delivery includes a
Synq-Signature header you can use to confirm the request came from Synq and was not tampered with in transit. Validate it before processing the payload.Acknowledge with a 2xx response
Return any
2xx HTTP status code within 10 seconds to acknowledge delivery. If your endpoint returns a non-2xx status or times out, Synq retries with exponential back-off.Frequently asked questions
How long does Synq retain events?
How long does Synq retain events?
Synq retains all published events for 30 days. You can replay events within that window from the Settings → Webhooks → Event Log page in the dashboard, which is useful for debugging or recovering from a prolonged outage on your endpoint.
Can I filter events by order status or product category?
Can I filter events by order status or product category?
Currently, event subscriptions filter by event type. Fine-grained filtering on payload fields is on the roadmap. For now, filter in your handler after receiving the event.
Is there a rate limit on event delivery?
Is there a rate limit on event delivery?
Synq delivers events as fast as your endpoint can acknowledge them. There is no artificial throttle, but your endpoint should respond quickly to avoid back-pressure on retries. See Webhooks for guidance on handling high-throughput scenarios.
What happens if my endpoint is down for several hours?
What happens if my endpoint is down for several hours?
Synq retries failed deliveries with exponential back-off for up to 72 hours. After that window, undelivered events are marked as failed. You can replay them manually from the Event Log.