Your account
Webhooks
A signed HTTP POST to your server when things happen in this account.
What you can do here
A webhook endpoint is your URL plus the event types you choose. They're
grouped by what changed: orders, tickets, check-ins and your interest list.
Alongside orders started, paid, completed, canceled or refunded, and tickets
issued, voided, checked in or changed, an endpoint can hear when a buyer's
name, email, answers or invoice details change (order.updated), when a ticket moves to
another event (ticket.moved), when a voided ticket is brought back
(ticket.unvoided), and when somebody confirms they want to hear about your
event or leaves that list (interest.created and interest.deleted).
A check-in recorded at the door, or undone (checkin.deleted), carries the
check-in list the ticket came through and the time, so a badge printer or an
access system can act on the scan itself.
order.created is sent as soon as somebody starts an order. On an event
that isn't collecting emails from people who don't finish registering, it
waits until the order is completed, and is never sent for somebody who
leaves without paying. order.completed is sent once, when the order is
paid, placed by bank transfer, or made by your team.
When one of those happens, Tito POSTs a JSON payload to the URL and signs it,
so your server can check the delivery came from Tito. Add one from
Add endpoint, and its Signing secret shows on the endpoint's own
page. The payload has the ticket's id and any collected answers alongside the
basics. Its order also has the discount codes the buyer used, under
discount_codes, and the tags on the link they arrived from, like
utm_source, under passed_parameters.
When a ticket moves to another event
ticket.moved is sent once. Its event is the one the ticket is at now, and
moved_from names the event and ticket type it left, so a system that
synced the old event can find the person and move them. The order stays at
the event it was paid at, and its event says which. A ticket.updated
naming the new event is sent as well.
Changing which events an endpoint gets
Change events in the endpoint's Actions menu opens the same list. A new endpoint starts with every event on. An endpoint added before an event type existed doesn't get that type until you switch it on here.
Checking that a receiver works
Send test delivery posts one signed event to your URL straight away and shows what your server answered. It changes nothing in your account, and it works while the endpoint is off, so you can check a repair before you turn deliveries back on.
When a delivery fails
Delivery is at-least-once with retries. A failed POST is retried on a backoff schedule for up to six attempts over about ten and a half hours. Recent deliveries shows each one with the attempt it's on, when the next attempt is due, and what your server answered. Open a row to see what Tito sent and what came back.
Send again queues a recorded event to go out a second time. Your server receives that event twice, so it needs to cope with a repeat.
When an endpoint switches off
Ten failed deliveries in a row switch an endpoint off, and the organizer contact gets an email. Deliveries that were already queued are held, and go out when you choose Enable. Events that happen while an endpoint is off aren't recorded, so fix the receiver and turn it back on.
Replacing the signing secret
Replace signing secret, in Actions, gives the endpoint a new one. The old secret stops working straight away, so every delivery fails its signature check until your server has the new one. You can't go back to the old secret.
Good to know
- The signing secret is available in the admin and through the API’s explicit secret endpoint. Treat it like a password, because anyone holding it can forge deliveries to your receiver.
- A test delivery carries the type
webhook.test, so your handler can tell it from a real event. - The receiver contract, covering the payload envelope, signature header and verification steps, is in the API reference.
- Delete endpoint removes the endpoint's delivery history too.
API secret access
The organizer API can read or replace a webhook signing secret. Replacing it requires confirmation and disables the old secret immediately. Update your receiver with the new secret. If a replacement request has an uncertain result, read the current secret before trying again. These request and response bodies stay out of the API log.