Skip to content

Analysing attendee movement paths as ordered sequences of zones

Attendee analyticsUpdated 2026-08-188 min read

In short

An attendee movement path is best held as an ordered list of the zones a person entered, with consecutive repeats collapsed. Counting the transitions between those zones in a square matrix gives a stable description of how the floor is used, because zone membership tolerates positioning error that raw coordinates do not.

The tracking vendor delivers a file with eleven million rows in it. Each row has a hashed device identifier, a timestamp, an x and a y in metres. Somebody plots a few hundred of them and the result looks like a plate of spaghetti dropped on the floorplan, which is roughly what it is.

Attendee movement paths are useful at a coarser grain than the sensor produces. Reduce every journey to an ordered list of the zones the person entered, drop the coordinates, and you get an object you can count, compare and put in a matrix. The reduction throws away precision that was never real, and what remains is stable enough to argue with.

What a path is once the sensor has spoken

Start with what the file actually contains: a series of position estimates, each with an error attached, taken at whatever interval the sensor and the device negotiated. The trajectory is something you construct on top of those estimates, and every construction step is a modelling decision you own.

The first decision is the zone map. Zones should be big enough that a positioning error moves a ping inside the same zone most of the time, and small enough that being in one tells you something. On a hall with 3 by 3 metre booths, a zone that is one booth wide is useless. A zone that covers an aisle run and the stands either side of it is about right, and gives you somewhere between eight and thirty zones for a typical hall.

Yoshimura and colleagues took the same approach at the Louvre in a study published in Environment and Planning B in 2014, using seven Bluetooth sensors, each defining a node with a detectable area of roughly 20 metres by 7 metres. They analysed 24,452 unique devices collected over 24 days and worked entirely in sequences of node visits, noting that on average 8.2 per cent of visitors had Bluetooth active. Seven zones for the whole route from the entrance to the Venus de Milo is coarser than most exhibition halls need, and it was enough to produce publishable findings about how visitors use the building.

Collapsing pings into a sequence

Sort one device's rows by timestamp and map each to a zone. You get something like C, C, C, C, D, D, C, C, F, F, F.

Collapse consecutive repeats and the path becomes C, D, C, F. Four entries, three transitions.

The collapse is doing real work. The raw run length depends on how often the device advertised, how many receivers heard it and whether the person stood still, none of which you want in the analysis. The collapsed sequence depends on where they went, which is what you asked.

Two rules make the collapse behave. First, require a minimum dwell before a zone entry counts, otherwise a single stray ping in a neighbouring zone splits one visit into three. Thirty seconds is a reasonable floor on an exhibition floor and you should test it against your own data. Second, cap the gap: if two consecutive pings are ninety minutes apart, the person left the hall and came back, and the path should be broken into two rather than recording a transition that never happened.

Apply both to the raw file and the eleven million rows become perhaps 4,100 paths for the day, each a short list. On the day worked through below, 620 of those 4,100 paths have a length of one, which is 15.1 per cent of them, a share close to the 15.2 per cent single-node visitors Yoshimura and colleagues reported. People who enter, see one thing and leave are a large minority everywhere.

Why is a transition matrix more stable than a coordinate trace?

Because the matrix only asks which zone, and zone membership is a much easier question than position.

Build a square table with one row and one column per zone. Walk every path and add one to the cell for each consecutive pair. A path of C, D, C, F contributes to C to D, D to C, and C to F. With eight zones you have 64 cells, and 4,100 paths of average length four give you about 12,000 transitions to fill them, which is enough for row percentages to mean something.

Now consider what a metre of positioning error does to each representation. On a coordinate trace, a two-metre error puts the dot inside the neighbouring stand, and any analysis of which booths were visited is wrong. On the matrix, the same error changes nothing at all unless the person was within two metres of a zone boundary at the moment of the fix, and the dwell rule filters most of those out. The error has to be large relative to the zone before it corrupts the sequence, which is the whole reason for choosing zones the size of an aisle run.

Centorrino, Corbetta, Cristiani and Onofri built exactly this object for a crowded museum in a paper published in the Journal of Computational Science in 2021, deriving a room-scale transition matrix from tracked visitors and using it to drive a stochastic simulator for testing ticketing and entrance changes. That is the practical value of the matrix beyond description: it is a model you can run counterfactuals against.

Working the first-move matrix through

Day two produced 4,100 reconstructed paths. Of those, 2,350 started at the north door and 1,750 at the south door.

Take the first move only, which is the transition from the entrance zone to whatever came next. From the north door the counts are zone C 799, zone A 517, zone B 423, zone D 353 and zone E 258, which sums to 2,350.

Zone C's share is 799 divided by 2,350, which is 0.340, so 34.0 per cent of north door arrivals go straight to zone C. The next largest destination, zone A, takes 517 of 2,350, which is 22.0 per cent.

Now the same row for the south door. Zone C takes 210 of 1,750 first moves, which is 12.0 per cent. Same zone, same day, and the share of arrivals it captures nearly triples depending on which door somebody came through.

Go one step further. Of the 799 north door arrivals who went to zone C first, 328 moved to zone D next, which is 41.1 per cent. Zone D sits away from the north door and sells at a lower rate than zone A. Two thirds of its early traffic arrives through C, which is an argument about pricing that nobody could have made from a heat map.

Reading the matrix without over-reading it

Two cautions, learned the expensive way.

Row percentages and column percentages answer different questions. The row for zone C tells you where people went after C. The column for zone C tells you how they arrived. Confusing them produces confident statements that are exactly backwards, and it happens most often in a slide where the matrix has been transposed to fit the page.

Small cells are mostly noise. With 12,000 transitions spread across 64 cells the average cell holds under 200, and the tail cells hold single figures. A transition seen four times carries no information. Set a floor, report cells below it as sparse, and resist the temptation to explain them.

A third caution deserves more room than a bullet. A high transition share is weak evidence about intent. Zone C may take 34 per cent of north door first moves because it holds the show's biggest brand, or because it is the only way to walk without doubling back, and the matrix cannot separate those. The layout explanation turns out to be right more often than the commercial one. Whether a zone underperforms once you account for where it sits is the question about aisle segments and the hall median, and it belongs to C16.

Where this stops

The method depends on carrying a detectable device, and the population that carries one is not the population that attended. Yoshimura and colleagues put the Bluetooth activation rate at 8.2 per cent of Louvre visitors. Badge-based systems do better because the badge is compulsory, but they only see people at the moments a reader hears them, which on a portal system is a handful of crossings rather than a continuous track.

Whatever the rate is, the sample is biased in a direction you can guess. Younger attendees, people who came alone and people already using the show app are over-represented, and senior buyers walking a floor with a host are under-represented. Report the coverage rate next to the matrix every single time, and never state a transition share without the denominator underneath it.

The second limit is the zone map itself. Every conclusion in this post is a conclusion about a particular partition of the floor, and a different partition would give different percentages from identical raw data. Redraw the zones so that C and D are one zone and the 41.1 per cent transition disappears entirely. That sensitivity is real and it is the reason to fix the zone map before the show opens and leave it alone.

The third is that a matrix has no clock in it. Two paths through the same three zones, one at 10:30 and one at 16:45, are identical to the matrix and completely different to a stand manager. If timing matters to the question, the counts belong in a decomposition of the day's traffic pattern in C12 instead. And before trusting any of it, be clear about how far a fix can be wrong, which is what positioning accuracy means on a crowded floor in C18, and the constraint that shapes every zone map used in attendee analytics.

The first step needs one day of last edition's tracking export and an afternoon. Assign every ping to a zone, collapse consecutive repeats, and count first moves out of each entrance. If the first-move distribution from your two busiest doors looks the same, your entrances are interchangeable and the floorplan is doing its job. If it looks like the 34 per cent against 12 per cent split above, you have two different shows running in one hall, and the exhibitors near one door already know.

Questions people ask about attendee movement paths

How do you turn sensor pings into an attendee movement path?
Assign each ping to a zone, sort by timestamp, then collapse consecutive repeats so a run of pings in zone C becomes a single C. A raw sequence of C C C D D C becomes C D C. The collapsed sequence is the path, and its length is the number of zone entries rather than the number of pings.
What is a zone transition matrix?
A square table with one row and one column per zone, where each cell counts how often someone moved directly from the row zone to the column zone. With eight zones you get a table of 64 cells. Row percentages answer where people went next, and column percentages answer where they came from.
Why not analyse attendee paths as coordinates?
Indoor positioning error on a crowded floor is measured in metres, so a coordinate trace wanders across booth boundaries that are only three metres wide. Zone membership absorbs that error whenever the zone is comfortably larger than the error, and the ordered sequence of zones stays correct even when every individual fix is a metre or two out.

Related reading

All on-site analytics articles