What "Markov chain" actually means here
A Markov chain is a system that moves between states, where the next step depends only on where you are right now — not the full history that got you there. That "memoryless" property is the whole trick.
In attribution, each marketing channel is a state. A buyer's path might read: Start → Facebook → Google → Purchase. Every arrow is a transition, and every transition has a probability learned from your real journey data.
Two special states anchor the chain. Conversion is the state you want people to reach. Null is the dead end — the session that leaves without buying. Every real journey ends in one or the other.
How the model assigns credit: the removal effect
Simpler models pick one touch and hand it 100% of the credit. Shopify's built-in attribution, for example, defaults to last non-direct click, giving all the credit to the final channel before checkout (Shopify Help). A Markov chain does something smarter: it measures each channel's contribution to the whole path.
The mechanism is the removal effect. You calculate your baseline probability of converting. Then you delete one channel — reroute everything that passed through it straight to Null — and recompute. The bigger the drop, the more that channel mattered. Do this for every channel, normalize the drops so they sum to 100%, and you have your credit split.
Transition probability, step by step
A transition probability is just: paths that took this arrow ÷ all paths leaving that state. If two of three journeys go Start → Facebook, that transition is 2/3. This is counting, not magic.
A worked example you can follow by hand
Say your store logs three customer journeys this week. Two end in a sale, one bounces:
- Journey 1: Start → Facebook → Google → Purchase
- Journey 2: Start → Facebook → Null (bounced)
- Journey 3: Start → Google → Purchase
First, the transition probabilities from counting the paths:
- Start → Facebook = 2/3 (journeys 1 and 2)
- Start → Google = 1/3 (journey 3)
- Facebook → Google = 1/2 (journey 1 of the two Facebook paths)
- Facebook → Null = 1/2 (journey 2)
- Google → Purchase = 1 (every Google visit here ends in a sale)
Baseline conversion probability. Add the probability of each converting route:
- Facebook route: (2/3 × 1/2 × 1) = 1/3
- Google route: (1/3 × 1) = 1/3
- Total baseline = 1/3 + 1/3 = 2/3 ≈ 0.667
Remove Facebook. Everything through Facebook now dies at Null, so only the direct Google route survives: probability = 1/3. The drop is 0.667 − 0.333 = 0.333.
Removal effect = 1 − (0.333 ÷ 0.667) = 0.50
Remove Google. Both converting journeys pass through Google, so conversions fall to zero.
Removal effect = 1 − (0 ÷ 0.667) = 1.00
Normalize. Facebook = 0.50, Google = 1.00, total = 1.50.
- Facebook credit = 0.50 ÷ 1.50 = 33%
- Google credit = 1.00 ÷ 1.50 = 67%
With two real sales, that assigns 0.67 sales to Facebook and 1.33 to Google.
Why this beats last-click
Under last-click, Google would take both sales — 100% — and Facebook would get nothing, even though journey 1 literally started on Facebook. The Markov model gives Facebook its earned third. That is the entire pitch: credit follows contribution, not just recency. The tradeoff is that single-channel journeys can look under-credited, and the math needs enough path data to be stable.
The catch nobody in the SERP mentions: garbage in, garbage out
A Markov chain is only as honest as the journey data you feed it. And your journey data is a mess before the model ever runs — because the platforms that record those touches don't agree with each other.
Meta, on its default 7-day-click-plus-1-day-view window, claims credit for purchases people only saw an ad before, so its purchase count typically runs 20–35% above Shopify's order count (Vaizle; TrackBee). GA4, on the other side, loses roughly 10–25% of users to ad blockers and consent declines before its tag ever fires (Audiense/Elevar). Feed a chain those conflicting touch logs and the transition probabilities inherit every gap.
So before you trust any attribution model, the touch data underneath it has to be reconciled. That is a whole discipline of its own — our guide to reconciling your ecommerce data walks through why four systems report four different numbers for one week of sales, and a common flashpoint, Google Ads orders that don't match Shopify, shows the same mismatch at the channel level.
Credit is not profit — the number that actually decides spend
Here is the leap every "complete guide" refuses to make. A Markov model tells you Facebook earned a third of your conversions. It says nothing about whether Facebook earned a third of your money.
Say your two sales are $40 mugs. Attribution hands Facebook 0.67 of them — about $27 in revenue. Now subtract what that revenue really cost. Product and print, say $16 per mug. Shopify processing at roughly 2.9% + 30¢ per order eats another bite (Webgility). Then the ad spend that produced the Facebook touches. Two channels can have identical conversion credit and wildly different profit once cost of goods, shipping, fees, and their own ad spend come off the top.
That is why credit alone is a trap. A channel can "win" attribution and still lose money on every order. The models in the top search results stop at the credit split — they never once subtract a fee. If you reallocate budget on credit without profit, you can confidently pour money into your least profitable channel. If your processing fees look off while you're at it, our notes on why processing fees run high and how to improve processing fees unpack where that money goes.
Where PodVector fits
PodVector is built for exactly the missing half. It connects Shopify, Meta Ads, Google Ads, Printify, Printful, and Stripe, and computes the true per-order profit — revenue minus product cost, minus fees, minus shipping — for every sale. Attribution tells you which channels touched an order; PodVector tells you what was actually left over after that order shipped.
It is not a dashboard you log in to stare at. Victor, its AI operator, analyzes your connected data and proposes moves, then executes the Shopify-side ones with your approval. He reads your ad data to find where profit leaks; he does not touch your ad account. You keep the attribution question and the profit question in one place instead of guessing across tabs.
Connect your stack and see true per-order profit with PodVector →
FAQs
What is a Markov chain attribution model in plain terms?
It is a way to divide credit for a sale across every channel a customer touched, based on how much each channel actually pushes people toward buying. It models the journey as a chain of steps and measures each channel by how far conversions would fall if that channel disappeared.
What is the removal effect?
The removal effect is the core calculation. You measure your baseline probability of converting, then delete one channel and recompute. The percentage drop is that channel's removal effect. Normalizing every channel's removal effect to sum to 100% gives you the final credit split, as shown in the worked example above.
How is it different from last-click attribution?
Last-click gives 100% of the credit to the final channel before purchase — the default in tools like Shopify, which uses last non-direct click (Shopify Help). A Markov chain spreads credit across every touch in proportion to its contribution, so early-funnel channels that start journeys finally get counted.
Is a Markov chain better than the Shapley value model?
They solve the same multi-touch problem differently. Markov chains are generally lighter to compute and more stable on smaller datasets, while Shapley draws from game theory. Both are correlation-based — they describe which touches co-occur with sales, not proven causation. For a true causal read you need incrementality testing on top.
Does better attribution fix my mismatched platform numbers?
No. Attribution is a credit-assignment method; it runs on top of your touch data and cannot repair it. If Meta over-counts on view-through and GA4 under-counts from ad blockers, the model inherits those gaps. Reconcile the underlying data first, then attribute.
Does attribution credit tell me which channel is most profitable?
No — and this is the biggest misconception. Credit measures influence on conversions, not money kept. A channel can earn the most attribution credit while losing money once product cost, shipping, processing fees, and its own ad spend come off the top. You need true per-order profit next to the credit split to make a real budget call.