Bug B2B location without address: Admin API uses backup region, storefront uses store defaults

Reproduction

  1. Set store defaults to CNY.

  2. Set backupRegion to US.

  3. Create an active US market using USD.

  4. Exclude Product X from US market catalog.

  5. Create a completely empty B2B company location that automatically defaults to US backup region:

shippingAddress: null
shippingAddress.countryCode: null
assigned B2B catalogs: none
assigned B2B markets: none

No B2B catalogs or B2B markets are explicitly assigned to this company location. In Shopify Admin, I can confirm that only the United States market/catalog is displayed for the location as the fallback. No B2B All market appears in the Markets graph.

  1. Log into Shopify normal storefront as the customer assigned to the Demo Company company location.

  2. I can see the product X being AVAILABLE with default store CNY price on the Storefront. When it should be UNAVAILABLE if it falls back to United States Backup Region.

Using Admin GraphQL API 2026-07:

product(id: "PRODUCT_ID") {
  locationOnly: publishedInContext(
    context: {companyLocationId: "COMPANY_LOCATION_ID"}
  )
  locationAndUS: publishedInContext(
    context: {
      companyLocationId: "COMPANY_LOCATION_ID"
      country: US
    }
  )
}

Result:

{
  "locationOnly": false,
  "locationAndUS": false
}

Probably it is not correct resolution because only for context: {companyLocationId: "COMPANY_LOCATION_ID"} should return TRUE, since there are no catalogs / no restrictions. But looks like it falls back anyway to United States Backup Region.

However, Shopify’s storefront shows Product X at its store-default CNY price. It therefore appears to use store defaults instead of the US backup-region catalog.

The 2025-10 changelog says Admin contextual publishing now uses backupRegion to match storefront behavior:

Is it correct and expected behavior that admin API publishedInContext falls back to backup region and storefront resolution for customer falls back into store defaults?

Is this caused by an implicit or hidden B2B All market? If so:

  • Why isn’t it visible in the Markets graph?
  • Why does Admin show only the US fallback market/catalog?
  • Does B2B All prevent the storefront from using backupRegion even when it isn’t visible?

Hey @Angelina_Prokopeva! I looked into this and there’s a documentation gap between the Admin API and storefront behavior for B2B company locations without an address.

The 2025-10 changelog changed publishedInContext to use the shop’s backupRegion as a fallback instead of store defaults, stating this matches the behavior on the storefront. For your address-less company location, the Admin API resolves to the US backup region, applies the US market catalog, and excludes Product X (false). The storefront, however, shows Product X at the store-default CNY price. So the changelog’s “matches storefront” claim doesn’t hold for B2B company-location contexts.

The Help Center article on backup region lists “A B2B company location doesn’t have an address and isn’t part of a specific market” as a situation where the backup region experience applies. The Admin API behavior is consistent with that documentation, but the storefront behavior is not.

On your question about an implicit B2B All market, I didn’t find evidence of one. The B2B context resolution is based on the company location’s assigned catalogs directly, and your location has none assigned.

I’ve raised this with the relevant team to confirm whether the storefront should be applying the backup region here (per the documentation) or whether the docs and changelog need to be updated to clarify that the fallback applies to D2C country-based contexts but not B2B company-location contexts. I’ll update this thread once I hear back.

If you can share the x-request-id from your Admin API request, that would help with production-side verification. Thanks for posting!

@Donal-Shopify yes there is definitely an inconsistency between storefront resolution visible for buyers and Admin API.

But if the fallback with the backup region DOES NOT applies for B2B company locations, then context: {companyLocationId: "COMPANY_LOCATION_ID"} resolution has to return true.

I would like to report too that another contextual contextualPricing endpoint actually matches with the storefront resolution: contextual pricing resolves in currency that matches the storefront. And does not match with Admin API publishedInContext resolution.

At least both of those API endpoints contextualPricing and publishedInContext should match, but they do not match.

Please keep me updated on what the Shopify team reply about this inconsistency! And how it is designed to work.

Thank you very much!

@Donal-Shopify

x-request-id from the Admin API request calling calling publishedInContext (for Product) and contextualPricing (for default Variable):

“x-request-id”:“3346d0b3-651d-4530-ac4a-74e332253008-1784757066”

@Angelina_Prokopeva Thanks for the x-request-id, that was helpful. I was able to confirm the behavior you’re seeing on our side.

Your reproduction lines up with what I’m seeing for the same type of setup. For a B2B company location with no address passed only via companyLocationId, contextualPricing returns the store-default price (matching the storefront) while publishedInContext returns false and matches the result of an explicit country: US context. So you’re right that the two Admin endpoints disagree with each other for the same company-location-only input, not just with the storefront.

The 2025-10 changelog says both contextualPricing and publishedInContext use the backupRegion fallback to “match the behavior on the storefront.” Your reproduction shows that isn’t holding for B2B company-location contexts. The Help Center article on backup region also says it applies to B2B company locations without an address, which aligns with what publishedInContext is doing but not with what contextualPricing is doing.

I’ve raised this with the relevant team to confirm which behavior is intended here, since at minimum the two Admin endpoints should agree. I’ll follow up on this thread when I hear back - thanks again!

@Donal-Shopify the most important for the practical use case, though, is that both of those contextual Admin API endpoints would match the storefront behavior resolving for the buyer.

And thanks again :slight_smile: