Markov chain attribution applied to a trade show registration journey
Markov chain attribution treats each registration journey as a sequence of moves between channel states, estimates the probability of every transition from the observed data, then measures each channel by the drop in conversion probability when that channel is removed. The removal effects are normalised so the credited registrations sum to the registrations you actually had.
Every heuristic attribution model ends the same argument the same way. Somebody asks where the 30 per cent came from, and the answer is that it was agreed in a meeting.
Markov chain attribution gets the weights from the data instead. It is the one method in this cluster whose output nobody has to defend as a policy, and it asks for something in return that most organisers do not currently keep.
Anderl, Becker, von Wangenheim and Schumann published the version of this that the marketing literature now cites, in the International Journal of Research in Marketing in 2016. Their framework represents customer paths as first and higher order Markov walks and they applied it to four large customer level data sets from different industries, each carrying at least seven distinct online channels. Their results differed substantially from applied heuristics such as last click, which is the finding that matters here, because the heuristic is what your show is running today.
How the model sees a registration journey
A journey is a sequence of states. Start, then each channel touch in order, then either conversion or a non converting end state, which the literature calls null.
The model assumes that where you go next depends only on where you are now, which is what makes it a first order Markov chain. That assumption is obviously imperfect and it is the price of getting a solvable model out of a few columns of clickstream.
From the observed sequences you estimate one number per transition: the probability of moving from state A to state B, computed as the count of A to B moves divided by the count of all moves out of A. That set of probabilities is the transition matrix, and everything else is arithmetic on it.
A four state example you can rebuild in a spreadsheet
Two channels, paid search and email, plus the start state and the two end states. A thousand journeys, arranged so the numbers stay clean.
220 journeys go start, paid search, registration. 180 go start, paid search, email, registration. 140 go start, email, registration. 60 go start, email, paid search, registration. 260 go start, paid search, no registration. 140 go start, email, no registration.
That is 1,000 journeys and 600 registrations, so the observed conversion probability is 0.60.
From the start state, 660 journeys go to paid search and 340 go to email, so those transition probabilities are 0.66 and 0.34.
Paid search is entered 720 times in total, counting the 60 journeys that reach it after email. From paid search, 280 journeys go on to register, 180 go to email and 260 end without registering. The transition probabilities out of paid search are 280 over 720, which is 0.3889, then 0.25 and 0.3611.
Email is entered 520 times. From email, 320 go on to register, 60 go to paid search and 140 end without registering. That gives 0.6154, 0.1154 and 0.2692.
Now solve for the conversion probability from each state. Write x for the probability of eventually registering once you are at paid search and y for the same from email. Then x equals 0.3889 plus 0.25y, and y equals 0.6154 plus 0.1154x.
Substituting, x equals 0.3889 plus 0.25 times 0.6154 plus 0.1154x, so x equals 0.5427 plus 0.0288x, so x equals 0.5589. Then y equals 0.6154 plus 0.1154 times 0.5589, which is 0.6799.
The overall conversion probability is 0.66 times 0.5589 plus 0.34 times 0.6799, which is 0.6000. That matches the 600 registrations in 1,000 journeys, and getting that check to come out is how you know the matrix was built correctly.
What does removing a channel do to the conversion probability?
The removal effect is the whole method. Delete a channel, send every path that would have entered it to the non converting end state, and recompute.
Remove paid search. Journeys that start there now go nowhere, and the email path loses its option to move to paid search, so the conversion probability from email falls to its direct 0.6154. The overall conversion probability becomes 0.34 times 0.6154, which is 0.2092. The fall from 0.6000 to 0.2092 is 0.3908, and as a proportion of the original, 0.3908 over 0.6000 is a removal effect of 0.651.
Remove email. The conversion probability from paid search falls to its direct 0.3889 and the overall figure becomes 0.66 times 0.3889, which is 0.2567. The fall is 0.3433, so the removal effect is 0.572.
The two removal effects sum to 1.223, which is more than one, because both channels are genuinely needed by some of the same journeys. Normalise by that sum. Paid search takes 0.651 over 1.223, which is 53.2 per cent, and email takes 46.8 per cent. Applied to 600 registrations, that is 319 credited to paid search and 281 to email.
Compare with the heuristics on the same 1,000 journeys. Last touch gives email 320 and paid search 280, since email closes the 180 journeys that pass through it second. First touch gives paid search 400 and email 200. The Markov result sits between them and reverses the last touch ranking, which is exactly the kind of flip that changes a budget conversation.
Nothing in that calculation required an opinion. The only inputs were the observed sequences.
How many journeys before the answer is stable?
The transition probabilities are estimated from counts, so they carry sampling error, and the model is only as stable as its thinnest cell.
Take the email to paid search transition above, estimated at 0.1154 from 520 exits. Its standard error is the square root of 0.1154 times 0.8846 divided by 520, which is 0.014. So that probability is 11.5 per cent give or take about 1.4 points at one standard error, which is comfortable.
Now scale to a real show. Eight channels means 64 channel to channel cells plus eight from the start state and 16 into the two end states, so roughly 88 numbers to estimate. Set a working floor of 300 observations per cell and you need something like 26,000 journeys, and that assumes traffic spreads evenly across the matrix, which it never does. Real distributions are heavily skewed, so the common transitions are estimated from tens of thousands of moves while partner referral to print sits at eleven.
Two practical responses. Collapse rare channels into a named group before modelling rather than leaving them as separate states with unstable rows, and report the observation count behind every removal effect you publish. A removal effect of 0.31 from 90 journeys is not a finding.
The data hunger is a property of the whole data driven family rather than of this method alone. Shao and Li, in the proceedings of the seventeenth ACM SIGKDD conference in 2011, argued that attribution needs a stable interpretation of each touchpoint's influence, which ordinary predictive objectives do not provide, and stability of that kind is bought with observations. Any model that learns its weights instead of asserting them will want more data than a show has in one edition, which is the practical case for pooling several editions of the same show before modelling and for never pooling two different shows.
Higher order models make this harder rather than easier. A second order chain on eight channels can carry up to 64 states and several thousand transitions, and while Anderl and colleagues found higher order walks worthwhile on their data sets, the data requirement rises steeply with the order.
What this needs that you probably do not have
The removal effect is computed from the difference between converting and non converting paths, so the model needs both.
Almost every organiser I have seen stores the converting paths. The registration file is the system of record, touches get joined onto it, and the sequences that led nowhere are discarded or were never captured. Feed only converting journeys into a Markov model and every path ends at registration, the conversion probability is one from every state, removal effects are meaningless, and the output looks plausible.
Fixing that means keeping the sessions and clicks of people who visited and never registered, with a person key that survives from the ad click to the form. That is a data retention decision with a privacy dimension and a storage cost, and it should be taken deliberately rather than discovered halfway through a modelling project.
Where this stops
The first order assumption is wrong in a way that matters for a show. Where you go next genuinely does depend on more than your current state: it depends on the deadline, the price break and whether the person's employer has just approved travel. The model has no way to see the calendar, so a channel that always appears in the final fortnight will look influential because of the position it occupies in every sequence.
Removal is also a strong counterfactual. Deleting email from the matrix assumes the demand that flowed through email evaporates rather than redistributing to another channel, and for owned channels that is plainly false. The removal effect therefore overstates channels that are substitutable and understates channels that are genuinely unique.
The model inherits every gap in the touch data underneath it, which is why the share of registrations carrying a usable source is worth measuring before any of this. And on a file too thin to support a transition matrix, the sensible fallback is a stated weight split or a single decay parameter, both of which are honest about being a policy. The wider set of choices lives on the acquisition and attribution pillar.
Check one thing this week before anybody scopes a Markov project: query your analytics store for sessions from the last edition that reached the registration page and produced no registration row, and see whether they still exist. If they do not, that is the first thing to change, and no amount of modelling will substitute for it.
Questions people ask about markov chain attribution
- What is the removal effect in Markov chain attribution?
- The removal effect of a channel is the proportional fall in the modelled conversion probability when that channel is deleted from the transition matrix and every path through it is redirected to a non converting end state. A channel whose removal halves the conversion probability has a removal effect of 0.5, and the effects are then normalised across channels.
- How many journeys do you need for Markov chain attribution to be stable?
- Enough that every transition you care about has a few hundred observations behind it. With eight channels a first order model has about eighty cells to estimate, so tens of thousands of journeys is a realistic floor. Traffic is skewed, so the rare channel pairs run out of data long before the common ones do.
- Do you need the journeys that never registered?
- Yes, and this is the requirement that stops most shows. The model needs the non converting sequences to estimate the probability of dropping out at each state. A file containing only registrations gives every path a conversion, the model reports a conversion probability of one, and the removal effects lose all meaning.
Related reading
- Running multi touch attribution for events on a single registration file
- Why a time decay attribution model fits a deadline driven show
- Attribution coverage rate is the number to fix before you trust a model