Settling an attendance metric disagreement between teams before the report ships
Two teams reporting different attendance figures are usually applying different filters to the same rows. Put both filter sets on one page as a definition diff, one row per decision, with the size of each row in units. Add the rows up and the gap should close to the last person. A residual means a filter nobody has named.
The report was due Thursday. On Tuesday afternoon marketing circulated a deck with attendance at 29,100 and operations replied within the hour saying the figure was 25,400 and had been 25,400 since the Sunday the show closed.
What followed was two days of email. Both teams re-ran their extracts. Both got the same answers they had before. By Thursday morning somebody senior picked the smaller number because it felt safer, the deck went out, and nothing was written down, so the same argument ran again eleven months later with different people in it.
The two days were wasted because the teams spent them checking their arithmetic, and the arithmetic was never the problem.
Why do two teams get two different attendance numbers?
In every one of these disputes I have watched, both sides could count. Both sides had SQL that did what they thought it did. The disagreement lived in the filters, and neither side had ever written their filters down in a form the other could read.
That is why the argument is unresolvable by re-running anything. Marketing re-runs its query and gets 29,100. Operations re-runs its query and gets 25,400. Each re-run increases confidence and produces no new information, because the queries encode two different questions.
So stop re-running. The first move is to get both filter sets onto one page.
The definition diff
A definition diff is a line-by-line comparison of the two populations, with one row per filter and a column for what each side does with it. It takes about ninety minutes with both analysts in the room and it ends the dispute in almost every case.
The rows are the decisions, and they are largely the same list every time: registrant types included, evidence of attendance required, the time window, the deduplication key, and the treatment of any co-located event.
| Filter | Marketing | Operations | Effect on the gap |
|---|---|---|---|
| Exhibitor staff and contractors | included | excluded | 2,150 |
| Conference-only delegates who never entered the hall | included | excluded | 1,050 |
| Badges collected but never scanned anywhere | included | excluded | 780 |
| Press and organiser staff | excluded | excluded | 0 |
| Deduplication key | badge record | minus 280 |
Two things about the layout matter. Each row names a population, not a rule in somebody's code. And the fourth column carries units, so the row is a quantity rather than an opinion.
The rows that belong in every diff
The same seven or eight decisions come up whatever the show, so bring them as a starting list instead of discovering them one at a time while two analysts talk past each other.
Registrant types. Exhibitor staff, contractors, press, organiser staff, speakers, and the sponsor's own guests. Each is a separate row, because teams rarely differ on all of them and lumping them together hides which one is in dispute.
Evidence required. Whether a counted person needs a scan, a collected badge, or only a completed registration. This row is usually the largest single line in the gap and it is the one people describe as a data issue when it is a definition. Running the numbered ledger from registrations to attendance once a year gives you the sizes for this row before anybody asks for them.
The time window. Show days only, or including a build day, a pre-show conference day, or an evening reception. Co-located events make this worse, since the two shows share a hall and one badge.
The deduplication key. Badge record, email address, or resolved person, which the unique attendee definition works through. Two teams using different keys will disagree by one to three per cent and neither will be able to see why from their own query.
Geography and channel restrictions. Somebody's extract may quietly exclude a market that is reported separately, usually because it was added for a one-off analysis three years ago and never removed.
Cancelled and refunded registrations. Whether a cancellation processed after the show opened removes the person from the count, and what happens if they attended anyway.
The as-of date. Two extracts pulled a week apart from a settling registration file will differ even with identical logic, and this row catches the case where the whole argument is a timestamp.
Bring the list, fill in both columns, and the meeting is mostly clerical.
The gap decomposes to the last person
Add the effects. 2,150 plus 1,050 is 3,200. Plus 780 is 3,980. The deduplication row runs the other way, because operations counts distinct badge records and marketing counts distinct email addresses, so operations picks up 280 people twice that marketing collapses into one. 3,980 minus 280 is 3,700.
Operations at 25,400 plus 3,700 is 29,100, which is marketing's figure exactly.
That reconciliation is the whole deliverable. Neither team was wrong, neither team needs to concede anything about competence, and the conversation has moved from whose number is right to which of five filters the show should apply. Those are answerable questions with owners.
If the diff does not reconcile to the last person, you have not finished. A residual of 40 means there is a filter nobody has named yet, and it is worth the extra hour to find it, because that unnamed filter will produce the same argument next year.
Small residuals are the ones worth chasing hardest, which is the opposite of most people's instinct. A residual of 2,000 is usually one missing row in the diff and somebody spots it in five minutes. A residual of 40 is normally a join producing a handful of extra rows, or a null being treated as false in one query and as unknown in the other, and that class of defect does not stay at 40. It scales with whatever changes next edition.
There is one case where the diff will not reconcile no matter how many rows you add, and it is worth recognising early. If the two teams are reading different source systems rather than applying different filters to the same one, the populations may genuinely not be reconcilable, because the registration platform and the access control feed can disagree about whether a badge exists. That is a systems reconciliation, and D11 treats it. The tell is that both sides can name every filter they apply and the numbers still refuse to meet.
Price the gap against the decision that is pending
A reconciled diff still leaves a choice, and the way to make it is to ask what the number is about to be used for.
This report ships Thursday and renewal calls start Monday, so the pending decision is what the show tells an exhibitor about the audience it delivered. Price each line against that.
The 2,150 exhibitor staff and contractors cannot buy from a stand. Including them inflates the claimed buyer audience by 2,150 on 25,400, which is 8.5 per cent. The 1,050 conference-only delegates never entered the hall, so no exhibitor could have met them: another 4.1 per cent. The 780 collected-but-never-scanned badges have no evidence behind them at all, worth 3.1 per cent. The 280 duplicates count one person as two, worth 1.1 per cent.
Together the four lines overstate the exhibitor-relevant audience by 3,700 on 25,400, which is 14.6 per cent. An exhibitor who computes cost per lead against the published attendance figure will get a number that is 12.7 per cent too flattering, because 25,400 divided by 29,100 is 0.873.
Now price the same diff against a different decision. If the pending question is venue capacity for next year, the exhibitor staff belong in the count, because they walk through the same doors and use the same toilets, and the conference-only delegates belong too. The answer flips, and it flips for a reason you can state in one sentence.
That is why I would not try to settle this argument in the abstract. Settle it per published figure, name the figure after the decision it supports, and let both numbers exist with different names.
Who decides, and inside what deadline?
The diff produces a decision, and somebody has to make it. In most organisations nobody owns that, which is why the resolution defaults to whoever is most senior in the thread on the day.
Name the owner in advance and make it the person accountable for the reported series, usually the show director or whoever owns attendee analytics across the portfolio, not the team that produced either figure. Give the decision a deadline that sits before the report deadline, so a dispute cannot delay publication. Then write the decision into the definitions appendix with all four slots filled in and the date it takes effect, which is the step that stops the argument recurring.
The CEIR Index, published through IAEE, reports professional attendance as one of its four components alongside net square feet of exhibit space sold, number of exhibiting companies, and gross revenue. The word professional is doing work in that name. A metric whose name carries its main filter is much harder to misread than one called attendance.
Somebody has already done the exclusion list, too. FKM, the German testing body for trade fair figures managed by AUMA, publishes a definition of an exhibition visitor as a person attending during the hours the event is officially open who wishes to obtain information or make contact with exhibitors, and explicitly excludes stand employees, journalists, service providers and organiser staff. Your show does not have to adopt that list. Reading it before your diff meeting means the five rows in your table are the five that other people have already argued about.
Where this stops
A definition diff settles a disagreement about populations. It does nothing about a disagreement over whether the underlying data is any good.
If marketing believes the turnstile feed is missing entries and operations believes the registration file is full of ghost records, the diff will reconcile perfectly and the argument will continue, correctly, because the two teams are now disputing measurement rather than definition. That is a different exercise: sample some rows, chase them to evidence, and report the coverage. D10 covers what evidence behind a counted person should look like.
The other limit is political. Occasionally a team does not want the diff, because the larger figure is load-bearing for something they have already promised somebody. When a request for ninety minutes with both analysts keeps getting deferred, that is usually what is happening, and no amount of method fixes it. The response is to run the diff anyway with the data you have, publish the reconciliation, and let the missing side add their filters to it.
Before the next report cycle, write down the five filters your published attendance figure applies, as five lines. Send them to whichever team most often produces a different number and ask them to mark the ones they do differently. You will have the diff before there is anything to argue about.
Questions people ask about attendance metric disagreement between teams
- Why do two teams get different attendance numbers from the same data?
- Both teams apply different filters, and neither has written those filters down in a form the other can read. Each query does what its author thinks it does. Re-running either one raises confidence and produces no new information, because the two queries encode two different questions about the same rows.
- What is a definition diff?
- A line-by-line comparison of two populations, one row per filter, with a column for what each side does and a column carrying the effect in units. It takes about ninety minutes with both analysts in the room. The usual rows are registrant types, evidence required, time window, deduplication key and any co-located event.
- Which attendance figure should the show publish once the diff reconciles?
- It depends on the decision the figure supports, so name the figure after that decision. For an exhibitor conversation, exclude exhibitor staff and conference-only delegates, since neither could buy from a stand. For venue capacity next year, include both, because they walk through the same doors. Two numbers with different names can coexist.
Related reading
- Event KPI definitions that stop the same number meaning two things
- The unique attendee definition decides whether your show grew or shrank
- Running registration to attendance reconciliation as a numbered ledger every year