Wholesale storefront readiness guide

What the nightly storefront check reads, what each colour means, how to remove prices a level did not set, and what the check cannot fix for your B2B buyers.

What the check looks at

Every night at 02:30 UTC, B2B Onboard checks each store that has a price level. The result is on Settings → Wholesale pricing → Storefront readiness. The check reads:

  • Each price level: whether its market, catalog and price list still exist in Shopify, and whether the fixed prices and quantity rules on its price list are the ones the level sets.
  • Your buyers: which company locations are on a level, whether a location is reached by two levels or by a catalog you made yourself, and whether a location ships to a country you sell to.
  • Checkout rules: whether the order rules and payment options you set on a level are active in Shopify checkout.
  • Your theme and customer accounts: the published theme and its version, whether it shows a volume pricing table, and whether new customer accounts are on.

Prices the app wrote that drifted, went missing or are no longer needed are repaired by the same check (see Nightly sync). Everything else is reported, never changed. B2B Onboard reads these settings; it never changes your theme.

A level you edited in the last 10 minutes, or one that is still syncing, is skipped and checked on the next run. The page says Edited less than 10 minutes ago, checked on the next run next to it.

After a product change in Shopify admin, a level with fixed prices from a file and no quantity breaks computed from retail is not re-read, because retail does not change its prices. The page says Fixed prices, checked every night next to it.

Status colours

The page shows one badge for the whole storefront and one per level.

  • Ready (green): nothing to look at.
  • Worth a look (amber): prices or rules on a level's price list that the level did not set, a catalog you made that also reaches a buyer, a buyer location outside the countries you sell to, or classic customer accounts. Buyers can still order; the page explains each one.
  • Needs attention (red): a market, catalog or price list a level needs was deleted in Shopify admin, a checkout rule was deleted, one location is on two of your levels, or part of the check failed. When the last complete check is red, the dashboard shows a Wholesale pricing needs attention banner. Dismissing it hides it for that check only; the next red check shows it again.

Under the badge, the top card says what it refers to: one line per finding, with what was found and what to do, and a Show link (for example Show level or Show buyers) that jumps to the card with the detail. Red findings come first under What needs attention; amber ones are under What to look at, or Also worth a look when there is red too. When everything is green, it says Nothing needs you.

If the last check is more than a day and a half old, the page says Last check was N days ago; the nightly check may have failed. Run a check now (below) to refresh it. A check that ran out of time says This check was cut short and is continuing; it finishes on its own within minutes.

Prices not set by this level

Each level's card counts the fixed prices and quantity rules on the level's own price list that the level did not write: Not set by this level: N prices, M rules. Up to five are listed with the product (SKU or variant), the price now and the level's price.

There are two usual reasons. Someone edited the price list in Shopify admin, or the prices were written before the nightly check existed (before November 2026). Prices written before the nightly check existed look the same as prices edited in Shopify admin, so the app never removes them on its own. They stay amber until you decide.

To clear them, click Remove prices not set by this level on the level's card. The dialog names the level and both counts. Remove N prices starts a check of that level that removes them, so every buyer on the level is back on the level's own prices and rules. Keep them closes the dialog and changes nothing. Catalogs and price lists you made yourself are never touched.

The button only appears when the last check found such prices on that level and did not skip it. Saving the level again (which re-syncs its prices) also clears the old prices over the next nightly check.

Also reached by other catalogs

A buyer location can be reached by your level and, at the same time, by a catalog or B2B market you made yourself in Shopify admin. The Buyers card lists each such location: Also reached by <catalog names> (not managed by B2B Onboard), with one sample product showing the retail price, what the buyer pays and any quantity breaks.

Shopify gives a buyer the lowest price across every catalog that reaches them, so the other catalog can undercut the level. The app never changes catalogs you made yourself; Open catalogs in Shopify admin takes you there to decide.

A location on two of your levels is different: that is red, because a buyer should be on one level. Give the location one level from the company's page in B2B Onboard (Change level).

Locations outside your selling markets

When a buyer location ships to a country none of your active markets sells to, it is listed under Outside your selling markets with its country. Those buyers see their level's prices but may not be able to check out until you add the country to a market in Shopify (Settings → Markets).

This is information, not an error: you may not want to sell there yet. It never turns the check red.

Checkout rules

If you set order rules, payment options, fees or shipping options on a level, the Checkout rules card shows whether each is active in Shopify. The Fees and Shipping options rows appear once a level uses them. Missing in Shopify means it was deleted in Shopify admin (for fees, also when the Wholesale handling fee product was deleted), and the card says: A checkout object was deleted in Shopify admin. Open the price level that uses it and click Create it again. The level page shows the same warning with a Create it again button. A missing object turns the check red.

On stores without Shopify Plus the payment options row reads Net terms at checkout: Shopify Plus only. That is expected, not a fault.

When the rules Shopify checkout reads no longer match your levels (for example after a level was renamed or deleted), the check brings them back in line by itself.

Theme and customer accounts

Wholesale prices are shown by your theme, not by app code. The card shows what the last check read:

  • Published theme and its version.
  • Volume pricing table: Supported for Dawn 11.0 or newer, Horizon and Trade, which show a level's quantity breaks on the product page. Other themes show the wholesale price, but may not show the breaks table; check a product page while logged in as a test buyer, or update the theme.
  • Customer accounts: company contacts log in with new customer accounts. With classic customer accounts they can't log in as a company, so they see retail prices; switch in Shopify under Settings → Customer accounts.
  • Countries you sell to, from your active markets.

B2B Onboard reads these settings; it never changes your theme.

Buyers who order many products at once can also use the wholesale order sheet, a page where they order by SKU at their level's prices, once you turn it on: see the Wholesale order sheet guide.

Hide prices from visitors who are not logged in

Shopify shows one price per visitor: retail visitors see retail prices, logged-in buyers on a level see the level's prices. If you want visitors who are not logged in as a company to see a “Log in for wholesale prices” note, add this Custom Liquid block to your product template in the theme editor (Online Store → Themes → Customize):

{% unless customer.b2b? %}
  <p class="wholesale-note">Trade customer? <a href="/account/login">Log in</a> for wholesale prices.</p>
{% endunless %}

The Storefront readiness page has the same snippet with a Copy snippet button and an Open theme editor link. You place it yourself: B2B Onboard reads these settings; it never changes your theme, which keeps your theme safe to update.

Run a check now

After you change prices, a level or a catalog, you don't have to wait for the night. Run check now at the top of the page checks every level; Check this level on a level's card checks just that one. The page says Check started. Results appear here when it finishes, usually within a minute or two and longer for large level files. and refreshes by itself when the result arrives.

One check can start every two minutes per store. A second click inside that window says A check started less than two minutes ago. Its results appear here when it finishes. A level edited in the last 10 minutes can't be checked on its own yet; its button is greyed out until the edit has settled.

A check you start does the same as the nightly one, including repairing prices the app wrote. Every check you start is recorded in the audit log.

Things this check cannot fix

  • Prices a theme hides or rewrites: a theme customization or another app's script can show a different price than Shopify charges.
  • Discounts stacked by other apps on top of a level's prices at checkout.
  • Catalogs and price lists you made yourself: they are reported, never changed.
  • A theme older than Dawn 11, or without a volume pricing table: buyers see the wholesale price but not the quantity breaks until you update the theme.
  • Classic customer accounts: you switch to new customer accounts in Shopify settings.

Retail and wholesale prices can't be shown side by side, because Shopify returns one price per buyer. The theme editor can't preview the store as a logged-in buyer either: to see what a buyer sees, log in on your storefront as a contact of a company on the level.