In Shopify Markets, the question “Can a buyer in this country purchase this product?” is not answered by a single inventory switch. It is a chain of conditions: which market is assigned to the buyer, whether the product belongs to that market’s catalog, what the product path displays, whether a shipping zone and rate exist, and whether the address, inventory, and payment conditions allow checkout to continue. Treating these conditions as one setting can turn a catalog gap into an inventory diagnosis, or turn a domain and language issue into a product-availability diagnosis.
This guide treats availability as a market-level gate. Shopify Markets supports market-specific customizations such as currency, language, pricing, product availability, domains, taxes, and shipping options. The current admin settings should still be checked item by item. For an internal-language overview, see Shopify Markets setup, then confirm the boundaries in Shopify’s Markets documentation.
The goal is not to claim that a product will always be available. The goal is to give every market a reviewable decision path: what state is expected, what state is a blocker, which setting controls it, and how to return to the last clearly tested configuration when an exception appears.
1. Define market-level product availability
Availability is not the same as inventory synchronization
Market-level availability should answer at least four questions at the same time. Is the buyer in the intended market? Is the product assigned to that market’s catalog? Does the product path show the expected state? Can checkout accept the destination, shipping, and payment conditions? Shopify’s Markets documentation treats product availability as one part of market customization. Its guidance on creating catalogs for markets states that a product must be in the market catalog to be visible and purchasable there.
Inventory is a different signal. It can affect the cart or checkout stage, but it does not replace the catalog gate and it does not choose a domain, language, or shipping zone. Shopify’s Checkout guidance explains that checkout evaluates inventory and that inventory is held only after payment details are submitted. Therefore, “inventory exists somewhere” cannot by itself establish that a product can be purchased in a particular market.
For testing, write each condition as an observable state instead of storing only a single available or unavailable conclusion. That separation shows whether the gap is in market matching, catalog assignment, product visibility, shipping, or checkout.
| Decision layer | Question to ask | Evidence to capture | Effect on availability |
|---|---|---|---|
| Market context | Which market is the buyer currently viewing? | Selector, domain, browser, or address test | Determines which market settings should apply |
| Catalog gate | Is the product assigned to that market catalog? | Catalog view or CSV inspection | A product outside the catalog should not be treated as visible and purchasable there |
| Product path | What appears when the product path is opened directly? | Page, price, and add-to-cart state | Finds differences between the storefront and the catalog setting |
| Inventory signal | How is inventory evaluated while checkout proceeds? | Cart-to-checkout observation | Affects whether the flow continues, but does not replace catalog eligibility |
| Shipping and checkout | Is there a valid rate and an acceptable destination? | Shipping option, address validation, and checkout state | A missing valid path should block clearly rather than imply an order can be completed |
2. Model markets before changing the catalog
Record country, currency, language, and fulfillment assumptions
Write the market context before changing the catalog. A useful market row includes the target country or region, the currency a buyer may use, the language and domain signals, the fulfillment path, the shipping zone and rate, and any tax-display assumptions that affect checkout. Market settings can contain these customizations, but the intended way to sell and the settings currently in effect should be recorded separately.
A market may use a dedicated domain, a subdomain, or a subfolder. Language matching may involve a domain, selector, browser, or IP. Those signals help create the intended local experience; they do not independently prove that a product has purchase eligibility. Keeping them together prevents a catalog change from being made without checking the address, rate, or currency that the buyer will encounter.
Use customizing markets as the configuration reference. For every market row, keep both an expected state and an observed state so later tests do not depend on memory.
| Model field | Minimum record | Why it affects the gate | Check to perform |
|---|---|---|---|
| Market identity | Country or region, market name, matching method | Defines the scope from which catalog, currency, and shipping settings are read | Confirm with selector, domain, and address separately |
| Currency | Market currency, automatic or manual rate, rounding | Affects product, cart, checkout, and refund amounts | Test the buyer country together with the actual payment path |
| Language and domain | Domain, subdomain or subfolder, language assignment | Shapes the entry path and localization signals | Check links, selectors, and translation coverage |
| Fulfillment path | Shipping origin, serviceable country, intended shipping zone | Determines whether an address can receive a shipping option | Query a valid rate for the destination |
| Tax assumptions | Display mode, tax inclusion, responsibility boundary | Changes the price composition shown at checkout | Recheck current market settings and applicable requirements without treating display as tax advice |
3. Build the product eligibility matrix
Mark included, excluded, and review-needed products
Before editing a catalog, give each product a three-state decision: included, excluded, or review needed. Included means there is a clear basis for placing the product in that market catalog. Excluded means it should not currently be presented as purchasable there. Review needed means that product scope, shipping, price, or another required condition has not yet been confirmed. The third state matters because it prevents incomplete information from being treated as approval.
Shopify describes a catalog as a set of products assigned to a market, with optional prices. The eligibility matrix should use that product-level concept instead of relying on a single store-wide switch. Record the status separately for each market so a default catalog and a market-specific difference can be seen side by side.
The matrix does not need to predict a final customs, tax, or inventory outcome. Its job is to say whether the product should enter that market catalog and what remains to be checked. If another decision is needed, name the missing fact and keep the product in review-needed status until it is available.
| Product eligibility state | Catalog action | Confirmation required | Next step after review |
|---|---|---|---|
| Included | Assign to the target market catalog | The product belongs in that market’s selling scope and a shipping path can be tested | Run product-path and checkout tests |
| Excluded | Do not assign or remove from that market catalog | There is a clear market or fulfillment boundary | Test that the market does not present it as purchasable |
| Review needed | Do not treat it as available yet | Product scope, price, destination, or shipping evidence is missing | Decide included or excluded after the missing fact is confirmed |
| Catalog-specific price | Keep the price override with the catalog | Confirm how market currency and pricing settings will render | Test product, cart, and checkout amounts together |
4. Apply catalogs and inheritance
Inspect defaults and market-specific overrides
Market catalog, currency, domain and language, duties and taxes, and entity settings may be inherited from defaults or customized for a particular market. When a market changes, inspect not only the new value but also whether it is inherited or overridden. Shopify’s guidance on adding or removing market customizations describes this inheritance behavior.
A practical sequence is to view the default state, view the effective state for the target market, and then record the override relationship. If removing a customization causes a value to return to the default, include that return in the review; an empty-looking field should not be interpreted as “nothing is configured.” For catalogs, confirm the exact product set that the target market is using.
When several markets share a default catalog, a market-specific exclusion may affect only one market. Conversely, a default catalog change may affect every market that inherits it. Mark the affected markets for each adjustment and do not rely on the currently selected storefront alone.
5. Verify product visibility
Use View as, selectors, and a direct product-path test
After catalog assignment, use the market’s View as function and CSV tools to inspect whether the product appears in the correct catalog. That verifies an administrative assignment, but it does not prove that the storefront product path will behave as expected. Next, open the product through the target market’s domain or selector and use a direct product-path test to observe visibility and pricing.
Market matching may use IP, browser, domain, or manual selection. IP can be inaccurate, so a product-page test should record the selector or domain state and then repeat the test with the target shipping address at checkout. For the language entry point, see Shopify localization; for market matching and selectors, see setting up localization for markets.
The direct path test is not merely a link-availability check. Observe the product status within the target market context. If the product remains visible while the catalog inspection says excluded, or if the catalog says included while the product path is hidden, preserve both observations and inspect market selection and inheritance before changing another setting.
6. Separate inventory from purchase eligibility
Trace the path from product page to checkout
Passing the market catalog gate means only that the product has passed one eligibility layer. It does not guarantee a shipping zone, address validation, payment method, or successful inventory evaluation at checkout. In the other direction, inventory at a location cannot turn a product outside the market catalog into a market-eligible product.
Test one complete path in order: select the market, open the product page, add the product to the cart, enter checkout, provide the shipping address, and observe the shipping and payment information. Record the buyer country, currency, product state, and message at each step. Shopify explains that checkout evaluates inventory and that inventory is held only after payment details are submitted, so a pre-payment inventory message is an observed test state rather than an unchanging promise.
This sequence also narrows diagnosis. If the product is hidden on the product page, start with the catalog. If the product is visible but changes in the cart or checkout, inspect inventory and checkout conditions. If checkout opens without a shipping option, inspect the combination of country, market, shipping zone, and rate.
7. Connect shipping zones to market availability
Fail closed when no valid rate exists
Shopify’s shipping zones and markets guidance creates a key gate: the buyer’s country must be in an active market and in a shipping zone with rates for the buyer to select shipping at checkout. Passing the catalog gate does not pass shipping. Passing a shipping-zone check does not prove that the product belongs in the catalog.
Use a concrete destination country and address rather than checking only that a zone name exists in admin. If the country is not in an active market, is not in the zone, has no rate, or cannot produce a valid address result, the flow should show a clear reason that it cannot continue. Do not cover a missing rate with language suggesting that shipping will appear later.
For an English-language explanation of this operating area, see Shopify shipping zones. Keep the following diagnostic table with the market check.
| Observed state | Gate to inspect | Direction for action | Evidence to save |
|---|---|---|---|
| Product path is hidden | Market catalog and market selection | Confirm whether the product should be included, then inspect the assignment | View as, catalog view, current market |
| Product path is visible but no shipping option appears | Country, active market, shipping zone, and rate | Confirm the destination and rate one by one | Address, market context, shipping options |
| A shipping zone appears but has no rate | Rates inside the shipping zone | Add a valid rate or keep the flow blocked | Zone settings and checkout message |
| Currency is correct but the address is rejected | Address collection and validation rules | Make ownership of validation unambiguous and remove conflicts | Address input, validation message, setting |
| Catalog and shipping pass but checkout changes the state | Inventory and checkout conditions | Repeat the full cart-to-checkout path | Product, cart, and checkout states |
8. Align language and domain signals
Avoid letting localization hide an availability defect
Domains, subdomains, subfolders, language assignments, translations, and selectors form the localization entry point. They can bring a buyer to the intended market experience, and they can also make the same product appear with different language or price signals. Shopify’s guidance on assigning domains and languages to markets and localization and translation calls for these signals to be checked separately.
Localization does not substitute for catalog eligibility. First confirm that the entry point represents the intended market, then verify the catalog and product path. Do not skip product assignment or shipping just because a page is translated or the domain looks correct. A language selector can otherwise lead to content that is localized while its product scope is wrong.
For each market, cross-check at least one domain or folder entry, one manual selector, and one destination address. If the entry signal and address signal point to different markets, preserve the difference and let checkout evaluate the verifiable destination conditions instead of guessing which signal should win.
9. Check buyer country and local pricing together
Test currency and buyer identity together
Local-currency display should be tested with the buyer country. Shopify’s guidance on pricing in local currencies explains that browsing, payment, and refunds depend on the store’s payment and checkout configuration. Currencies, rates, rounding, exchange fees, refunds, and processor limitations should also be checked in currencies for markets and currency exchange rates.
Do not switch only the currency selector and then conclude that the market is ready. Record the market selection, buyer country, product amount, cart amount, checkout amount, and currency on the order record, and compare each with the expected state. Store currency, market currency, and manual exchange rates are distinct controls; rounded display needs its own check.
Tax display is another separate layer. If a market uses tax-inclusive or tax-exclusive behavior, review dynamic tax-inclusive pricing and the current market tax settings; a displayed tax treatment is not a substitute for professional tax advice. For an English-language boundary guide, see Shopify VAT boundaries.
10. Design a pre-opening test matrix
Capture expected and observed states per market
Before opening a market, choose representative paths for included, excluded, and review-needed products. Fix the buyer country, market entry, language, currency, and destination address for each test. The purpose is not to make every market produce the same result; it is to verify that each market model and product eligibility decision appears correctly on the storefront.
Record expected and observed states at the product, cart, and checkout stages. Checkout should also be checked for address collection and shipping rates. For a broader cross-border flow, see Shopify cross-border checkout and address collection preferences. If the outcome differs, mark the stage that failed before changing the corresponding gate.
| Test scenario | Fixed context | Expected state | Observed record |
|---|---|---|---|
| Product included in the catalog | Target market, country, language, and currency | Product page reflects the market and can continue to shipping and checkout checks | Product, cart, and checkout screenshots or written states |
| Product excluded from the catalog | Same market and entry path | It should not be presented as purchasable in that market | Search, direct path, and catalog-view result |
| No valid shipping rate | Product and catalog stay the same; destination has no valid rate | The flow blocks clearly and does not imply a selectable shipping promise | Country, address, zone, rate, and checkout message |
| Currency and buyer-country combination | Market, domain, buyer country, and payment path align | Product, cart, and checkout amounts follow current settings | Amount, currency, rounding, and refund observations |
| Inventory changes during checkout | Catalog eligibility is already confirmed; the full path is used | Record how checkout evaluates inventory rather than treating a page message as permanent eligibility | Product, cart, checkout, and payment-information stages |
11. Recover from a catalog or rate mistake
Restore the last known-good assignment and message
A common failure is that a market catalog has just been changed: a product is still visible on the product path, but checkout has no valid rate for the destination country. Do not expand the catalog merely to make the product page look normal. First preserve the current market, product, address, page, and checkout states, then determine whether the blocker is catalog assignment, shipping zone, rate, or address validation.
If a catalog assignment and shipping configuration has already passed a clear test, restore that known configuration relationship. Remove the incorrect market override, restore the product’s intended included or excluded state, and restore the destination’s valid rate. If the rate cannot be confirmed, keep the flow clearly unavailable rather than presenting an unverified purchase path. After restoration, repeat View as, selector, direct product path, currency, and address tests.
Buyer-facing language should match the observed state. It can explain that a market currently has no available shipping option or that a product is outside the market catalog, but it should not promise inventory, shipping, or successful payment. Compare expected and observed states after restoration so the same fault is not merely hidden.
12. Operate the gate after opening
Review changes, exceptions, and evidence on a schedule
Market-level availability needs ongoing review because a change to the catalog, market customization, inheritance, domain and language, shipping zone, rate, or checkout setting can change the storefront result. On an established schedule, review market and catalog changes and keep the market context, product state, address, currency, expected state, observed state, and action for each exception.
The review has two jobs. First, confirm that the effective settings still match the market model. Second, confirm that each exception has an explicit closure. A small, stable test set can be repeated; unverifiable growth rates, rankings, or sales outcomes are not quality controls. The useful evidence is what a defined input produced under the current settings.
Shopify capabilities and regional requirements change. Check current admin settings and official documentation before acting. When market matching, catalogs, localization, shipping, and checkout can all be explained by the same evidence chain, the availability gate becomes a routine operating check.
Frequently asked questions
What should I check first to decide whether a product can sell in Shopify Markets?
Identify the buyer’s current market first, then check whether the product is in that market’s catalog. Catalog membership is the foundation for visibility and purchase eligibility there; product path, shipping zone, rate, address, and checkout conditions still need to be tested. Do not infer market availability from an inventory number alone.
Why can a market product be unavailable even when inventory exists?
Inventory is only one signal. The product may be outside the market catalog, the destination may not have a valid shipping zone or rate, or address and checkout conditions may fail. Follow the sequence from market selection to catalog, product path, cart, and checkout to find the actual blocking layer.
What should I do if IP matching sends the buyer to the wrong market?
Do not rely on IP alone. Shopify notes that market matching can also use browser, domain, or manual selection and that IP can be inaccurate. Retest with a selector or explicit domain, then provide the real destination address to ensure that localization has not hidden a catalog or shipping issue.
What should I inspect when the catalog is correct but checkout has no shipping option?
Check that the destination country belongs to an active market, that it is included in a shipping zone, and that the zone has a rate. Also inspect whether address collection and validation rules conflict. Without a valid rate, the flow should block clearly rather than describe the product as ready to purchase.
What is the safest recovery after a catalog or rate change is wrong?
Preserve the failing path and market context, then restore the last clearly tested catalog assignment and shipping configuration. Repeat View as, selector, direct product path, currency, address, and checkout tests. External wording should describe only the state that was verified; it should not guarantee inventory, shipping, or payment.