How MarginOS assigns each order to a channel (attribution)
Quick Reference
Inputs
Campaign tagging on your marketing links and a referrer on inbound visits, since these are the acquisition signals MarginOS reads; connected ad platforms, which supply the paid click markers; any source mappings you have set yourself in Channel Mapping.
Outputs
One acquisition channel per DTC order and a permanent channel credit per customer, a separate Unknown / Blended row for orders with no usable signal, and a dominant-evidence confidence label on every channel row in the Growth Engine.
Outcomes
Compare channels without double-counting customers who touched several, see how much of your performance picture is actually unattributed, and tell a genuinely organic customer apart from one whose origin was never recorded.
Every direct-to-consumer order in MarginOS is credited to exactly one acquisition channel, and every customer is credited to the channel that won their first-ever order. That single assignment is what makes channel profit, CAC and payback add up instead of double-counting people who touched three channels before buying. When MarginOS cannot see how a customer found you, it says so — those orders go to Unknown / Blended rather than being quietly folded into Organic/Direct.
The rule, in one paragraph
When a customer touches several channels before their first order, MarginOS credits one of them, in this order of preference: a channel you mapped yourself, then a clear paid ad click, then the last non-direct visit before the order, then the first visit that had a known channel. If none of those produce an answer, the order lands in Unknown / Blended. Once a customer is credited, they stay with that channel — every later order they place keeps counting toward the channel that originally acquired them.
Before you start
- Attribution quality depends on what your store passes through. UTM parameters on your campaign links and a referrer on inbound visits are what MarginOS has to work with.
- Ad platform connections improve paid attribution, because a paid click marker is the strongest signal available.
- If a large share of your orders sit in Unknown / Blended, fix that before you act on any channel comparison — see below.
How to check attribution for a channel
- Open the Growth Engine and stay on the Money View channel table.
- Read the Attr. confidence column. It shows the dominant evidence behind that row’s orders, not a score.
- Look for an Unknown / Blended row. It renders directly beneath Organic/Direct, wherever the table is sorted.
- If a channel looks misattributed, override its source in Channel Mapping. Your override takes priority over every automatic rule below.
The channels an order can be assigned to
| Channel | What lands here |
|---|---|
| Paid Search | First order carried a paid search click marker or paid search campaign tagging. |
| Paid Social | Same, for paid social platforms. |
| Email/SMS | Email or SMS campaign tagging, an email platform as the source, or a webmail app referrer. |
| Organic/Direct | Unpaid search and social, or a direct visit. A bare search or social source with no paid marker is organic, not paid. |
| Referral | An inbound link from another site that is not search, social or email. |
| Agentic Commerce | Orders originating from AI shopping agents and assistant-driven checkouts. |
| Shopify POS | In-person, draft and admin-created orders. Not a DTC acquisition channel — see below. |
| Other | The catch-all when a signal exists but cannot be classified into any of the above. |
A ninth row, Unknown / Blended, appears in the money table. It is not a channel — it is a carve-out of DTC orders with no usable acquisition signal, shown separately so it cannot inflate Organic/Direct.
How MarginOS decides
1. Your override wins
If you have mapped a source in Channel Mapping, that mapping takes priority over every automatic rule. You know your own traffic; MarginOS does not overrule you.
2. A clear paid ad click
If the customer’s first order carried an unambiguous paid click marker — the click identifiers the ad platforms attach, such as gclid, fbclid or ttclid — the matching paid channel is credited. This is the strongest evidence available and it outranks later touches.
Note what this deliberately excludes: a visit from Google or Facebook with no paid marker is organic traffic, not paid. Counting it as paid is the most common way a homemade attribution model overstates paid performance, because it credits ad spend with customers the ads never bought.
3. The last non-direct visit
With no paid click, MarginOS credits the last visit before the first order that came from somewhere identifiable — an email click, an organic search, a social visit. Direct visits are skipped here on purpose: “typed the URL” tells you nothing about what created the demand.
4. The first known visit
If the last visit was direct or unknown but an earlier visit had a known channel, that earlier channel is credited rather than giving up. Something started the journey, and a weaker signal is better than none.
5. Otherwise, Unknown / Blended
If your store sent no usable journey data — no campaign tagging and no referrer — or the signal cannot be confidently mapped, the order is grouped as Unknown / Blended.
Unknown / Blended is a tracking gap, not a channel
This is the part worth internalising. These are real customers who really bought, so their revenue and profit are real and are counted in your totals. What is missing is the explanation of how they arrived.
MarginOS keeps them in a visible bucket instead of assigning them somewhere plausible for one reason: any assignment would be a guess, and a guess here corrupts the two decisions this data exists to support. Folded into Organic/Direct, it makes word-of-mouth look stronger than it is. Spread across paid channels, it makes ad spend look more efficient than it is. Either way you would spend money against a number MarginOS invented.
So the practical rule is: treat Unknown / Blended as Organic/Direct with missing data, not as a channel to spend on. A high share of it means fixing tracking comes before changing budgets — any channel comparison you make while it is large is being made on a partial picture.
One honest caveat: you will never drive this to zero. Better campaign tagging and cleaner redirects recover some journeys, but browser privacy protections, consent choices and stripped referrers mean a share of customer journeys stays invisible no matter what you do. A small, stable Unknown / Blended bucket is a healthy result, not an outstanding defect.
What is excluded from acquisition entirely
Some orders are real revenue but are not direct-to-consumer acquisition, so they are excluded from DTC CAC and channel LTGP:CAC by default, and shown for revenue and profit context only:
- Shopify POS, draft and admin orders — in-person and manually created sales. Nobody bought a click.
- Marketplace orders — for example Amazon, TEMU, Faire or Shopify Collective. The marketplace owns that customer relationship.
- Wholesale orders — a different business line with different economics.
Including these would corrupt acquisition maths in both directions: they add customers you did not pay to acquire, and they add profit that no ad budget produced.
How confident is the assignment?
Each channel row reports the dominant evidence behind it, so you can weigh a comparison rather than trusting it blindly:
| Label | What it means | Confidence |
|---|---|---|
| tenant-override | You mapped this source yourself. | Highest — it is your instruction |
| direct-paid | A clear paid ad click on the first order. | High |
| last-touch | No paid click; the last non-direct visit was credited. | Good |
| first-touch-inferred | The last visit was direct or unknown; an earlier known visit was credited. | Moderate |
| ai-classified | The rulebook returned no answer and a fallback classified it. Overridable in Channel Mapping. | Review it |
| no-data | No usable journey data. These become Unknown / Blended. | None — a tracking gap |
Common questions
Why is one customer credited to only one channel when they clearly used several?
Because the alternative double-counts them. If a customer who saw an ad, clicked an email and then searched were credited to three channels, the sum of your channels would contain three customers who are one person, and every per-customer figure built on top — CAC, profit per customer, payback — would be wrong for all three. One customer, one acquisition channel.
A customer found me through an ad but bought after an email. Which channel gets them?
The paid channel. A clear paid click is the strongest evidence available and outranks the later email touch. This is intentional: the ad created the customer, and the email converted an existing intent.
Why is my Organic/Direct lower in MarginOS than in Shopify’s reports?
Most likely because orders with no usable acquisition signal are being shown as Unknown / Blended here rather than defaulting into Organic/Direct. Add the two together and the totals should reconcile. MarginOS separates them because “we know this was organic” and “we do not know what this was” are different facts that should not share a row.
Do later orders from the same customer get re-attributed?
No. A customer is credited to the channel that won their first-ever order and stays there permanently. Later orders keep counting toward that channel — which is the point, since a channel’s value is everything the customer goes on to buy, not just the first purchase.
Can I correct an attribution that looks wrong?
Yes. Map the source in Channel Mapping and your override takes priority over every automatic rule. This is the right fix for a source MarginOS classified as Other, or an internal tool whose traffic is being read as a referral.
Why did a Google visit land in Organic/Direct instead of Paid Search?
Because there was no paid marker on it. MarginOS requires positive evidence of a paid click before it will charge a customer to a paid channel — a plain visit from a search engine is organic traffic. If you believe the click was paid, the marker was probably stripped by a redirect in the link chain.
Related
- How MarginOS calculates channel LTGP:CAC — what these channel assignments are used for.
- How MarginOS resolves blended CAC — how paid spend becomes a per-customer acquisition cost.
- How MarginOS calculates LTGP — the cohort rules that sit on top of this attribution.
- Data Trust levels — how MarginOS grades the reliability of the numbers behind a decision.
About the author
Aron Baczoni is the founder of MarginOS and a former decade-long veteran of Google's Ads and Global Business Operations units. His work is focused on bridging the gap between AI's promise and its practical implementation for direct-to-consumer (DTC) brands, helping them build a sustainable competitive advantage through strategic, high-ROI AI solutions.
Read Aron's story