Webhook delivery timing: real time vs after the event
Last updated: August 21, 2026
Overview
Not every webhook arrives the moment something happens. Some activities are delivered within seconds. Others can only be sent after the event ends, because the data they describe — such as time spent or no-show — does not exist until the event is over.
This article explains when each activity reaches your endpoint, so you can tell the difference between a webhook that is late and one that is simply not due yet.
For webhook setup, payload format, signature validation, limits and retries, see the Webhooks guide.
Delivered in real time
These are sent as soon as the action happens, typically within seconds.
Action | Sent when |
|---|---|
Registered | Someone completes registration through a flow, the API, bulk upload, or a manual add |
Registration for on-demand | Someone registers to watch a webinar on demand after it has ended |
Registration attempted | A registration is blocked by a restriction, such as a restricted or uninvited email |
Registration pending approval, Registration rejected, Approved not registered, Assigned not registered | The registration status changes |
Invited, Invite declined | An invitation is sent or declined |
Registration data modified | Registrant or attendee field values are edited |
Ticket modified, Add-on modified, Ticket transferred | A ticket or add-on changes |
Attendee deleted | A registration is removed |
Poll answered, Question asked, Question upvoted, Survey answered, CTA clicked | An attendee engages during the event |
Lead added, Lead capture fields data modified | A lead is captured or edited at a booth, in Universal Lead Capture, or in the lead capture app |
Event created, Event updated, Event added to a series, Event added to a hub | An event is created, updated, or added to a series or hub |
On-demand setting updated | On-demand or recording settings are changed |
Attended — in-person only | A badge is scanned at onsite check-in |
Delivered during the event, with a short delay
These depend on attendance data that Zuddl aggregates in fixed windows, so they are not instant even while the event is running.
Action | Typical delay | Why |
|---|---|---|
Attended — virtual | Up to about 5 minutes | Attendance is calculated from aggregated presence data, not from a single join click |
Entered | Up to about 5 minutes | Same aggregation. Covers attendees present outside the live window |
Joined session, Joined booth, Joined breakout room, Joined discussion room | Up to about 5 minutes | First-time joins are detected on the same aggregation pass |
CPE credit added | Up to about 5 minutes | Credits are recalculated on each aggregation pass and sent only when new credit is granted |
Attended on-demand | About 30 seconds to 2 minutes | On-demand views are processed in batches |
Lead enrichment | Seconds to minutes | Sent when the enrichment provider returns data |
Do not use Attended as a live, in-the-moment trigger for virtual events. If you need an immediate signal that someone is in the event, subscribe to a real-time engagement action instead.
Delivered after the event ends
These are only calculated once the event is over. Zuddl sends them approximately one hour after the event end time, so that attendance data is complete before the numbers are sent.
Action | Sent when |
|---|---|
No show | A registrant never attended |
Time spent in event | Total minutes the attendee spent in the event |
Time spent in stage | Minutes per stage |
Time spent in session | Minutes per session |
Time spent in booth | Minutes per booth |
Time spent in discussion room | Minutes per discussion room |
If someone did not attend, only No show is sent for them. No time-spent actions follow.
Time-spent actions are not sent for in-person events.
For webinars, only Time spent in event and Time spent in stage are sent.
Third-party events do not receive this post-event batch.
The one-hour delay is measured from the event end time in your event settings. If you change the end time, the delivery time shifts with it.
Delivered as a scheduled batch
Action | Typical delay | Why |
|---|---|---|
Registration abandoned | About 45 to 90 minutes | A registration is only treated as abandoned once the checkout window has expired, and the check runs every 30 minutes |
Watched VOD | Up to about 12 hours | Recording view data is collected in a batch that runs twice a day |
Checking whether a webhook is late or missing
Find the action in the tables above and confirm its expected window. A Time spent action two minutes after the event ends is not late.
From the Zuddl dashboard, go to Connections → Webhooks and open the webhook.
Confirm the webhook is Active, that the specific action is selected under Update actions, and that the event is included under Select events.
For a newly created event, check whether Automatically include future events was on for that event type. If it was off, the event is not included and no payloads are sent for it.
If the action and event are both in scope and the expected window has passed, contact Zuddl support with the event name, the action, and the time the original activity took place.
Frequently asked questions
Why did I not get a Time spent payload right after the session ended?
Time-spent actions are sent once for the whole event, about an hour after the event ends. They are not sent per session as each session finishes.Why is Attended instant for in-person but delayed for virtual?
In-person attendance comes from a badge scan, which is a single definite action. Virtual attendance is calculated from aggregated presence data, which is processed in short windows.When is a registration counted as abandoned?
After the checkout window expires without the registration being completed. The check runs every 30 minutes, so expect roughly 45 to 90 minutes.Why is Watched VOD slower than everything else?
Recording view data is collected in a scheduled batch that runs twice a day. Plan for same-day, not same-minute.Do CRM integrations follow the same timing?
Yes. The same activities feed both webhooks and CRM integrations, so the timing described here applies to both.