Markov Chain Attribution Model: Stop Guessing Which Channels Drive Conversions

Your paid search report says Google drove the sale. Your last-click data agrees. So you pour more budget into Google. Then revenue stays flat, and you have no idea why.
Here’s the thing. That sale probably started on a podcast ad, got nudged by an email, and only finished on a branded Google search. Last-click handed all the credit to the final step. The channels that actually created demand got nothing.
I built linkutm because messy attribution wrecks budget decisions. The Markov chain attribution model is one of the cleanest ways to fix this. It looks at the whole journey, not just the last tap, and gives each channel credit based on how much it actually moved people toward converting.
This guide breaks down how the model works, walks through a worked example with real numbers, compares it to the models you already use, and shows what data you need to run it without garbage results.
What Is a Markov Chain Attribution Model?
A Markov chain attribution model is a data-driven multi-touch attribution method that maps the customer journey as a sequence of channel touchpoints and assigns credit using the “removal effect.” It calculates how much the conversion rate drops when you remove a channel from the journey. That drop becomes the channel’s credit.
It belongs to the broader family of campaign attribution models. The difference is that Markov attribution learns credit from your actual conversion paths instead of applying a fixed rule.
The name comes from the Markov property, also called memorylessness. In a first-order Markov chain, the next step depends only on the current step, not the full history before it. So if a visitor is sitting on “Email,” the probability they move to “Paid Search” next depends only on being at Email, not on what came before it.
Why First-Touch and Last-Touch Attribution Fall Short
Rule-based models break because they ignore the middle of the journey. They pick one touchpoint and hand it all the credit.
Last-touch attribution credits the final click before conversion. It systematically overcredits branded search, retargeting, and direct traffic. These channels close deals that other channels opened.
First-touch attribution does the opposite. It credits the very first click and ignores everything that pushed the deal over the line. Great for top-of-funnel bragging rights. Useless for knowing what closes.
Even linear, time-decay, and position-based models apply an arbitrary formula. Linear splits credit evenly, which assumes every touch mattered the same amount. It rarely does. None of these models look at what actually happened across thousands of real journeys.
Markov attribution does. That’s the core upgrade.

How the Markov Chain Attribution Model Works
The model turns every customer journey into a path through states, then learns the probability of moving between them. Three pieces make it run.
States. Each channel is a state: Social, Email, Paid Search, Display, and so on. Two special states bookend every journey. “Start” is where each path begins. The path ends in one of two places: “Conversion” (they bought) or “Null” (they left without buying).
Transition probabilities. For every pair of states, the model counts how often visitors move from one to the next. If 60 out of 100 people at Email go to Paid Search next, the transition probability from Email to Paid Search is 0.6. These probabilities are learned directly from your data.
The conversion probability. Once you have the full map of transitions, you can calculate the overall probability that a journey starting at “Start” ends at “Conversion.” Call it the baseline. For example, the baseline might be 12%.
That baseline is the reference point for everything that follows. The removal effect measures what happens to it when a channel disappears.
One honest limitation here. A first-order chain only remembers the current state. It can miss patterns that depend on a longer sequence, like “Display only works after someone has already seen an Email.” Higher-order Markov models capture that, but they need far more data to stay reliable.
The Removal Effect: How Channels Earn Credit
The removal effect is the heart of the model. You remove one channel from the graph, reroute its paths, and recalculate the conversion probability. The bigger the drop, the more important that channel was.
Here’s the logic in plain terms. Take out a channel. Any journey that used to pass through it now either skips to the next available step or fails. If conversions collapse without that channel, it was doing heavy lifting. If nothing changes, it was a passenger.
A worked example
Say your baseline conversion probability is 12%. You remove each channel one at a time and recalculate:
- Remove Paid Search: conversion probability falls to 6%. Removal effect = (12 – 6) / 12 = 0.50
- Remove Email: falls to 6.96%. Removal effect = (12 – 6.96) / 12 = 0.42
- Remove Social: falls to 8.4%. Removal effect = (12 – 8.4) / 12 = 0.30
- Remove Display: falls to 9.84%. Removal effect = (12 – 9.84) / 12 = 0.18
Now normalize. Add the removal effects: 0.50 + 0.42 + 0.30 + 0.18 = 1.40. Each channel’s share of credit is its removal effect divided by that total. If you had 500 conversions, you split them like this:
| Channel | Removal effect | Credit share | Conversions credited |
|---|---|---|---|
| Paid Search | 0.50 | 35.7% | 179 |
| 0.42 | 30.0% | 150 | |
| Social | 0.30 | 21.4% | 107 |
| Display | 0.18 | 12.9% | 64 |
Look at Email. Last-click probably gave it a fraction of this. The Markov model shows it was involved in journeys worth 150 conversions. That changes how you budget.

Markov Chain Attribution vs Other Attribution Models
The fastest way to see the difference is to put the models side by side. Each one answers the same question, “who gets credit,” in a different way.
| Model | How it assigns credit | Best for | Main weakness |
|---|---|---|---|
| First-touch | 100% to the first channel | Demand generation focus | Ignores everything that closes |
| Last-touch | 100% to the last channel | Simple, default reporting | Overcredits closers and brand search |
| Linear | Splits credit evenly across all touches | Equal-weight simplicity | Assumes every touch mattered the same |
| Time-decay | More credit to recent touches | Short sales cycles | Still an arbitrary formula |
| Position-based | 40% first, 40% last, 20% middle | Valuing intro and close | Fixed weights, not learned |
| Markov chain | Credit by removal effect from real paths | Data-rich multi-channel journeys | Needs volume and clean data |
The first five are heuristic. Someone decided the rule in advance. Markov attribution is algorithmic. The data decides.
That’s also its catch. A rule-based model works with 50 conversions. A Markov model with 50 conversions produces noise. You need volume for the transition probabilities to mean anything.
Markov Chain vs Data-Driven Attribution and Shapley Value
People mix these up constantly, so let me separate them.
GA4 data-driven attribution (DDA). When you set GA4 to data-driven attribution, Google runs its own algorithmic model on your conversion paths. It uses a counterfactual approach similar in spirit to the removal effect. In 2023 Google removed the older rule-based models (first-click, linear, time-decay, position-based) from GA4, leaving data-driven and last-click as the options. So most marketers are already using a data-driven model. They just can’t see the engine. You can read Google’s own explanation in its data-driven attribution documentation.
Shapley value attribution. This comes from cooperative game theory. It treats channels like players on a team and calculates each one’s average marginal contribution across every possible combination of channels. It answers a slightly different question than Markov. Shapley asks “what does this channel add to every possible coalition.” Markov asks “what breaks when this channel is gone.” Both are data-driven and both beat last-click. Shapley gets expensive fast as channels multiply, since the combinations explode.
For a hands-on build, the open-source ChannelAttribution library implements Markov attribution directly, so analysts can run it on exported path data.
What You Need to Run a Markov Chain Attribution Model
Three things, in order of importance. Skip any one and the output lies to you.
- Enough conversions. Aim for thousands of conversion paths, not hundreds. Sparse data makes transition probabilities unstable, and the removal effect swings wildly between refreshes. This is the single biggest blocker for small accounts.
- Full-journey tracking. The model needs every meaningful touchpoint, not just the last one. If you only capture the final click, you are back to last-touch with extra math.
- Clean, consistent channel labels. Every touchpoint has to be tagged so the model can group it into the right state. This is where most setups quietly fail.
That third point is the one teams underestimate. If your Facebook traffic shows up as facebook, Facebook, and fb across different campaigns, the model treats them as three separate states. Your credit gets smeared across phantom channels and the removal effect for “real” Facebook looks smaller than it is.
Where Clean UTM Data Comes In
The model is downstream. Your tracking is upstream. And a Markov chain attribution model is a perfect example of garbage in, garbage out.
Every touchpoint the model evaluates arrives as a row of campaign tracking data, identified by its UTM parameters. The utm_source and utm_medium values become the channel states in your graph. If those values are inconsistent, the journey map is wrong before a single probability gets calculated.
This is the problem linkutm was built to kill. The UTM builder enforces lowercase, no spaces, and a fixed naming convention, so facebook is always facebook. No fragments, no phantom states. Your team picks from saved templates instead of typing parameters by hand.
You also need to see the touchpoints before they ever hit GA4. linkutm’s real-time link analytics shows click data per source and medium as it happens, which makes it easy to spot a mistagged campaign before it pollutes the path data your attribution model depends on.

How to Get Started With Markov Chain Attribution
You do not need a data science team to begin. You need clean data and the right reporting setup.
- Standardize your UTM tagging first. Lock naming conventions for source, medium, and campaign. Tag every channel, including email and organic social, so no touchpoint is invisible. This step decides whether everything after it works.
- Switch GA4 to data-driven attribution. In Admin, under Attribution Settings, set the reporting attribution model to data-driven. You now get an algorithmic model for free.
- Export path data if you want the real Markov model. Pull conversion paths from GA4 or BigQuery and run them through a library like ChannelAttribution to compute removal effects yourself.
- Compare against last-click. Put the Markov credit next to your old last-click numbers. The channels that gained credit are the ones you have been underfunding.
- Reallocate budget and re-measure. Shift spend toward the assist channels the model surfaced, then watch whether total conversions rise.
One trade-off to accept. Data-driven attribution is harder to explain to a CFO than “the last click did it.” You trade simplicity for accuracy. In my experience that trade is worth it, but you will spend time defending the model in meetings.
Frequently Asked Questions
What is a Markov chain attribution model?
A Markov chain attribution model is a data-driven multi-touch attribution method that maps customer journeys as sequences of channel touchpoints. It assigns credit using the removal effect, which measures how much the conversion rate drops when a channel is removed. It learns credit from real paths instead of a fixed rule.
How does the removal effect work?
The removal effect takes one channel out of the journey graph, reroutes its paths, and recalculates the overall conversion probability. The percentage drop in conversions is that channel’s importance. You repeat this for every channel, then normalize the results so the credit adds up to your total conversions.
Is the Markov chain attribution model the same as GA4 data-driven attribution?
Not exactly, but they are close cousins. GA4 data-driven attribution uses its own algorithmic, counterfactual model on your conversion paths. A pure Markov model uses the removal effect. Both are data-driven and both outperform last-click. Most GA4 users are already on a data-driven model since Google removed rule-based options in 2023.
What is the difference between Markov and Shapley value attribution?
Markov attribution asks what breaks when a channel is removed. Shapley value attribution, from cooperative game theory, asks what each channel adds across every possible combination of channels. Both are data-driven. Shapley becomes computationally expensive as the number of channels grows, while Markov scales more easily.
How much data do you need for Markov attribution?
You need thousands of conversion paths, not hundreds. With sparse data, the transition probabilities become unstable and the removal effect swings between refreshes. Small accounts usually lack the volume, which is why low-traffic sites should stick with simpler models until conversions scale.
Why does UTM tagging matter for Markov attribution?
The model groups touchpoints into channel states using their UTM source and medium values. Inconsistent tags like Facebook and facebook split one channel into multiple states, which distorts the removal effect and the credit. Consistent UTM tagging is the prerequisite for accurate attribution.
Stop Funding the Wrong Channels
Last-click attribution makes confident, wrong decisions. The Markov chain attribution model fixes that by crediting every channel for the role it actually played, measured by what breaks when that channel disappears.
But the model can only credit channels it can see clearly. That starts with tagging. Get three things right and you are ready:
- Standardize UTM parameters across every channel and campaign.
- Move GA4 to data-driven attribution.
- Compare the new credit to your old last-click numbers and reallocate.
Clean data is the whole game. Start enforcing consistent tags today with the free UTM builder at linkutm, and give your attribution model something honest to work with.