Webinar Analytics: What You Can Measure and What It Proves
Webinar analytics is the set of records one session produces about the people in it: who registered, who joined, how long each person stayed, and what each person did while the session ran.
Reading them means keeping those counts apart and stating the definition behind every rate you publish, because most of the disagreement about webinar numbers is really a disagreement about definitions.
This page covers what to count, how to count it, and where each figure stops being evidence. The cost and revenue arithmetic belongs to the webinar ROI guide, which takes the attendee list from here and follows it to closed deals.
What does webinar analytics actually measure?
Four record types, produced by the webinar platform itself. Everything else on a webinar dashboard is derived from them.
Registrations. One row per person who filled in the form, with the address they gave, the date, and whatever promotion source your registration link carried.
Participation. One row per person who joined, with a join time and a leave time. The same person who drops off and comes back produces 2 rows in most exports, sometimes three.
Time in session. Seconds attributed to each participant, per row. Summing the rows for one email gives that person's total; counting the rows gives you how often they dropped.
In-session actions. Poll answers, chat messages, questions asked, and handouts opened, depending on what your platform records and what you enabled before the session.
A dashboard hands you one attendance figure and one average duration. The participant export hands you the rows those figures were calculated from, and the rows are the only version you can match to a CRM, segment by promotion source, or recount under a different definition 6 months later. Export the participant report for every session and keep it.
| Record | What it supports | What it cannot support |
|---|---|---|
| Registrations | Demand for the topic, promotion source performance, cost per registration | Audience size. A registration is a form submission |
| Participation | Attendance rate, follow-up lists, the denominator for everything that happened in the room | Interest. Someone can join and walk away |
| Time in session | Where the session lost people, a threshold for "attended", pacing changes | A rating of the person. Minutes measure the session |
| In-session actions | Which questions the audience brought, which polls split the room | Comparison between sessions where you enabled different features |
Registration and participation stay 2 counts, never one audience number. The moment they are merged, nobody downstream can tell whether 600 means 600 form submissions or 600 people in the room, and the two usually differ by more than half.
Three counting rules make the rest of the page reproducible. Sum time in session per email, so a person who rejoined twice is one attendee and not three. Count each person once even if they appear in the session report under 2 addresses you recognize as the same human, and write down that you did it. Keep participants with no matching registration on their own line: they joined from a forwarded link or a second address, they are real people, and they will push your attendance rate above 100% if you leave them in the numerator.
What is a realistic attendance rate for a webinar?
There is no reliable public benchmark for webinar attendance. The percentages that circulate most widely are published by webinar and event platform vendors from their own customers' sessions: the sample is whoever bought that platform, the definition of "attended" is whichever one the platform applies by default, and neither is open to inspection. Borrowing one of those figures gives you a number you cannot defend when somebody asks how it was built.
The rate you can defend is the one from your own sessions, calculated the same way every time.
Qualified attendance rate (%) = Participants who met your time threshold ÷ Valid registrations × 100
Valid registrations are what remains after you remove test records, duplicate submissions from the same email, and internal staff who registered to watch. Do it before you divide, not after the number looks wrong.
An illustrative example, with invented figures. A 45-minute session collects 1,240 registrations. Removing 21 internal registrations, 9 duplicates, and 4 test records leaves 1,206 valid. On the day, 507 people joined, and 318 of them stayed at least 20 minutes.
| Line | Count | Rate |
|---|---|---|
| Registrations collected | 1,240 | |
| Removed: internal, duplicate, test | 34 | |
| Valid registrations | 1,206 | |
| Joined the session | 507 | 42% |
| Stayed 20 minutes or more | 318 | 26% |
Both rates describe the same webinar and both are honest: 507 ÷ 1,206 is 42%, and 318 ÷ 1,206 is 26%. Which one you report decides whether the session reads as a solid turnout or a thin one, so report both and name the threshold beside the second. A team that quotes 42% one quarter and 26% the next has not measured a decline, it has changed its mind about what "attended" means.
After ten or more sessions, take the median of the recent ones as your planning rate. When a session lands far outside it, look for what changed around it before you read anything into the session itself. A topic, a time slot, a promotion mix, or an audience that had never heard of you will each move the rate by more than any presenter did.
What the rate will not support: a comparison against a vendor benchmark, a comparison against another company, or a verdict on the session on its own. A 26% qualified rate on 1,206 registrations puts 318 people in a room for 20 minutes, which is a different achievement from 26% of 80 registrations. The same arithmetic on a room with a door, where the denominator is a registration list and the numerator a check-in, is in the guide to event attendance rate and no-shows.
How long do people stay, and what does that tell you?
An average tells you almost nothing here, because webinar durations do not cluster around their mean. Some people leave in the first 2 minutes, some stay for the whole session, and the average lands in a gap where relatively few people actually sat.
Run it, then put it aside and look at the distribution. The same 507 participants from the example above, grouped into bands:
| Time in session | Participants | Share |
|---|---|---|
| Under 5 minutes | 95 | 19% |
| 5 to 19 minutes | 94 | 19% |
| 20 to 34 minutes | 128 | 25% |
| 35 to 44 minutes | 108 | 21% |
| Stayed to the end (45) | 82 | 16% |
| Total | 507 | 100% |
Calculated from the midpoint of each band, the average works out at about 25 minutes, and the median participant sits in the 20 to 34 minute band. Run both on the raw seconds rather than on bands when you have the export. Neither figure describes the two groups that matter: 19% of the people who showed up left before anything had been said, and 16% sat through all of it.
Those two groups take different work. The under-5 group is usually a promotion and expectation problem, and the fix is in the invitation and the first slide, not in the content. The group that stayed to the end is your follow-up list, and it is 82 people, not 507.
Where the drop-off happens is the one finding that changes the next session. Export the leave times, count the people who left in each five-minute interval, and line the intervals up against the running order you presented. A session that loses a quarter of the room between minutes 8 and 13 has a problem with a timestamp on it, and you can rehearse the fix.
Time in session measures the session. A person in a different time zone who left at minute 30 to make another meeting could easily be more interested than one who kept the tab open while working through the hour. Use the threshold to define attendance consistently and to sort follow-up, then leave the reading of intent to the conversation that follows.
Recordings sit on their own line. Most platforms report views on the recording separately from the session itself, and what those views contain differs: a view may carry no email at all unless you put the recording behind a form, the same person can watch twice and appear twice, and a 30-second open counts the same as a full replay in many reports. Check what your platform actually records before you use the figure, keep replay views apart from attendance, and never add the two into one audience total.
How do you connect webinar attendance to pipeline?
The join is email, one participant at a time, and it is the step that usually breaks.
- Export the participant report with the address each person joined under.
- Normalize the list: sum rows per email, apply your time threshold, mark the participants who had no registration record.
- Match each participant to a CRM contact on exact email, and keep the outcome on every row: matched, unmatched, or no email at all.
- Attach the matched contacts to one campaign that stands for this webinar, under the naming rule your event data management sets for every session.
- Read deals against that campaign, with the stage and close date each deal carries.
Steps 3 and 5 are where the reporting usually turns optimistic. The participant list holds whichever address the person joined with, which can be a personal one, a colleague's forwarded invitation, or a dial-in row with no address attached. Keep those rows. They are the reason your coverage is below 100%, and coverage belongs beside every number you report afterwards.
Continuing the example: of the 507 participants, 448 match a CRM contact on exact email, 41 carry an address with no contact behind it, and 18 rows have no email. That is 448 ÷ 507, or 88% coverage. Every pipeline figure from this session therefore describes 88% of the people who were in the room, and the sentence that reports the pipeline should say so.
What this chain supports: a count of attendees who are known to the CRM, the opportunities sitting on that campaign, and their stages and close dates as of the day you looked. Report it as pipeline touched by the webinar, and keep open pipeline and closed revenue on separate lines.
What it does not support is credit for the deal. A campaign relationship records a connection you confirmed, and the buyer saw plenty besides this webinar before signing. The honest sentence names the rule before the result: "under our campaign rule, these 9 opportunities include an attendee of this webinar." Turning that into a percentage of revenue owed to the session is a different calculation with its own assumptions, and it belongs on the webinar ROI page, where the cost side is defined too. For a program of sessions rather than one webinar, virtual event ROI covers what changes across a multi-session schedule.
Where EventIQ fits
EventIQ connects on top of the platforms you already run: registration and ticketing (Cvent, Zoom, Swapcard, StubHub), CRM (Salesforce, HubSpot, GoHighLevel), and marketing (Google Ads, Meta Ads, LinkedIn Ads, Mailchimp, Google Analytics). Platforms with an API outside that list are connected on request.
Zoom supplies registrants and participant-level attendance, including time in the session. Registrations and attendance stay separate records, so the attendance rate on this page is a division you can run on them. Participants match CRM contacts by exact email, and every record keeps its result: matched, unmatched, or no email. Salesforce deals, stages, and close dates link to an event through a campaign relationship you confirm. Records arrive on a schedule rather than as they happen: Zoom every 2 hours, Salesforce every 4.
Ask any vendor, including us, which figures on this page it holds in the product rather than on a slide. The attendance rate, the time-in-session distribution, replay views, and the ROI line itself are not among them today: they are figures you produce from the records and from your own webinar platform. What an event marketing analytics setup owes you is the records themselves, per person and per session, with their source and their match result attached.
See it on a sample webinar
Book a demo to see the Zoom participant records, the exact-email match result, and the Salesforce campaign link on a sample webinar.
We will show the field list source by source and name the current limits on a 20-minute call.