Map your order sources to DTC / Marketplace / Wholesale
Quick Reference
Inputs
The order sources MarginOS has seen on your synced orders, with the order count and net revenue for each over the last 90 days; the bucket each source sits in today; the bucket MarginOS suggests for it.
Outputs
One bucket per order source, shown on screen as DTC_CORE, MARKETPLACE, WHOLESALE, RETAIL or OTHER, plus an optional platform label used to group the non-DTC breakdown.
Outcomes
Your DTC reporting counts only direct-to-consumer orders, so acquisition cost and profit per order describe the DTC business; wholesale, marketplace and retail revenue is reported on its own line instead of inflating DTC.
Channel Mapping is where you tell MarginOS which of your order sources are direct-to-consumer and which are wholesale, marketplace or retail. Open Account Setup, go to Business Profile, choose Marketing, and Channel Mapping is the first card on the page. Each source gets a bucket, MarginOS suggests one for you, and the bucket you confirm is used for every past and future order from that source. If you only sell DTC on Shopify, you can skip this.
What Channel Mapping does
An order source is whatever your store recorded as the origin of an order: your online storefront, a point-of-sale terminal, a subscription app, a marketplace app, a draft order you raised for a wholesale customer. Shopify records these under names that range from readable to meaningless, and a brand of any size accumulates more of them than it realises.
MarginOS has to put every one of those orders into a business line before it can report anything, because a wholesale order and a DTC order are not comparable. A wholesale order at negotiated terms has no advertising cost behind it. A marketplace order carries commissions your store data never sees. Mixing them into one profit number produces a figure that is wrong in both directions at once.
So each order source gets exactly one bucket. The card explains it in one line: MarginOS guesses a bucket for each order source — DTC, Marketplace, Wholesale, or Retail. You can correct us below. Once you confirm, all past and future orders from that source use your bucket in reports.
The buckets appear on screen as coloured badges. Direct-to-consumer reads DTC_CORE; the rest read WHOLESALE, MARKETPLACE, RETAIL and OTHER. The guess is a starting point, never a decision: nothing is applied on your behalf beyond the bucket a source already has, and your choice always wins over ours.
Before you start
- You need admin access. Account Setup is admin-only. Without it the page reads “Access Restricted” and “Advanced Configuration requires admin privileges.”
- Your store needs to be connected and synced at least once. Channel Mapping reads the sources MarginOS has actually seen on your orders, so on a brand-new connection it has nothing to show until your first sync finishes. See Connect your Shopify store.
- Know which of your sources are not DTC. Wholesale usually arrives as draft orders or a B2B app; marketplaces arrive under the marketplace name; retail arrives from a point-of-sale terminal. You know your own traffic better than any classifier does.
- Expect the numbers to be as of the last refresh. The card prints “Numbers as of” and a timestamp under the How this works box. They are not live to the second.
Map an order source to a bucket
- Open Account Setup and select the Business Profile tab.
- Choose Marketing in the section list. Channel Mapping is the first card.
- Read the four summary tiles under Last 90 days. They show revenue, share of revenue and order count for each bucket you currently have, so you can see at a glance whether the split looks like your business.
- Work down the 1. Order sources (last 90 days) table. For each source, compare Current bucket with Suggested bucket.
- Where the suggestion is right and differs from the current bucket, click Accept.
- Where it is wrong, or where you want a bucket nobody suggested, click Change bucket. Pick the bucket, optionally edit the Platform label, and click Save.
- Clear the Needs Mapping block underneath if one is showing. Those are the sources where our suggestion disagrees with how their orders are classified right now — the ones actually worth your attention.
- If a source you care about is not listed, click Show older sources to reveal the ones with no orders in the last 90 days.
Each save confirms with “Bucket updated. Revenue and order totals refresh in a moment.” The row itself flips immediately; the money totals follow once MarginOS has re-read the affected orders.
What each column tells you
| Column | What it shows |
|---|---|
| Source | The sales-channel name MarginOS recognised — “Shop”, “Amazon”, “Subscriptions” — with the raw source name your store recorded underneath it in small type. When there is no recognisable name, the raw one is all you get, and it can be a bare number. |
| Orders (90 days) | How many orders came from this source in the last 90 days. |
| Revenue (90 days) | Net revenue from this source over the same window. The table is sorted by this, biggest first, so the sources that matter are at the top. |
| Current bucket | The bucket in force today, its platform label, and whether it came from you or from us: Your choice means you set it, Default means we did and you have not changed it. |
| Channel type | For DTC sources, the marketing channels those orders came in on. For everything else, the bucket word. It is context to help you decide, not something you set. |
| Suggested bucket | What MarginOS thinks this source should be. Default means the built-in rulebook recognised the source outright. Suggested means the source was opaque enough that MarginOS had to infer it, and the confidence it had is printed underneath. When the suggestion already matches, the loud badge collapses to a quiet “Matches current” or “AI-confirmed” and there is nothing to do. |
| Actions | Accept appears only when the suggestion would actually change the bucket and you have not already pinned the source yourself. Change bucket is always available. Reset to default appears once you have made a choice, and hands the source back to MarginOS. |
How MarginOS uses your buckets
The bucket is not a label on a report. It decides which orders are treated as your DTC business, and that decision runs through everything downstream.
- DTC is the only bucket your DTC reporting counts. Customer acquisition cost, lifetime gross profit against acquisition cost, gross profit per order — all of them are measured over DTC orders. The card says it plainly: your DTC dashboard keeps showing DTC orders only.
- The other three appear in Business Lines as revenue. Wholesale, marketplace and retail are reported with revenue, order count and share of revenue, not profit, because their real costs live outside your store data. See Compare your Business Lines.
- The change is retrospective, not just forward-looking. Saving a bucket re-reads this source across your history and moves those orders for every report, which is why a save takes a moment rather than being instant.
- A bucket is not a marketing channel. Which marketing channel earned a DTC customer is a separate question, answered in how MarginOS assigns each order to a channel. Channel Mapping decides whether an order is DTC at all; attribution decides which channel gets the credit once it is.
- Some DTC orders carry no marketing source at all — a subscription renewal, for example. MarginOS raises those in Signals rather than hiding them, and they do not change your CAC.
Because the bucket is retrospective, mis-bucketing is one of the few settings that can quietly distort a quarter of reporting. That is why the card puts an amber banner above the table when a meaningful slice of your recent revenue looks mis-bucketed, telling you the percentage and pointing you at the suggestions below.
Example
A brand sells on its Shopify storefront, on Amazon, and to about a dozen independent stockists it invoices through draft orders. Opening Channel Mapping for the first time, the summary tiles read: DTC_CORE $412,000 (78% of revenue, 5,140 orders) and MARKETPLACE $116,000 (22%, 1,390 orders). There is no wholesale tile at all, and an amber banner says 9.4% of the last 90 days of revenue looks mis-bucketed.
The Needs Mapping block explains it. The stockist orders came in under a source the rulebook did not recognise, so they were sitting in DTC_CORE with a suggested bucket of WHOLESALE. Every one of those invoices had been counted as a direct-to-consumer sale with no acquisition cost behind it — which quietly flattered the brand’s blended CAC and its DTC gross profit per order.
The founder clicks Accept on that row. The badge flips to WHOLESALE with Your choice under it, and a moment later the tiles redraw: DTC_CORE $364,000 (69%), MARKETPLACE $116,000 (22%), WHOLESALE $48,000 (9%). The banner is gone. Nothing was invented and nothing was lost — $48,000 of revenue simply moved to the line it actually belongs to, and the DTC figures now describe the DTC business.
FAQ
Do I have to map anything if I only sell DTC on Shopify?
No. The card says so itself: if you only sell DTC on Shopify, you can skip this. Every source will already sit in DTC and the suggestions will agree with it. It is worth a look once, because an order source you forgot about — a point-of-sale terminal from a market stall, a subscription app, a one-off wholesale invoice — is exactly the thing this screen is for.
Does changing a bucket affect orders I already have?
Yes, and that is the point. Once you confirm a bucket, all past and future orders from that source use it in reports. A mapping that only applied going forward would leave your history wrong forever, so MarginOS re-reads the source across the orders it already holds. Your raw order data is never altered — only how MarginOS groups it.
Why is a source listed under Needs Mapping?
Because MarginOS suggests a different bucket from the one those orders are in right now. That is the actionable set: a point-of-sale source still counted as DTC, or a marketplace source that fell through as direct. Sources where the suggestion already matches are never listed there, and neither is a source you have already made a choice about — once you decide, MarginOS stops asking.
What is the difference between Suggested and Default?
Default means the built-in rulebook recognised the source on its own. Suggested means the source name gave nothing away, so MarginOS inferred a bucket from the pattern of the orders instead, and prints the confidence it had. Treat a low-confidence suggestion as a question rather than an answer. Neither one is applied until you accept it.
How do I undo a bucket I set by mistake?
Click Reset to default on that row. It removes every saved rule that pins the source and hands it back to MarginOS, confirming with “this source reverts to MarginOS’s default after the next refresh.” One thing to watch: if you had written a broad rule that also catches sibling sources, resetting clears that rule too, because resetting a source means clearing whatever classifies it.
Why can I not find one of my order sources in the table?
Three places to look. The main table lists your largest active sources by revenue, so a small one can fall below the fold. Anything MarginOS wants you to review is in the Needs Mapping block underneath. Anything with no orders in the last 90 days is behind Show older sources, which reports a 12-month lookback and the date of the last order. If it is in none of those, MarginOS has not seen an order from it in a year.
What should I put in the Platform box?
The name you want to see that source grouped under — “Amazon”, “Faire”, “TikTok Shop”. MarginOS pre-fills a sensible value, and you can leave it alone. It is a label, not a setting: wholesale and marketplace revenue are broken down by platform lower on the same card, so two sources sharing a platform name are reported together there.
Will wholesale and marketplace orders show up in my DTC numbers?
Not once they are bucketed correctly. Your DTC dashboard shows DTC orders only, by design — that is what makes acquisition cost and payback mean anything. Wholesale and marketplace revenue is reported separately in Business Lines, with order counts and share of total revenue, so nothing disappears. It is reported as revenue rather than profit because the fees on those orders arrive outside your store data.
Related
- Compare your Business Lines (DTC/Wholesale/Marketplace/Retail) — where your buckets show up as a report.
- How MarginOS assigns each order to a channel (attribution) — which marketing channel earns credit for a DTC order.
- Connect your Shopify store — where order sources come from in the first place.
- How MarginOS turns raw data into your margins — what happens between an order and a number.
- Set your CAC and marketing-spend baselines — the other settings on the Marketing page.
- How MarginOS calculates channel LTGP:CAC — one of the figures that only counts DTC orders.
- Read the Command Center — where the business-line comparison lives.
- All data and integrations guides
About the author
Founder of MarginOS, a Profit & Inventory OS for Shopify DTC brands who live and die by margin. Previously 11 years at Google across Ads and Global Business Operations, building large-scale systems. Now focused on giving DTC operators true profit by product, channel, and customer after COGS, 3PL, shipping, returns, and fees, and on showing exactly how much to trust every number behind those decisions.
Read Aron's story