Outbound webhooks are not available yet. This page describes what is planned
so you can design your integration without having to redo it later.
In the meantime: incremental polling
For almost every case, polling every 30 seconds withupdated_since or since
gives you the same information at far lower complexity. See
Pagination.
With a quota of 120 requests per minute, polling every 30 seconds uses two.
What is planned
Events that will be emitted:Formats
Alongside the native JSON format, there will be direct output to Discord and Slack via their incoming webhooks, so operational alerts can be dropped into a team channel without writing code: duplicate accreditations, denied access at a specific door, or blocked wristbands.Delivery
HMAC-SHA256signature in theX-Ventry-Signatureheader, over the raw body.- Retries with exponential backoff on non-
2xxresponses. - Manual redelivery from the VENTRY dashboard.
- At-least-once delivery: your receiver will need to be idempotent and deduplicate by event identifier.
What you can do now to prepare
Make your receiver idempotent
Make your receiver idempotent
Whether by polling or by webhook, you will see the same record more than once.
Deduplicate by the resource
id, not by arrival order.Do not assume ordering
Do not assume ordering
A terminal without connectivity syncs in bulk. You may receive a 22:00 sale
after a 23:00 one. Sort by
occurred_at on your side.Separate ingestion from processing
Separate ingestion from processing
Store what you receive and process it separately. That is what will let you
swap polling for webhooks without touching your business logic.