Sushinet

How to Auto-Tag Shopify Orders by Sales Channel (POS, Online Store, Marketplace)

Automatically tag a Shopify order by the channel it came from — POS, Online Store, a marketplace app, a wholesale channel — so fulfillment routing and reporting can split by channel without checking each order by hand.

how-to

A store selling through more than one channel — an online storefront, an in-person POS register, a wholesale ordering app, a marketplace integration — usually wants to route, report on, or fulfil those orders differently. That only works cleanly if the order itself carries a fact about where it came from, rather than someone having to open each order to check.

Why Shopify doesn't tag this natively

Shopify's own order detail view shows the channel an order came through, and admin search can filter by it — but that's a lookup you perform, not a tag that lives on the order for a saved view, an export, or another automation to read. If your fulfillment team works from a tag-filtered picking queue, or your reporting groups by tag, the channel information Shopify already has isn't in a form those tools can use.

The fix: a rule that reads the real source

An auto-tagging rule can check which app or channel actually placed the order and tag it accordingly:

If order's sales channel is POS → tag channel-pos.

Build one rule per channel you want distinguished, and every order is tagged with its real source the moment it's created — no manual lookup, no relying on someone remembering to flag it.

Because it's a rule, not a one-time export, it stays correct as your channel mix changes:

  • Add a new channel any time — connect a new marketplace app, add a rule for it, and it starts tagging from that point without touching the rules you already have.
  • Combine with other conditions — channel and order total, if you want a rule to fire only on, say, large wholesale-channel orders rather than every wholesale order regardless of size.
  • Route fulfillment by tag — once orders are tagged by channel, a picking queue, a third-party fulfillment tool, or a Shopify Flow workflow can filter or trigger on that tag directly.

A note on cost

Reading which app placed an order is a genuinely separate signal from the rest of an order's data — it isn't included for free in the same delivery every order tagging tool already reads. A rule engine built to use it responsibly should only make that extra check for a shop that actually has a live rule depending on it, not pay the cost on every order across every store regardless of whether anything uses the answer.

Rules2Tag is built with exactly this discipline — the sales-channel lookup only runs for a shop whose rules actually reference it, so a store that never needs channel-based tagging never pays for the extra call.

Rules2Tag does this automatically

Rules2Tag applies and removes tags like these from a plain-English rule you write once — backfilled against your order history, taken off again when a condition stops matching, and no workflow builder to babysit.

Questions

Does Shopify tag orders by which sales channel they came from?

Shopify's order detail page shows which channel or app an order came through — POS, Online Store, a connected marketplace — and admin search can filter the order list by it. But that's a lookup you perform on an individual order or a search you re-run, not a tag stamped onto the order for a saved view, an export, or another automation to read. If your fulfillment team works from a tag-filtered picking queue, or your reporting groups results by tag, the channel information Shopify already has and displays correctly isn't in a form those tools can actually use — they'd need to open every order individually to find the same fact that's sitting right there on the order page, which doesn't scale once volume passes a handful of orders a day, and doesn't help at all with a rule or export that needs to check dozens of orders at once.

What counts as a 'sales channel' here — just Online Store vs POS, or more?

More than just the two Shopify ships by default. Any app that places an order through Shopify's API shows up as that order's source app — which covers Online Store and POS, but also every third-party sales channel or marketplace app a store has connected, from a marketplace integration to a custom point-of-sale built by a developer. That matters because a store selling across several of these usually wants different handling for each one: a marketplace order might need different packaging than a direct online sale, and a wholesale-specific ordering app's orders might skip a step retail orders always go through. Because the source app is read directly from the order rather than assumed from a fixed list of channels Shopify officially supports, a rule built around it keeps working correctly even as you connect new channels you hadn't planned for when you first wrote it.

Can I tell the difference between a wholesale order and a retail online order this way?

If the wholesale side runs through its own dedicated app or channel — rather than the exact same storefront and checkout as retail — yes, the order's source app is a real, distinguishing signal between the two, not a guess based on order size or a customer tag. That's a meaningfully more reliable signal than inferring wholesale status from cart total (a big retail order and a small wholesale order can both exist) or from a customer tag alone (which tells you who the customer is, not which channel this specific order came through). If your wholesale ordering genuinely happens through the same storefront as retail, with no separate app or channel distinguishing the two, this particular signal won't help — you'd want a rule built around the customer's own tag instead, a different but related pattern covered elsewhere on this site.

Does this need an extra API call, or does it slow anything down?

Reading which app placed an order is a genuinely separate piece of data from the rest of the order payload most tagging tools already read — it isn't included for free in the same delivery. A rule engine built around it responsibly should only make that extra check for a shop that actually has a live rule depending on channel data, not pay that cost on every single order across every store regardless of whether anything uses the answer. That distinction matters more than it sounds: a naive implementation that always fetches channel data 'just in case' adds latency and API cost to every store using the platform, even the ones that never reference sales channel in a single rule. A well-built system checks what a shop's actual rules need before deciding what extra data to fetch, and skips the lookup entirely for a shop whose rules never reference it.

Related guides

Ready to try it?

Rules2Tag applies and removes tags like these from a plain-English rule you write once — backfilled against your order history, taken off again when a condition stops matching, and no workflow builder to babysit.

See what Rules2Tag does · Pricing · ← All auto-tagging guides