How to Track B2B and Company-Account Orders on Shopify

|Dan Giura
How to Track B2B and Company-Account Orders on Shopify

TL;DR

Since April 2, 2026, Shopify's B2B tools (company profiles, payment terms, volume pricing) are on Basic, Grow and Advanced as well as Plus [1], so wholesale and retail now share one admin on stores that never had Plus. To every tracking destination, a company-account order looks like a retail one. By default it goes out when the order is created, not when the invoice is paid, and nothing takes it back if the company never pays. The app's Plus plan lets a destination wait until Shopify marks the order paid instead, and then an order that's never paid is never sent. The separation you can build splits orders by where they were made, not by who bought them, so the accurate B2B number comes from Shopify's own reports.

Key Takeaways

  • A net-30 or net-60 order is sent at its full total on the day it's placed, the same day Shopify starts the payment terms [2], unless that destination is set to "When the order is paid" on the app's Plus plan.
  • Draft quotes and "Submit for approval" orders send nothing until someone clicks Create order or the buyer pays the invoice [3].
  • The only customer label the app attaches is new versus returning, so a wholesale reorder arrives as a returning customer, not as a company.
  • "Exclude Admin/API Orders" (per channel, on the app's Plus plan) removes draft orders your team completes, and leaves B2B buyers who check out on the online store in.
  • Shopify's Is B2B order filter, and WHERE is_b2b_order = true in ShopifyQL, is where the wholesale number actually lives [6].
  • Canceling an unpaid B2B order sends nothing to the ad platforms, so a conversion already sent stays; a destination set to wait for payment never received one.

What reaches Google Ads, Meta and GA4 when a company account orders?

A purchase with a value, a currency, an order ID, the line items and a customer. That's all.

Shopify's order record knows much more. The Admin API order carries a company object ("information about the purchasing company for the order"), plus payment_terms and po_number [5]. None of those fields travel. The app reads no company, payment-terms or PO field when it builds an event, so Meta, Google Ads, GA4 and the other destinations receive a B2B order in exactly the shape of a retail one.

The one customer label that can ride along is customer type. On the app's Plus plan ($39/mo, which is our plan and not Shopify Plus), each purchase can say whether the buyer is new or returning, worked out from that customer's order count. For a wholesale account that orders every month, that means every order after the first arrives as a "returning customer". If your retention audience or your new-customer bidding reads that label, company reorders are inflating it. New vs returning customer tracking on Shopify covers what the signal is for: telling first-time buyers from repeat ones.

The plan question has also shifted. Shopify's changelog entry of April 2, 2026 opened "native B2B features" to Basic, Grow and Advanced, including up to 3 active B2B catalogs, company profiles, payment terms, volume pricing and vaulted cards, while unlimited catalogs, partial payments and deposits stay on Shopify Plus [1]. Shopify's by-plan table lists draft orders and PO numbers for all plans [7]. For which Shopify plan unlocks which report, see which Shopify plan you need for attribution and channel reports.

One net-30 order, day by day

Payment terms are where B2B tracking goes strange, so follow one order from quote to cash.

Moment What Shopify does What the destinations receive (default setting)
Staff builds a quote as a draft order A draft exists; it isn't an order yet [3] Nothing
Buyer clicks "Submit for approval" Order waits until you click Create order or the buyer pays your invoice [3] Nothing
Staff clicks Create order, net 30 Order in Payment pending; terms start "from the day the order is placed" [2][4] One purchase at the full order total, as a back-office order (app's Plus plan)
Buyer checks out on the online store with terms Same terms, same start date [2] One purchase at the full total, with the buyer's browser session
Day 30 passes unpaid Order becomes Overdue; payment isn't captured automatically [2][4] Nothing
Reminders go out Up to five reminders, as late as 30 days after the due date [4] Nothing
Payment lands Order marked paid Nothing
Order canceled instead Order canceled in Shopify Nothing; the ad platforms keep the conversion
Refund issued Refund recorded A refund event to GA4 only, on the app's Plus plan

Read the right-hand column top to bottom. On the default setting, a purchase goes out only at the moment the order comes into existence, by either route, without waiting for payment, so a net-60 order is a full-value sale in Meta and Google Ads two months before the money arrives, and one that's never paid stays a sale there for good.

The other path is a setting on the app's Plus plan. Each destination has a "When to send the Purchase event" choice (Klaviyo's reads "When to send the Placed Order event"): "On order creation (default)" or "When the order is paid". With the second, neither order-creation row sends anything, and the purchase goes out on the "Payment lands" row, at the full order total. An order that's canceled before payment, or never paid, is never reported to that destination. Google Ads still dates the conversion to the day the order was created.

Deposits, which exist on Shopify Plus, don't change the value. A deposit is "a percentage of the order subtotal only" [3], but the purchase goes out at the order's full total, not at the deposit amount. With that setting on, a deposit doesn't count as payment, so the purchase waits until the order is fully paid.

The approval flow moves the date, too. A buyer who browses on Monday and hits "Submit for approval" gets no conversion until your team approves the order on, say, Thursday. The conversion carries Thursday's timestamp. On the paid setting, Google Ads still dates it Thursday, GA4 and Klaviyo take the day the payment lands, and the other ad platforms keep Thursday unless payment comes more than six days later. Refunds and cancellations in ad platform reporting covers the manual retraction path for Google Ads if an unpaid order has to come out.

Which B2B orders arrive without a session?

Only the ones your team creates or completes. A B2B buyer who logs in and checks out on your online store places a storefront order. It reaches every destination you've connected, with the browser session, campaign source and click IDs that session carried, like any retail checkout.

A draft your team completes, whether it started as a phone call, an emailed PO or an approval request, is a back-office order. The app sends back-office orders only on its Plus plan, and they arrive with no browser session behind them. GA4 gets the purchase with no campaign source, which is one of the paths into the unattributed rows described in GA4 (not set) on Shopify. Meta, TikTok and the other ad platforms get it without click IDs. Google Ads is the strictest: with no click, the order can only be matched on hashed customer data, and only with two settings that ship off, the path the no-GCLID guide describes. For back-office orders in general, including POS, our admin and POS order guide is the reference.

Markets add one more wrinkle. Shopify now lets a market represent a set of customers rather than a country [8]. When a staff-created order carries no market from a storefront session, the app works the market out from the shipping or billing country. If you've built a market around a customer group instead of a country, that lookup can't find it, and only pixel instances set to receive all Markets fire for the order. Running a different pixel for each Shopify market has the routing detail.

Where does the real B2B number live?

In Shopify. Shopify's B2B reporting adds labels you can use as a filter or a dimension on any sales metric: Is B2B order, Company ID, Company location ID, Company location name and Company name [6].

  1. In Shopify admin, go to Analytics → Reports and click New exploration.
  2. Add the filter Is B2B order > Yes [6]. That's your wholesale revenue for the period.
  3. Swap the filter for the Company name dimension to see which accounts drive it [6].
  4. If you work in ShopifyQL, the same cut is WHERE is_b2b_order = true [6].
  5. Note the B2B total for the same date range as your ad reports. That's the figure the subtraction below needs.

You've probably looked at a month where ROAS jumped and nothing in the campaigns changed. Check whether a big account placed its quarterly order that week before you touch a budget.

Two ways to keep wholesale out of your ad numbers

Neither reads the buyer's B2B status, because nothing in the payload carries it. Each one trades something.

Exclude back-office orders from the ad pixels. Each channel in the app has an "Exclude Admin/API Orders" setting, off by default, and it applies on the Plus plan where back-office orders are sent at all. Turn it on for Meta, Google Ads and the other ad channels and drafts your team completes stop reaching them. The cost is that it removes every other back-office order too: POS sales, retail phone orders, subscription renewals (see subscription order tracking), marketplace orders. B2B buyers who check out on the online store still count. So do drafts a quote or wholesale app creates and the buyer pays at checkout, unless you also untick "Continue to send draft orders paid by the customer at checkout".

Keep everything flowing, and subtract. This is the cheapest, and it's the place to start. Run the arithmetic on an illustrative month. Shopify shows $30,000 in sales, and ad spend across Meta and Google Ads is $6,000, a blended ROAS of 5.0. The Is B2B order filter shows $9,000 of that came from company accounts. Retail revenue is $21,000, so retail ROAS is 3.5. Against a 4.0 target, the ads looked healthy at 5.0 and are actually under. Blended ROAS across Shopify, Meta and Google Ads walks through the base calculation this subtraction plugs into.

The second option leaves the ad platforms' own numbers as they were, since they still count every B2B purchase they could attribute. Smart Bidding and Meta's delivery keep treating those orders as retail sales, so the subtraction corrects your report and leaves their optimization untouched.

If you want every order source to reach GA4 in full while you decide per ad channel which ones count, WeltPixel Conversion Tracking [9] sends Shopify orders server-side to nine destinations, with the back-office exclusion set per channel on the Plus plan.

FAQ

Does Shopify B2B require Shopify Plus?

No. Since April 2, 2026, company profiles, payment terms, volume pricing and up to 3 active B2B catalogs are available on Basic, Grow and Advanced [1]. Unlimited catalogs, partial payments and deposits remain Shopify Plus features [1].

When does a net-30 order count as a purchase in Meta or Google Ads?

By default, on the day the order is created, at the full order total, so the sale is in your ad platforms about 30 days before the cash is. To move it to the day Shopify marks the order paid, set that destination's "When to send the Purchase event" to "When the order is paid" (the app's Plus plan).

Can a tracking app tag purchases as B2B for Meta or GA4?

Not this one. The app reads no company, payment-terms or PO field, and its customer-type label is new versus returning, which can't tell a wholesale account from a loyal retail buyer.

Do B2B draft orders fire a purchase when I send the invoice?

No. A draft sends nothing. The purchase goes out when the draft becomes an order, either when you click Create order or when the buyer pays the invoice [3], or later, when the order is paid, if that destination is set to "When the order is paid".

Sources

  1. Shopify Changelog, "Key B2B features now available on non-Plus plans", April 2, 2026, changelog.shopify.com/posts/key-b2b-features-now-available-on-non-plus-plans, accessed September 28, 2026
  2. Shopify Help Center, "Payment terms in B2B", help.shopify.com/en/manual/b2b/checkout-and-orders/payment-terms, accessed September 28, 2026
  3. Shopify Help Center, "Draft orders in B2B", help.shopify.com/en/manual/b2b/checkout-and-orders/draft-orders, accessed September 28, 2026
  4. Shopify Help Center, "Managing orders with deferred payments", help.shopify.com/en/manual/fulfillment/managing-orders/payments/deferred-payments, accessed September 28, 2026
  5. Shopify developer documentation, Admin REST API "Order" resource (company, payment_terms, po_number), shopify.dev/docs/api/admin-rest/latest/resources/order, accessed September 28, 2026
  6. Shopify Help Center, "Creating reports for B2B sales", help.shopify.com/en/manual/b2b/reports-and-automations/reports, accessed September 28, 2026
  7. Shopify Help Center, "Shopify B2B features by plan", help.shopify.com/en/manual/b2b/getting-started/plan-features, accessed September 28, 2026
  8. Shopify Help Center, "B2B and Markets", help.shopify.com/en/manual/b2b/markets, accessed September 28, 2026
  9. WeltPixel Conversion Tracking, Shopify App Store listing, apps.shopify.com/weltpixel-conversion-tracking, accessed September 28, 2026

Ready to upgrade your tracking?

Server-side tracking for Magento and Shopify — accurate data, better attribution, full privacy compliance.