CINXE.COM

Apps in checkout

<!DOCTYPE html> <html class="no-js" lang="EN"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <link href="https://fonts.googleapis.com" rel="preconnect" crossorigin> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;800&amp;family=JetBrains+Mono:wght@400;700;800&amp;display=swap" /> <title>Apps in checkout</title> <meta name="description" content="Learn how you can extend your app code into Shopify checkout and customize many aspects of the checkout experience."> <script nonce=""> document.documentElement.classList.remove('no-js'); document.documentElement.classList.add('js') </script> <link rel="stylesheet" href="https://cdn.shopify.com/shopifycloud/shopify_dev/assets/application-cf3eb1c1b3bbee66c08c610dd3e3bf271cf7d881190511c6dfe475e3d5ffefde.css" /> <link rel="stylesheet" href="https://cdn.shopify.com/shopifycloud/shopify_dev/assets/print-2004a1d4f939fc031f63b79020d27e47b3fd4b6528311f000fdab3093bb909e7.css" media="print" /> <link rel="stylesheet" href="https://cdn.shopify.com/shopifycloud/shopify_dev/assets/manifests/docs-f75ee583286bcb2a6e2c0e6f0ada44d4f17e370aa34881f44f5d836649b67e08.css" /> <link href="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_components_CodeBlock_CodeBlock_tsx-app_ui_components_CodeBlock_components_SkeletonHead-fc1a35-94c4010bcf52affdef82673dda6a6fdafe39a957c24507cd906badb5a3745a0e.css" rel="stylesheet" /> <link href="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_styles_dark_mode_module_scss-app_ui_styles_default_mode_module_scss-app_ui_styles_dim_-b8ea09-e87b91df46750c3068b7ed01469d39acc9a0310e8ec16c9a1e5d962a86f749e8.css" rel="stylesheet" /> <link href="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_components_Search_components_SearchModal_components_Results_components_TabPanels_Resul-440ecd-ba01c57d2451863915cc6e79cbc8ef428f4f92dbce8e50965d6c662cb7ab06d7.css" rel="stylesheet" /> <link href="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_components_Layout_Sidebar_Sidebar_tsx-f4ca18bdf836702a84f5c1be69b72a39e360f2c0cbd912cd5472f2912282692a.css" rel="stylesheet" /> <link href="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_components_Layout_MainLayout_MainLayout_tsx-app_ui_components_Layout_MainLayout_index_-d16546-0b3fc4f1f46d1a9ee699d7e54809d405bfa3b95abdb2019985c35b3601886ff4.css" rel="stylesheet" /> <link href="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_styles_index_scss-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css" rel="stylesheet" /> <link href="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/manifests/markdown_in_react-61254595493d267f26f642ff2f214f593a3a8f4df5148421259c3d06778d12c2.css" rel="stylesheet" /> <script> //<![CDATA[ window.I18n = window.I18n || {}; window.I18n.data = {"modal":{"home":"Home","close":"Close"},"signup":{"header":"Start your free %{trial_length}-day trial of Shopify","custom_header":"%{custom_signup_header}","create_now":"Create your store","labels":{"email":"Email address","password":"Password","storename":"Store name","shop_name":"Your store name","promotional_program_promo_code":"Discount code","subdomain":"Store URL"},"subtitles":{"shop_name":"This can be changed later.","promotional_program_promo_code":"Enter the promo code that was provided to you.","subdomain":"This will be the default domain for your store, but you can add different domains later. You'll also use your Store URL to log in."},"placeholders":{"password":"Minimum 5 characters"},"success_messages":{"email":"Got it","password":"Looks great","shop_name":"That name is available!","subdomain":"You‘ll use this to log in to your store"},"store_address_suffix":".myshopify.com","hint_messages":{"email_typo_html":"Did you mean \u003cbutton type=\"button\" data-bind-event-click=\"%{on_click}\"\u003e%{suggestion}\u003c/button\u003e?"},"partners_input_label":"Email address","partners_input_placeholder":"Enter your email","submit":"Sign up","signup_html":"Sign up as a Shopify Partner to get a free API\u0026nbsp;key."},"forms":{"errors":{"throttled":"Too many requests from this IP, try again later.","global":{"invalid":"Please enter a valid email address","required":"This field is required.","generic":"Sorry, something went wrong. Please try again later.","throttled":"Too many requests from this IP, try again later."},"shop_name":{"empty":"Please enter a store name","minlength":"Your store name must be at least 4 characters","maxlength":"Your store name can’t be longer than 60 characters","existingAdmin":"A store with that name already exists. If you are the owner you can \u003ca href=\"https://%{err}/admin\"\u003elog in here\u003c/a\u003e","message":"%{err}","matchesPassword":"Your store name can’t be the same as your password","disallowed":"Your store name can’t contain the word \u003cstrong\u003e%{err}\u003c/strong\u003e. Try another."},"email":{"empty":"Please enter an email address","invalid":"Please enter a valid email address","member_exists":"You are already subscribed to this list","generic":"Sorry, something went wrong. Please try again later."},"password":{"empty":"Please enter a password","minlength":"Password must be at least 5 characters","spaces":"Password cannot start or end with a space"},"subdomain":{"empty":"Please enter a subdomain","minlength":"Your subdomain must be at least 4 characters","multiple":"Multiple subdomains are associated with this email","suggest":"Did you mean %{err}?","invalid":"Please enter a valid subdomain","existingAdmin":"A store with that subdomain already exists. If you are the owner you can \u003ca href=\"https://%{err}/admin\"\u003elog in here\u003c/a\u003e","disallowed":"Your subdomain can’t contain the word \u003cstrong\u003e%{err}\u003c/strong\u003e. Try another.","message":"%{err}"},"promotional_program_promo_code":{"message":"%{err}"}}}}; window.I18n.globals = {"total_blog_subscribers":"446,005","trial_length":3,"custom_signup_header":""}; //]]> </script> <link rel="icon" type="image/png" href="https://cdn.shopify.com/static/shopify-favicon.png" /> <meta property="og:type" content="website" /> <meta property="og:site_name" content="Shopify" /> <meta property="og:title" content="Apps in checkout" /> <meta property="og:description" content="Learn how you can extend your app code into Shopify checkout and customize many aspects of the checkout experience." /> <meta property="og:image" content="https://cdn.shopify.com/shopifycloud/shopify_dev/assets/social-share-24de3afa0326f705b84a0a98714acc192611e5a21ade3b7c8f2bd12ba7d1457f.jpg" /> <meta property="og:url" content="https://shopify.dev/docs/apps/build/checkout" /> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:site" content="@Shopify" /> <meta property="twitter:account_id" content="17136315" /> <meta property="twitter:title" content="Apps in checkout" /> <meta property="twitter:description" content="Learn how you can extend your app code into Shopify checkout and customize many aspects of the checkout experience." /> <meta property="twitter:image" content="https://cdn.shopify.com/shopifycloud/shopify_dev/assets/social-share-24de3afa0326f705b84a0a98714acc192611e5a21ade3b7c8f2bd12ba7d1457f.jpg" /> <meta name=“facebook-domain-verification” content=“qv0mhbzsog35yr5kbv40mmbu65worz”> <script id="TrekkieScript" type="text/javascript"> (function(){ var config = { 'Trekkie': { 'appName': 'brochure' }, 'Session Attribution': {}, 'CrossDomainTracking': {} }; var trekkie_version = '2021.05.04'; var analytics = window.analytics = window.analytics || []; if (analytics.integrations) { return; } analytics.methods = [ 'identify', 'page', 'ready', 'track', ]; analytics.factory = function(method) { return function() { var args = Array.prototype.slice.call(arguments); args.unshift(method); analytics.push(args); return analytics; }; }; for (var i = 0; i < analytics.methods.length; i++) { var key = analytics.methods[i]; analytics[key] = analytics.factory(key); } analytics.load = function(config) { analytics.config = config; var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true; script.src = 'https://cdn.shopify.com/s/javascripts/tricorder/trekkie.' + config.Trekkie.appName + '.min.js?v=' + trekkie_version; var first = document.getElementsByTagName('script')[0]; first.parentNode.insertBefore(script, first); }; analytics.load(config); analytics.page(); })(); </script> <script type="text/javascript"> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','_gaUTracker'); var _gaUTrackerOptions = {}; analytics.ready(function() { _gaUTrackerOptions.clientId = analytics.user().traits().uniqToken; _gaUTracker('create', 'UA-82702-49', _gaUTrackerOptions); _gaUTracker('set', 'transport', 'beacon'); _gaUTracker('require', 'displayfeatures'); _gaUTracker('send', 'pageview'); }); </script> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="1hEMfT0oiKGCjzYeovn2uXJJAvSNZMlgLYMSdl5sS2ImPz2G8B5vwjnGs36h5SgrymvMdSixGJpExfjFPMvIcw" /> </head> <body class="page--apps-markdown shopify-sans-supported-lang"> <div id="GlobalIconSymbols"> <svg xmlns="http://www.w3.org/2000/svg"> <symbol id="modules-caret-down"> <svg xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" viewBox="0 0 10.289 6.563"> <path d="M5.212 6.563L0 1.423 1.404 0l3.788 3.735L8.865.01l1.424 1.404"></path> </svg> </symbol> <symbol id="modules-checked"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40.7 40"> <path d="M16.7 30l-7.4-7.9c-.8-.8-.6-2 .4-2.6 1-.6 2.4-.5 3.1.3l3.7 4 11.3-13c.7-.8 2.1-1 3.1-.4s1.2 1.8.5 2.6L16.7 30z"></path> </svg> </symbol> <symbol id="modules-mobile-hamburger"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"> <path d="M19 11H1a1 1 0 110-2h18a1 1 0 110 2zm0-7H1a1 1 0 110-2h18a1 1 0 110 2zm0 14H1a1 1 0 110-2h18a1 1 0 110 2z"></path> </svg> </symbol> <symbol id="chevron-down"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 6"> <path d="M8.586 0H1.414C.524 0 .077 1.077.707 1.707l3.586 3.586a1 1 0 001.414 0l3.586-3.586C9.923 1.077 9.477 0 8.586 0z"></path> </svg> </symbol> <symbol id="modules-cancel"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"> <path d="M11.414 10l6.293-6.293a1 1 0 00-1.414-1.414L10 8.586 3.707 2.293a1 1 0 00-1.414 1.414L8.586 10l-6.293 6.293a1 1 0 001.414 1.414L10 11.414l6.293 6.293a.996.996 0 001.414 0 1 1 0 000-1.414L11.414 10z"></path> </svg> </symbol> </svg> </div> <div id="PageContainer" class="page-container"> <div id="ReactAppContainer" class="react-app-container"></div> <div style="display: none" id="MarkdownContentForReact"> <main> <div class="grid grid--equal-height grid--main"> <div class="grid__item hide--desktop"> <div id='TOCAccordion' class='toc-accordion'> <div class='toc-accordion__item accordion-item'> <button class='toc-accordion__link accordion-link'> On this page <svg class="icon toc-accordion__caret" aria-hidden="true" focusable="false"> <use xlink:href="#modules-caret-down" /> </svg> </button> <div class="toc-accordion__content accordion-content toc"> <ul> <li><a href="#how-it-works">How it works</a></li><li><a href="#customization-options">Customization options</a></li><li><a href="#getting-started">Getting started</a></li><li><a href="#upgrade">Upgrade</a></li><li><a href="#best-practices">Best practices</a></li><li><a href="#product-roadmap">Product roadmap</a></li> </ul> </div> </div> </div> </div> <div class="grid__item grid__item--desktop-up-two-thirds grid__item--wide-up-three-quarters grid__item--article"> <article class="article--docs"> <div class="article-title-container "> <h1 class="article-title"> Apps in checkout </h1> </div> <p>Merchants use <a rel="external noreferrer noopener" target="_blank" href="https://help.shopify.com/manual/checkout-settings">Shopify checkout</a> to accept orders and receive payments wherever they sell online. You can augment Shopify checkout with new functionality by building an app.</p> <section class="feedback-section"><div class="heading-wrapper heading-wrapper-2"><h2 id="how-it-works">How it works</h2><a class="article-anchor-link" href="#how-it-works"><span class="visuallyhidden">Anchor link to section titled "How it works"</span></a></div> <p>After a customer adds products to a cart, they use Shopify checkout to enter their customer, shipping, and payment information before placing the order.</p> <p>Developers can create apps that extend Shopify checkout to include functionality that isn&#39;t provided natively. For example, you can create an app that offers a customer free shipping or other discounts depending on what&#39;s in their cart.</p> <p>Merchants install these apps on their store in the Shopify admin. In the Shopify admin, merchants can use the <a href="/docs/apps/build/checkout/test-checkout-ui-extensions#test-the-extension-in-the-checkout-editor">checkout editor</a> to place a <a href="/docs/api/checkout-ui-extensions">checkout UI extension</a> in the checkout experience.</p> <p><img alt="Actions that a developer, customer, and merchant take in connection to Shopify checkout" src="/assets/apps/checkout/what-is-checkout-aedd8d8bf2f0932ee6c4a4756b14ee5a4a6ddc85c4a0979b611bd78ffaa70972.png" /></p> </section><section class="feedback-section"><div class="heading-wrapper heading-wrapper-2"><h2 id="customization-options">Customization options</h2><a class="article-anchor-link" href="#customization-options"><span class="visuallyhidden">Anchor link to section titled "Customization options"</span></a></div> <p>You can customize Shopify checkout using multiple technologies. All customization options are easy to install and upgrade-safe, which enables merchants to continue getting platform benefits when Shopify releases new products such as <a href="/docs/apps/build/checkout/test-checkout-ui-extensions#test-with-shop-pay">Shop Pay</a>, or features such as <a href="/docs/apps/build/checkout/test-checkout-ui-extensions#one-page-checkout">One-page checkout</a>.</p> <p>For a detailed breakdown of the available technologies for customizing checkout, and ways that you can extend checkout, refer to the <a href="/docs/apps/build/checkout/technologies">options for customizing Shopify checkout</a>.</p> </section><section class="feedback-section"><div class="heading-wrapper heading-wrapper-2"><h2 id="getting-started">Getting started</h2><a class="article-anchor-link" href="#getting-started"><span class="visuallyhidden">Anchor link to section titled "Getting started"</span></a></div> <p>Learn how to customize and extend checkout by following one of our use case tutorials.</p> <div class="heading-wrapper heading-wrapper-3"><h3 id="checkout-ui-extensions-tutorials">Checkout UI extensions tutorials</h3><a class="article-anchor-link" href="#checkout-ui-extensions-tutorials"><span class="visuallyhidden">Anchor link to section titled "Checkout UI extensions tutorials"</span></a></div> <div class="resource-card-grid"> <div> <a class="resource-card" href="/docs/apps/build/checkout/product-offers/build-a-pre-purchase-offer" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/filesystem" data-alt-src="/assets/resource-cards/filesystem-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Pre-purchase product offers </h3> <p class="resource-card__description">Build a pre-purchase upsell offer that prompts the customer to add a product to their order. </p> </a> </div> <div> <a class="resource-card" href="/docs/apps/build/checkout/product-offers/build-a-post-purchase-offer" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/star" data-alt-src="/assets/resource-cards/star-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Post-purchase checkout extensions </h3> <p class="resource-card__description">Create a basic example of a post-purchase checkout extension. </p> </a> </div> <div> <a class="resource-card" href="/docs/apps/build/checkout/thank-you-order-status/add-survey" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/marketplaces" data-alt-src="/assets/resource-cards/marketplaces-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Thank you and order status extensions </h3> <p class="resource-card__description">Build a survey that asks customers how they heard about the store after they made a purchase. </p> </a> </div> <div> <a class="resource-card" href="/docs/apps/build/checkout/fields-banners/add-banner" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/quickstart" data-alt-src="/assets/resource-cards/quickstart-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Custom banners </h3> <p class="resource-card__description">Learn how to add a custom banner to checkout. </p> </a> </div> <div> <a class="resource-card" href="/docs/apps/build/checkout/fields-banners/add-field" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/gear" data-alt-src="/assets/resource-cards/gear-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Custom fields </h3> <p class="resource-card__description">Learn how to add custom fields to checkout that customers can use to add delivery instructions to their order. </p> </a> </div> <div> <a class="resource-card" href="/docs/apps/build/checkout/cart-checkout-validation/create-client-side-validation" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/utility" data-alt-src="/assets/resource-cards/utility-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Client-side validation </h3> <p class="resource-card__description">Use a checkout UI extension to validate fields at checkout and block customer progress.</p> </a> </div> <div> <a class="resource-card" href="/docs/apps/build/checkout/customize-header" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/tutorial" data-alt-src="/assets/resource-cards/tutorial-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Header </h3> <p class="resource-card__description">Use a checkout UI extension and the GraphQL Admin API&#39;s checkout branding types to customize the checkout header with custom images, including the back to cart link.</p> </a> </div> <div> <a class="resource-card" href="/docs/apps/build/checkout/customize-footer" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/growth" data-alt-src="/assets/resource-cards/growth-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Footer </h3> <p class="resource-card__description">Use a checkout UI extension and the GraphQL Admin API&#39;s checkout branding types to customize the checkout footer with store policies.</p> </a> </div> <div> <a class="resource-card" href="/docs/apps/build/checkout/delivery-shipping/address-autocomplete/build-autocomplete" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/marketplaces" data-alt-src="/assets/resource-cards/marketplaces-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Address autocomplete </h3> <p class="resource-card__description">Build an extension to customize the address autocomplete provider for the delivery and billing address forms in checkout.</p> </a> </div> </div> <div class="heading-wrapper heading-wrapper-3"><h3 id="shopify-functions-tutorials">Shopify Functions tutorials</h3><a class="article-anchor-link" href="#shopify-functions-tutorials"><span class="visuallyhidden">Anchor link to section titled "Shopify Functions tutorials"</span></a></div> <div class="resource-card-grid"> <div> <a class="resource-card" href="/docs/apps/build/discounts/build-discount-function" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/heart" data-alt-src="/assets/resource-cards/heart-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Build a discount function </h3> <p class="resource-card__description">Use Shopify Functions to create a new discount type for users.</p> </a> </div></p> <p><div> <a class="resource-card" href="/docs/apps/build/checkout/payments/create-payments-function" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/coin" data-alt-src="/assets/resource-cards/coin-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Create a payments function </h3> <p class="resource-card__description">Use Shopify Functions to hide a payment option offered to customers at checkout.</p> </a> </div></p> <p><div> <a class="resource-card" href="/docs/apps/build/checkout/delivery-shipping/delivery-options/build-function" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/globe" data-alt-src="/assets/resource-cards/globe-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Build a delivery options function </h3> <p class="resource-card__description">Use Shopify Functions to rename a delivery option offered to customers at checkout.</p> </a> </div></p> <p><div> <a class="resource-card" href="/docs/apps/build/checkout/cart-checkout-validation/create-server-side-validation" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/storefront" data-alt-src="/assets/resource-cards/storefront-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Create server-side validation </h3> <p class="resource-card__description">Use Shopify Functions to block progress on a checkout when the cart line quantities exceed a limit.</p> </a> </div></p> <p><div> <a class="resource-card" href="/docs/apps/build/orders-fulfillment/order-routing-apps/location-rules/build-location-rule-function" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/growth" data-alt-src="/assets/resource-cards/growth-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Build a location rule function </h3> <p class="resource-card__description">Use Shopify Functions to choose a different order location during checkout.</p> </a> </div></p> <p><div> <a class="resource-card" href="/docs/apps/build/product-merchandising/bundles/add-customized-bundle" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/hearts" data-alt-src="/assets/resource-cards/hearts-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Add a customized bundle </h3> <p class="resource-card__description">Use Shopify Functions to group products together and sell them as a single unit.</p> </a> </div></p> <p><div> <a class="resource-card" href="/docs/apps/build/orders-fulfillment/order-routing-apps/build-fulfillment-constraints" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/tutorial" data-alt-src="/assets/resource-cards/tutorial-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Build fulfillment constraints </h3> <p class="resource-card__description">Use Shopify Functions to customize fulfillment and delivery strategies.</p> </a> </div></p> <p><div> <a class="resource-card" href="/docs/apps/build/orders-fulfillment/order-routing-apps/build-local-pickup-options" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/build" data-alt-src="/assets/resource-cards/build-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Build local pickup options </h3> <p class="resource-card__description">Use Shopify Functions to generate local pickup delivery options at checkout.</p> </a> </div></p> <p><div> <a class="resource-card" href="/docs/apps/build/checkout/delivery-shipping/delivery-methods/generate-pickup-points" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/gear" data-alt-src="/assets/resource-cards/gear-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Generate pickup points </h3> <p class="resource-card__description">Use Shopify Functions to generate pickup point delivery options at checkout.</p> </a> </div> </div> </section><section class="feedback-section"><div class="heading-wrapper heading-wrapper-2"><h2 id="upgrade">Upgrade</h2><a class="article-anchor-link" href="#upgrade"><span class="visuallyhidden">Anchor link to section titled "Upgrade"</span></a></div><aside class="note deprecated"> <h4>Deprecated</h4> <p> <code class="text-highlight text-highlight--grey">checkout.liquid</code> is now unsupported for the Information, Shipping, and Payment checkout steps. &#39;checkout.liquid&#39;, additional scripts, and script tags are deprecated for the <strong>Thank you</strong> and <strong>Order status</strong> pages and will be sunset on August 28, 2025.</p> <p>Stores that currently use <code class="text-highlight text-highlight--grey">checkout.liquid</code> for the <strong>Thank you</strong> and <strong>Order status</strong> pages need to <a rel="external noreferrer noopener" target="_blank" href="https://www.shopify.com/plus/upgrading-to-checkout-extensibility">upgrade to Checkout Extensibility</a> before the deadline. <a href="/docs/api/liquid/objects#script">Shopify Scripts</a> will continue to work alongside Checkout Extensibility until August 28, 2025.</p> </aside> <p>A report identifying your current checkout customizations is available in the Shopify admin. The report provides high-level guidance to map customizations to Checkout Extensibility. Use this report to simplify your review of your existing customizations and to help you upgrade to Checkout Extensibility faster. <a rel="external noreferrer noopener" target="_blank" href="https://help.shopify.com/en/manual/checkout-settings/checkout-extensibility/checkout-upgrade">Learn more</a>.</p> <p>To upgrade a <code class="text-highlight text-highlight--grey">checkout.liquid</code> customization to Checkout Extensibility, take one or more of the following actions:</p> <ol> <li><p>Use a public app that&#39;s built using extensions.</p> <p>We&#39;re adding new checkout apps to the Shopify App Store on a regular basis. If there currently isn&#39;t a suitable public app for your customization, then consider simplifying your checkout temporarily and adding new apps to your store as they become available.</p></li> <li><p>Build a custom app using extensions, or <a rel="external noreferrer noopener" target="_blank" href="https://www.shopify.com/plus/partners/service?type=service&amp;services%5B%5D=141">hire a service partner</a> to build one for you.</p></li> </ol> <p>In some cases, after you&#39;ve upgraded you can <a rel="external noreferrer noopener" target="_blank" href="https://help.shopify.com/manual/checkout-settings/checkout-extensibility/checkout-upgrade#revert-to-checkout-liquid">revert to <code class="text-highlight text-highlight--grey">checkout.liquid</code></a> until its sunset dates.</p> <p>If you&#39;re upgrading a store to Checkout Extensibility, we recommend planning your in-checkout, <strong>Thank you</strong> page, and <strong>Order status</strong> page upgrades together, when possible, for the following benefits:</p> <ul> <li>Avoid maintaining multiple tech stacks, like UI extensions and <code class="text-highlight text-highlight--grey">checkout.liquid</code>.</li> <li>Apply styling once to the entire experience.</li> <li>Manage one sunset date for <code class="text-highlight text-highlight--grey">checkout.liquid</code> rather than one date for pre-purchase pages and another for <strong>Thank you</strong> and <strong>Order status</strong> pages.</li> </ul> <p>If this isn&#39;t possible, then we recommend prioritizing the upgrade for in-checkout pages first and upgrading after-purchase pages after that.</p> </section><section class="feedback-section"><div class="heading-wrapper heading-wrapper-2"><h2 id="best-practices">Best practices</h2><a class="article-anchor-link" href="#best-practices"><span class="visuallyhidden">Anchor link to section titled "Best practices"</span></a></div> <p>To optimize your app development experience, Shopify has established a set of best practices that you can refer to when developing an app that extends checkout.</p> <aside class="note tip"> <h4>Tip</h4> <p> We also recommend getting familiar with Polaris <a rel="external noreferrer noopener" target="_blank" href="https://polaris.shopify.com/foundations/accessibility">accessibility</a> and <a rel="external noreferrer noopener" target="_blank" href="https://polaris.shopify.com/content/merchant-to-customer">content</a> guidelines.</p> </aside> <div class="resource-card-grid"> <div> <a class="resource-card" href="/docs/apps/build/checkout/create-multi-page-extensions" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/blocks" data-alt-src="/assets/resource-cards/blocks-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Create multi-page extensions </h3> <p class="resource-card__description">Learn more about building extensions that can render on any checkout page.</p> </a> </div> <div> <a class="resource-card" href="/docs/apps/build/checkout/ux-for-checkout" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/heart" data-alt-src="/assets/resource-cards/heart-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> UX for checkout </h3> <p class="resource-card__description">Learn how to improve the quality of checkout experiences by following our UX guidelines for checkout.</p> </a> </div> <div> <a class="resource-card" href="/docs/api/checkout-ui-extensions/latest/configuration#network-access" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/utility" data-alt-src="/assets/resource-cards/utility-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Network requests from extensions </h3> <p class="resource-card__description">Learn about Cross-Origin Resource Sharing (CORS) and other security considerations when making network requests to your own server.</p> </a> </div> <div> <a class="resource-card" href="/docs/apps/design-guidelines/" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/bfsgem" data-alt-src="/assets/resource-cards/bfsgem-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> App Design Guidelines </h3> <p class="resource-card__description">Get practical guidance on how to design a user interface for the Shopify admin.</p> </a> </div> </div> </section><section class="feedback-section"><div class="heading-wrapper heading-wrapper-2"><h2 id="product-roadmap">Product roadmap</h2><a class="article-anchor-link" href="#product-roadmap"><span class="visuallyhidden">Anchor link to section titled "Product roadmap"</span></a></div> <p>Some checkout customization features are in development and will be released later this year. The following are the features on our roadmap and our estimated launch dates:</p> <aside class="note"> <h4>Note</h4> <p> This roadmap is being shared for informational purposes and is subject to change. Bug fixes and improvements will be added as we hear from the community during the developer preview. Share your feedback or request new features by creating a new issue in our <a rel="external noreferrer noopener" target="_blank" href="https://github.com/Shopify/ui-extensions/issues">GitHub repository</a>.</p> </aside><div class="heading-wrapper heading-wrapper-3"><h3 id="ui-extensions">UI extensions</h3><a class="article-anchor-link" href="#ui-extensions"><span class="visuallyhidden">Anchor link to section titled "UI extensions"</span></a></div> <p>Stores that subscribe to the Shopify Plus plan can add UI extensions to their <strong>Checkout</strong>, <strong>Thank you</strong> and <strong>Order Status</strong> pages. Stores on Basic, Shopify, and Advanced plans can only add UI extensions to their <strong>Thank you</strong> and <strong>Order Status</strong> pages. Merchants can install apps from the Shopify App Store or build custom apps that contain UI extensions.</p> <div class='table-container'><table><thead><tr> <th>Milestone</th> <th>Target</th> </tr> </thead><tbody><tr> <td>Checkout UI extensions available on all eligible Plus stores</td> <td>January 2023 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/apps/build/checkout/thank-you-order-status">extensions</a> on the <strong>Thank you</strong> and <strong>Order status</strong> page (Plus plan only)</td> <td>November 2023 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/apps/build/checkout/thank-you-order-status">extensions</a> on the <strong>Thank you</strong> and <strong>Order status</strong> page (all plans above Starter)</td> <td>May 2024 (shipped)</td> </tr> </tbody></table></div> <p>We&#39;ll continue adding API capabilities to help you access the right functionality in extensions. We&#39;ll also continue adding UI components that offer performant patterns on our design best practices. We release new components and APIs into the <a href="/docs/api/usage/versioning#unstable-api-versions">unstable</a> API version first, and promote to the next stable release based on Shopify&#39;s <a href="/docs/api/usage/versioning#release-schedule">API version release schedule</a>.</p> <div class='table-container'><table><thead><tr> <th>Feature</th> <th>Target launch date</th> </tr> </thead><tbody><tr> <td>Support for reading and writing <a href="/docs/api/checkout-ui-extensions/unstable/apis/standardapi#properties-propertydetail-discountcodes">discount codes</a></td> <td>January 2023 (shipped)</td> </tr> <tr> <td>New UI components: <a href="/docs/api/checkout-ui-extensions/unstable/components/overlays/tooltip">Tooltip</a>, <a href="/docs/api/checkout-ui-extensions/unstable/components/actions/pressable">Pressable</a></td> <td>January 2023 (shipped)</td> </tr> <tr> <td>Support for reading and writing <a href="/docs/api/checkout-ui-extensions/unstable/apis/standardapi#properties-propertydetail-appliedgiftcards">gift cards</a></td> <td>February 2023 (shipped)</td> </tr> <tr> <td>New UI components: <a href="/docs/api/checkout-ui-extensions/unstable/components/overlays/popover">Popover</a>, <a href="/docs/api/checkout-ui-extensions/unstable/components/overlays/modal">Modal</a></td> <td>February 2023 (shipped)</td> </tr> <tr> <td>Heading styles, button styles and corner radius controls through the <a href="/docs/api/admin-graphql/unstable/mutations/checkoutBrandingUpsert">Branding API</a></td> <td>February 2023 (shipped)</td> </tr> <tr> <td><a href="/docs/api/checkout-ui-extensions/unstable/apis/standardapi#properties-propertydetail-sessiontoken">Session token API</a> to enable authenticated network calls</td> <td>February 2023 (shipped)</td> </tr> <tr> <td>New API that allows checkout UI extensions to directly <a href="/docs/api/checkout-ui-extensions/unstable/apis/standardapi#properties-propertydetail-query">query the Storefront API</a></td> <td>February 2023 (shipped)</td> </tr> <tr> <td>New UI components: <a href="/docs/api/checkout-ui-extensions/unstable/components/interactive/disclosure">Disclosure</a>, <a href="/docs/api/checkout-ui-extensions/unstable/components/forms/datepicker">DatePicker</a></td> <td>April 2023 (shipped)</td> </tr> <tr> <td>Merchant-uploaded <a href="/docs/apps/build/checkout/styling/customize-typography">custom fonts</a> through the GraphQL Admin API</td> <td>April 2023 (shipped)</td> </tr> <tr> <td>Support for adding <a href="/docs/api/checkout-ui-extensions/unstable/apis/buyer-journey">checkout field validation errors</a> from UI extensions</td> <td>April 2023 (shipped)</td> </tr> <tr> <td>New API for <a href="/docs/api/checkout-ui-extensions/unstable/apis/cart-lines">SellingPlan on line items</a> (read/write)</td> <td>May 2023 (shipped)</td> </tr> <tr> <td>New API for reading <a href="/docs/api/checkout-ui-extensions/unstable/apis/payments#standardapi-propertydetail-availablepaymentoptions">presented</a> and <a href="/docs/api/checkout-ui-extensions/unstable/apis/payments#standardapi-propertydetail-selectedpaymentoptions">selected</a> payment options</td> <td>May 2023 (shipped)</td> </tr> <tr> <td>New API for reading <a href="/docs/api/checkout-ui-extensions/unstable/apis/delivery#standardapi-propertydetail-deliverygroups">presented and selected delivery options</a></td> <td>June 2023 (shipped)</td> </tr> <tr> <td>New UI components: <a href="/docs/api/checkout-ui-extensions/unstable/components/forms/datefield">DateField</a></td> <td>June 2023 (shipped)</td> </tr> <tr> <td>Developer preview of the <strong>Order status</strong> page in the checkout editor</td> <td>June 2023 (shipped)</td> </tr> <tr> <td>New extension targets for <a href="/docs/api/checkout-ui-extensions/latest/extension-targets-overview#supported-locations">enhancing delivery options</a></td> <td>June 2023 (shipped)</td> </tr> <tr> <td>New API for <a href="/docs/api/checkout-ui-extensions/unstable/apis/metafields#standardapi-propertydetail-appmetafields">cart metafields</a> (read/write)</td> <td>July 2023 (shipped)</td> </tr> <tr> <td>New API for writing updates to the <a href="/docs/api/checkout-ui-extensions/latest/apis/checkoutapi#properties-propertydetail-applyshippingaddresschange">shipping address</a></td> <td>July 2023 (shipped)</td> </tr> <tr> <td>New API to read the <a href="/docs/api/checkout-ui-extensions/unstable/apis/standardapi#properties-propertydetail-billingaddress">customer billing address</a></td> <td>August 2023 (shipped)</td> </tr> <tr> <td>New API for <a href="/docs/api/checkout-ui-extensions/unstable/apis/cost">reading price breakdown on checkout total</a></td> <td>August 2023 (shipped)</td> </tr> <tr> <td>New API to read a <a href="/docs/api/checkout-ui-extensions/unstable/apis/checkout-token">unique and stable session token</a> for the current buyer checkout session</td> <td>September 2023 (shipped)</td> </tr> <tr> <td>New API for <a href="/docs/api/checkout-ui-extensions/unstable/configuration#collect-buyer-consent">customized SMS consent capture</a></td> <td>September 2023 (shipped)</td> </tr> <tr> <td>New extension <a href="/docs/api/checkout-ui-extensions/unstable/targets/payments/purchase-checkout-payment-method-list-render-before">targets for extending payment options</a></td> <td>September 2023 (shipped)</td> </tr> <tr> <td>New UI component: <a href="/docs/api/checkout-ui-extensions/unstable/components/interactive/map"><code class="text-highlight text-highlight--grey">Map</code></a></td> <td>September 2023 (shipped)</td> </tr> <tr> <td>Advanced <a href="/docs/apps/build/checkout/styling/update-color-settings">color styling through the GraphQL Admin API</a></td> <td>September 2023 (shipped)</td> </tr> <tr> <td>New extension targets for <a href="/docs/api/checkout-ui-extensions/unstable/targets/header/purchase-checkout-header-render-after">header</a> and <a href="/docs/api/checkout-ui-extensions/unstable/targets/footer/purchase-checkout-footer-render-after">footer</a> customization</td> <td>November 2023 (shipped)</td> </tr> <tr> <td>New API to <a href="/docs/api/checkout-ui-extensions/unstable/apis/customer-privacy">read and write cookie tracking consent</a></td> <td>January 2024 (shipped)</td> </tr> <tr> <td>Advanced <a href="/changelog/checkout-branding-supports-container-styles">section styling</a>, such as borders and spacing, through the Branding API</td> <td>January 2024 (shipped)</td> </tr> <tr> <td><a rel="external noreferrer noopener" target="_blank" href="https://help.shopify.com/en/manual/checkout-settings/checkout-extensibility/checkout-upgrade">Customizations Report</a> to identify existing checkout.liquid customizations with upgrade guidance</td> <td>January 2024 (shipped)</td> </tr> <tr> <td><a href="/changelog/checkout-supports-header-and-footer-customizations">Header and footer customizations</a> through the Branding API</td> <td>January 2024 (shipped)</td> </tr> <tr> <td>New API to <a href="/docs/api/checkout-ui-extensions/unstable/apis/buyer-journey">read checkout steps</a> to enable buiding a custom breadcrumb</td> <td>March 2024 (shipped)</td> </tr> <tr> <td>New UI components for customer privacy consent collection <a href="/docs/api/checkout-ui-extensions/unstable/components/overlays/sheet"><code class="text-highlight text-highlight--grey">Sheet</code></a></td> <td>March 2024 (shipped)</td> </tr> <tr> <td><a rel="external noreferrer noopener" target="_blank" href="https://help.shopify.com/en/manual/checkout-settings/checkout-extensibility/checkout-upgrade">Tailored upgrade guidance</a> for existing checkout.liquid customizations</td> <td>March 2024 (shipped)</td> </tr> <tr> <td>Support for Plus merchants currently using products to represent <a href="https://shopify.dev/changelog/support-for-plus-merchants-currently-using-products-to-represent-additional-fees-or-charges-in-checkout">additional fees or charges in checkout</a></td> <td>April 2024 (shipped)</td> </tr> <tr> <td>Update to <a rel="external noreferrer noopener" target="_blank" href="https://help.shopify.com/en/manual/checkout-settings/checkout-extensibility/checkout-upgrade">customizations report</a> to include additional scripts analysis and app recommendations</td> <td>April 2024 (shipped)</td> </tr> <tr> <td>Support for using a <a href="/docs/api/checkout-ui-extensions/2024-04/targets/address/purchase-address-autocomplete-suggest">custom address auto-complete provider</a></td> <td>May 2024 (shipped)</td> </tr> <tr> <td>New UI component: <a href="/docs/api/checkout-ui-extensions/unstable/components/forms/switch"><code class="text-highlight text-highlight--grey">Switch</code></a></td> <td>May 2024 (shipped)</td> </tr> <tr> <td>New API to <a href="/docs/api/checkout-ui-extensions/unstable/apis/delivery#pickuplocationitemapi">read delivery option metafields</a> associated with a local pickup location</td> <td>May 2024 (shipped)</td> </tr> <tr> <td>Setting in the checkout and accounts editor to <a rel="external noreferrer noopener" target="_blank" href="https://help.shopify.com/en/manual/checkout-settings/customize-checkout-configurations/checkout-style#discount-field">display the discount code field by default</a> on mobile devices</td> <td>June 2024 (shipped)</td> </tr> <tr> <td>Pre-filling the checkout state from inputs provided through the Cart API</td> <td>June 2024 (shipped)</td> </tr> <tr> <td>Support for <a href="/docs/api/checkout-ui-extensions/unstable/components/utilities/stylehelper#examples">conditional component rendering</a> on mobile checkouts</td> <td>June 2024 (shipped)</td> </tr> <tr> <td>Header and footer alignment, position and visibility controls in the checkout and accounts editor</td> <td>June 2024 (shipped)</td> </tr> <tr> <td>Update the <a rel="external noreferrer noopener" target="_blank" href="https://admin.shopify.com/settings/checkout">customizations report</a> to include apps that use ScriptTag API</td> <td>July 2024 (shipped)</td> </tr> <tr> <td>Support for <a href="/changelog/storefront-api-cart-now-supports-one-time-use-delivery-addresses">one-time use addresses</a> in Storefront Cart API and UI Extension API</td> <td>July 2024 (shipped)</td> </tr> <tr> <td>New UI component: <a href="/docs/api/checkout-ui-extensions/unstable/components/other/qrcode">QRCode</a></td> <td>July 2024 (shipped)</td> </tr> <tr> <td>Support for UI extensions in <a href="/changelog/checkout-ui-extensions-new-required-cart-instructions-api-when-updating-to-2024-07-api-version">draft order invoice checkouts</a></td> <td>July 2024 (shipped)</td> </tr> <tr> <td>Default a buyer to a merchant-provided address, with an option for the buyer to enter new address</td> <td>August 2024 (early access)</td> </tr> <tr> <td>Support for styling order summary line items with the Branding API</td> <td>November 2024</td> </tr> <tr> <td>Support for integrating 3rd-party chat applications into checkout</td> <td>November 2024</td> </tr> <tr> <td>Support for rendering address fields, such as city and neighborhood, using dropdown lists</td> <td>Q4 2024</td> </tr> <tr> <td>Support for conditionally hiding the input field for 1st-party gift cards</td> <td>Q4 2024</td> </tr> <tr> <td>Input query API for customizing the data available to UI extensions</td> <td>Q4 2024</td> </tr> <tr> <td>New API to <a rel="external noreferrer noopener" target="_blank" href="https://github.com/Shopify/ui-extensions/issues/1529">write to the customer billing address</a></td> <td>Deferred</td> </tr> </tbody></table></div><div class="heading-wrapper heading-wrapper-3"><h3 id="shopify-functions">Shopify Functions</h3><a class="article-anchor-link" href="#shopify-functions"><span class="visuallyhidden">Anchor link to section titled "Shopify Functions"</span></a></div> <p>We&#39;ll continue to add new Shopify Function APIs to further customize checkout business logic.</p> <div class='table-container'><table><thead><tr> <th>Milestone</th> <th>Target</th> </tr> </thead><tbody><tr> <td>General availability of <a href="/docs/api/functions/reference/product-discounts">Product Discount API</a> and <a href="/docs/api/functions/reference/order-discounts">Order Discount API</a></td> <td>December 2022 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/api/functions/reference/payment-customization">Payment Customization API</a> and <a href="/docs/api/functions/reference/delivery-customization">Delivery Customization API</a></td> <td>February 2023 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/api/functions/reference/cart-transform">Cart Transform Function API</a></td> <td>July 2023 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/api/functions/reference/order-routing-location-rule">Order Routing Location Rule API</a></td> <td>July 2023 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/api/functions/reference/fulfillment-constraints">Fulfillment Constraints API</a></td> <td>July 2023 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/api/functions/reference/cart-checkout-validation">Cart and Checkout Validation API</a> for custom apps</td> <td>July 2023 (shipped)</td> </tr> <tr> <td>Developer preview of <a href="/docs/api/functions/reference/local-pickup-delivery-option-generator/graphql">Function API to customize delivery options for local pickup</a></td> <td>September 2023 (shipped)</td> </tr> <tr> <td>Developer preview of <a href="/docs/api/functions/reference/cart-transform">Cart Transform Function API</a>: per component pricing and update operation</td> <td>October 2023 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/api/functions/reference/cart-checkout-validation">Cart and Checkout Validation API</a> for public apps</td> <td>January 2024 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/api/functions/reference/cart-transform">Cart Transform Function API</a>: per component pricing and update operation</td> <td>January 2024 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/api/functions/reference/shipping-discounts">Shipping Discount API</a></td> <td>January 2024 (shipped)</td> </tr> <tr> <td>Addition to the <a href="/docs/api/functions/reference/product-discounts">Product Discount API</a> to return all applicable discounts</td> <td>January 2024 (shipped)</td> </tr> <tr> <td>Developer preview of <a href="/docs/api/functions/reference/pickup-point-delivery-option-generator">Function API for integrating a 3rd-party pickup point network</a></td> <td>February 2024 (shipped)</td> </tr> <tr> <td>General availability of <a href="/docs/api/functions/reference/cart-transform">Cart Transform Function API</a>: per component pricing and update operation</td> <td>Q1 2024 (shipped)</td> </tr> <tr> <td>Addition to the <a href="/docs/api/functions/reference/product-discounts">Product Discount API</a> to return all applicable discounts</td> <td>Q1 2024 (shipped)</td> </tr> <tr> <td>Developer Preview of Discounts Allocator Function API to customize discounts allocation logic</td> <td>Q1 2024 (shipped)</td> </tr> <tr> <td>Addition to the <a href="/docs/api/functions/reference/product-discounts">Product Discount API</a> to <a href="/docs/api/functions/reference/product-discounts/graphql/common-objects/target?api%5Bversion%5D=2024-07">target cart line items</a></td> <td>Q3 2024 (shipped)</td> </tr> <tr> <td>Support for cart metafields on function input queries</td> <td>Q4 2024</td> </tr> <tr> <td>Changes to the <a href="/docs/api/functions/reference/product-discounts">Discount APIs</a> to stack multiple discounts on the same product line item</td> <td>Q2 2025</td> </tr> </tbody></table></div><div class="heading-wrapper heading-wrapper-3"><h3 id="web-pixel-app-extensions">Web pixel app extensions</h3><a class="article-anchor-link" href="#web-pixel-app-extensions"><span class="visuallyhidden">Anchor link to section titled "Web pixel app extensions"</span></a></div> <p>We&#39;ll continue to add new custom pixel and app pixel events and features.</p> <div class='table-container'><table><thead><tr> <th>Milestone</th> <th>Target</th> </tr> </thead><tbody><tr> <td>Add <code class="text-highlight text-highlight--grey">attributes</code> to <a href="/docs/api/web-pixels-api/standard-events#checkout">Checkout</a> object</td> <td>March 2023 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">firstName</code> and <code class="text-highlight text-highlight--grey">lastName</code> to <a href="/docs/api/web-pixels-api/standard-events#customer">Customer</a> object</td> <td>March 2023 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">productVariants</code> to <a href="/docs/api/web-pixels-api/standard-events#searchresult">searchResult</a> object</td> <td>March 2023 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">address1</code>, <code class="text-highlight text-highlight--grey">address2</code> and <code class="text-highlight text-highlight--grey">zip</code> to <a href="/docs/api/web-pixels-api/standard-events#mailingaddress">mailingAddress</a> object</td> <td>April 2023 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">type</code> to <a href="/docs/api/web-pixels-api/standard-events#product">Product</a> object</td> <td>April 2023 (shipped)</td> </tr> <tr> <td>New <a href="/docs/api/web-pixels-api/standard-events#standard-events">standard event</a>: <code class="text-highlight text-highlight--grey">checkout_shipping_info_submitted</code></td> <td>April 2023 (shipped)</td> </tr> <tr> <td>New <a href="/docs/api/web-pixels-api/standard-events#standard-events">standard event</a>: <code class="text-highlight text-highlight--grey">checkout_address_info_submitted</code></td> <td>April 2023 (shipped)</td> </tr> <tr> <td>New <a href="/docs/api/web-pixels-api/standard-events#standard-events">standard event</a>: <code class="text-highlight text-highlight--grey">checkout_contact_info_submitted</code></td> <td>April 2023 (shipped)</td> </tr> <tr> <td>Add support for <code class="text-highlight text-highlight--grey">all</code> collections in <a href="https://shopify.dev/docs/api/pixels/customer-events#collection_viewed"><code class="text-highlight text-highlight--grey">collection_viewed</code></a> event</td> <td>May 2023 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">ordersCount</code> to <a href="/docs/api/web-pixels-api/standard-events#customer">Customer</a> object</td> <td>June 2023 (shipped)</td> </tr> <tr> <td>Custom pixel saved versions</td> <td>July 2023 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">discountApplications</code> to <a href="/docs/api/web-pixels-api/standard-events">Checkout</a> object</td> <td>July 2023 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">DiscountApplication.allocationMethod</code> to <a href="/docs/api/web-pixels-api/standard-events">Checkout</a> object</td> <td>July 2023 (shipped)</td> </tr> <tr> <td>New <a href="/docs/api/web-pixels-api/standard-events#standard-events">standard event</a>: <code class="text-highlight text-highlight--grey">cart_viewed</code> event</td> <td>July 2023 (shipped)</td> </tr> <tr> <td>New <a href="/docs/api/web-pixels-api/standard-events#standard-events">standard event</a>: <code class="text-highlight text-highlight--grey">product_removed_from_cart</code> event</td> <td>August 2023 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">Product.url</code> to <a href="/docs/api/web-pixels-api/standard-events">ProductVariant</a></td> <td>September 2023 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">billingAddress</code> to <a href="/docs/api/web-pixels-api/standard-events">Checkout</a> object</td> <td>September 2023 (shipped)</td> </tr> <tr> <td>New Custom Pixel Autocomplete - helps to write custom pixels referencing the <a href="/docs/api/web-pixels-api/standard-events#standard-events">standard event</a> schema</td> <td>September 2023 (shipped)</td> </tr> <tr> <td>New <a href="/docs/api/web-pixels-api/emitting-data#visitor-api">visitor API</a></td> <td>September 2023 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">Transaction.gateway</code> to <a href="/docs/api/web-pixels-api/standard-events">Checkout</a> object</td> <td>October 2023 (shipped)</td> </tr> <tr> <td>New <a href="/docs/api/web-pixels-api/dom-events">standard event</a>: DOM events - <code class="text-highlight text-highlight--grey">clicked</code> , <code class="text-highlight text-highlight--grey">input_blurred</code>, <code class="text-highlight text-highlight--grey">input_focused</code>, <code class="text-highlight text-highlight--grey">input_changed</code>, <code class="text-highlight text-highlight--grey">form_submitted</code></td> <td>January 2024 (shipped)</td> </tr> <tr> <td>Add <code class="text-highlight text-highlight--grey">customer.id</code> to the <a href="/docs/api/web-pixels-api/standard-events/checkout_completed"><code class="text-highlight text-highlight--grey">Orders</code></a> object</td> <td>February 2023 (shipped)</td> </tr> <tr> <td>Availability of new Pixel Granular Consent Purposes</td> <td>April 2024</td> </tr> <tr> <td>Availability of new debugging and troubleshooting tools</td> <td>Q2 2024</td> </tr> <tr> <td>Availability of standard events: tracking errors during checkout</td> <td>Q3 2024</td> </tr> <tr> <td>Availability of support for extending data fields on standard events</td> <td>Q1 2025</td> </tr> </tbody></table></div></section> <div id="FeedbackFloatingAnchor" class="feedback-floating-anchor"></div> </article> <div class="hide--mobile hide--tablet"> <div id="FeedbackLauncherModal"></div> </div> <div class="hide--desktop"> <div id="FeedbackLauncherPage"></div> </div> </div> <div class="grid__item grid__item--desktop-up-third grid__item--wide-up-quarter grid__item--toc"> <div class='toc-container'> <h3 class='toc__heading'>On this page</h3> <div class="toc"> <ul class="toc__list"> <li><a href="#how-it-works">How it works</a></li><li><a href="#customization-options">Customization options</a></li><li><a href="#getting-started">Getting started</a></li><li><a href="#upgrade">Upgrade</a></li><li><a href="#best-practices">Best practices</a></li><li><a href="#product-roadmap">Product roadmap</a></li> </ul> </div> </div> </div></div> </main> </div> </div> <script> //<![CDATA[ window.I18n = window.I18n || {}; window.I18n.data = {"modal":{"home":"Home","close":"Close"},"signup":{"header":"Start your free %{trial_length}-day trial of Shopify","custom_header":"%{custom_signup_header}","create_now":"Create your store","labels":{"email":"Email address","password":"Password","storename":"Store name","shop_name":"Your store name","promotional_program_promo_code":"Discount code","subdomain":"Store URL"},"subtitles":{"shop_name":"This can be changed later.","promotional_program_promo_code":"Enter the promo code that was provided to you.","subdomain":"This will be the default domain for your store, but you can add different domains later. You'll also use your Store URL to log in."},"placeholders":{"password":"Minimum 5 characters"},"success_messages":{"email":"Got it","password":"Looks great","shop_name":"That name is available!","subdomain":"You‘ll use this to log in to your store"},"store_address_suffix":".myshopify.com","hint_messages":{"email_typo_html":"Did you mean \u003cbutton type=\"button\" data-bind-event-click=\"%{on_click}\"\u003e%{suggestion}\u003c/button\u003e?"},"partners_input_label":"Email address","partners_input_placeholder":"Enter your email","submit":"Sign up","signup_html":"Sign up as a Shopify Partner to get a free API\u0026nbsp;key."},"forms":{"errors":{"throttled":"Too many requests from this IP, try again later.","global":{"invalid":"Please enter a valid email address","required":"This field is required.","generic":"Sorry, something went wrong. Please try again later.","throttled":"Too many requests from this IP, try again later."},"shop_name":{"empty":"Please enter a store name","minlength":"Your store name must be at least 4 characters","maxlength":"Your store name can’t be longer than 60 characters","existingAdmin":"A store with that name already exists. If you are the owner you can \u003ca href=\"https://%{err}/admin\"\u003elog in here\u003c/a\u003e","message":"%{err}","matchesPassword":"Your store name can’t be the same as your password","disallowed":"Your store name can’t contain the word \u003cstrong\u003e%{err}\u003c/strong\u003e. Try another."},"email":{"empty":"Please enter an email address","invalid":"Please enter a valid email address","member_exists":"You are already subscribed to this list","generic":"Sorry, something went wrong. Please try again later."},"password":{"empty":"Please enter a password","minlength":"Password must be at least 5 characters","spaces":"Password cannot start or end with a space"},"subdomain":{"empty":"Please enter a subdomain","minlength":"Your subdomain must be at least 4 characters","multiple":"Multiple subdomains are associated with this email","suggest":"Did you mean %{err}?","invalid":"Please enter a valid subdomain","existingAdmin":"A store with that subdomain already exists. If you are the owner you can \u003ca href=\"https://%{err}/admin\"\u003elog in here\u003c/a\u003e","disallowed":"Your subdomain can’t contain the word \u003cstrong\u003e%{err}\u003c/strong\u003e. Try another.","message":"%{err}"},"promotional_program_promo_code":{"message":"%{err}"}}},"search":{"title":"Search","placeholder":"Search","label":"Search the documentation","suggestions_available":"Suggestions are available. Use up and down arrows to select a suggestion and enter key to use it.","no_suggestions_available":"No suggestions are available for this search term. Try a different search term.","instructions":"As you start typing, we might suggest common search terms. Use up and down arrow keys to select a search term.","submit":"Search Submit button","up_down_navigation_html":"%{up_icon}%{down_icon} arrows to navigate","up":"Up","down":"Down","enter_to_select":"Enter to select","escape_to_close":"Escape to close","instructions_html":"Press %{up_icon}%{down_icon} to navigate, %{enter} to select, %{esc} to dismiss","enter":"enter","esc":"esc","no_results":"No results","try_another_search_term":"Try another search term","could_not_be_completed":"Your search couldn’t be completed","try_again_later":"Please try again later"},"feedback":{"meta":{"title":"Share Feedback","description":"Share Feedback"},"cta":"share your feedback with us.","question":"How helpful was this page?","submit-message":"Thanks for helping us improve this page!","submit-button":"Submit feedback","ratings":{"0":"Very unhelpful","1":"Somewhat unhelpful","2":"Neither helpful nor unhelpful","3":"Somewhat helpful","4":"Very helpful"},"details":{"like":"What did you like about this page? (optional)","dislike":"What can we do to improve this page? (optional)"},"feedback_form":{"positive":"Yes","negative":"No","question":"Is this page helpful?","default_label":"How could we improve this page?","option_0":{"option":"This isn't what I was looking for.","placeholder":"What were you looking for?"},"option_1":{"option":"There aren't enough examples.","placeholder":"What examples were you looking for?"},"option_2":{"option":"The information is hard to understand.","placeholder":"What was difficult to understand?"},"option_3":{"option":"The information doesn't solve my issue.","placeholder":"What issue were you trying to solve?"},"option_4":{"option":"Other","placeholder":"What can we do to improve this page?"},"thank_you":{"positive":"Thank you for your feedback!","negative":"Thank you for your feedback! Let us know why this wasn't helpful.","submitted":"Thank you for your comments!"}}},"docs":{"markdown":{"meta_description":"Consult complete reference documentation for developing on Shopify. Includes representative code snippets and examples for a variety of client libraries."},"article":{"api_version_selector":{"api_version_name_html":"API version: %{version_handle} %{version_label}","post_unite_api_version_name_html":"%{version_handle} %{version_label}","choose_api_version":"Choose API version","newer_versions_available":{"one":"%{count} newer API version available","other":"%{count} newer API versions available"},"not_supported":"Not supported in this API version."}}},"a11y":{"pause_animations":"Pause animations","aria_label_anchor":"Anchor link","aria_label_dark_mode":"View dark mode","aria_label_light_mode":"View light mode","aria_label_tabs":"%{tab_names} tabs"},"sidebar":{"collapse":"Collapse sidebar","expand":"Expand sidebar","aria_label":"Sidebar","toggle":"Toggle","badges":{"shopify_plus":"Plus","shopify_plus_description":"(Shopify Plus)","beta":"Beta","beta_description":"(Feature beta)","object":"Object","input_object":"Input","mutation":"Mutation","query":"Query","enum":"Enum","interface":"Interface","union":"Union"},"graphql_types":{"overview":"overview","object":"Objects","input_object":"Inputs","mutation":"Mutations","query":"Queries","enum":"Enums","interface":"Interfaces","union":"Unions"},"markdown":{"title":"Docs","links":{"fortest":{"label":"This is needed for testing do not remove","url":"#"}}},"apps_build":{"heading":"Build","getting_started_group":{"group_description":"Getting started","links":{"apps":{"label":"Shopify app platform","url":"/docs/apps/build"},"domains_surfaces":{"label":"App surfaces","url":"/docs/apps/build/app-surfaces"},"scaffold_app":{"label":"Scaffold an app","url":"/docs/apps/build/scaffold-app"},"build_app":{"label":"Build an app","url":"/docs/apps/build/build"},"cli_apps":{"label":"Shopify CLI for apps","children":{"overview":{"label":"About Shopify CLI for apps","url":"/docs/apps/build/cli-for-apps"},"app_structure":{"label":"About app structure","url":"/docs/apps/build/cli-for-apps/app-structure"},"app_configuration":{"label":"About app configuration","url":"/docs/apps/build/cli-for-apps/app-configuration"},"manage_config_files":{"label":"Manage app config files","url":"/docs/apps/build/cli-for-apps/manage-app-config-files"},"ngrok":{"label":"Use ngrok for tunneling during app development","url":"/docs/apps/build/cli-for-apps/use-ngrok-tunneling"},"from_dashboard":{"label":"Migrate a Dashboard-managed app to Shopify CLI","url":"/docs/apps/build/cli-for-apps/migrate-from-dashboard"},"migrate":{"label":"Migrate to the latest Shopify CLI","url":"/docs/apps/build/cli-for-apps/migrate-to-latest-cli"}}}}},"extending_group":{"group_description":"Extending Shopify","links":{"admin":{"label":"Admin","children":{"overview":{"label":"Apps in admin","url":"/docs/apps/build/admin"},"admin_actions_blocks":{"label":"Admin UI extensions","children":{"overview":{"label":"About admin extensions","url":"/docs/apps/build/admin/actions-blocks"},"build_admin_action":{"label":"Build an admin action","url":"/docs/apps/build/admin/actions-blocks/build-admin-action"},"build_admin_block":{"label":"Build an admin block","url":"/docs/apps/build/admin/actions-blocks/build-admin-block"},"connect_extensions":{"label":"Connect admin extensions","url":"/docs/apps/build/admin/actions-blocks/connect-admin-extensions"},"connect_app_backend":{"label":"Connect to your app's backend","url":"/docs/apps/build/admin/actions-blocks/connect-app-backend"},"print_admin_action":{"label":"Build an admin print action","url":"/docs/apps/build/admin/actions-blocks/build-admin-print-action"}}},"link-extensions":{"label":"Admin links (legacy)","children":{"overview":{"label":"About admin links (legacy)","url":"/docs/apps/build/admin/admin-links"},"add_links":{"label":"Add admin links (legacy)","url":"/docs/apps/build/admin/admin-links/add-admin-links"}}}}},"checkout":{"label":"Checkout","children":{"overview":{"label":"Apps in checkout","url":"/docs/apps/build/checkout"},"technologies":{"label":"Technologies for customizing checkout","url":"/docs/apps/build/checkout/technologies"},"start_building":{"label":"Start building for checkout","url":"/docs/apps/build/checkout/start-building"},"custom_data":{"label":"Display custom data","url":"/docs/apps/build/checkout/display-custom-data"},"validation":{"label":"Validation","children":{"overview":{"label":"About cart and checkout validation","url":"/docs/apps/build/checkout/cart-checkout-validation"},"create_client_side_validation":{"label":"Create client-side validation","url":"/docs/apps/build/checkout/cart-checkout-validation/create-client-side-validation"},"create_server_side_validation":{"label":"Create server-side validation","url":"/docs/apps/build/checkout/cart-checkout-validation/create-server-side-validation"},"create_the_admin_ui":{"label":"Create admin UI validation","url":"/docs/apps/build/checkout/cart-checkout-validation/create-admin-ui-validation"}}},"create_permalinks":{"label":"Create cart permalinks","url":"/docs/apps/build/checkout/create-cart-permalinks"},"styling":{"label":"Styling","children":{"overview":{"label":"About checkout styling","url":"/docs/apps/build/checkout/styling"},"custom_typography":{"label":"Customize typography","url":"/docs/apps/build/checkout/styling/customize-typography"},"favicon":{"label":"Add the favicon","url":"/docs/apps/build/checkout/styling/add-favicon"},"page_elements":{"label":"Customize form controls","url":"/docs/apps/build/checkout/styling/customize-form-controls"},"color":{"label":"Update color settings","url":"/docs/apps/build/checkout/styling/update-color-settings"},"section":{"label":"Customize sections","url":"/docs/apps/build/checkout/styling/customize-sections"}}},"customize-header":{"label":"Customize the header","url":"/docs/apps/build/checkout/customize-header"},"customize-footer":{"label":"Customize the footer","url":"/docs/apps/build/checkout/customize-footer"},"banners_fields":{"label":"Banners and fields","children":{"overview":{"label":"About custom banners and fields","url":"/docs/apps/build/checkout/fields-banners"},"add_banner":{"label":"Add a banner","url":"/docs/apps/build/checkout/fields-banners/add-banner"},"add":{"label":"Add a field","url":"/docs/apps/build/checkout/fields-banners/add-field"},"ux_for_fields":{"label":"UX for fields","url":"/docs/apps/build/checkout/fields-banners/ux-for-fields"}}},"delivery_shipping":{"label":"Delivery and shipping","children":{"overview":{"label":"About delivery and shipping","url":"/docs/apps/build/checkout/delivery-shipping"},"additional_address_fields":{"label":"Convert additional address fields","url":"/docs/apps/build/checkout/delivery-shipping/additional-address-fields"},"delivery_options":{"label":"Rename delivery options","children":{"build_delivery_options":{"label":"Build the delivery options function","url":"/docs/apps/build/checkout/delivery-shipping/delivery-options/build-function"},"config":{"label":"Add the configuration","url":"/docs/apps/build/checkout/delivery-shipping/delivery-options/add-configuration"},"delivery_ui":{"label":"Build the UI","url":"/docs/apps/build/checkout/delivery-shipping/delivery-options/build-ui"},"ux_for_delivery_options":{"label":"UX for delivery options","url":"/docs/apps/build/checkout/delivery-shipping/delivery-options/ux-for-delivery-options"}}},"delivery_methods":{"label":"Customize delivery methods","children":{"date_picker":{"label":"Build a date picker","url":"/docs/apps/build/checkout/delivery-shipping/delivery-methods/date-picker"},"local_pickup_charges":{"label":"Create local pickup charges","url":"/docs/apps/build/checkout/delivery-shipping/delivery-methods/create-local-pickup-charges"},"generate_pick_up_points":{"label":"Generate pickup points","url":"/docs/apps/build/checkout/delivery-shipping/delivery-methods/generate-pickup-points"},"ux_for_pickup_points":{"label":"UX for pickup points","url":"/docs/apps/build/checkout/delivery-shipping/delivery-methods/ux-for-pickup-points"},"ux_for_delivery_methods":{"label":"UX for delivery methods","url":"/docs/apps/build/checkout/delivery-shipping/delivery-methods/ux-for-delivery-methods"}}},"address-autocomplete":{"label":"Customize address autocomplete","children":{"suggest":{"label":"Build a custom address autocomplete extension","url":"/docs/apps/build/checkout/delivery-shipping/address-autocomplete/build-autocomplete"},"format":{"label":"Format suggested addresses","url":"/docs/apps/build/checkout/delivery-shipping/address-autocomplete/format-suggestion"}}}}},"product_offers":{"label":"Product offers","children":{"overview":{"label":"About product offers","url":"/docs/apps/build/checkout/product-offers"},"build_pre_purchase":{"label":"Build a pre-purchase offer","url":"/docs/apps/build/checkout/product-offers/build-a-pre-purchase-offer"},"ux_for_pre_purchase":{"label":"UX for pre-purchase offers","url":"/docs/apps/build/checkout/product-offers/ux-for-pre-purchase-product-offers"},"build_post_purchase":{"label":"Build a post-purchase offer","url":"/docs/apps/build/checkout/product-offers/build-a-post-purchase-offer"},"subscriptions":{"label":"Create a post-purchase subscription","url":"/docs/apps/build/checkout/product-offers/create-a-post-purchase-subscription"},"ux_for_post_purchase":{"label":"UX for post-purchase offers","url":"/docs/apps/build/checkout/product-offers/ux-for-post-purchase-product-offers"},"subscription":{"label":"UX for post-purchase subscriptions","url":"/docs/apps/build/checkout/product-offers/ux-for-post-purchase-subscriptions"}}},"payments":{"label":"Payments","children":{"overview":{"label":"About payments customizations","url":"/docs/apps/build/checkout/payments"},"getting_started":{"label":"Create the payments function","url":"/docs/apps/build/checkout/payments/create-payments-function"},"config":{"label":"Add the configuration","url":"/docs/apps/build/checkout/payments/add-configuration"},"payments_ui":{"label":"Build the UI","url":"/docs/apps/build/checkout/payments/build-ui"},"ux_for_payments":{"label":"UX for payments","url":"/docs/apps/build/checkout/payments/ux-for-payments"}}},"thank_you_order_status":{"label":"Thank you and Order status","children":{"overview":{"label":"About Thank you and Order status page customizations","url":"/docs/apps/build/checkout/thank-you-order-status"},"add_survey":{"label":"Add a survey","url":"/docs/apps/build/checkout/thank-you-order-status/add-survey"},"ux_for_ty_osp":{"label":"UX for Thank you and Order status pages","url":"/docs/apps/build/checkout/thank-you-order-status/ux-for-thank-you-order-status"}}},"localization":{"label":"Localized UI extensions","children":{"overview":{"label":"About checkout UI extension localization","url":"/docs/apps/build/checkout/localized-checkout-ui-extensions"},"localize_extension":{"label":"Localize a checkout UI extension","url":"/docs/apps/build/checkout/localized-checkout-ui-extensions/localize"}}},"testing":{"label":"Test UI extensions","url":"/docs/apps/build/checkout/test-checkout-ui-extensions"},"multi_page":{"label":"Create multi-page extensions","url":"/docs/apps/build/checkout/create-multi-page-extensions"},"ux_for_checkout":{"label":"UX for checkout","url":"/docs/apps/build/checkout/ux-for-checkout"}}},"customer_accounts":{"label":"Customer accounts","children":{"overview":{"label":"Apps in customer accounts","url":"/docs/apps/build/customer-accounts"},"start_building":{"label":"Start building for customer accounts","url":"/docs/apps/build/customer-accounts/start-building"},"extension_placement":{"label":"Decide on extension placement","url":"/docs/apps/build/customer-accounts/extension-placement"},"ux_for_customer_accounts":{"label":"UX for customer accounts","url":"/docs/apps/build/customer-accounts/ux"},"order_status_page":{"label":"About the Order status page","url":"/docs/apps/build/customer-accounts/order-status-page"},"inline_extensions":{"label":"Inline extensions","children":{"overview":{"label":"About inline extensions","url":"/docs/apps/build/customer-accounts/inline-extensions"},"order_status":{"label":"Build Order status","url":"/docs/apps/build/customer-accounts/inline-extensions/build-order-status"},"profile":{"label":"Build profile","url":"/docs/apps/build/customer-accounts/inline-extensions/build-profile"}}},"pre_auth_order_status_page_extensions":{"label":"Pre-auth Order status page extensions","children":{"overview":{"label":"About pre-auth Order status page extensions","url":"/docs/apps/build/customer-accounts/pre-auth-order-status-page-extensions"},"pre_auth_order_status_page_extensions":{"label":"Build pre-auth Order status page extensions","url":"/docs/apps/build/customer-accounts/pre-auth-order-status-page-extensions/build-pre-auth-order-status-page-extensions"}}},"order_action_extensions":{"label":"Order action extensions","children":{"overview":{"label":"About order action menus","url":"/docs/apps/build/customer-accounts/order-action-extensions"},"build_order_action_menu_extensions":{"label":"Build for order action menus","url":"/docs/apps/build/customer-accounts/order-action-extensions/build-for-order-action-menus"},"ux_order_actions":{"label":"UX for order actions","url":"/docs/apps/build/customer-accounts/order-action-extensions/ux-for-order-actions"}}},"full_page_extensions":{"label":"Full-page extensions","children":{"overview":{"label":"Add pages to customer accounts","url":"/docs/apps/build/customer-accounts/full-page-extensions"},"build_new_pages":{"label":"Build new pages","url":"/docs/apps/build/customer-accounts/full-page-extensions/build-new-pages"},"ux_for_full_pages":{"label":"UX for full pages","url":"/docs/apps/build/customer-accounts/full-page-extensions/ux-for-full-pages"}}},"metafields":{"label":"Build metafield writes into extensions","url":"/docs/apps/build/customer-accounts/metafields"},"editor_extension_collections":{"feature_flag_enabled":"editor_extension_collections_docs","label":"Editor extension collections","children":{"overview":{"label":"About editor extension collections","url":"/docs/apps/build/customer-accounts/editor-extension-collections"},"getting_started":{"label":"Build an editor extension collection","url":"/docs/apps/build/customer-accounts/editor-extension-collections/build-editor-extension-collection"},"ux_for_editor_collections":{"label":"UX for editor extension collections","url":"/docs/apps/build/customer-accounts/editor-extension-collections/editor-extension-collections-ux-guidelines"}}},"localization":{"label":"Localization","children":{"overview":{"label":"About localizing customer account extensions","url":"/docs/apps/build/customer-accounts/localization"},"localize_extension":{"label":"Localize a customer account extension","url":"/docs/apps/build/customer-accounts/localization/localize"}}},"testing_ui_extensions":{"label":"Test customer account extensions","url":"/docs/apps/build/customer-accounts/test"}}},"flow":{"label":"Flow","children":{"overview":{"label":"About Flow","url":"/docs/apps/build/flow"},"development":{"label":"About Flow development","url":"/docs/apps/build/flow/development"},"triggers":{"label":"Triggers","children":{"overview":{"label":"About triggers","url":"/docs/apps/build/flow/triggers"},"create":{"label":"Create a trigger","url":"/docs/apps/build/flow/triggers/create"},"reference":{"label":"Trigger reference","url":"/docs/apps/build/flow/triggers/reference"}}},"actions":{"label":"Actions","children":{"overview":{"label":"About actions","url":"/docs/apps/build/flow/actions"},"create":{"label":"Create an action","url":"/docs/apps/build/flow/actions/create"},"reference":{"label":"Action reference","url":"/docs/apps/build/flow/actions/reference"},"endpoints":{"label":"Create action endpoints","url":"/docs/apps/build/flow/actions/endpoints"},"build_config_ui":{"label":"Build the configuration UI","url":"/docs/apps/build/flow/actions/build-config-ui"}}},"templates":{"label":"Templates","children":{"overview":{"label":"About templates","url":"/docs/apps/build/flow/templates"},"create":{"label":"Create a template","url":"/docs/apps/build/flow/templates/create-a-template"},"reference":{"label":"Template reference","url":"/docs/apps/build/flow/templates/reference"}}},"track_lifecycle_events":{"label":"Track Flow lifecycle events","url":"/docs/apps/build/flow/track-lifecycle-events"},"migrate_legacy_extensions":{"label":"Migrate legacy Flow extensions","url":"/docs/apps/build/flow/migrate-legacy-extensions"},"configure_complex_types":{"label":"Configure complex data types","url":"/docs/apps/build/flow/configure-complex-data-types"}}},"online_store":{"label":"Online store","children":{"about":{"label":"Apps in the online store","url":"/docs/apps/build/online-store"},"dynamic_data":{"label":"Display dynamic data","url":"/docs/apps/build/online-store/display-dynamic-data"},"theme_app_extensions":{"label":"Theme app extensions","children":{"overview":{"label":"About theme app extensions","url":"/docs/apps/build/online-store/theme-app-extensions"},"build_theme_app_extensions":{"label":"Build theme app extensions","url":"/docs/apps/build/online-store/theme-app-extensions/build"},"extensions_framework":{"label":"Theme app extension configuration","url":"/docs/apps/build/online-store/theme-app-extensions/configuration"},"ux_for_theme_app_extensions":{"label":"UX for theme app extensions","url":"/docs/apps/build/online-store/theme-app-extensions/ux"},"migrate":{"label":"Migrate to theme app extensions","url":"/docs/apps/build/online-store/theme-app-extensions/migrate"}}},"version":{"label":"Verify theme support","url":"/docs/apps/build/online-store/verify-support"},"products":{"label":"Manage media for products","url":"/docs/apps/build/online-store/product-media"},"variants":{"label":"Manage media for product variants","url":"/docs/apps/build/online-store/product-variant-media"},"other_integrations":{"label":"ScriptTag resource (legacy)","url":"/docs/apps/build/online-store/script-tag-legacy"},"asset_api":{"label":"Asset resource (legacy)","url":"/docs/apps/build/online-store/asset-legacy"}}},"point_of_sale":{"label":"Point of Sale","children":{"overview":{"label":"Apps in POS","url":"/docs/apps/build/pos"},"embed_app":{"label":"Embed your app in POS","url":"/docs/apps/build/pos/embed-app-in-pos"},"ui_extensions":{"label":"UI extensions","children":{"overview":{"label":"About POS UI extensions","url":"/docs/api/pos-ui-extensions","stepIn":true},"start_building":{"label":"Start building POS UI extensions","url":"/docs/api/pos-ui-extensions/getting-started","stepIn":true},"build_discount":{"label":"Build a POS discount","url":"/docs/api/pos-ui-extensions/example-discount-extension","stepIn":true},"build_print":{"label":"Build a print extension","url":"/docs/api/pos-ui-extensions/example-print-extension","stepIn":true},"debug":{"label":"Debug POS UI extensions","url":"/docs/api/pos-ui-extensions/debugging","stepIn":true},"communicate_server":{"label":"Communicate with a server","url":"/docs/api/pos-ui-extensions/server-communication","stepIn":true},"troubleshoot":{"label":"Troubleshoot UI extensions","url":"/docs/api/pos-ui-extensions/troubleshooting","stepIn":true}}},"legacy_extensions":{"label":"Legacy extensions","children":{"links":{"label":"POS links (legacy)","url":"/docs/apps/build/pos/links-legacy"},"cart":{"label":"POS cart app extensions (legacy)","url":"/docs/apps/build/pos/cart-legacy"},"recommendations":{"label":"POS product recommendations extension (legacy)","url":"/docs/apps/build/pos/recommendations-legacy"}}}}}}},"use_cases_group":{"group_description":"Use cases","links":{"marketing":{"label":"Marketing and analytics","children":{"overview":{"label":"Apps for marketing and analytics","url":"/docs/apps/build/marketing-analytics"},"pixels":{"label":"About web pixels","url":"/docs/apps/build/marketing-analytics/pixels"},"build-web-pixels":{"label":"Build web pixels","url":"/docs/apps/build/marketing-analytics/build-web-pixels"},"customer_segments":{"label":"Customer segments","children":{"overview":{"label":"About customer segments","url":"/docs/apps/build/marketing-analytics/customer-segments"},"build_template_extension":{"label":"Build a template extension","url":"/docs/apps/build/marketing-analytics/customer-segments/build-a-template-extension"},"build_action_extension":{"label":"Build an action extension","url":"/docs/apps/build/marketing-analytics/customer-segments/build-an-action-extension"},"manage_customer_segments":{"label":"Manage customer segments","url":"/docs/apps/build/marketing-analytics/customer-segments/manage"},"saved_searches":{"label":"Migrate saved searches","url":"/docs/apps/build/marketing-analytics/customer-segments/migrate-saved-searches"},"async_queries":{"label":"Migrate to async queries","url":"/docs/apps/build/marketing-analytics/customer-segments/migrate-to-async-queries"}}},"marketing":{"label":"Marketing activities","children":{"overview":{"label":"About marketing activities","url":"/docs/apps/build/marketing-analytics/marketing-activities"},"migrate":{"label":"Migrate marketing activity extensions","url":"/docs/apps/build/marketing-analytics/marketing-activities/migrate-extensions"}}},"automations":{"label":"Marketing automations","children":{"overview":{"label":"About marketing automations","url":"/docs/apps/build/marketing-analytics/automations"},"create_actions":{"label":"Create marketing automation actions","url":"/docs/apps/build/marketing-analytics/automations/create-marketing-automation-actions"},"endpoints":{"label":"List of action endpoints","url":"/docs/apps/build/marketing-analytics/automations/action-endpoints"},"custom-configuration":{"label":"Build a configuration page","url":"/docs/apps/build/marketing-analytics/automations/build-custom-configuration-page"}}},"optimize_seo":{"label":"Optimize SEO","url":"/docs/apps/build/marketing-analytics/optimize-storefront-seo"}}},"discounts":{"label":"Discounts","children":{"overview":{"label":"About discounts","url":"/docs/apps/build/discounts"},"build_discount_function":{"label":"Build a discount function","url":"/docs/apps/build/discounts/build-discount-function"},"experience_ui":{"feature_flag_enabled":"extensions_only_discounts_app","label":"Build a discounts UI with UI extensions","url":"/docs/apps/build/discounts/build-ui-extension"},"experience_remix":{"label":"Build a discounts UI with Remix","url":"/docs/apps/build/discounts/build-ui-with-remix"},"discounts-allocator":{"label":"Build a discounts allocator","url":"/docs/apps/build/discounts/build-discounts-allocator"},"ux_for_discounts":{"label":"UX for discounts","url":"/docs/apps/build/discounts/ux-for-discounts"}}},"product_merchandising":{"label":"Product merchandising","children":{"bundles":{"label":"Product bundles","children":{"overview":{"label":"About product bundles","url":"/docs/apps/build/product-merchandising/bundles"},"start_building":{"label":"Start building bundles","url":"/docs/apps/build/product-merchandising/bundles/start-building"},"add_fixed_bundle":{"label":"Add a fixed bundle","children":{"about-fixed-bundles":{"label":"About fixed bundles","url":"/docs/apps/build/product-merchandising/bundles/add-fixed-bundle"},"add-a-product-fixed-bundle":{"label":"Add a product fixed bundle","url":"/docs/apps/build/product-merchandising/bundles/add-product-fixed-bundle"},"add-a-variant-fixed-bundle":{"label":"Add a variant fixed bundle","url":"/docs/apps/build/product-merchandising/bundles/add-variant-fixed-bundle"}}},"add_customized_bundle":{"label":"Add a customized bundle","url":"/docs/apps/build/product-merchandising/bundles/add-customized-bundle"},"add_merchant_ui":{"label":"Add UI for merchant customization","url":"/docs/apps/build/product-merchandising/bundles/add-merchant-config-ui"},"create":{"label":"Create a bundle app","url":"/docs/apps/build/product-merchandising/bundles/create-bundle-app"},"turn_on_publishing":{"label":"Turn on publishing","url":"/docs/apps/build/product-merchandising/bundles/turn-on-publishing"}}},"combined_listings":{"label":"Combined listings","children":{"overview":{"label":"About combined listings","url":"/docs/apps/build/product-merchandising/combined-listings"},"build_combined_listings":{"label":"Build for combined listings","url":"/docs/apps/build/product-merchandising/combined-listings/build-for-combined-listings"}}}}},"purchase_options":{"label":"Purchase options","children":{"overview":{"label":"About custom purchase options","url":"/docs/apps/build/purchase-options"},"subscriptions":{"label":"Subscriptions","children":{"overview":{"label":"About subscriptions","url":"/docs/apps/build/purchase-options/subscriptions"},"model_subscriptions_solution":{"label":"Model a subscriptions solution","url":"/docs/apps/build/purchase-options/subscriptions/model-subscriptions-solution"},"selling_plans":{"label":"Selling plans","children":{"about_selling_plans":{"label":"About selling plans","url":"/docs/apps/build/purchase-options/subscriptions/selling-plans"},"build_selling_plan":{"label":"Build a selling plan","url":"/docs/apps/build/purchase-options/subscriptions/selling-plans/build-a-selling-plan"}}},"subscription_contracts":{"label":"Subscription contracts","children":{"about_subscription_contracts":{"label":"About subscription contracts","url":"/docs/apps/build/purchase-options/subscriptions/contracts"},"create_contract":{"label":"Build a subscription contract","url":"/docs/apps/build/purchase-options/subscriptions/contracts/build-a-subscription-contract"},"update_contract":{"label":"Update a subscription contract","url":"/docs/apps/build/purchase-options/subscriptions/contracts/update-a-subscription-contract"},"combine":{"label":"Combine subscription contracts","url":"/docs/apps/build/purchase-options/subscriptions/contracts/combine-subscription-contracts"},"subscription_link_extensions":{"feature_flag_enabled":"cli_managed_subscription_link_creation_and_migration","label":"Subscription link extensions","children":{"overview":{"label":"Build a subscription link extension","url":"/docs/apps/build/purchase-options/subscriptions/contracts/subscription-link-extensions/start-building"},"migrate-extension-to-shopify-cli":{"label":"Migrate existing extensions to Shopify CLI","url":"/docs/apps/build/purchase-options/subscriptions/contracts/subscription-link-extensions/migrate-to-cli"}}}}},"billing_cycles":{"label":"Billing cycles","children":{"about_billing_cycles":{"label":"About subscription billing cycles","url":"/docs/apps/build/purchase-options/subscriptions/billing-cycles"},"manage":{"label":"Manage billing cycle contracts","url":"/docs/apps/build/purchase-options/subscriptions/billing-cycles/manage-billing-cycle-contracts"},"bulk":{"label":"Manage billing cycles in bulk","url":"/docs/apps/build/purchase-options/subscriptions/billing-cycles/bulk-billing-cycles"}}},"fulfillments":{"label":"Fulfillments","children":{"about_fulfillments":{"label":"About fulfillment for subscriptions","url":"/docs/apps/build/purchase-options/subscriptions/fulfillments"},"orders":{"label":"Sync orders and subscriptions","url":"/docs/apps/build/purchase-options/subscriptions/fulfillments/sync-orders-subscriptions"},"advanced":{"label":"Manage fulfillments for prepaid subscriptions","url":"/docs/apps/build/purchase-options/subscriptions/fulfillments/manage-subscription-fulfillments"}}},"migrate":{"label":"Migrate to the Subscriptions API","children":{"overview":{"label":"Subscriptions API migration guide","url":"/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api"},"customers":{"label":"Migrate customer information","url":"/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-customer-information"},"migrate":{"label":"Migrate existing subscriptions","url":"/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-subscription-contracts"},"ux":{"label":"UX for migration","url":"/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/ux-for-migration"}}}}},"pre-orders-tbyb":{"label":"Pre-orders and Try Before You Buy","children":{"overview":{"label":"About pre-orders and Try Before You Buy","url":"/docs/apps/build/purchase-options/deferred"},"modeling":{"label":"Model pre-orders and Try Before You Buy","url":"/docs/apps/build/purchase-options/deferred/model-deferred-purchase-solutions"},"manage_deferred":{"label":"Build a pre-order and Try Before You Buy solution","url":"/docs/apps/build/purchase-options/deferred/build-deferment-solution"},"delivery_and_deferment":{"label":"Delivery and deferment","children":{"overview":{"label":"About delivery for pre-order and Try Before You Buy","url":"/docs/apps/build/purchase-options/deferred/delivery-and-deferment"},"build_delivery_profiles":{"label":"Build delivery profiles","url":"/docs/apps/build/purchase-options/deferred/delivery-and-deferment/build-delivery-profiles"}}},"build_app":{"label":"Building your app","children":{"start_building":{"label":"Start building a pre-order and Try Before You Buy (TBYB) app","url":"/docs/apps/build/purchase-options/deferred/create-deferred-purchase-app/start-building"},"create_ui":{"label":"Create the UI","url":"/docs/apps/build/purchase-options/deferred/create-deferred-purchase-app/create-ui"}}}}},"extensions":{"label":"Product subscription app extensions","children":{"overview":{"label":"About product subscription app extensions","url":"/docs/apps/build/purchase-options/product-subscription-app-extensions"},"start_building":{"label":"Start building product subscription app extensions","url":"/docs/apps/build/purchase-options/product-subscription-app-extensions/start-building"},"extension_points":{"label":"Extension points","url":"/docs/apps/build/purchase-options/product-subscription-app-extensions/extension-points"},"auth":{"label":"Authenticate app extension requests","url":"/docs/apps/build/purchase-options/product-subscription-app-extensions/authenticate-extension-requests"},"create_manage":{"label":"Create and manage app extensions","url":"/docs/apps/build/purchase-options/product-subscription-app-extensions/create-and-manage"}}},"admin_extensions":{"feature_flag_enabled":"purchase_options_extensions","label":"Purchase options extensions","children":{"overview":{"label":"About purchase options extensions","url":"/docs/apps/build/purchase-options/purchase-options-extensions"},"start_building":{"label":"Start building purchase options extensions","url":"/docs/apps/build/purchase-options/purchase-options-extensions/start-building"}}},"portals":{"label":"Build a customer-facing purchase-option portal","children":{"overview":{"label":"About customer-facing portals","url":"/docs/apps/build/purchase-options/customer-portal"},"create_portals":{"label":"Create customer-facing portals","url":"/docs/apps/build/purchase-options/customer-portal/create-customer-portal"}}}}},"markets":{"label":"Global markets","children":{"overview":{"label":"About Shopify Markets","url":"/docs/apps/build/markets"},"catalogs":{"label":"About catalogs for different markets","url":"/docs/apps/build/markets/catalogs-different-markets"},"build_catalog":{"label":"Build a catalog","url":"/docs/apps/build/markets/build-catalog"},"migrate":{"label":"Migrate to catalogs","url":"/docs/apps/build/markets/migrate-to-catalogs"},"translations":{"label":"Manage translated content","url":"/docs/apps/build/markets/manage-translated-content"},"locally_required_order_data":{"label":"Add locally required order data","url":"/docs/apps/build/markets/add-locally-required-order-data"}}},"orders_fulfillment":{"label":"Orders and fulfillment","children":{"overview":{"label":"Apps in orders and fulfillment","url":"/docs/apps/build/orders-fulfillment"},"inventory":{"label":"Inventory management","children":{"overview":{"label":"Apps in inventory management","url":"/docs/apps/build/orders-fulfillment/inventory-management-apps"},"manage_inventory":{"label":"Manage inventory","url":"/docs/apps/build/orders-fulfillment/inventory-management-apps/manage-quantities-states"}}},"orders":{"label":"Order management","children":{"overview":{"label":"Apps in order management","url":"/docs/apps/build/orders-fulfillment/order-management-apps"},"edit_orders":{"label":"Edit existing orders","url":"/docs/apps/build/orders-fulfillment/order-management-apps/edit-orders"},"build_fulfillment_solutions":{"label":"Build fulfillment solutions","url":"/docs/apps/build/orders-fulfillment/order-management-apps/build-fulfillment-solutions"},"track_orders":{"label":"Track orders on other platforms","url":"/docs/apps/build/orders-fulfillment/order-management-apps/track-orders-other-platforms"}}},"order_routing":{"label":"Order routing and fulfillment","children":{"overview":{"label":"Apps in order routing","url":"/docs/apps/build/orders-fulfillment/order-routing-apps"},"location-rules":{"label":"Location rules","children":{"overview":{"label":"About location rules","url":"/docs/apps/build/orders-fulfillment/order-routing-apps/location-rules"},"build_function":{"label":"Build a location rule function","url":"/docs/apps/build/orders-fulfillment/order-routing-apps/location-rules/build-location-rule-function"},"add_configuration":{"label":"Add configuration","url":"/docs/apps/build/orders-fulfillment/order-routing-apps/location-rules/add-configuration"},"build_ui":{"label":"Build the UI","url":"/docs/apps/build/orders-fulfillment/order-routing-apps/location-rules/build-ui"}}},"fulfillment-constraints":{"label":"Build fulfillment constraints","url":"/docs/apps/build/orders-fulfillment/order-routing-apps/build-fulfillment-constraints"},"build_local_pickup_options":{"label":"Build local pickup options","url":"/docs/apps/build/orders-fulfillment/order-routing-apps/build-local-pickup-options"}}},"service":{"label":"Fulfillment services","children":{"overview":{"label":"About fulfillment services","url":"/docs/apps/build/orders-fulfillment/fulfillment-service-apps"},"build_fulfillment_services":{"label":"Build for fulfillment services","url":"/docs/apps/build/orders-fulfillment/fulfillment-service-apps/build-for-fulfillment-services"}}},"returns":{"label":"Returns","children":{"overview":{"label":"Apps in returns","url":"/docs/apps/build/orders-fulfillment/returns-apps"},"build_return_management":{"label":"Build for return management","url":"/docs/apps/build/orders-fulfillment/returns-apps/build-return-management"},"manage_exchanges":{"label":"Manage exchanges","url":"/docs/apps/build/orders-fulfillment/returns-apps/manage-exchanges"},"view_refund_duties":{"label":"View and refund duties","url":"/docs/apps/build/orders-fulfillment/returns-apps/view-and-refund-duties"},"manage_reverse_fulfillment":{"label":"Manage reverse fulfillment orders","url":"/docs/apps/build/orders-fulfillment/returns-apps/manage-reverse-fulfillment-orders"},"manage_reverse_deliveries":{"label":"Manage reverse deliveries","url":"/docs/apps/build/orders-fulfillment/returns-apps/manage-reverse-deliveries"}}},"migrate":{"label":"Migrate to fulfillment orders","url":"/docs/apps/build/orders-fulfillment/migrate-to-fulfillment-orders"}}},"payments":{"label":"Payments","children":{"overview":{"label":"Payments extensions","url":"/docs/apps/build/payments"},"requirements":{"label":"Requirements for payments extensions","url":"/docs/apps/build/payments/requirements"},"approval":{"label":"Get approved for payments","url":"/docs/apps/build/payments/payments-extension-review"},"build":{"label":"Build a payments extension","children":{"processing-overview":{"label":"About payment processing","url":"/docs/apps/build/payments/processing"},"build-offsite":{"label":"Build an offsite payments extension","children":{"tutorial":{"label":"Use Shopify CLI","url":"/docs/apps/build/payments/offsite/use-the-cli"}}},"credit-card":{"label":"Build a credit card payments extension","children":{"tutorial":{"label":"Use Shopify CLI","url":"/docs/apps/build/payments/credit-card/use-the-cli"},"manage-encryption-certificates":{"label":"Manage encryption certificates","url":"/docs/apps/build/payments/credit-card/manage-encryption-certificates"},"test-certificate":{"label":"Configure test certificate","url":"/docs/apps/build/payments/credit-card/test-certificate"},"extensibility-tutorial":{"label":"Build with UI extensibility","url":"/docs/apps/build/payments/credit-card/with-extensibility"},"custom-credit-card":{"label":"Build a Shopify custom credit card payments extension","url":"/docs/apps/build/payments/credit-card/custom/use-the-cli"}}},"alternative":{"label":"Build an alternative payments extension","url":"/docs/apps/build/payments/alternative/build-an-alternative-payment-extension"},"redeemable":{"label":"Build a redeemables payments extension","url":"/docs/apps/build/payments/redeemables/build-a-redeemables-payment-extension"},"implementation":{"label":"Implementation considerations","url":"/docs/apps/build/payments/considerations"},"request-reference":{"label":"Request reference","url":"/docs/apps/build/payments/request-reference"}}},"onboard":{"label":"Onboard merchants to your extension","url":"/docs/apps/build/payments/onboard-a-merchant-payments-extension"},"migrate-extensions-to-shopify-cli":{"label":"Migrate extensions to Shopify CLI","url":"/docs/apps/build/payments/migrate-extensions-to-shopify-cli"}}},"sales_channels":{"label":"Sales channels","children":{"overview":{"label":"Apps as sales channels","url":"/docs/apps/build/sales-channels"},"start_building":{"label":"Start building a sales channel","url":"/docs/apps/build/sales-channels/start-building"},"product_sync":{"label":"Product sync","url":"/docs/apps/build/sales-channels/product-sync"},"contextual_product_feeds":{"label":"Contextual Product Feeds","url":"/docs/apps/build/sales-channels/contextual-product-feeds"},"scheduled_publishing":{"label":"About scheduled publishing","url":"/docs/apps/build/sales-channels/scheduled-product-publishing"},"enable":{"label":"Enable scheduled publishing","url":"/docs/apps/build/sales-channels/enable-scheduled-publishing"}}},"b2b":{"label":"B2B","children":{"overview":{"label":"Apps and B2B","url":"/docs/apps/build/b2b"},"start_building":{"label":"Start building for B2B","url":"/docs/apps/build/b2b/start-building"},"manage_client_companies":{"label":"Manage client company locations","url":"/docs/apps/build/b2b/manage-client-company-locations"},"manage_catalogs":{"label":"Manage B2B catalogs","url":"/docs/apps/build/b2b/manage-catalogs"},"draft_orders":{"label":"Use draft orders","url":"/docs/apps/build/b2b/draft-orders"},"b2b_checkout_ui":{"label":"Create B2B checkout UI","url":"/docs/apps/build/b2b/create-checkout-ui"}}},"blockchain":{"label":"Blockchain","children":{"overview":{"label":"Apps in blockchain","url":"/docs/apps/build/blockchain"},"nft_distribution":{"label":"NFT distribution","children":{"overview":{"label":"About NFT distribution","url":"/docs/apps/build/blockchain/nft-distribution"},"nft_eligibility":{"label":"Check NFT sales eligibility","url":"/docs/apps/build/blockchain/nft-distribution/check-nft-sales-eligibility"},"merchant_eligibility":{"label":"Check merchant eligibility","url":"/docs/apps/build/blockchain/nft-distribution/check-merchant-eligibility"},"nft_distribution_ux_guidelines":{"label":"UX for NFT distribution","url":"/docs/apps/build/blockchain/nft-distribution/ux-for-nft-distribution"}}},"tokengating":{"label":"Tokengating","children":{"overview":{"label":"About tokengating","url":"/docs/apps/build/blockchain/tokengating"},"build-a-tokengating-app":{"label":"Build a tokengating app","children":{"overview":{"label":"Apps for tokengating","url":"/docs/apps/build/blockchain/tokengating/build-a-tokengating-app"},"creates_gates_admin":{"label":"Create gates","url":"/docs/apps/build/blockchain/tokengating/build-a-tokengating-app/create-gates-admin"},"show_gates_storefront":{"label":"Show gates","url":"/docs/apps/selling-strategies/blockchain/tokengating/build-a-tokengating-app/show-gates-storefront"},"shopify_function_gate_reaction":{"label":"Create the gated discount function","url":"/docs/apps/build/blockchain/tokengating/build-a-tokengating-app/create-gated-discount-function"}}},"build_a_tokengated_storefront":{"label":"Build a tokengated storefront","children":{"overview":{"label":"About tokengated storefronts","url":"/docs/apps/build/blockchain/tokengating/build-a-tokengated-storefront"},"start_building":{"label":"Start building a tokengated storefront","url":"/docs/apps/build/blockchain/tokengating/build-a-tokengated-storefront/start-building"},"save_wallet_to_session":{"label":"Save a connected wallet to session storage","url":"/docs/apps/build/blockchain/tokengating/build-a-tokengated-storefront/save-wallet-to-session"},"read_and_evaluate_gates":{"label":"Read and evaluate gates","url":"/docs/apps/build/blockchain/tokengating/build-a-tokengated-storefront/read-and-evaluate-gates"},"write_gate_context_to_cart_attributes":{"label":"Write gate context to cart attributes","url":"/docs/apps/build/blockchain/tokengating/build-a-tokengated-storefront/write-gate-context-to-cart-attributes"}}},"ux_for_tokengating":{"label":"UX for tokengating","url":"/docs/apps/build/blockchain/tokengating/ux-for-tokengating"}}}}}}},"best_practices_group":{"group_description":"Best practices","links":{"performance":{"label":"Performance","children":{"overview":{"label":"About performance optimization","url":"/docs/apps/build/performance"},"general":{"label":"General app performance","url":"/docs/apps/build/performance/general-best-practices"},"admin":{"label":"Admin, installation, and OAuth performance","url":"/docs/apps/build/performance/admin-installation-oauth"},"storefront":{"label":"Storefront performance","url":"/docs/apps/build/performance/storefront"},"checkout":{"label":"Checkout performance","url":"/docs/apps/build/performance/checkout"}}},"accessibility":{"label":"Accessibility","url":"/docs/apps/build/accessibility"},"internationalization":{"label":"Localize your app","url":"/docs/apps/build/localize-your-app"},"embedding":{"label":"Integrating with Shopify","url":"/docs/apps/build/integrating-with-shopify"},"mobile":{"label":"Mobile support","url":"/docs/apps/build/mobile-support"},"deceptive_code":{"label":"Non-deceptive code","url":"/docs/apps/build/non-deceptive-code"},"privacy_law_compliance":{"label":"Privacy law compliance","url":"/docs/apps/build/privacy-law-compliance"},"security":{"label":"Security","children":{"common_vulnerabilities":{"label":"Protect against common vulnerabilities","url":"/docs/apps/build/security/protect-against-common-vulnerabilities"},"tls_certificates":{"label":"Encrypt with TLS","url":"/docs/apps/build/security/encrypt-with-tls"},"iframe_protection":{"label":"Set up iframe protection","url":"/docs/apps/build/security/set-up-iframe-protection"},"network_services":{"label":"Secure your network service ports","url":"/docs/apps/build/security/secure-network-service-ports"},"secure_tokens":{"label":"Generate secure tokens","url":"/docs/apps/build/security/generate-secure-tokens"},"short_links":{"label":"Shorten URLs with care","url":"/docs/apps/build/security/shorten-urls-with-care"}}}}},"building_blocks_group":{"group_description":"Building blocks","links":{"graphql":{"label":"GraphQL","children":{"overview":{"label":"About GraphQL","url":"/docs/apps/build/graphql"},"graphql-basics":{"label":"GraphQL basics","children":{"queries":{"label":"Queries","url":"/docs/apps/build/graphql/basics/queries"},"mutations":{"label":"Mutations","url":"/docs/apps/build/graphql/basics/mutations"},"variables":{"label":"Variables","url":"/docs/apps/build/graphql/basics/variables"},"advanced":{"label":"Advanced concepts","url":"/docs/apps/build/graphql/basics/advanced"}}},"migrating":{"label":"Migrate to GraphQL from REST","children":{"overview":{"label":"About REST to GraphQL migration","url":"/docs/apps/build/graphql/migrate"},"learn-how":{"label":"Learn how to migrate","url":"/docs/apps/build/graphql/migrate/learn-how"},"libraries":{"label":"Update API calls in your app","url":"/docs/apps/build/graphql/migrate/libraries"},"new_product_model":{"label":"New product model","children":{"overview":{"label":"About the new product model","url":"/docs/apps/build/graphql/migrate/new-product-model"},"api_updates":{"label":"API updates","url":"/docs/apps/build/graphql/migrate/new-product-model/api-updates"},"product_model_resources":{"label":"Product model and components","url":"/docs/apps/build/graphql/migrate/new-product-model/product-model-components"},"migrate_and_test":{"label":"Migrate and test high-variants","url":"/docs/apps/build/graphql/migrate/new-product-model/migrate-and-test"},"retrieve_data":{"label":"Retrieve product data","url":"/docs/apps/build/graphql/migrate/new-product-model/retrieve-data"},"add_data":{"label":"Add product data","url":"/docs/apps/build/graphql/migrate/new-product-model/add-data"},"edit_data":{"label":"Edit product data","url":"/docs/apps/build/graphql/migrate/new-product-model/edit-data"},"sync_data":{"label":"Sync product data","url":"/docs/apps/build/graphql/migrate/new-product-model/sync-data"},"metafield_linked_options":{"label":"Linking metafields to options","url":"/docs/apps/build/graphql/migrate/new-product-model/metafield-linked"}}}}}}},"extensions":{"label":"Extensions","children":{"overview":{"label":"About extensions","url":"/docs/apps/build/app-extensions"},"list":{"label":"List of app extensions","url":"/docs/apps/build/app-extensions/list-of-app-extensions"},"build_app":{"label":"Build an extension-only app","url":"/docs/apps/build/app-extensions/build-extension-only-app"},"configure_extensions":{"label":"Configure app extensions","url":"/docs/apps/build/app-extensions/configure-app-extensions"},"remove_extension":{"label":"Remove an extension","url":"/docs/apps/build/app-extensions/remove-app-extension"}}},"functions":{"label":"Shopify Functions","children":{"overview":{"label":"About Shopify Functions","url":"/docs/apps/build/functions"},"input-output":{"label":"Input and output","children":{"overview":{"label":"About input and output","url":"/docs/apps/build/functions/input-output"},"input-queries":{"label":"Metafields for input queries","url":"/docs/apps/build/functions/input-output/metafields-for-input-queries"},"variables":{"label":"Use variables in input queries","url":"/docs/apps/build/functions/input-output/use-variables-input-queries"},"network-access":{"label":"Network access","children":{"overview":{"label":"About network access","url":"/docs/apps/build/functions/input-output/network-access"},"using-network-access":{"label":"Use network access","url":"/docs/apps/build/functions/input-output/network-access/use-network-access"},"performance":{"label":"About performance and resilience","url":"/docs/apps/build/functions/input-output/network-access/performance-and-resilience"},"graphql":{"label":"GraphQL reference","url":"/docs/apps/build/functions/input-output/network-access/graphql"}}}}},"language_support":{"label":"Programming languages","children":{"overview":{"label":"Language considerations","url":"/docs/apps/build/functions/programming-languages"},"rust":{"label":"Rust for Functions","url":"/docs/apps/build/functions/programming-languages/rust-for-functions"},"javascript":{"label":"JavaScript for Functions","url":"/docs/apps/build/functions/programming-languages/javascript-for-functions"},"webassembly":{"label":"WebAssembly","url":"/docs/apps/build/functions/programming-languages/webassembly-for-functions"}}},"test_debug":{"label":"Test and debug Shopify Functions","url":"/docs/apps/build/functions/test-debug-functions"},"monitoring_errors":{"label":"Monitoring and handling errors in production","url":"/docs/apps/build/functions/monitoring-and-errors"},"localization_practices":{"label":"Localization practices for Shopify Functions","url":"/docs/apps/build/functions/localization-practices-shopify-functions"}}},"webhooks":{"label":"Webhooks","children":{"overview":{"label":"About webhooks","url":"/docs/apps/build/webhooks"},"subscribe":{"label":"Subscribe","children":{"overview":{"label":"About subscriptions","url":"/docs/apps/build/webhooks/subscribe"},"get-started":{"label":"Create a subscription","url":"/docs/apps/build/webhooks/subscribe/get-started"},"using-api":{"label":"Subscribe using Admin API","url":"/docs/apps/build/webhooks/subscribe/subscribe-using-api"},"https":{"label":"Deliver through HTTPS","url":"/docs/apps/build/webhooks/subscribe/https"},"use_newer_version":{"label":"Use a newer API version","url":"/docs/apps/build/webhooks/subscribe/use-newer-api-version"}}},"customize":{"label":"Customize","children":{"overview":{"label":"About customizing your webhooks","url":"/docs/apps/build/webhooks/customize"},"filters":{"label":"Filter events","url":"/docs/apps/build/webhooks/customize/filters"},"modifications":{"label":"Modify payloads","url":"/docs/apps/build/webhooks/customize/modify_payloads"},"sub_topics":{"label":"About sub-topics","url":"/docs/apps/build/webhooks/customize/sub-topics"}}},"duplicates":{"label":"Ignore duplicates","url":"/docs/apps/build/webhooks/ignore-duplicates"},"delivery_metrics":{"label":"Troubleshoot","url":"/docs/apps/build/webhooks/troubleshooting-webhooks"},"best_practices":{"label":"Best practices","url":"/docs/apps/build/webhooks/best-practices"}}},"custom-data":{"label":"Custom data","children":{"overview":{"label":"About metafields and metaobjects","url":"/docs/apps/build/custom-data"},"ownership":{"label":"About reserved prefixes","url":"/docs/apps/build/custom-data/reserved-prefixes"},"metafields":{"label":"Metafields","children":{"types":{"label":"List of data types","url":"/docs/apps/build/custom-data/metafields/list-of-data-types"},"manage_metafields":{"label":"Manage metafields","url":"/docs/apps/build/custom-data/metafields/manage-metafields"},"definitions":{"label":"Definitions","children":{"overview":{"label":"About metafield definitions","url":"/docs/apps/build/custom-data/metafields/definitions"},"access_controls_metafields":{"label":"Use access controls for metafield","url":"/docs/apps/build/custom-data/metafields/definitions/use-access-controls-metafields"},"conditional_metafield_definitions":{"label":"Conditional metafield definitions","url":"/docs/apps/build/custom-data/metafields/definitions/conditional-metafield-definitions"},"standard_metafield_definitions_list":{"label":"List of standard definitions","url":"/docs/apps/build/custom-data/metafields/definitions/list-of-standard-definitions"},"manage_metafield_definitions":{"label":"Manage metafield definitions","url":"/docs/apps/build/custom-data/metafields/definitions/manage-metafield-definitions"},"validation_options_list":{"label":"List of validation options","url":"/docs/apps/build/custom-data/metafields/definitions/list-of-validation-options"},"set_validation_rules":{"label":"Set validation rules","url":"/docs/apps/build/custom-data/metafields/definitions/set-validation-rules"}}},"app_data_metafields":{"label":"Use app-data metafields","url":"/docs/apps/build/custom-data/metafields/use-app-data-metafields"},"private_metafields":{"label":"Manage private metafields","url":"/docs/apps/build/custom-data/metafields/manage-private-metafields"},"migrate_private_metafields":{"label":"Migrate private metafields","url":"/docs/apps/build/custom-data/metafields/migrate-private-metafields"},"capabilities":{"label":"Use metafield capabilities","url":"/docs/apps/build/custom-data/metafields/use-metafield-capabilities"},"migrate_metafields":{"label":"Migrate metafields","url":"/docs/apps/build/custom-data/metafields/migrate-metafields"},"query_by_metafield_value":{"label":"Query by metafield value","url":"/docs/apps/build/custom-data/metafields/query-by-metafield-value"}}},"metaobjects":{"label":"Metaobjects","children":{"work_with_metaobjects":{"label":"Work with metaobjects","url":"/docs/apps/build/custom-data/metaobjects/work-with-metaobjects"},"access_controls":{"label":"Use access controls for metaobjects","url":"/docs/apps/build/custom-data/metaobjects/use-access-controls-metaobjects"},"capabilities":{"label":"Use metaobject capabilities","url":"/docs/apps/build/custom-data/metaobjects/use-metaobject-capabilities"},"standard_metaobject_definitions_list":{"label":"List of standard definitions","url":"/docs/apps/build/custom-data/metaobjects/list-of-standard-definitions"},"limits":{"label":"Metaobject limits","url":"/docs/apps/build/custom-data/metaobjects/metaobject-limits"}}}}},"authentication":{"label":"Authentication","children":{"overview":{"label":"Authentication and authorization","url":"/docs/apps/build/authentication-authorization"},"installation":{"label":"App installation","children":{"overview":{"label":"Enable Shopify-managed installations","url":"/docs/apps/build/authentication-authorization/app-installation"},"manage-access-scopes":{"feature_flag_enabled":"optional_scopes","label":"Manage access scopes","url":"/docs/apps/build/authentication-authorization/app-installation/manage-access-scopes"},"uninstall-app":{"label":"Uninstall an app with an API request","url":"/docs/apps/build/authentication-authorization/app-installation/uninstall-app-api-request"}}},"session_tokens":{"label":"Session tokens","children":{"about_session_tokens":{"label":"About session tokens","url":"/docs/apps/build/authentication-authorization/session-tokens"},"set_up_session_tokens":{"label":"Set up session tokens","url":"/docs/apps/build/authentication-authorization/session-tokens/set-up-session-tokens"}}},"token_types":{"label":"Access tokens","children":{"about_token_acquisition":{"label":"About token acquisition","url":"/docs/apps/build/authentication-authorization/access-tokens/"},"token_exchange":{"label":"Token exchange","url":"/docs/apps/build/authentication-authorization/access-tokens/token-exchange"},"authorization_code_grant":{"label":"Authorization code grant","url":"/docs/apps/build/authentication-authorization/access-tokens/authorization-code-grant"},"admin_created_apps":{"label":"Access tokens for custom apps","url":"/docs/apps/build/authentication-authorization/access-tokens/generate-app-access-tokens-admin"},"online":{"label":"Online access tokens","url":"/docs/apps/build/authentication-authorization/access-tokens/online-access-tokens"},"offline":{"label":"Offline access tokens","url":"/docs/apps/build/authentication-authorization/access-tokens/offline-access-tokens"},"delegate_access_tokens":{"label":"Delegate access tokens","url":"/docs/apps/build/authentication-authorization/access-tokens/use-delegate-tokens"}}},"client_secret":{"label":"Client secret / API key","children":{"overview":{"label":"About client secrets","url":"/docs/apps/build/authentication-authorization/client-secrets"},"rotate":{"label":"Rotate or revoke client credentials","url":"/docs/apps/build/authentication-authorization/client-secrets/rotate-revoke-client-credentials"}}},"set_embedded_auth":{"label":"Set up embedded app authorization","url":"/docs/apps/build/authentication-authorization/set-embedded-app-authorization"}}}}}},"apps_design":{"heading":"Design","guidelines_group":{"group_description":"Guidelines","links":{"overview":{"label":"Overview","url":"/docs/apps/design"},"app_structure":{"label":"App structure","url":"/docs/apps/design/app-structure","always_show_links":true,"anchor_links":{"anatomy":{"label":"Anatomy","url":"/docs/apps/design/app-structure#anatomy"},"app_body":{"label":"App body","url":"/docs/apps/design/app-structure#app-body"},"max_modal":{"label":"Max modal","url":"/docs/apps/design/app-structure#max-modal"},"admin_ui_extensions":{"label":"Admin UI extensions","url":"/docs/apps/design/app-structure#admin-ui-extensions"}}},"layout":{"label":"Layout","url":"/docs/apps/design/layout","always_show_links":true,"anchor_links":{"responsive":{"label":"Responsive layout grid","url":"/docs/apps/design/layout#responsive-layout-grid"},"width":{"label":"App body width","url":"/docs/apps/design/layout#app-body-width"},"options":{"label":"Layout options","url":"/docs/apps/design/layout#layout-options"},"spacing":{"label":"Spacing","url":"/docs/apps/design/layout#spacing"},"information_density":{"label":"Information density","url":"/docs/apps/design/layout#information-density"},"containers":{"label":"Containers","url":"/docs/apps/design/layout#containers"}}},"visual_design":{"label":"Visual design","url":"/docs/apps/design/visual-design","always_show_links":true,"anchor_links":{"color":{"label":"Color","url":"/docs/apps/design/visual-design#color"},"app_icon":{"label":"App icon","url":"/docs/apps/design/visual-design#app-icon"},"typography":{"label":"Typography","url":"/docs/apps/design/visual-design#typography"},"icons":{"label":"Icons","url":"/docs/apps/design/visual-design#icons"},"illustrations":{"label":"Illustrations","url":"/docs/apps/design/visual-design#illustrations"}}},"content":{"label":"Content","url":"/docs/apps/design/content","always_show_links":true,"anchor_links":{"voice_and_tone":{"label":"Voice and tone","url":"/docs/apps/design/content#voice-tone"},"prod_content":{"label":"Product content","url":"/docs/apps/design/content#product-content"},"grammar_and_mechanics":{"label":"Grammar and mechanics","url":"/docs/apps/design/content#grammar"}}},"navigation":{"label":"Navigation","url":"/docs/apps/design/navigation","always_show_links":true,"anchor_links":{"info_architecture":{"label":"Information architecture","url":"/docs/apps/design/navigation#info-architecture"},"appnav":{"label":"App nav","url":"/docs/apps/design/navigation#app-nav"},"appheader":{"label":"App header","url":"/docs/apps/design/navigation#app-header"},"pageheader":{"label":"Page header","url":"/docs/apps/design/navigation#page-header"}}}}},"ux_group":{"group_description":"UX strategies","links":{"alerts":{"label":"Alerts","url":"/docs/apps/design/user-experience/alerts"},"app_home_page":{"label":"App home page","url":"/docs/apps/design/user-experience/app-home-page"},"onboarding":{"label":"Onboarding","url":"/docs/apps/design/user-experience/onboarding"},"marketing":{"label":"Marketing","url":"/docs/apps/design/user-experience/marketing"},"forms":{"label":"Forms","url":"/docs/apps/design/user-experience/forms"},"subscription_apps":{"label":"Subscription apps","url":"/docs/apps/design/user-experience/subscription-apps"}}}},"apps_launch":{"heading":"Launch","quality_assurance_group":{"group_description":"Quality assurance","links":{"apps":{"label":"Going live","url":"/docs/apps/launch"},"requirements_checklist":{"label":"Checklist of requirements","url":"/docs/apps/launch/app-requirements-checklist"},"built-for-shopify":{"label":"Built for Shopify status","children":{"overview":{"label":"About Built for Shopify","url":"/docs/apps/launch/built-for-shopify"},"criteria":{"label":"Achievement criteria","url":"/docs/apps/launch/built-for-shopify/achievement-criteria"},"criteria-categories":{"label":"Category-specific achievement criteria","url":"/docs/apps/launch/built-for-shopify/category-achievement-criteria"},"annual_review":{"label":"Annual reviews","url":"/docs/apps/launch/built-for-shopify/annual-reviews"},"regain_status":{"label":"Regain lost status","url":"/docs/apps/launch/built-for-shopify/regain-lost-status"}}},"privacy-requirements":{"label":"Privacy requirements","url":"/docs/apps/launch/privacy-requirements"},"data_protection":{"label":"Work with protected customer data","url":"/docs/apps/launch/protected-customer-data"}}},"pricing_strategy_group":{"group_description":"Pricing strategy","links":{"overview":{"label":"About billing for your app","url":"/docs/apps/launch/billing"},"managed_pricing":{"label":"Managed pricing","url":"/docs/apps/launch/billing/managed-pricing"},"trials":{"label":"Offer free trials","url":"/docs/apps/launch/billing/offer-free-trials"},"subscriptions":{"label":"Subscription billing","children":{"overview":{"label":"About subscription billing","url":"/docs/apps/launch/billing/subscription-billing"},"time_based_subscription":{"label":"Create time-based subscriptions","url":"/docs/apps/launch/billing/subscription-billing/create-time-based-subscriptions"},"usage_based_subscription":{"label":"Create usage-based subscriptions","url":"/docs/apps/launch/billing/subscription-billing/create-usage-based-subscriptions"},"combine_time_usage_subscription":{"label":"Combine time and usage","url":"/docs/apps/launch/billing/subscription-billing/combine-time-and-usage"},"complex_pricing_models":{"label":"Complex pricing models","url":"/docs/apps/launch/billing/subscription-billing/complex-pricing-models"},"update_max_charge":{"label":"Update the maximum charge","url":"/docs/apps/launch/billing/subscription-billing/update-max-charge"},"subscription_discounts":{"label":"Offer subscription discounts","url":"/docs/apps/launch/billing/subscription-billing/offer-subscription-discounts"}}},"one_time":{"label":"Support one-time purchases","url":"/docs/apps/launch/billing/support-one-time-purchases"},"award_app_credits":{"label":"Award app credits","url":"/docs/apps/launch/billing/award-app-credits"},"refund_app_charges":{"label":"Refund app charges","url":"/docs/apps/launch/billing/refund-app-charges"},"view_charges_earnings":{"label":"View charges and earnings","url":"/docs/apps/launch/billing/view-charges-earnings"}}},"deployment_group":{"group_description":"Deployment","links":{"overview":{"label":"About deployment","url":"/docs/apps/launch/deployment"},"deploy_web":{"label":"Deploy a web app","children":{"overview":{"label":"Deploy to a hosting service","url":"/docs/apps/launch/deployment/deploy-web-app/deploy-to-hosting-service"},"fly":{"label":"Deploy to Fly.io","url":"/docs/apps/launch/deployment/deploy-web-app/deploy-to-fly"},"heroku":{"label":"Deploy to Heroku","url":"/docs/apps/launch/deployment/deploy-web-app/deploy-to-heroku"}}},"app_versions":{"label":"About app versions","url":"/docs/apps/launch/deployment/app-versions"},"deploy_app_versions":{"label":"Deploy and release app versions","url":"/docs/apps/launch/deployment/deploy-app-versions"},"ci_cd":{"label":"Deploy app components in a CD pipeline","url":"/docs/apps/launch/deployment/deploy-in-ci-cd-pipeline"}}},"reaching_customers_group":{"group_description":"Reaching customers","links":{"overview":{"label":"About app distribution","url":"/docs/apps/launch/distribution"},"distribution_method":{"label":"Select a distribution method","url":"/docs/apps/launch/distribution/select-distribution-method"},"support_customers":{"label":"Support your customers","url":"/docs/apps/launch/distribution/support-your-customers"},"sunsetting":{"label":"Sunsetting your app","url":"/docs/apps/launch/distribution/sunsetting-your-app"},"go_to_market_success":{"label":"Go-to-market success","url":"/docs/apps/launch/distribution/go-to-market-success"},"track_app_usage":{"label":"Track app usage","url":"/docs/apps/launch/distribution/track-app-usage"},"app_listing_visibility":{"label":"App listing visibility","url":"/docs/apps/launch/distribution/visibility"},"revenue_share":{"label":"App revenue share","url":"/docs/apps/launch/distribution/revenue-share"}}},"app_store_review_group":{"group_description":"Shopify app store review","links":{"overview":{"label":"About the Shopify App Store","url":"/docs/apps/launch/app-store-review"},"review":{"label":"About the app review process","url":"/docs/apps/launch/app-store-review/review-process"},"submit":{"label":"Submit your app for review","url":"/docs/apps/launch/app-store-review/submit-app-for-review"},"pass_review":{"label":"Pass app review","url":"/docs/apps/launch/app-store-review/pass-app-review"},"app_listing_categories":{"label":"App listing categories","url":"/docs/apps/launch/app-store-review/app-listing-categories"},"policy_violations":{"label":"Policy violations","url":"/docs/apps/launch/app-store-review/policy-violations"},"app_audits":{"label":"About app audits","url":"/docs/apps/launch/app-store-review/app-audits"}}},"marketing_app_group":{"group_description":"Marketing your app","links":{"overview":{"label":"About marketing your app","url":"/docs/apps/launch/marketing"},"release":{"label":"Write a press release","url":"/docs/apps/launch/marketing/write-press-release"},"brand":{"label":"Shopify brand assets","url":"/docs/apps/launch/marketing/shopify-brand-assets"},"tracking_listing_traffic":{"label":"Track your listing traffic","url":"/docs/apps/launch/marketing/track-listing-traffic"},"manage_review":{"label":"Manage app reviews","url":"/docs/apps/launch/marketing/manage-app-reviews"},"advertising":{"label":"Advertise in the Shopify App Store","children":{"overview":{"label":"About Shopify App Store ads","url":"/docs/apps/launch/marketing/advertising"},"start_advertising":{"label":"Start advertising","url":"/docs/apps/launch/marketing/advertising/start-advertising"},"create_ads":{"label":"Create ads","url":"/docs/apps/launch/marketing/advertising/create-ads"},"manage_ads":{"label":"Manage ads","url":"/docs/apps/launch/marketing/advertising/manage-ads"},"check_ad_performance":{"label":"Check ad performance","url":"/docs/apps/launch/marketing/advertising/check-ad-performance"},"ad_billing":{"label":"About ad billing","url":"/docs/apps/launch/marketing/advertising/ad-billing"},"ad_permissions":{"label":"About ad permissions","url":"/docs/apps/launch/marketing/advertising/permissions"},"ads_faq":{"label":"Ads FAQ","url":"/docs/apps/launch/marketing/advertising/faq"}}}}}},"storefronts_themes":{"heading":"Themes","getting_started_group":{"group_description":"Getting started","links":{"themes":{"label":"Overview","url":"/docs/storefronts/themes"},"getting_started":{"label":"Getting started","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/getting-started"},"create":{"label":"Create a theme","url":"/docs/storefronts/themes/getting-started/create"},"customize":{"label":"Customize a theme","url":"/docs/storefronts/themes/getting-started/customize"}}},"architecture":{"label":"Architecture","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture"},"layouts":{"label":"Layouts","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture/layouts"},"checkout_liquid":{"label":"checkout.liquid","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture/layouts/checkout-liquid"},"customize_checkout":{"label":"Customize checkout.liquid","url":"/docs/storefronts/themes/architecture/layouts/checkout-liquid/customize-checkout"},"checkout_css":{"label":"Checkout CSS","url":"/docs/storefronts/themes/architecture/layouts/checkout-liquid/checkout-css"}}}}},"templates":{"label":"Templates","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture/templates"},"json_templates":{"label":"JSON templates","url":"/docs/storefronts/themes/architecture/templates/json-templates"},"404":{"label":404,"url":"/docs/storefronts/themes/architecture/templates/404"},"article":{"label":"article","url":"/docs/storefronts/themes/architecture/templates/article"},"blog":{"label":"blog","url":"/docs/storefronts/themes/architecture/templates/blog"},"cart":{"label":"cart","url":"/docs/storefronts/themes/architecture/templates/cart"},"collection":{"label":"collection","url":"/docs/storefronts/themes/architecture/templates/collection"},"customers_account":{"label":"customers/account","url":"/docs/storefronts/themes/architecture/templates/customers-account"},"customers_activate_account":{"label":"customers/activate_account","url":"/docs/storefronts/themes/architecture/templates/customers-activate-account"},"customers_addresses":{"label":"customers/addresses","url":"/docs/storefronts/themes/architecture/templates/customers-addresses"},"customers_login":{"label":"customers/login","url":"/docs/storefronts/themes/architecture/templates/customers-login"},"customers_order":{"label":"customers/order","url":"/docs/storefronts/themes/architecture/templates/customers-order"},"customers_register":{"label":"customers/register","url":"/docs/storefronts/themes/architecture/templates/customers-register"},"customers_reset_password":{"label":"customers/reset_password","url":"/docs/storefronts/themes/architecture/templates/customers-reset-password"},"gift_card_liquid":{"label":"gift_card.liquid","url":"/docs/storefronts/themes/architecture/templates/gift-card-liquid"},"index":{"label":"index","url":"/docs/storefronts/themes/architecture/templates/index-template"},"list_collections":{"label":"list-collections","url":"/docs/storefronts/themes/architecture/templates/list-collections"},"metaobject":{"label":"metaobject","url":"/docs/storefronts/themes/architecture/templates/metaobject"},"page":{"label":"page","url":"/docs/storefronts/themes/architecture/templates/page"},"password":{"label":"password","url":"/docs/storefronts/themes/architecture/templates/password"},"product":{"label":"product","url":"/docs/storefronts/themes/architecture/templates/product"},"robots_txt_liquid":{"label":"robots.txt.liquid","url":"/docs/storefronts/themes/architecture/templates/robots-txt-liquid"},"search":{"label":"search","url":"/docs/storefronts/themes/architecture/templates/search"}}},"sections":{"label":"Sections","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture/sections"},"section_schema":{"label":"Section schema","url":"/docs/storefronts/themes/architecture/sections/section-schema"},"section_assets":{"label":"Section assets","url":"/docs/storefronts/themes/architecture/sections/section-assets"},"integrate_sections_with_the_theme_editor":{"label":"Integrate with the theme editor","url":"/docs/storefronts/themes/architecture/sections/integrate-sections-with-the-theme-editor"}}},"blocks":{"label":"Blocks","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture/blocks"},"section_blocks":{"label":"Section blocks","url":"/docs/storefronts/themes/architecture/blocks/section-blocks"},"theme_blocks":{"label":"Theme blocks","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture/blocks/theme-blocks"},"schema":{"label":"Block schema","url":"/docs/storefronts/themes/architecture/blocks/theme-blocks/schema"},"static":{"label":"Static Blocks","url":"/docs/storefronts/themes/architecture/blocks/theme-blocks/static-blocks"},"dynamic_sources":{"label":"Dynamic sources","url":"/docs/storefronts/themes/architecture/blocks/theme-blocks/dynamic-sources"},"developer_preview":{"feature_flag_disabled":"theme_blocks_ga","label":"Developer preview","url":"/docs/storefronts/themes/architecture/blocks/theme-blocks/developer-preview"}}},"app_blocks":{"label":"App blocks","url":"/docs/storefronts/themes/architecture/blocks/app-blocks"}}},"section_groups":{"label":"Section groups","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture/section-groups"},"migrate":{"label":"Migrate","url":"/docs/storefronts/themes/architecture/section-groups/migrate"}}},"config":{"label":"Config","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture/config"},"settings_schema_json":{"label":"settings_schema.json","url":"/docs/storefronts/themes/architecture/config/settings-schema-json"},"settings_data_json":{"label":"settings_data.json","url":"/docs/storefronts/themes/architecture/config/settings-data-json"}}},"locales":{"label":"Locales","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture/locales"},"schema_locale_files":{"label":"Schema locale files","url":"/docs/storefronts/themes/architecture/locales/schema-locale-files"},"storefront_locale_files":{"label":"Storefront locale files","url":"/docs/storefronts/themes/architecture/locales/storefront-locale-files"}}},"settings":{"label":"Settings","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/architecture/settings"},"input_settings":{"label":"Input settings","url":"/docs/storefronts/themes/architecture/settings/input-settings"},"style_settings":{"label":"Style settings","url":"/docs/storefronts/themes/architecture/settings/style-settings"},"sidebar_settings":{"label":"Sidebar settings","url":"/docs/storefronts/themes/architecture/settings/sidebar-settings"},"dynamic_sources":{"label":"Dynamic sources","url":"/docs/storefronts/themes/architecture/settings/dynamic-sources"},"fonts":{"label":"Fonts","url":"/docs/storefronts/themes/architecture/settings/fonts"},"deprecated_settings":{"label":"Deprecated settings","url":"/docs/storefronts/themes/architecture/settings/deprecated-settings"}}}}},"tools":{"label":"Developer tools","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/tools"},"cli":{"label":"CLI","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/tools/cli"},"ci_cd":{"label":"CI/CD","url":"/docs/storefronts/themes/tools/cli/ci-cd"},"commands":{"label":"Commands","url":"/docs/api/shopify-cli/theme","stepIn":true,"force_in_new_tab":true},"language_server":{"label":"Language Server","url":"/docs/storefronts/themes/tools/cli/language-server"},"environments":{"label":"Environments","url":"/docs/storefronts/themes/tools/cli/environments"},"migrate":{"label":"Migrate","url":"/docs/storefronts/themes/tools/cli/migrate"},"cli_2":{"label":"CLI 2.x","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/tools/cli/cli-2"},"commands":{"label":"Commands","url":"/docs/storefronts/themes/tools/cli/cli-2/commands"},"upgrade-uninstall":{"label":"Install, upgrade, or uninstall","url":"/docs/storefronts/themes/tools/cli/cli-2/upgrade-uninstall"}}}}},"github_integration":{"label":"GitHub integration","url":"/docs/storefronts/themes/tools/github"},"vscode":{"label":"VS Code extension","url":"/docs/storefronts/themes/tools/shopify-liquid-vscode"},"prettier_plugin":{"label":"Prettier plugin","url":"/docs/storefronts/themes/tools/liquid-prettier-plugin"},"theme_check":{"label":"Theme Check","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/tools/theme-check"},"commands":{"label":"Commands","url":"/docs/storefronts/themes/tools/theme-check/commands"},"configuration":{"label":"Configuration","url":"/docs/storefronts/themes/tools/theme-check/configuration"},"checks_reference":{"label":"Checks reference","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/tools/theme-check/checks"},"app_block_valid_tags":{"label":"AppBlockValidTags","url":"/docs/storefronts/themes/tools/theme-check/checks/app-block-valid-tags"},"asset_preload":{"label":"AssetPreload","url":"/docs/storefronts/themes/tools/theme-check/checks/asset-preload"},"asset_size_app_block_css":{"label":"AssetSizeAppBlockCSS","url":"/docs/storefronts/themes/tools/theme-check/checks/asset-size-app-block-css"},"asset_size_app_block_javascript":{"label":"AssetSizeAppBlockJavascript","url":"/docs/storefronts/themes/tools/theme-check/checks/asset-size-app-block-javascript"},"asset_size_css":{"label":"AssetSizeCSS","url":"/docs/storefronts/themes/tools/theme-check/checks/asset-size-css"},"asset_size_javascript":{"label":"AssetSizeJavascript","url":"/docs/storefronts/themes/tools/theme-check/checks/asset-size-javascript"},"block_id_usage":{"label":"BlockIdUsage","url":"/docs/storefronts/themes/tools/theme-check/checks/block-id-usage"},"capture_on_content_for_block":{"label":"CaptureOnContentForBlock","url":"/docs/storefronts/themes/tools/theme-check/checks/capture-on-content-for-block"},"cdn_preconnect":{"label":"CdnPreconnect","url":"/docs/storefronts/themes/tools/theme-check/checks/cdn-preconnect"},"content_for_header_modification":{"label":"ContentForHeaderModification","url":"/docs/storefronts/themes/tools/theme-check/checks/content-for-header-modification"},"deprecate_bgsizes":{"label":"DeprecateBgsizes","url":"/docs/storefronts/themes/tools/theme-check/checks/deprecate-bgsizes"},"deprecate_lazysizes":{"label":"DeprecateLazysizes","url":"/docs/storefronts/themes/tools/theme-check/checks/deprecate-lazysizes"},"deprecated_filter":{"label":"DeprecatedFilter","url":"/docs/storefronts/themes/tools/theme-check/checks/deprecated-filter"},"deprecated_tag":{"label":"DeprecatedTag","url":"/docs/storefronts/themes/tools/theme-check/checks/deprecated-tag"},"img_width_and_height":{"label":"ImgWidthAndHeight","url":"/docs/storefronts/themes/tools/theme-check/checks/img-width-and-height"},"json_syntax_error":{"label":"JSONSyntaxError","url":"/docs/storefronts/themes/tools/theme-check/checks/json-syntax-error"},"liquid_html_syntax_error":{"label":"LiquidHTMLSyntaxError","url":"/docs/storefronts/themes/tools/theme-check/checks/liquid-html-syntax-error"},"matching_translations":{"label":"MatchingTranslations","url":"/docs/storefronts/themes/tools/theme-check/checks/matching-translations"},"matching_schema_translations":{"label":"MatchingSchemaTranslations","url":"/docs/storefronts/themes/tools/theme-check/checks/matching-schema-translations"},"missing_asset":{"label":"MissingAsset","url":"/docs/storefronts/themes/tools/theme-check/checks/missing-asset"},"missing_template":{"label":"MissingTemplate","url":"/docs/storefronts/themes/tools/theme-check/checks/missing-template"},"pagination_size":{"label":"PaginationSize","url":"/docs/storefronts/themes/tools/theme-check/checks/pagination-size"},"parser_blocking_javascript":{"label":"ParserBlockingJavaScript","url":"/docs/storefronts/themes/tools/theme-check/checks/parser-blocking-javascript"},"remote_asset":{"label":"RemoteAsset","url":"/docs/storefronts/themes/tools/theme-check/checks/remote-asset"},"required_layout_theme_object":{"label":"RequiredLayoutThemeObject","url":"/docs/storefronts/themes/tools/theme-check/checks/required-layout-theme-object"},"translation_key_exists":{"label":"TranslationKeyExists","url":"/docs/storefronts/themes/tools/theme-check/checks/translation-key-exists"},"unclosed_html_element":{"label":"UnclosedHTMLElement","url":"/docs/storefronts/themes/tools/theme-check/checks/unclosed-html-element"},"undefined_object":{"label":"UndefinedObject","url":"/docs/storefronts/themes/tools/theme-check/checks/undefined-object"},"unique_static_block_id":{"label":"UniqueStaticBlockId","url":"/docs/storefronts/themes/tools/theme-check/checks/unique-static-block-id"},"unknown_filter":{"label":"UnknownFilter","url":"/docs/storefronts/themes/tools/theme-check/checks/unknown-filter"},"unused_assign":{"label":"UnusedAssign","url":"/docs/storefronts/themes/tools/theme-check/checks/unused-assign"},"valid_block_target":{"label":"ValidBlockTarget","url":"/docs/storefronts/themes/tools/theme-check/checks/valid-block-target"},"valid_content_for_arguments":{"label":"ValidContentForArguments","url":"/docs/storefronts/themes/tools/theme-check/checks/valid-content-for-arguments"},"valid_html_translation":{"label":"ValidHTMLTranslation","url":"/docs/storefronts/themes/tools/theme-check/checks/valid-html-translation"},"valid_local_blocks":{"label":"ValidLocalBlocks","url":"/docs/storefronts/themes/tools/theme-check/checks/valid-local-blocks"},"valid_schema":{"label":"ValidSchema","url":"/docs/storefronts/themes/tools/theme-check/checks/valid-schema"},"valid_schema-name":{"label":"ValidSchemaName","url":"/docs/storefronts/themes/tools/theme-check/checks/valid-schema-name"},"valid_static_block_type":{"label":"ValidStaticBlockType","url":"/docs/storefronts/themes/tools/theme-check/checks/valid-static-block-type"},"variable_name":{"label":"VariableName","url":"/docs/storefronts/themes/tools/theme-check/checks/variable-name"}}},"migrate":{"label":"Migrate","url":"/docs/storefronts/themes/tools/theme-check/migrate"}}},"online_editor":{"label":"Theme editor","url":"/docs/storefronts/themes/tools/online-editor"},"code_editor":{"label":"Code editor","url":"/docs/storefronts/themes/tools/code-editor"},"theme_access":{"label":"Theme Access app","url":"/docs/storefronts/themes/tools/theme-access"},"development_stores":{"label":"Development stores","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/tools/development-stores"},"test-data":{"label":"Test data","url":"/docs/storefronts/themes/tools/development-stores/generated-data"},"transfer":{"label":"Transfer a development store","url":"/docs/storefronts/themes/tools/development-stores/transfer-development-stores"}}},"collaborator_accounts":{"label":"Collaborator accounts","url":"/docs/storefronts/themes/tools/collaborator-accounts"},"theme_inspector":{"label":"Theme Inspector","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/tools/theme-inspector"},"using":{"label":"Optimizing themes using Theme Inspector","url":"/docs/storefronts/themes/tools/theme-inspector/using-the-theme-inspector"}}},"lighthouse_ci":{"label":"Lighthouse CI","url":"/docs/storefronts/themes/tools/lighthouse-ci"},"dawn":{"label":"Dawn","url":"/docs/storefronts/themes/tools/dawn"}}},"best_practices":{"label":"Best practices","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/best-practices"},"templates_sections_blocks":{"label":"Sections and blocks","url":"/docs/storefronts/themes/best-practices/templates-sections-blocks"},"performance":{"label":"Performance","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/best-practices/performance"},"cdn":{"label":"Platform","url":"/docs/storefronts/themes/best-practices/performance/platform"}}},"accessibility":{"label":"Accessibility","url":"/docs/storefronts/themes/best-practices/accessibility"},"theme_editor_preview_inspector":{"label":"Theme editor preview inspector","url":"/docs/storefronts/themes/best-practices/theme-editor-preview-inspector"},"design":{"label":"Design","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/best-practices/design"},"color_system":{"label":"Color system","url":"/docs/storefronts/themes/best-practices/design/color-system"}}},"merchant_stores":{"label":"Merchant stores","url":"/docs/storefronts/themes/best-practices/merchant-stores"},"version_control":{"label":"Version control","url":"/docs/storefronts/themes/best-practices/version-control"},"file_transformation":{"label":"File transformation","url":"/docs/storefronts/themes/best-practices/file-transformation"},"deceptive_code":{"label":"Deceptive code","url":"/docs/storefronts/themes/best-practices/deceptive-code"}}}}},"theme_features_group":{"group_description":"Theme features","links":{"app_extensions":{"label":"Integrating apps","url":"/docs/apps/online-store"},"product_merchandising":{"label":"Product merchandising","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/product-merchandising"},"variants":{"label":"Product variants","children":{"variants":{"label":"Overview","url":"/docs/storefronts/themes/product-merchandising/variants"},"support-high-variant-products":{"label":"Support high-variant products","url":"/docs/storefronts/themes/product-merchandising/variants/support-high-variant-products"}}},"recommendations":{"label":"Product recommendations","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/product-merchandising/recommendations"},"related":{"label":"Related products","url":"/docs/storefronts/themes/product-merchandising/recommendations/related-products"},"complementary":{"label":"Complementary products","url":"/docs/storefronts/themes/product-merchandising/recommendations/complementary-products"}}},"media":{"label":"Media and images","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/product-merchandising/media"},"support_media":{"label":"Support product media","url":"/docs/storefronts/themes/product-merchandising/media/support-media"},"media_ux":{"label":"Product media UX guidelines","url":"/docs/storefronts/themes/product-merchandising/media/media-ux"}}},"gift_cards":{"label":"Gift cards","url":"/docs/storefronts/themes/product-merchandising/gift-cards"}}},"pricing_payments":{"label":"Pricing and payments","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/pricing-payments"},"discounts":{"label":"Discounts","url":"/docs/storefronts/themes/pricing-payments/discounts"},"subscriptions":{"label":"Subscriptions","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/pricing-payments/subscriptions"},"support_subscriptions":{"label":"Add subscriptions to your theme","url":"/docs/storefronts/themes/pricing-payments/subscriptions/add-subscriptions-to-your-theme"},"subscriptions_ux":{"label":"Subscription UX guidelines","url":"/docs/storefronts/themes/pricing-payments/subscriptions/subscription-ux-guidelines"}}},"pre_orders_try_before_you_buy":{"label":"Pre-orders and Try Before You Buy","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/pricing-payments/preorder-tbyb"},"support_pre_orders_try_before_you_buy":{"label":"Add pre-orders and TBYB to your theme","url":"/docs/storefronts/themes/pricing-payments/preorder-tbyb/add-preorder-tbyb-to-your-theme"},"deferred_purchase_options_ux":{"label":"Pre-orders and TBYB UX guidelines","url":"/docs/storefronts/themes/pricing-payments/preorder-tbyb/preorder-tbyb-ux-guidelines"}}},"installments":{"label":"Shop Pay Installments","url":"/docs/storefronts/themes/pricing-payments/installments"},"accelerated_checkout":{"label":"Accelerated checkout","children":{"overview":{"label":"About accelerated checkout","url":"/docs/storefronts/themes/pricing-payments/accelerated-checkout"},"upgrade_accelerated_checkout":{"label":"Upgrade accelerated checkout","url":"/docs/storefronts/themes/pricing-payments/accelerated-checkout/upgrade-accelerated-checkout"}}},"b2b":{"label":"B2B","url":"/docs/storefronts/themes/pricing-payments/b2b"},"price_per_unit":{"label":"Unit pricing","url":"/docs/storefronts/themes/pricing-payments/unit-pricing"},"currency_formatting":{"label":"Explicit currency formatting","url":"/docs/storefronts/themes/pricing-payments/currency-formatting"}}},"delivery_fulfillment":{"label":"Delivery and fulfillment","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/delivery-fulfillment"},"pickup_availability":{"label":"Pickup availability","url":"/docs/storefronts/themes/delivery-fulfillment/pickup-availability"}}},"customer_engagement":{"label":"Customer engagement","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/customer-engagement"},"email_consent":{"label":"Email consent","url":"/docs/storefronts/themes/customer-engagement/email-consent"},"additional_customer_information":{"label":"Additional customer information","url":"/docs/storefronts/themes/customer-engagement/additional-customer-information"},"contact_form":{"label":"Add a contact form","url":"/docs/storefronts/themes/customer-engagement/add-contact-form"}}},"markets":{"label":"Markets","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/markets"},"multiple_currencies_languages":{"label":"Support multiple currencies and languages","url":"/docs/storefronts/themes/markets/multiple-currencies-languages"},"localization_discovery":{"label":"Detect and set a visitor’s optimal localization","url":"/docs/storefronts/themes/markets/localization-discovery"},"country_lang_selector_ux":{"label":"Country and language selector UX guidelines","url":"/docs/storefronts/themes/markets/country-language-ux"}}},"navigation_search":{"label":"Site navigation and search","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/navigation-search"},"navigation":{"label":"Navigation","url":"/docs/storefronts/themes/navigation-search/navigation"},"search":{"label":"Storefront search","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/navigation-search/search"},"predictive_search":{"label":"Predictive search","url":"/docs/storefronts/themes/navigation-search/search/predictive-search"},"predictive_search_ux":{"label":"Predictive search UX guidelines","url":"/docs/storefronts/themes/navigation-search/search/predictive-search-ux"}}},"filtering":{"label":"Filtering","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/navigation-search/filtering"},"storefront_filtering":{"label":"Storefront filtering","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/navigation-search/filtering/storefront-filtering"},"support_storefront_filtering":{"label":"Support storefront filtering","url":"/docs/storefronts/themes/navigation-search/filtering/storefront-filtering/support-storefront-filtering"},"storefront_filtering_ux":{"label":"Storefront filtering UX guidelines","url":"/docs/storefronts/themes/navigation-search/filtering/storefront-filtering/storefront-filtering-ux"}}},"tag_filtering":{"label":"Tag filtering","url":"/docs/storefronts/themes/navigation-search/filtering/tag-filtering"}}}}},"seo":{"label":"SEO","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/seo"},"metadata":{"label":"Metadata","url":"/docs/storefronts/themes/seo/metadata"},"hreflang_tags":{"label":"hreflang tags","url":"/docs/storefronts/themes/seo/hreflang"},"robots_txt":{"label":"robots.txt","url":"/docs/storefronts/themes/seo/robots-txt"}}},"trust_security":{"label":"Trust and security","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/trust-security"},"security_badge":{"label":"Security badges","url":"/docs/storefronts/themes/trust-security/security-badges"},"captcha":{"label":"Captcha","url":"/docs/storefronts/themes/trust-security/captcha"}}},"migration":{"label":"Migrating to Online Store 2.0","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/os20"},"assessment":{"label":"Assessment","url":"/docs/storefronts/themes/os20/assessment"},"migration":{"label":"Migration guide","url":"/docs/storefronts/themes/os20/migration"}}},"troubleshooting":{"label":"Troubleshooting","url":"/docs/storefronts/themes/troubleshooting"}}},"sell_themes_group":{"group_description":"Sell themes","links":{"theme-store":{"label":"Theme Store","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/store"},"requirements":{"label":"Requirements","url":"/docs/storefronts/themes/store/requirements"},"testing":{"label":"Testing","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/store/test-theme"},"assets":{"label":"Testing assets","url":"/docs/storefronts/themes/store/test-theme/assets"},"checklist":{"label":"Testing checklist","url":"/docs/storefronts/themes/store/test-theme/checklist"}}},"review-process":{"label":"Review process","children":{"submit":{"label":"Submitting a theme","url":"/docs/storefronts/themes/store/review-process/submit-theme"},"listings":{"label":"Theme Store listings","url":"/docs/storefronts/themes/store/review-process/listings"},"rejections":{"label":"Common theme rejections","url":"/docs/storefronts/themes/store/review-process/common-theme-rejections"}}},"success":{"label":"Theme success","children":{"overview":{"label":"Overview","url":"/docs/storefronts/themes/store/success"},"prohibited":{"label":"Prohibited actions","url":"/docs/storefronts/themes/store/success/prohibited-actions"},"reviews":{"label":"Managing theme reviews","url":"/docs/storefronts/themes/store/success/managing-theme-reviews"},"assets":{"label":"Brand asset guidance","url":"/docs/storefronts/themes/store/success/brand-assets"},"updates":{"label":"Updating your theme","url":"/docs/storefronts/themes/store/success/updates"},"sunset":{"label":"Removing a theme","url":"/docs/storefronts/themes/store/success/remove-theme"}}},"revenue-share":{"label":"Theme revenue share","url":"/docs/storefronts/themes/store/revenue-share"}}}}}},"storefronts_headless":{"heading":"Headless","getting_started_group":{"group_description":"Getting started","links":{"custom_storefronts":{"label":"Overview","url":"/docs/storefronts/headless"},"getting_started":{"label":"Getting started","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/getting-started"},"build_options":{"label":"Build options","url":"/docs/storefronts/headless/getting-started/build-options"}}}}},"hydrogen_oxygen_group":{"group_description":"Hydrogen and Oxygen","links":{"getting_started":{"label":"Getting started","url":"/docs/storefronts/headless/hydrogen/getting-started"},"structure":{"label":"Fundamentals","url":"/docs/storefronts/headless/hydrogen/fundamentals"},"analytics":{"label":"Analytics","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/hydrogen/analytics"},"consent":{"label":"Consent management","url":"/docs/storefronts/headless/hydrogen/analytics/consent"},"consent_3p":{"label":"Third-party consent services","url":"/docs/storefronts/headless/hydrogen/analytics/consent-3p"},"tracking":{"label":"Event tracking","url":"/docs/storefronts/headless/hydrogen/analytics/tracking"},"validation":{"label":"Validation and troubleshooting","url":"/docs/storefronts/headless/hydrogen/analytics/validation"}}},"cart":{"label":"Cart","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/hydrogen/cart"},"setup":{"label":"Set up a cart handler","url":"/docs/storefronts/headless/hydrogen/cart/setup"},"read":{"label":"Read cart data","url":"/docs/storefronts/headless/hydrogen/cart/read"},"items":{"label":"Manage cart line items","url":"/docs/storefronts/headless/hydrogen/cart/manage"},"metafields":{"label":"Update metafields","url":"/docs/storefronts/headless/hydrogen/cart/metafields"},"buyer-identity":{"label":"Update buyer identity","url":"/docs/storefronts/headless/hydrogen/cart/buyer-identity"},"notes":{"label":"Update notes","url":"/docs/storefronts/headless/hydrogen/cart/notes"},"attributes":{"label":"Update attributes","url":"/docs/storefronts/headless/hydrogen/cart/attributes"},"discount-codes":{"label":"Update discount codes","url":"/docs/storefronts/headless/hydrogen/cart/discount-codes"},"selected-delivery-options":{"label":"Update selected delivery options","url":"/docs/storefronts/headless/hydrogen/cart/selected-delivery-options"},"customize-cart-handler":{"label":"Customize cart handler methods","url":"/docs/storefronts/headless/hydrogen/cart/customize-cart-handler"},"variants":{"label":"Variant selector form","url":"/docs/storefronts/headless/hydrogen/cart/variant-selector"},"render-client-side":{"label":"Client-rendering carts","url":"/docs/storefronts/headless/hydrogen/cart/render-client-side"}}},"csp":{"label":"Content security policy","url":"/docs/storefronts/headless/hydrogen/content-security-policy"},"data_fetching":{"label":"Data fetching","children":{"fetch_data":{"label":"Shopify API data","url":"/docs/storefronts/headless/hydrogen/data-fetching"},"fetch_data_3p":{"label":"Third-party API data","url":"/docs/storefronts/headless/hydrogen/data-fetching/third-party"},"pagination":{"label":"Pagination","url":"/docs/storefronts/headless/hydrogen/data-fetching/pagination"},"graphiql":{"label":"GraphiQL","url":"/docs/storefronts/headless/hydrogen/data-fetching/graphiql"}}},"caching":{"label":"Caching","children":{"first_party":{"label":"Shopify API data","url":"/docs/storefronts/headless/hydrogen/caching"},"third_party":{"label":"Third-party data","url":"/docs/storefronts/headless/hydrogen/caching/third-party"},"full_page_cache":{"label":"Full-page cache","url":"/docs/storefronts/headless/hydrogen/caching/full-page-cache"}}},"i18n_h2":{"label":"Markets","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/hydrogen/markets"},"defaults":{"label":"Default locale","url":"/docs/storefronts/headless/hydrogen/markets/default-locale"},"subpaths2":{"label":"Multiple languages with URL paths","url":"/docs/storefronts/headless/hydrogen/markets/multiple-languages-url-paths"},"domains":{"label":"Multiple languages with domains","url":"/docs/storefronts/headless/hydrogen/markets/multiple-languages-domains"},"country":{"label":"Country selector","url":"/docs/storefronts/headless/hydrogen/markets/country-selector"},"detect":{"label":"Locale detection","url":"/docs/storefronts/headless/hydrogen/markets/locale-detection"}}},"seo":{"label":"SEO","url":"/docs/storefronts/headless/hydrogen/seo"},"storefronts":{"label":"Storefronts","url":"/docs/storefronts/headless/hydrogen/storefronts"},"environments":{"label":"Environments","url":"/docs/storefronts/headless/hydrogen/environments"},"deployments":{"label":"Deployments","children":{"oxygen":{"label":"Overview","url":"/docs/storefronts/headless/hydrogen/deployments"},"github":{"label":"CI/CD with GitHub","url":"/docs/storefronts/headless/hydrogen/deployments/github"},"custom_ci_cd":{"label":"Custom CI/CD","url":"/docs/storefronts/headless/hydrogen/deployments/custom-ci-cd"},"runtime":{"label":"Oxygen runtime","url":"/docs/storefronts/headless/hydrogen/deployments/oxygen-runtime"},"self_hosting":{"label":"Self-hosting Hydrogen","url":"/docs/storefronts/headless/hydrogen/deployments/self-hosting"}}},"debugging":{"label":"Debugging and testing","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/hydrogen/debugging"},"error_console":{"label":"Error console","url":"/docs/storefronts/headless/hydrogen/debugging/error-console"},"server_code":{"label":"Attach a debugger","url":"/docs/storefronts/headless/hydrogen/debugging/server-code"},"bundle_size":{"label":"Inspect your bundle size","url":"/docs/storefronts/headless/hydrogen/debugging/bundle-size"},"cpu_startup":{"label":"Measure CPU startup time","url":"/docs/storefronts/headless/hydrogen/debugging/cpu-startup"},"subrequest_profiler":{"label":"Profile data requests","url":"/docs/storefronts/headless/hydrogen/debugging/subrequest-profiler"},"e2e_testing":{"label":"End-to-end testing","url":"/docs/storefronts/headless/hydrogen/debugging/end-to-end-testing"},"log_drains":{"label":"Log drains","url":"/docs/storefronts/headless/hydrogen/logging"}}},"performance":{"label":"Performance","children":{"data_loading":{"label":"Data loading","url":"/docs/storefronts/headless/hydrogen/performance/data-loading"},"on_page_optimizations":{"label":"On-page optimizations","url":"/docs/storefronts/headless/hydrogen/performance/on-page-optimizations"}}},"migrate_upgrade":{"label":"Migrate and upgrade","children":{"migrate":{"label":"Migrate from Online Store","url":"/docs/storefronts/headless/hydrogen/migrate"},"redirects":{"label":"Redirect traffic from Online Store","url":"/docs/storefronts/headless/hydrogen/migrate/redirect-traffic"},"upgrade":{"label":"Upgrade Hydrogen 1 to 2 with Remix","url":"https://shopify.github.io/hydrogen-v1/migrate","force_in_new_tab":true}}},"checklist":{"label":"Production checklist","url":"/docs/storefronts/headless/hydrogen/production-checklist"},"shopify-cli":{"label":"Hydrogen CLI commands","url":"/docs/api/shopify-cli/hydrogen","stepIn":true,"force_in_new_tab":true},"hydrogen_reference":{"label":"Hydrogen API reference","url":"/docs/api/hydrogen","stepIn":true,"force_in_new_tab":true}}},"mobile_commerce_group":{"group_description":"Mobile commerce","links":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/mobile-apps"},"android":{"label":"Android Buy SDK","url":"/docs/storefronts/headless/mobile-apps/buy-sdk-android"},"ios":{"label":"iOS Buy SDK","url":"/docs/storefronts/headless/mobile-apps/buy-sdk-ios"}}},"bring_your_own_stack_group":{"group_description":"Bring your own stack","links":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/bring-your-own-stack"},"b2b":{"label":"Headless with B2B","url":"/docs/storefronts/headless/bring-your-own-stack/b2b"}}},"headless_api_group":{"group_description":"Headless APIs","links":{"storefront_api":{"label":"Building with the Storefront API","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/building-with-the-storefront-api/"},"getting_started":{"label":"Getting started","url":"/docs/storefronts/headless/building-with-the-storefront-api/getting-started"},"manage_headless":{"label":"Managing Headless channels","url":"/docs/storefronts/headless/building-with-the-storefront-api/manage-headless-channels"},"api_exploration":{"label":"API exploration","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/building-with-the-storefront-api/api-exploration"},"graphiql":{"label":"GraphiQL Storefront API explorer","url":"/docs/storefronts/headless/building-with-the-storefront-api/api-exploration/graphiql-storefront-api"},"learning_kit":{"label":"Storefront API learning kit","url":"https://github.com/Shopify/storefront-api-learning-kit"}}},"products":{"label":"Products and collections","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/building-with-the-storefront-api/products-collections/"},"getting-started":{"label":"Getting started","url":"/docs/storefronts/headless/building-with-the-storefront-api/products-collections/getting-started"},"filtering":{"label":"Product filtering","url":"/docs/storefronts/headless/building-with-the-storefront-api/products-collections/filter-products"},"metafields":{"label":"Metafields","url":"/docs/storefronts/headless/building-with-the-storefront-api/products-collections/metafields"},"local_pickup":{"label":"Local pickup","url":"/docs/storefronts/headless/building-with-the-storefront-api/products-collections/local-pickup"},"subscriptions":{"label":"Subscriptions","url":"/docs/storefronts/headless/building-with-the-storefront-api/products-collections/subscriptions"}}},"search":{"label":"Search and discovery","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/building-with-the-storefront-api/search-discovery"},"search_tracking":{"label":"Set up search tracking","url":"/docs/storefronts/headless/building-with-the-storefront-api/search-discovery/search-tracking"}}},"i18n":{"label":"Markets","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/building-with-the-storefront-api/markets/"},"international_pricing":{"label":"International pricing","url":"/docs/storefronts/headless/building-with-the-storefront-api/markets/international-pricing"},"multiple_languages":{"label":"Multiple languages","url":"/docs/storefronts/headless/building-with-the-storefront-api/markets/multiple-languages"}}},"cart":{"label":"Cart","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/building-with-the-storefront-api/cart"},"manage":{"label":"Create and update a cart","url":"/docs/storefronts/headless/building-with-the-storefront-api/cart/manage"},"migrate":{"label":"Migrate to the Cart API","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/building-with-the-storefront-api/cart/migrate-to-cart-api"},"migrate_cart":{"label":"Migrate your app","url":"/docs/storefronts/headless/building-with-the-storefront-api/cart/migrate-to-cart-api/migrate-your-app"}}}}},"customer_accounts":{"label":"Customers","url":"/docs/storefronts/headless/building-with-the-storefront-api/customer-accounts"},"defer_directive":{"label":"Prioritizing data in your query","url":"/docs/storefronts/headless/building-with-the-storefront-api/defer"},"release_notes":{"label":"Release notes","url":"/docs/api/release-notes/latest#graphql-storefront-api-changes","force_in_new_tab":true},"api_reference":{"label":"Storefront API reference","url":"/docs/api/storefront","stepIn":true,"force_in_new_tab":true}}},"customer_account_api":{"label":"Building with the Customer Account API","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/building-with-the-customer-account-api/"},"getting_started":{"label":"Getting started","url":"/docs/storefronts/headless/building-with-the-customer-account-api/getting-started"},"using_customer_account_api_with_hydrogen":{"label":"Using Customer Account API with Hydrogen","url":"/docs/storefronts/headless/building-with-the-customer-account-api/hydrogen"},"customers":{"label":"Customers","url":"/docs/storefronts/headless/building-with-the-customer-account-api/customer-accounts"},"api_reference":{"label":"Customer Account API reference","url":"/docs/api/customer","stepIn":true,"force_in_new_tab":true}}},"additional_kits":{"label":"Additional SDKs","children":{"overview":{"label":"Overview","url":"/docs/storefronts/headless/additional-sdks"},"web_sdks":{"label":"Web SDKs","children":{"storefront_api_client":{"label":"Storefront API Client","url":"https://github.com/Shopify/shopify-app-js/tree/main/packages/api-clients/storefront-api-client"},"buy_button_js":{"label":"Buy Button JS","url":"/docs/storefronts/headless/additional-sdks/buy-button"},"js_buy":{"label":"JS Buy SDK","url":"/docs/storefronts/headless/additional-sdks/js-buy"},"web_components":{"label":"Web Components","url":"/docs/storefronts/headless/additional-sdks/web-components"}}},"server_backend_sdks":{"label":"Backend SDKs","children":{"node":{"label":"Node.js client library","url":"https://github.com/Shopify/shopify-api-node"},"php":{"label":"PHP client library","url":"https://github.com/Shopify/shopify-api-php"},"ruby":{"label":"Ruby client library","url":"https://github.com/Shopify/shopify-api-ruby"}}}}}}}},"api":{"heading":"APIs and references","overview_tools_group":{"group_description":"Overview and tools","links":{"api":{"label":"APIs, libraries, and tools","url":"/docs/api"},"shopify_app_remix":{"label":"Remix app package","stepIn":true,"url":"/docs/api/shopify-app-remix"},"cli":{"label":"Shopify CLI","url":"/docs/api/shopify-cli","stepIn":true},"github_app":{"label":"Shopify GitHub app","url":"/docs/api/github-app"},"dev_stores":{"label":"Dev stores","children":{"overview":{"label":"About dev stores","url":"/docs/api/development-stores"},"test_data":{"label":"Generated test data","url":"/docs/api/development-stores/generated-test-data"}}},"usage":{"label":"Shopify APIs","children":{"overview":{"label":"About Shopify APIs","url":"/docs/api/usage"},"authentication":{"label":"Authentication","url":"/docs/api/usage/authentication"},"access_scopes":{"label":"Access scopes","url":"/docs/api/usage/access-scopes"},"api_exploration":{"label":"API exploration","children":{"admin-graphiql-explorer":{"label":"Admin GraphiQL Explorer","url":"/docs/api/usage/api-exploration/admin-graphiql-explorer"},"storefront-graphiql-explorer":{"label":"Storefront GraphiQL Explorer","url":"/docs/api/usage/api-exploration/storefront-graphiql-explorer"}}},"versioning":{"label":"Versioning","children":{"overview":{"label":"About versioning","url":"/docs/api/usage/versioning"},"updates":{"label":"Getting updates","url":"/docs/api/usage/versioning/updates"},"api-health-report":{"label":"API health report","url":"/docs/api/usage/versioning/api-health"}}},"gids":{"label":"Global IDs","url":"/docs/api/usage/gids"},"rate_limit":{"label":"Rate limits","url":"/docs/api/usage/rate-limits"},"search_syntax":{"label":"Search syntax","url":"/docs/api/usage/search-syntax"},"response_codes":{"label":"Response status codes","url":"/docs/api/usage/response-codes"},"idempotent_request":{"label":"Idempotent requests","url":"/docs/api/usage/idempotent-requests"},"bulk":{"label":"Bulk operations","children":{"query":{"label":"Exports and queries","url":"/docs/api/usage/bulk-operations/queries"},"mutation":{"label":"Imports and mutations","url":"/docs/api/usage/bulk-operations/imports"}}},"pagination":{"label":"About GraphQL pagination","url":"/docs/api/usage/pagination-graphql"}}},"release_notes":{"label":"API version release notes","children":{"overview":{"label":"About the release notes","url":"/docs/api/release-notes"},"developer_previews":{"label":"Developer previews","url":"/docs/api/release-notes/developer-previews"},"2025-01":{"label":"2025-01 (release candidate)","url":"/docs/api/release-notes/2025-01"},"2024-10":{"label":"2024-10","url":"/docs/api/release-notes/2024-10"},"2024-07":{"label":"2024-07","url":"/docs/api/release-notes/2024-07"},"2024-04":{"label":"2024-04","url":"/docs/api/release-notes/2024-04"},"2024-01":{"label":"2024-01","url":"/docs/api/release-notes/2024-01"},"previous_versions":{"label":"Previous versions","url":"/docs/api/release-notes/previous-versions"}}}}},"app_data_logic_group":{"group_description":"App data and logic","links":{"graphql_admin":{"label":"GraphQL Admin API","stepIn":true,"url":"/docs/api/admin-graphql"},"shopify_functions":{"label":"Shopify Functions","children":{"overview":{"label":"About Shopify Functions APIs","url":"/docs/api/functions"},"shopifyvm_apis":{"label":"API references","children":{"cart_checkout_validation":{"label":"Cart and Checkout Validation API","children":{"overview":{"label":"About the Cart and Checkout Validation API","url":"/docs/api/functions/reference/cart-checkout-validation"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/cart-checkout-validation/graphql"}}},"cart_transform":{"label":"Cart Transform API","children":{"overview":{"label":"About the Cart Transform API","url":"/docs/api/functions/reference/cart-transform"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/cart-transform/graphql"}}},"pickup_point_delivery_option_generator":{"label":"Pickup Point Delivery Option Generator API","children":{"overview":{"label":"About the Pickup Point Delivery Option Generator API","url":"/docs/api/functions/reference/pickup-point-delivery-option-generator"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/pickup-point-delivery-option-generator/graphql"}}},"delivery_customization":{"label":"Delivery Customization API","children":{"overview":{"label":"About the Delivery Customization API","url":"/docs/api/functions/reference/delivery-customization"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/delivery-customization/graphql"}}},"disc":{"label":"Discounts APIs","children":{"order_discounts":{"label":"Order Discount API","children":{"overview":{"label":"About the Order Discount API","url":"/docs/api/functions/reference/order-discounts"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/order-discounts/graphql"}}},"product_discounts":{"label":"Product Discount API","children":{"overview":{"label":"About the Product Discount API","url":"/docs/api/functions/reference/product-discounts"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/product-discounts/graphql"}}},"shipping_discounts":{"label":"Shipping Discount API","children":{"overview":{"label":"About the Shipping Discount Function","url":"/docs/api/functions/reference/shipping-discounts"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/shipping-discounts/graphql"}}},"discounts_allocator":{"label":"Discounts Allocator API","children":{"overview":{"label":"About the Discounts Allocator API","url":"/docs/api/functions/reference/discounts-allocator"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/discounts-allocator/graphql"}}}}},"fulfillment_constraints":{"label":"Fulfillment Constraints API","children":{"overview":{"label":"About the Fulfillment Constraints API","url":"/docs/api/functions/reference/fulfillment-constraints"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/fulfillment-constraints/graphql"}}},"local_pickup_delivery_option_generator":{"label":"Local Pickup Delivery Option Generator API","children":{"overview":{"label":"About the Local Pickup Delivery Option Generator API","url":"/docs/api/functions/reference/local-pickup-delivery-option-generator"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/local-pickup-delivery-option-generator/graphql"}}},"order_routing_location_rule":{"label":"Order Routing Location Rule API","children":{"overview":{"label":"About the Order Routing Location Rule API","url":"/docs/api/functions/reference/order-routing-location-rule"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/order-routing-location-rule/graphql"}}},"payment_customization":{"label":"Payment Customization API","children":{"overview":{"label":"About the Payment Customization API","url":"/docs/api/functions/reference/payment-customization"},"reference":{"label":"GraphQL reference","url":"/docs/api/functions/reference/payment-customization/graphql"}}}}},"configuration":{"label":"Configuration","url":"/docs/api/functions/configuration"}}},"partner":{"label":"Partner API","stepIn":true,"url":"/docs/api/partner"},"payments":{"label":"Payments Apps API","stepIn":true,"url":"/docs/api/payments-apps"},"webhooks":{"label":"Webhooks","stepIn":true,"url":"/docs/api/webhooks"},"rest_admin_legacy":{"label":"REST Admin API (legacy)","children":{"reference":{"label":"Reference","stepIn":true,"url":"/docs/api/admin-rest"},"api_usage":{"label":"API usage","children":{"access_scopes":{"label":"Access scopes","url":"/docs/api/admin-rest/usage/access-scopes"},"versioning":{"label":"Versioning","url":"/docs/api/admin-rest/usage/versioning"},"simple_ids":{"label":"Simple IDs","url":"/docs/api/admin-rest/usage/simple-ids"},"rate-limits":{"label":"Rate limits","url":"/docs/api/admin-rest/usage/rate-limits"},"idempotent_requests":{"label":"Idempotent requests","url":"/docs/api/admin-rest/usage/idempotent-requests"},"pagination":{"label":"Pagination","url":"/docs/api/admin-rest/usage/pagination"}}}}}}},"app_experience_group":{"group_description":"App experience","links":{"app-bridge":{"label":"App Bridge","children":{"overview":{"label":"About App Bridge","url":"/docs/api/app-bridge"},"reference":{"label":"Reference","url":"/docs/api/app-bridge-library"},"modals":{"label":"Using modals in your app","url":"/docs/api/app-bridge/using-modals-in-your-app"},"migrating":{"label":"Migration guide","url":"/docs/api/app-bridge/migration-guide"},"app_bridge_3":{"label":"Previous versions","children":{"getting_started":{"label":"App Bridge from npm","children":{"setup":{"label":"App setup","url":"/docs/api/app-bridge/previous-versions/app-bridge-from-npm/app-setup"},"using_react":{"label":"Using React","url":"/docs/api/app-bridge/previous-versions/app-bridge-from-npm/using-react"}}},"actions":{"label":"Actions","children":{"overview":{"label":"About actions","url":"/docs/api/app-bridge/previous-versions/actions"},"appState":{"label":"App state","url":"/docs/api/app-bridge/previous-versions/actions/app-state"},"button":{"label":"Button","url":"/docs/api/app-bridge/previous-versions/actions/button"},"buttongroup":{"label":"ButtonGroup","url":"/docs/api/app-bridge/previous-versions/actions/buttongroup"},"cart":{"label":"Cart","url":"/docs/api/app-bridge/previous-versions/actions/cart"},"contextualSaveBar":{"label":"ContextualSaveBar","url":"/docs/api/app-bridge/previous-versions/actions/contextualsavebar"},"error":{"label":"Error","url":"/docs/api/app-bridge/previous-versions/actions/error"},"features":{"label":"Features","url":"/docs/api/app-bridge/previous-versions/actions/features"},"fullscreen":{"label":"Fullscreen","url":"/docs/api/app-bridge/previous-versions/actions/fullscreen"},"loading":{"label":"Loading","url":"/docs/api/app-bridge/previous-versions/actions/loading"},"menu":{"label":"Menu","children":{"overview":{"label":"About Menu actions","url":"/docs/api/app-bridge/previous-versions/actions/menu"},"channel":{"label":"Channel Menu","url":"/docs/api/app-bridge/previous-versions/actions/menu/channel"},"navigation":{"label":"Navigation Menu","url":"/docs/api/app-bridge/previous-versions/actions/menu/navigation"}}},"modal":{"label":"Modal","url":"/docs/api/app-bridge/previous-versions/actions/modal"},"navigation":{"label":"Navigation","children":{"overview":{"label":"About Navigation actions","url":"/docs/api/app-bridge/previous-versions/actions/navigation"},"history":{"label":"History","url":"/docs/api/app-bridge/previous-versions/actions/navigation/history"},"redirect":{"label":"Redirect / Navigate","url":"/docs/api/app-bridge/previous-versions/actions/navigation/redirect-navigate"}}},"pos":{"label":"POS","url":"/docs/api/app-bridge/previous-versions/actions/pos"},"picker":{"label":"unstable_Picker","url":"/docs/api/app-bridge/previous-versions/actions/picker"},"resourcepicker":{"label":"ResourcePicker","url":"/docs/api/app-bridge/previous-versions/actions/resourcepicker"},"scanner":{"label":"Scanner","url":"/docs/api/app-bridge/previous-versions/actions/scanner"},"share":{"label":"Sharing","url":"/docs/api/app-bridge/previous-versions/actions/share"},"titleBar":{"label":"TitleBar","url":"/docs/api/app-bridge/previous-versions/actions/titlebar"},"toast":{"label":"Toast","url":"/docs/api/app-bridge/previous-versions/actions/toast"}}},"methods":{"label":"Methods","url":"/docs/api/app-bridge/previous-versions/methods"},"debugging":{"label":"Debugging","url":"/docs/api/app-bridge/previous-versions/debugging"}}}}},"admin":{"label":"Admin extensions","children":{"overview":{"label":"About admin extensions","stepIn":true,"url":"/docs/api/admin-extensions"},"extension_points_api":{"label":"APIs","stepIn":true,"url":"/docs/api/admin-extensions/api"},"components":{"label":"Components","stepIn":true,"url":"/docs/api/admin-extensions/components"}}},"checkout":{"label":"Checkout","children":{"overview":{"label":"About checkout app extensions","url":"/docs/api/checkout-extensions"},"in_checkout":{"label":"Checkout UI","stepIn":true,"url":"/docs/api/checkout-ui-extensions"},"post_purchase":{"label":"Post-purchase","children":{"overview":{"label":"About post-purchase extensions","url":"/docs/api/checkout-extensions/post-purchase"},"configuration":{"label":"Configuration","url":"/docs/api/checkout-extensions/post-purchase/configuration"},"extension_points_api":{"label":"Extension points API","url":"/docs/api/checkout-extensions/post-purchase/api"},"components":{"label":"Components","url":"/docs/api/checkout-extensions/post-purchase/components"},"jwt-specification":{"label":"JWT specification","url":"/docs/api/checkout-extensions/post-purchase/jwt-specification"}}}}},"customer_accounts":{"label":"Customer account","children":{"overview":{"label":"About customer account extensions","stepIn":true,"url":"/docs/api/customer-account-ui-extensions"},"targets":{"label":"Targets","stepIn":true,"url":"/docs/api/customer-account-ui-extensions/targets"},"apis":{"label":"APIs","stepIn":true,"url":"/docs/api/customer-account-ui-extensions/apis"},"components":{"label":"Components","stepIn":true,"url":"/docs/api/customer-account-ui-extensions/components"}}},"discounts":{"label":"Discount components","children":{"overview":{"label":"About discount components","url":"/docs/api/discounts"},"components":{"label":"Components","children":{"activeDatesCard":{"label":"ActiveDatesCard","url":"/docs/api/discounts/components/active-dates-card"},"appProvider":{"label":"AppProvider","url":"/docs/api/discounts/components/app-provider"},"combinationCard":{"label":"CombinationCard","url":"/docs/api/discounts/components/combination-card"},"countriesAndRatesCard":{"label":"CountriesAndRatesCard","url":"/docs/api/discounts/components/countries-and-rates-card"},"customerEligibilityCard":{"label":"CustomerEligibilityCard","url":"/docs/api/discounts/components/customer-eligibility-card"},"methodCard":{"label":"MethodCard","url":"/docs/api/discounts/components/method-card"},"minimumRequirementsCard":{"label":"MinimumRequirementsCard","url":"/docs/api/discounts/components/minimum-requirements-card"},"purchaseTypeCard":{"label":"PurchaseTypeCard","url":"/docs/api/discounts/components/purchase-type-card"},"summaryCard":{"label":"SummaryCard","url":"/docs/api/discounts/components/summary-card"},"usageLimitsCard":{"label":"UsageLimitsCard","url":"/docs/api/discounts/components/usage-limits-card"}}}}},"marketing":{"label":"Marketing activities","children":{"overview":{"label":"About marketing activities app extensions","url":"/docs/api/marketing-activities"},"components":{"label":"Components","url":"/docs/api/marketing-activities/components"},"endpoints":{"label":"Endpoints","url":"/docs/api/marketing-activities/endpoints"},"statuses":{"label":"Statuses","url":"/docs/api/marketing-activities/statuses"}}},"pos":{"label":"Shopify Point of Sale","children":{"overview":{"label":"About Shopify Point of Sale app extensions","url":"/docs/api/pos-extensions"},"ui-extensions":{"label":"UI extensions reference","children":{"overview":{"label":"About POS UI extensions","stepIn":true,"url":"/docs/api/pos-ui-extensions"},"targets":{"label":"Extension targets","stepIn":true,"url":"/docs/api/pos-ui-extensions/targets"},"apis":{"label":"APIs","stepIn":true,"url":"/docs/api/pos-ui-extensions/apis"},"components":{"label":"Components","stepIn":true,"url":"/docs/api/pos-ui-extensions/components"},"versions":{"label":"Versions","stepIn":true,"url":"/docs/api/pos-ui-extensions/versions"},"migration":{"label":"Migration guide","stepIn":true,"url":"/docs/api/pos-ui-extensions/migrating"}}},"cart":{"label":"Cart extension reference","url":"/docs/api/pos-extensions/cart-reference"},"recommendations":{"label":"Product recommendations reference","url":"/docs/api/pos-extensions/product-recommendations-reference"}}},"product_subscription":{"label":"Product subscriptions","children":{"overview":{"label":"About product subscription app extensions","url":"/docs/api/product-subscription-extensions"},"extension_points_apis":{"label":"Extension points APIs","url":"/docs/api/product-subscription-extensions/api"},"components":{"label":"Components","url":"/docs/api/product-subscription-extensions/components"}}}}},"storefronts_group":{"group_description":"Storefronts","links":{"storefront":{"label":"Storefront API","stepIn":true,"url":"/docs/api/storefront"},"liquid":{"label":"Liquid","stepIn":true,"url":"/docs/api/liquid"},"ajax_api":{"label":"Ajax API","children":{"overview":{"label":"About the Ajax API","url":"/docs/api/ajax"},"reference":{"label":"Reference","url":"/docs/api/ajax/reference","children":{"cart":{"label":"Cart","url":"/docs/api/ajax/reference/cart"},"product":{"label":"Product","url":"/docs/api/ajax/reference/product"},"product_recommendations":{"label":"Product recommendations","url":"/docs/api/ajax/reference/product-recommendations"},"predictive_search":{"label":"Predictive search","url":"/docs/api/ajax/reference/predictive-search"}}},"section_rendering_api":{"label":"Section Rendering API","url":"/docs/api/ajax/section-rendering"}}},"hydrogen_2":{"label":"Hydrogen framework","stepIn":true,"url":"/docs/api/hydrogen"},"hydrogen_react":{"label":"Hydrogen React library","stepIn":true,"url":"/docs/api/hydrogen-react"},"customer_privacy_api":{"label":"Customer Privacy API","url":"/docs/api/customer-privacy"},"customer_account_api":{"label":"Customer Account API","stepIn":true,"url":"/docs/api/customer"}}},"additional_apis_group":{"group_description":"Additional APIs","links":{"blockchain":{"label":"Blockchain","children":{"overview":{"label":"About blockchain components","url":"/docs/api/blockchain"},"components":{"label":"Components","url":"/docs/api/blockchain/components","children":{"connect-wallet":{"label":"Connect wallet","url":"/docs/api/blockchain/components/connect-wallet"},"tokengate":{"label":"Tokengate","url":"/docs/api/blockchain/components/tokengate"}}},"theming":{"label":"Theming","url":"/docs/api/blockchain/theming"},"analytics":{"label":"Analytics","url":"/docs/api/blockchain/analytics"}}},"multipass":{"label":"Multipass","url":"/docs/api/multipass"},"shopifyql":{"label":"ShopifyQL for analytics","children":{"overview":{"label":"About ShopifyQL for analytics","url":"/docs/api/shopifyql"},"shopifyql-reference":{"label":"ShopifyQL reference","url":"/docs/api/shopifyql/shopifyql-reference"},"segment-query-language-reference":{"label":"Segment query language reference","url":"/docs/api/shopifyql/segment-query-language-reference"},"datasets":{"label":"Datasets","url":"/docs/api/shopifyql/datasets","children":{"orders-dataset":{"label":"Orders dataset","url":"/docs/api/shopifyql/datasets/orders-dataset"},"products-dataset":{"label":"Products dataset","url":"/docs/api/shopifyql/datasets/products-dataset"},"payment-attempts-dataset":{"label":"Payment attempts dataset","url":"/docs/api/shopifyql/datasets/payment-attempts-dataset"}}}}},"pixels":{"label":"Web pixel","children":{"overview":{"label":"About Web pixel app extensions","url":"/docs/api/pixels"},"extension_api":{"label":"Web Pixels API","stepIn":true,"url":"/docs/api/web-pixels-api"}}}}}},"beta":{"heading":"Beta","pos_extension_migration":{"pos_extension_migration_group":{"group_description":"POS unified extension migration.","links":{"pos_extension_migration":{"label":"POS unified extension migration","url":"/beta/pos-extension-migration"}}}},"awareness_ads":{"awareness_ads_group":{"group_description":"Purchase awareness ads.","links":{"awareness_ads":{"label":"Awareness ads","url":"/beta/awareness-ads"}}}},"managed_pricing":{"managed_pricing_group":{"group_description":"Managed app pricing","links":{"managed_pricing":{"label":"Managed app pricing","url":"/beta/managed-pricing/getting-started"}}}},"shipping_partner_platform":{"shipping_partner_platform_group":{"group_description":"Shipping Partner Platform","links":{"shipping_partner_platform":{"label":"Shipping Partner Platform","children":{"overview":{"label":"Overview","url":"/beta/shipping-partner-platform"},"file-uploads":{"label":"File Uploads","url":"/beta/shipping-partner-platform/file-uploads","children":{"generic-rate-cards":{"label":"Generic Rate Cards","url":"/beta/shipping-partner-platform/file-uploads/generic-rate-cards"}}},"grc":{"label":"Generic Rate Cards","children":{"overview":{"label":"Overview","url":"/beta/shipping-partner-platform/generic-rate-cards"},"settings-global":{"label":"Settings Global File format","url":"/beta/shipping-partner-platform/generic-rate-cards/settings-global-file-format"},"zones":{"label":"Zones File format","url":"/beta/shipping-partner-platform/generic-rate-cards/zones-file-format"},"conditions":{"label":"Conditions File format","url":"/beta/shipping-partner-platform/generic-rate-cards/conditions-file-format"},"mail_services":{"label":"Mail Services File format","url":"/beta/shipping-partner-platform/generic-rate-cards/mail-services-file-format"},"package_types":{"label":"Package Types File format","url":"/beta/shipping-partner-platform/generic-rate-cards/package-types-file-format"},"settings_rates":{"label":"Settings Rates File format","url":"/beta/shipping-partner-platform/generic-rate-cards/settings-rates-file-format"},"base_rates":{"label":"Base Rates File format","url":"/beta/shipping-partner-platform/generic-rate-cards/base-rates-file-format"},"flat_rates":{"label":"Flat Rates File format","url":"/beta/shipping-partner-platform/generic-rate-cards/flat-rates-file-format"},"shipment_options":{"label":"Shipment Options File format","url":"/beta/shipping-partner-platform/generic-rate-cards/shipment-options-file-format"},"surcharges":{"label":"Surcharges File format","url":"/beta/shipping-partner-platform/generic-rate-cards/surcharges-file-format"},"time_in_transit":{"label":"Time in Transit File format","url":"/beta/shipping-partner-platform/generic-rate-cards/time-in-transit-file-format"},"facility_time_in_transit":{"label":"Facility Time in Transit File format","url":"/beta/shipping-partner-platform/generic-rate-cards/facility-time-in-transit-file-format"},"postal_code_to_facility_code":{"label":"Postal Code to Facility Code File format","url":"/beta/shipping-partner-platform/generic-rate-cards/postal-code-to-facility-code-file-format"},"messages":{"label":"Messages File format","url":"/beta/shipping-partner-platform/generic-rate-cards/messages-file-format"}}},"pickup_points":{"label":"Pickup Points","children":{"specification":{"label":"File format","url":"/beta/shipping-partner-platform/pickup-points/file-format"}}}}}}}}},"workshops":{"heading":"Training","hydrogen":{"hydrogen_workshops_group":{"group_description":"Curriculum","links":{"welcome":{"label":"Welcome","url":"/workshops/hydrogen"},"pre-work":{"label":"Pre-work","url":"/workshops/hydrogen/begin-development"},"day_1":{"label":"Day 1","children":{"remix":{"label":"Remix core concepts","url":"/workshops/hydrogen/remix"},"home_page":{"label":"Build a home page","url":"/workshops/hydrogen/collection-page"}}},"day_2":{"label":"Day 2","children":{"oxygen":{"label":"Deploy with Oxygen","url":"/workshops/hydrogen/deploy-oxygen"},"product_page":{"label":"Build a product page","url":"/workshops/hydrogen/product-page"}}},"day_3":{"label":"Day 3","children":{"cart":{"label":"Build a cart page","url":"/workshops/hydrogen/cart-page"}}}}}}}}}; window.I18n.globals = {"total_blog_subscribers":"446,005","trial_length":3,"custom_signup_header":""}; //]]> </script> <script> //<![CDATA[ window.RailsData = {"features":["adaptive_rate_limiter","automated_privacy","cli_managed_subscription_link_creation_and_migration","combined_listings","conditionally_disable_gift_cards","customer_account_ui_extensions_stable_docs","dat_scheduled_feature_tho","discounts_allocator_function","editor_extension_collections_docs","enforce_fulfillment_order_status_on_create_fulfillment","explicit_buyer_consent","extensions_only_discounts_app","flex_sections","gql_ai","gql_ai_v2","gql_example_switcher","gql_operation_cache","headless_cmp","mockshop_ai","mockshop_ai_disable_force_ai","net_new_webhooks_reference_2024","online_store_new_datasources","product_discount_cart_line_targeting","rest_admin_api_deprecation","rev_share_jan24","sched_2","schedule_test","shipping_discount_functions_general_availability","static_blocks","style_settings","theme_blocks","theme_blocks_data_sources","versioned_app_config","zero_redirect_auth"],"enable_theme_mode":true,"search":{"selectable_versions":{"default":{"values":["unstable","2025-01","2024-10","2024-07","2024-04","2024-01"],"stable_version":"2024-10"},"API: Admin Extensions":{"stable_version":"unstable","values":["unstable","2024-10","2024-07","2024-04","2024-01","2023-10"]},"API: Checkout UI extensions":{"stable_version":"unstable","values":["unstable","2024-10","2024-07","2024-04","2024-01","2023-10","2023-07","2023-04"]},"API: Customer account UI extensions":{"stable_version":"unstable","values":["unstable","2024-10"]},"API: Hydrogen":{"stable_version":"2024-10","values":["2024-10","2024-07","2024-04","2024-01","2023-10","2023-07","2023-04"]},"API: Hydrogen React":{"stable_version":"2024-10","values":["2024-10","2024-07","2024-04","2024-01","2023-10","2023-07","2023-04","2023-01"]},"API: POS UI Extensions":{"stable_version":"unstable","values":["unstable","2024-10","2024-07","2024-04"]},"API: shopify app remix":{"stable_version":"v3","values":["v3","v2","v1"]},"API: Webhooks":{"stable_version":"unstable","values":["unstable","2025-01","2024-10","2024-07","2024-04","2024-01"]}},"categories":{"API: Admin Extensions":{"reference_name":"admin-extensions","versioned":true,"cookie_name":"api_version"},"API: App Bridge Library":{"reference_name":"app-bridge-library","versioned":false,"cookie_name":"api_version"},"API: Checkout UI extensions":{"reference_name":"checkout-ui-extensions","versioned":true,"cookie_name":"api_version"},"API: Customer account UI extensions":{"reference_name":"customer-account-ui-extensions","versioned":true,"cookie_name":"api_version"},"API: Hydrogen":{"reference_name":"hydrogen","versioned":true,"cookie_name":"api_version"},"API: Hydrogen React":{"reference_name":"hydrogen-react","versioned":true,"cookie_name":"api_version"},"API: Hydrogen UI":{"reference_name":"hydrogen-ui","versioned":false,"cookie_name":"api_version"},"API: POS UI Extensions":{"reference_name":"pos-ui-extensions","versioned":true,"cookie_name":"api_version"},"API: shopify app remix":{"reference_name":"shopify-app-remix","versioned":true,"cookie_name":"api_version_shopify-app-remix"},"API: Shopify CLI":{"reference_name":"shopify-cli","versioned":false,"cookie_name":"api_version"},"API: Web Pixels API":{"reference_name":"web-pixels-api","versioned":false,"cookie_name":"api_version"},"API: Webhooks":{"reference_name":"webhooks","versioned":true,"cookie_name":"api_version"}}},"env":"production","bugsnagApiKey":"fc1be50c64e992230ef8ca972c17217c","url_section":"apps","markdown_path":"content/apps/build/checkout/index.md","sidebarData":{"heading":"Build","groups":[{"label":"Getting started","isGroup":true,"children":[{"label":"Shopify app platform","href":"/docs/apps/build"},{"label":"App surfaces","href":"/docs/apps/build/app-surfaces"},{"label":"Scaffold an app","href":"/docs/apps/build/scaffold-app"},{"label":"Build an app","href":"/docs/apps/build/build"},{"label":"Shopify CLI for apps","children":[{"label":"About Shopify CLI for apps","href":"/docs/apps/build/cli-for-apps"},{"label":"About app structure","href":"/docs/apps/build/cli-for-apps/app-structure"},{"label":"About app configuration","href":"/docs/apps/build/cli-for-apps/app-configuration"},{"label":"Manage app config files","href":"/docs/apps/build/cli-for-apps/manage-app-config-files"},{"label":"Use ngrok for tunneling during app development","href":"/docs/apps/build/cli-for-apps/use-ngrok-tunneling"},{"label":"Migrate a Dashboard-managed app to Shopify CLI","href":"/docs/apps/build/cli-for-apps/migrate-from-dashboard"},{"label":"Migrate to the latest Shopify CLI","href":"/docs/apps/build/cli-for-apps/migrate-to-latest-cli"}]}]},{"label":"Extending Shopify","isGroup":true,"children":[{"label":"Admin","children":[{"label":"Apps in admin","href":"/docs/apps/build/admin"},{"label":"Admin UI extensions","children":[{"label":"About admin extensions","href":"/docs/apps/build/admin/actions-blocks"},{"label":"Build an admin action","href":"/docs/apps/build/admin/actions-blocks/build-admin-action"},{"label":"Build an admin block","href":"/docs/apps/build/admin/actions-blocks/build-admin-block"},{"label":"Connect admin extensions","href":"/docs/apps/build/admin/actions-blocks/connect-admin-extensions"},{"label":"Connect to your app's backend","href":"/docs/apps/build/admin/actions-blocks/connect-app-backend"},{"label":"Build an admin print action","href":"/docs/apps/build/admin/actions-blocks/build-admin-print-action"}]},{"label":"Admin links (legacy)","children":[{"label":"About admin links (legacy)","href":"/docs/apps/build/admin/admin-links"},{"label":"Add admin links (legacy)","href":"/docs/apps/build/admin/admin-links/add-admin-links"}]}]},{"label":"Checkout","children":[{"label":"Apps in checkout","href":"/docs/apps/build/checkout"},{"label":"Technologies for customizing checkout","href":"/docs/apps/build/checkout/technologies"},{"label":"Start building for checkout","href":"/docs/apps/build/checkout/start-building"},{"label":"Display custom data","href":"/docs/apps/build/checkout/display-custom-data"},{"label":"Validation","children":[{"label":"About cart and checkout validation","href":"/docs/apps/build/checkout/cart-checkout-validation"},{"label":"Create client-side validation","href":"/docs/apps/build/checkout/cart-checkout-validation/create-client-side-validation"},{"label":"Create server-side validation","href":"/docs/apps/build/checkout/cart-checkout-validation/create-server-side-validation"},{"label":"Create admin UI validation","href":"/docs/apps/build/checkout/cart-checkout-validation/create-admin-ui-validation"}]},{"label":"Create cart permalinks","href":"/docs/apps/build/checkout/create-cart-permalinks"},{"label":"Styling","children":[{"label":"About checkout styling","href":"/docs/apps/build/checkout/styling"},{"label":"Customize typography","href":"/docs/apps/build/checkout/styling/customize-typography"},{"label":"Add the favicon","href":"/docs/apps/build/checkout/styling/add-favicon"},{"label":"Customize form controls","href":"/docs/apps/build/checkout/styling/customize-form-controls"},{"label":"Update color settings","href":"/docs/apps/build/checkout/styling/update-color-settings"},{"label":"Customize sections","href":"/docs/apps/build/checkout/styling/customize-sections"}]},{"label":"Customize the header","href":"/docs/apps/build/checkout/customize-header"},{"label":"Customize the footer","href":"/docs/apps/build/checkout/customize-footer"},{"label":"Banners and fields","children":[{"label":"About custom banners and fields","href":"/docs/apps/build/checkout/fields-banners"},{"label":"Add a banner","href":"/docs/apps/build/checkout/fields-banners/add-banner"},{"label":"Add a field","href":"/docs/apps/build/checkout/fields-banners/add-field"},{"label":"UX for fields","href":"/docs/apps/build/checkout/fields-banners/ux-for-fields"}]},{"label":"Delivery and shipping","children":[{"label":"About delivery and shipping","href":"/docs/apps/build/checkout/delivery-shipping"},{"label":"Convert additional address fields","href":"/docs/apps/build/checkout/delivery-shipping/additional-address-fields"},{"label":"Rename delivery options","children":[{"label":"Build the delivery options function","href":"/docs/apps/build/checkout/delivery-shipping/delivery-options/build-function"},{"label":"Add the configuration","href":"/docs/apps/build/checkout/delivery-shipping/delivery-options/add-configuration"},{"label":"Build the UI","href":"/docs/apps/build/checkout/delivery-shipping/delivery-options/build-ui"},{"label":"UX for delivery options","href":"/docs/apps/build/checkout/delivery-shipping/delivery-options/ux-for-delivery-options"}]},{"label":"Customize delivery methods","children":[{"label":"Build a date picker","href":"/docs/apps/build/checkout/delivery-shipping/delivery-methods/date-picker"},{"label":"Create local pickup charges","href":"/docs/apps/build/checkout/delivery-shipping/delivery-methods/create-local-pickup-charges"},{"label":"Generate pickup points","href":"/docs/apps/build/checkout/delivery-shipping/delivery-methods/generate-pickup-points"},{"label":"UX for pickup points","href":"/docs/apps/build/checkout/delivery-shipping/delivery-methods/ux-for-pickup-points"},{"label":"UX for delivery methods","href":"/docs/apps/build/checkout/delivery-shipping/delivery-methods/ux-for-delivery-methods"}]},{"label":"Customize address autocomplete","children":[{"label":"Build a custom address autocomplete extension","href":"/docs/apps/build/checkout/delivery-shipping/address-autocomplete/build-autocomplete"},{"label":"Format suggested addresses","href":"/docs/apps/build/checkout/delivery-shipping/address-autocomplete/format-suggestion"}]}]},{"label":"Product offers","children":[{"label":"About product offers","href":"/docs/apps/build/checkout/product-offers"},{"label":"Build a pre-purchase offer","href":"/docs/apps/build/checkout/product-offers/build-a-pre-purchase-offer"},{"label":"UX for pre-purchase offers","href":"/docs/apps/build/checkout/product-offers/ux-for-pre-purchase-product-offers"},{"label":"Build a post-purchase offer","href":"/docs/apps/build/checkout/product-offers/build-a-post-purchase-offer"},{"label":"Create a post-purchase subscription","href":"/docs/apps/build/checkout/product-offers/create-a-post-purchase-subscription"},{"label":"UX for post-purchase offers","href":"/docs/apps/build/checkout/product-offers/ux-for-post-purchase-product-offers"},{"label":"UX for post-purchase subscriptions","href":"/docs/apps/build/checkout/product-offers/ux-for-post-purchase-subscriptions"}]},{"label":"Payments","children":[{"label":"About payments customizations","href":"/docs/apps/build/checkout/payments"},{"label":"Create the payments function","href":"/docs/apps/build/checkout/payments/create-payments-function"},{"label":"Add the configuration","href":"/docs/apps/build/checkout/payments/add-configuration"},{"label":"Build the UI","href":"/docs/apps/build/checkout/payments/build-ui"},{"label":"UX for payments","href":"/docs/apps/build/checkout/payments/ux-for-payments"}]},{"label":"Thank you and Order status","children":[{"label":"About Thank you and Order status page customizations","href":"/docs/apps/build/checkout/thank-you-order-status"},{"label":"Add a survey","href":"/docs/apps/build/checkout/thank-you-order-status/add-survey"},{"label":"UX for Thank you and Order status pages","href":"/docs/apps/build/checkout/thank-you-order-status/ux-for-thank-you-order-status"}]},{"label":"Localized UI extensions","children":[{"label":"About checkout UI extension localization","href":"/docs/apps/build/checkout/localized-checkout-ui-extensions"},{"label":"Localize a checkout UI extension","href":"/docs/apps/build/checkout/localized-checkout-ui-extensions/localize"}]},{"label":"Test UI extensions","href":"/docs/apps/build/checkout/test-checkout-ui-extensions"},{"label":"Create multi-page extensions","href":"/docs/apps/build/checkout/create-multi-page-extensions"},{"label":"UX for checkout","href":"/docs/apps/build/checkout/ux-for-checkout"}]},{"label":"Customer accounts","children":[{"label":"Apps in customer accounts","href":"/docs/apps/build/customer-accounts"},{"label":"Start building for customer accounts","href":"/docs/apps/build/customer-accounts/start-building"},{"label":"Decide on extension placement","href":"/docs/apps/build/customer-accounts/extension-placement"},{"label":"UX for customer accounts","href":"/docs/apps/build/customer-accounts/ux"},{"label":"About the Order status page","href":"/docs/apps/build/customer-accounts/order-status-page"},{"label":"Inline extensions","children":[{"label":"About inline extensions","href":"/docs/apps/build/customer-accounts/inline-extensions"},{"label":"Build Order status","href":"/docs/apps/build/customer-accounts/inline-extensions/build-order-status"},{"label":"Build profile","href":"/docs/apps/build/customer-accounts/inline-extensions/build-profile"}]},{"label":"Pre-auth Order status page extensions","children":[{"label":"About pre-auth Order status page extensions","href":"/docs/apps/build/customer-accounts/pre-auth-order-status-page-extensions"},{"label":"Build pre-auth Order status page extensions","href":"/docs/apps/build/customer-accounts/pre-auth-order-status-page-extensions/build-pre-auth-order-status-page-extensions"}]},{"label":"Order action extensions","children":[{"label":"About order action menus","href":"/docs/apps/build/customer-accounts/order-action-extensions"},{"label":"Build for order action menus","href":"/docs/apps/build/customer-accounts/order-action-extensions/build-for-order-action-menus"},{"label":"UX for order actions","href":"/docs/apps/build/customer-accounts/order-action-extensions/ux-for-order-actions"}]},{"label":"Full-page extensions","children":[{"label":"Add pages to customer accounts","href":"/docs/apps/build/customer-accounts/full-page-extensions"},{"label":"Build new pages","href":"/docs/apps/build/customer-accounts/full-page-extensions/build-new-pages"},{"label":"UX for full pages","href":"/docs/apps/build/customer-accounts/full-page-extensions/ux-for-full-pages"}]},{"label":"Build metafield writes into extensions","href":"/docs/apps/build/customer-accounts/metafields"},{"label":"Editor extension collections","children":[{"label":"About editor extension collections","href":"/docs/apps/build/customer-accounts/editor-extension-collections"},{"label":"Build an editor extension collection","href":"/docs/apps/build/customer-accounts/editor-extension-collections/build-editor-extension-collection"},{"label":"UX for editor extension collections","href":"/docs/apps/build/customer-accounts/editor-extension-collections/editor-extension-collections-ux-guidelines"}]},{"label":"Localization","children":[{"label":"About localizing customer account extensions","href":"/docs/apps/build/customer-accounts/localization"},{"label":"Localize a customer account extension","href":"/docs/apps/build/customer-accounts/localization/localize"}]},{"label":"Test customer account extensions","href":"/docs/apps/build/customer-accounts/test"}]},{"label":"Flow","children":[{"label":"About Flow","href":"/docs/apps/build/flow"},{"label":"About Flow development","href":"/docs/apps/build/flow/development"},{"label":"Triggers","children":[{"label":"About triggers","href":"/docs/apps/build/flow/triggers"},{"label":"Create a trigger","href":"/docs/apps/build/flow/triggers/create"},{"label":"Trigger reference","href":"/docs/apps/build/flow/triggers/reference"}]},{"label":"Actions","children":[{"label":"About actions","href":"/docs/apps/build/flow/actions"},{"label":"Create an action","href":"/docs/apps/build/flow/actions/create"},{"label":"Action reference","href":"/docs/apps/build/flow/actions/reference"},{"label":"Create action endpoints","href":"/docs/apps/build/flow/actions/endpoints"},{"label":"Build the configuration UI","href":"/docs/apps/build/flow/actions/build-config-ui"}]},{"label":"Templates","children":[{"label":"About templates","href":"/docs/apps/build/flow/templates"},{"label":"Create a template","href":"/docs/apps/build/flow/templates/create-a-template"},{"label":"Template reference","href":"/docs/apps/build/flow/templates/reference"}]},{"label":"Track Flow lifecycle events","href":"/docs/apps/build/flow/track-lifecycle-events"},{"label":"Migrate legacy Flow extensions","href":"/docs/apps/build/flow/migrate-legacy-extensions"},{"label":"Configure complex data types","href":"/docs/apps/build/flow/configure-complex-data-types"}]},{"label":"Online store","children":[{"label":"Apps in the online store","href":"/docs/apps/build/online-store"},{"label":"Display dynamic data","href":"/docs/apps/build/online-store/display-dynamic-data"},{"label":"Theme app extensions","children":[{"label":"About theme app extensions","href":"/docs/apps/build/online-store/theme-app-extensions"},{"label":"Build theme app extensions","href":"/docs/apps/build/online-store/theme-app-extensions/build"},{"label":"Theme app extension configuration","href":"/docs/apps/build/online-store/theme-app-extensions/configuration"},{"label":"UX for theme app extensions","href":"/docs/apps/build/online-store/theme-app-extensions/ux"},{"label":"Migrate to theme app extensions","href":"/docs/apps/build/online-store/theme-app-extensions/migrate"}]},{"label":"Verify theme support","href":"/docs/apps/build/online-store/verify-support"},{"label":"Manage media for products","href":"/docs/apps/build/online-store/product-media"},{"label":"Manage media for product variants","href":"/docs/apps/build/online-store/product-variant-media"},{"label":"ScriptTag resource (legacy)","href":"/docs/apps/build/online-store/script-tag-legacy"},{"label":"Asset resource (legacy)","href":"/docs/apps/build/online-store/asset-legacy"}]},{"label":"Point of Sale","children":[{"label":"Apps in POS","href":"/docs/apps/build/pos"},{"label":"Embed your app in POS","href":"/docs/apps/build/pos/embed-app-in-pos"},{"label":"UI extensions","children":[{"label":"About POS UI extensions","href":"/docs/api/pos-ui-extensions","stepIn":true},{"label":"Start building POS UI extensions","href":"/docs/api/pos-ui-extensions/getting-started","stepIn":true},{"label":"Build a POS discount","href":"/docs/api/pos-ui-extensions/example-discount-extension","stepIn":true},{"label":"Build a print extension","href":"/docs/api/pos-ui-extensions/example-print-extension","stepIn":true},{"label":"Debug POS UI extensions","href":"/docs/api/pos-ui-extensions/debugging","stepIn":true},{"label":"Communicate with a server","href":"/docs/api/pos-ui-extensions/server-communication","stepIn":true},{"label":"Troubleshoot UI extensions","href":"/docs/api/pos-ui-extensions/troubleshooting","stepIn":true}]},{"label":"Legacy extensions","children":[{"label":"POS links (legacy)","href":"/docs/apps/build/pos/links-legacy"},{"label":"POS cart app extensions (legacy)","href":"/docs/apps/build/pos/cart-legacy"},{"label":"POS product recommendations extension (legacy)","href":"/docs/apps/build/pos/recommendations-legacy"}]}]}]},{"label":"Use cases","isGroup":true,"children":[{"label":"Marketing and analytics","children":[{"label":"Apps for marketing and analytics","href":"/docs/apps/build/marketing-analytics"},{"label":"About web pixels","href":"/docs/apps/build/marketing-analytics/pixels"},{"label":"Build web pixels","href":"/docs/apps/build/marketing-analytics/build-web-pixels"},{"label":"Customer segments","children":[{"label":"About customer segments","href":"/docs/apps/build/marketing-analytics/customer-segments"},{"label":"Build a template extension","href":"/docs/apps/build/marketing-analytics/customer-segments/build-a-template-extension"},{"label":"Build an action extension","href":"/docs/apps/build/marketing-analytics/customer-segments/build-an-action-extension"},{"label":"Manage customer segments","href":"/docs/apps/build/marketing-analytics/customer-segments/manage"},{"label":"Migrate saved searches","href":"/docs/apps/build/marketing-analytics/customer-segments/migrate-saved-searches"},{"label":"Migrate to async queries","href":"/docs/apps/build/marketing-analytics/customer-segments/migrate-to-async-queries"}]},{"label":"Marketing activities","children":[{"label":"About marketing activities","href":"/docs/apps/build/marketing-analytics/marketing-activities"},{"label":"Migrate marketing activity extensions","href":"/docs/apps/build/marketing-analytics/marketing-activities/migrate-extensions"}]},{"label":"Marketing automations","children":[{"label":"About marketing automations","href":"/docs/apps/build/marketing-analytics/automations"},{"label":"Create marketing automation actions","href":"/docs/apps/build/marketing-analytics/automations/create-marketing-automation-actions"},{"label":"List of action endpoints","href":"/docs/apps/build/marketing-analytics/automations/action-endpoints"},{"label":"Build a configuration page","href":"/docs/apps/build/marketing-analytics/automations/build-custom-configuration-page"}]},{"label":"Optimize SEO","href":"/docs/apps/build/marketing-analytics/optimize-storefront-seo"}]},{"label":"Discounts","children":[{"label":"About discounts","href":"/docs/apps/build/discounts"},{"label":"Build a discount function","href":"/docs/apps/build/discounts/build-discount-function"},{"label":"Build a discounts UI with UI extensions","href":"/docs/apps/build/discounts/build-ui-extension"},{"label":"Build a discounts UI with Remix","href":"/docs/apps/build/discounts/build-ui-with-remix"},{"label":"Build a discounts allocator","href":"/docs/apps/build/discounts/build-discounts-allocator"},{"label":"UX for discounts","href":"/docs/apps/build/discounts/ux-for-discounts"}]},{"label":"Product merchandising","children":[{"label":"Product bundles","children":[{"label":"About product bundles","href":"/docs/apps/build/product-merchandising/bundles"},{"label":"Start building bundles","href":"/docs/apps/build/product-merchandising/bundles/start-building"},{"label":"Add a fixed bundle","children":[{"label":"About fixed bundles","href":"/docs/apps/build/product-merchandising/bundles/add-fixed-bundle"},{"label":"Add a product fixed bundle","href":"/docs/apps/build/product-merchandising/bundles/add-product-fixed-bundle"},{"label":"Add a variant fixed bundle","href":"/docs/apps/build/product-merchandising/bundles/add-variant-fixed-bundle"}]},{"label":"Add a customized bundle","href":"/docs/apps/build/product-merchandising/bundles/add-customized-bundle"},{"label":"Add UI for merchant customization","href":"/docs/apps/build/product-merchandising/bundles/add-merchant-config-ui"},{"label":"Create a bundle app","href":"/docs/apps/build/product-merchandising/bundles/create-bundle-app"},{"label":"Turn on publishing","href":"/docs/apps/build/product-merchandising/bundles/turn-on-publishing"}]},{"label":"Combined listings","children":[{"label":"About combined listings","href":"/docs/apps/build/product-merchandising/combined-listings"},{"label":"Build for combined listings","href":"/docs/apps/build/product-merchandising/combined-listings/build-for-combined-listings"}]}]},{"label":"Purchase options","children":[{"label":"About custom purchase options","href":"/docs/apps/build/purchase-options"},{"label":"Subscriptions","children":[{"label":"About subscriptions","href":"/docs/apps/build/purchase-options/subscriptions"},{"label":"Model a subscriptions solution","href":"/docs/apps/build/purchase-options/subscriptions/model-subscriptions-solution"},{"label":"Selling plans","children":[{"label":"About selling plans","href":"/docs/apps/build/purchase-options/subscriptions/selling-plans"},{"label":"Build a selling plan","href":"/docs/apps/build/purchase-options/subscriptions/selling-plans/build-a-selling-plan"}]},{"label":"Subscription contracts","children":[{"label":"About subscription contracts","href":"/docs/apps/build/purchase-options/subscriptions/contracts"},{"label":"Build a subscription contract","href":"/docs/apps/build/purchase-options/subscriptions/contracts/build-a-subscription-contract"},{"label":"Update a subscription contract","href":"/docs/apps/build/purchase-options/subscriptions/contracts/update-a-subscription-contract"},{"label":"Combine subscription contracts","href":"/docs/apps/build/purchase-options/subscriptions/contracts/combine-subscription-contracts"},{"label":"Subscription link extensions","children":[{"label":"Build a subscription link extension","href":"/docs/apps/build/purchase-options/subscriptions/contracts/subscription-link-extensions/start-building"},{"label":"Migrate existing extensions to Shopify CLI","href":"/docs/apps/build/purchase-options/subscriptions/contracts/subscription-link-extensions/migrate-to-cli"}]}]},{"label":"Billing cycles","children":[{"label":"About subscription billing cycles","href":"/docs/apps/build/purchase-options/subscriptions/billing-cycles"},{"label":"Manage billing cycle contracts","href":"/docs/apps/build/purchase-options/subscriptions/billing-cycles/manage-billing-cycle-contracts"},{"label":"Manage billing cycles in bulk","href":"/docs/apps/build/purchase-options/subscriptions/billing-cycles/bulk-billing-cycles"}]},{"label":"Fulfillments","children":[{"label":"About fulfillment for subscriptions","href":"/docs/apps/build/purchase-options/subscriptions/fulfillments"},{"label":"Sync orders and subscriptions","href":"/docs/apps/build/purchase-options/subscriptions/fulfillments/sync-orders-subscriptions"},{"label":"Manage fulfillments for prepaid subscriptions","href":"/docs/apps/build/purchase-options/subscriptions/fulfillments/manage-subscription-fulfillments"}]},{"label":"Migrate to the Subscriptions API","children":[{"label":"Subscriptions API migration guide","href":"/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api"},{"label":"Migrate customer information","href":"/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-customer-information"},{"label":"Migrate existing subscriptions","href":"/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-subscription-contracts"},{"label":"UX for migration","href":"/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/ux-for-migration"}]}]},{"label":"Pre-orders and Try Before You Buy","children":[{"label":"About pre-orders and Try Before You Buy","href":"/docs/apps/build/purchase-options/deferred"},{"label":"Model pre-orders and Try Before You Buy","href":"/docs/apps/build/purchase-options/deferred/model-deferred-purchase-solutions"},{"label":"Build a pre-order and Try Before You Buy solution","href":"/docs/apps/build/purchase-options/deferred/build-deferment-solution"},{"label":"Delivery and deferment","children":[{"label":"About delivery for pre-order and Try Before You Buy","href":"/docs/apps/build/purchase-options/deferred/delivery-and-deferment"},{"label":"Build delivery profiles","href":"/docs/apps/build/purchase-options/deferred/delivery-and-deferment/build-delivery-profiles"}]},{"label":"Building your app","children":[{"label":"Start building a pre-order and Try Before You Buy (TBYB) app","href":"/docs/apps/build/purchase-options/deferred/create-deferred-purchase-app/start-building"},{"label":"Create the UI","href":"/docs/apps/build/purchase-options/deferred/create-deferred-purchase-app/create-ui"}]}]},{"label":"Product subscription app extensions","children":[{"label":"About product subscription app extensions","href":"/docs/apps/build/purchase-options/product-subscription-app-extensions"},{"label":"Start building product subscription app extensions","href":"/docs/apps/build/purchase-options/product-subscription-app-extensions/start-building"},{"label":"Extension points","href":"/docs/apps/build/purchase-options/product-subscription-app-extensions/extension-points"},{"label":"Authenticate app extension requests","href":"/docs/apps/build/purchase-options/product-subscription-app-extensions/authenticate-extension-requests"},{"label":"Create and manage app extensions","href":"/docs/apps/build/purchase-options/product-subscription-app-extensions/create-and-manage"}]},{"label":"Build a customer-facing purchase-option portal","children":[{"label":"About customer-facing portals","href":"/docs/apps/build/purchase-options/customer-portal"},{"label":"Create customer-facing portals","href":"/docs/apps/build/purchase-options/customer-portal/create-customer-portal"}]}]},{"label":"Global markets","children":[{"label":"About Shopify Markets","href":"/docs/apps/build/markets"},{"label":"About catalogs for different markets","href":"/docs/apps/build/markets/catalogs-different-markets"},{"label":"Build a catalog","href":"/docs/apps/build/markets/build-catalog"},{"label":"Migrate to catalogs","href":"/docs/apps/build/markets/migrate-to-catalogs"},{"label":"Manage translated content","href":"/docs/apps/build/markets/manage-translated-content"},{"label":"Add locally required order data","href":"/docs/apps/build/markets/add-locally-required-order-data"}]},{"label":"Orders and fulfillment","children":[{"label":"Apps in orders and fulfillment","href":"/docs/apps/build/orders-fulfillment"},{"label":"Inventory management","children":[{"label":"Apps in inventory management","href":"/docs/apps/build/orders-fulfillment/inventory-management-apps"},{"label":"Manage inventory","href":"/docs/apps/build/orders-fulfillment/inventory-management-apps/manage-quantities-states"}]},{"label":"Order management","children":[{"label":"Apps in order management","href":"/docs/apps/build/orders-fulfillment/order-management-apps"},{"label":"Edit existing orders","href":"/docs/apps/build/orders-fulfillment/order-management-apps/edit-orders"},{"label":"Build fulfillment solutions","href":"/docs/apps/build/orders-fulfillment/order-management-apps/build-fulfillment-solutions"},{"label":"Track orders on other platforms","href":"/docs/apps/build/orders-fulfillment/order-management-apps/track-orders-other-platforms"}]},{"label":"Order routing and fulfillment","children":[{"label":"Apps in order routing","href":"/docs/apps/build/orders-fulfillment/order-routing-apps"},{"label":"Location rules","children":[{"label":"About location rules","href":"/docs/apps/build/orders-fulfillment/order-routing-apps/location-rules"},{"label":"Build a location rule function","href":"/docs/apps/build/orders-fulfillment/order-routing-apps/location-rules/build-location-rule-function"},{"label":"Add configuration","href":"/docs/apps/build/orders-fulfillment/order-routing-apps/location-rules/add-configuration"},{"label":"Build the UI","href":"/docs/apps/build/orders-fulfillment/order-routing-apps/location-rules/build-ui"}]},{"label":"Build fulfillment constraints","href":"/docs/apps/build/orders-fulfillment/order-routing-apps/build-fulfillment-constraints"},{"label":"Build local pickup options","href":"/docs/apps/build/orders-fulfillment/order-routing-apps/build-local-pickup-options"}]},{"label":"Fulfillment services","children":[{"label":"About fulfillment services","href":"/docs/apps/build/orders-fulfillment/fulfillment-service-apps"},{"label":"Build for fulfillment services","href":"/docs/apps/build/orders-fulfillment/fulfillment-service-apps/build-for-fulfillment-services"}]},{"label":"Returns","children":[{"label":"Apps in returns","href":"/docs/apps/build/orders-fulfillment/returns-apps"},{"label":"Build for return management","href":"/docs/apps/build/orders-fulfillment/returns-apps/build-return-management"},{"label":"Manage exchanges","href":"/docs/apps/build/orders-fulfillment/returns-apps/manage-exchanges"},{"label":"View and refund duties","href":"/docs/apps/build/orders-fulfillment/returns-apps/view-and-refund-duties"},{"label":"Manage reverse fulfillment orders","href":"/docs/apps/build/orders-fulfillment/returns-apps/manage-reverse-fulfillment-orders"},{"label":"Manage reverse deliveries","href":"/docs/apps/build/orders-fulfillment/returns-apps/manage-reverse-deliveries"}]},{"label":"Migrate to fulfillment orders","href":"/docs/apps/build/orders-fulfillment/migrate-to-fulfillment-orders"}]},{"label":"Payments","children":[{"label":"Payments extensions","href":"/docs/apps/build/payments"},{"label":"Requirements for payments extensions","href":"/docs/apps/build/payments/requirements"},{"label":"Get approved for payments","href":"/docs/apps/build/payments/payments-extension-review"},{"label":"Build a payments extension","children":[{"label":"About payment processing","href":"/docs/apps/build/payments/processing"},{"label":"Build an offsite payments extension","children":[{"label":"Use Shopify CLI","href":"/docs/apps/build/payments/offsite/use-the-cli"}]},{"label":"Build a credit card payments extension","children":[{"label":"Use Shopify CLI","href":"/docs/apps/build/payments/credit-card/use-the-cli"},{"label":"Manage encryption certificates","href":"/docs/apps/build/payments/credit-card/manage-encryption-certificates"},{"label":"Configure test certificate","href":"/docs/apps/build/payments/credit-card/test-certificate"},{"label":"Build with UI extensibility","href":"/docs/apps/build/payments/credit-card/with-extensibility"},{"label":"Build a Shopify custom credit card payments extension","href":"/docs/apps/build/payments/credit-card/custom/use-the-cli"}]},{"label":"Build an alternative payments extension","href":"/docs/apps/build/payments/alternative/build-an-alternative-payment-extension"},{"label":"Build a redeemables payments extension","href":"/docs/apps/build/payments/redeemables/build-a-redeemables-payment-extension"},{"label":"Implementation considerations","href":"/docs/apps/build/payments/considerations"},{"label":"Request reference","href":"/docs/apps/build/payments/request-reference"}]},{"label":"Onboard merchants to your extension","href":"/docs/apps/build/payments/onboard-a-merchant-payments-extension"},{"label":"Migrate extensions to Shopify CLI","href":"/docs/apps/build/payments/migrate-extensions-to-shopify-cli"}]},{"label":"Sales channels","children":[{"label":"Apps as sales channels","href":"/docs/apps/build/sales-channels"},{"label":"Start building a sales channel","href":"/docs/apps/build/sales-channels/start-building"},{"label":"Product sync","href":"/docs/apps/build/sales-channels/product-sync"},{"label":"Contextual Product Feeds","href":"/docs/apps/build/sales-channels/contextual-product-feeds"},{"label":"About scheduled publishing","href":"/docs/apps/build/sales-channels/scheduled-product-publishing"},{"label":"Enable scheduled publishing","href":"/docs/apps/build/sales-channels/enable-scheduled-publishing"}]},{"label":"B2B","children":[{"label":"Apps and B2B","href":"/docs/apps/build/b2b"},{"label":"Start building for B2B","href":"/docs/apps/build/b2b/start-building"},{"label":"Manage client company locations","href":"/docs/apps/build/b2b/manage-client-company-locations"},{"label":"Manage B2B catalogs","href":"/docs/apps/build/b2b/manage-catalogs"},{"label":"Use draft orders","href":"/docs/apps/build/b2b/draft-orders"},{"label":"Create B2B checkout UI","href":"/docs/apps/build/b2b/create-checkout-ui"}]},{"label":"Blockchain","children":[{"label":"Apps in blockchain","href":"/docs/apps/build/blockchain"},{"label":"NFT distribution","children":[{"label":"About NFT distribution","href":"/docs/apps/build/blockchain/nft-distribution"},{"label":"Check NFT sales eligibility","href":"/docs/apps/build/blockchain/nft-distribution/check-nft-sales-eligibility"},{"label":"Check merchant eligibility","href":"/docs/apps/build/blockchain/nft-distribution/check-merchant-eligibility"},{"label":"UX for NFT distribution","href":"/docs/apps/build/blockchain/nft-distribution/ux-for-nft-distribution"}]},{"label":"Tokengating","children":[{"label":"About tokengating","href":"/docs/apps/build/blockchain/tokengating"},{"label":"Build a tokengating app","children":[{"label":"Apps for tokengating","href":"/docs/apps/build/blockchain/tokengating/build-a-tokengating-app"},{"label":"Create gates","href":"/docs/apps/build/blockchain/tokengating/build-a-tokengating-app/create-gates-admin"},{"label":"Show gates","href":"/docs/apps/selling-strategies/blockchain/tokengating/build-a-tokengating-app/show-gates-storefront"},{"label":"Create the gated discount function","href":"/docs/apps/build/blockchain/tokengating/build-a-tokengating-app/create-gated-discount-function"}]},{"label":"Build a tokengated storefront","children":[{"label":"About tokengated storefronts","href":"/docs/apps/build/blockchain/tokengating/build-a-tokengated-storefront"},{"label":"Start building a tokengated storefront","href":"/docs/apps/build/blockchain/tokengating/build-a-tokengated-storefront/start-building"},{"label":"Save a connected wallet to session storage","href":"/docs/apps/build/blockchain/tokengating/build-a-tokengated-storefront/save-wallet-to-session"},{"label":"Read and evaluate gates","href":"/docs/apps/build/blockchain/tokengating/build-a-tokengated-storefront/read-and-evaluate-gates"},{"label":"Write gate context to cart attributes","href":"/docs/apps/build/blockchain/tokengating/build-a-tokengated-storefront/write-gate-context-to-cart-attributes"}]},{"label":"UX for tokengating","href":"/docs/apps/build/blockchain/tokengating/ux-for-tokengating"}]}]}]},{"label":"Best practices","isGroup":true,"children":[{"label":"Performance","children":[{"label":"About performance optimization","href":"/docs/apps/build/performance"},{"label":"General app performance","href":"/docs/apps/build/performance/general-best-practices"},{"label":"Admin, installation, and OAuth performance","href":"/docs/apps/build/performance/admin-installation-oauth"},{"label":"Storefront performance","href":"/docs/apps/build/performance/storefront"},{"label":"Checkout performance","href":"/docs/apps/build/performance/checkout"}]},{"label":"Accessibility","href":"/docs/apps/build/accessibility"},{"label":"Localize your app","href":"/docs/apps/build/localize-your-app"},{"label":"Integrating with Shopify","href":"/docs/apps/build/integrating-with-shopify"},{"label":"Mobile support","href":"/docs/apps/build/mobile-support"},{"label":"Non-deceptive code","href":"/docs/apps/build/non-deceptive-code"},{"label":"Privacy law compliance","href":"/docs/apps/build/privacy-law-compliance"},{"label":"Security","children":[{"label":"Protect against common vulnerabilities","href":"/docs/apps/build/security/protect-against-common-vulnerabilities"},{"label":"Encrypt with TLS","href":"/docs/apps/build/security/encrypt-with-tls"},{"label":"Set up iframe protection","href":"/docs/apps/build/security/set-up-iframe-protection"},{"label":"Secure your network service ports","href":"/docs/apps/build/security/secure-network-service-ports"},{"label":"Generate secure tokens","href":"/docs/apps/build/security/generate-secure-tokens"},{"label":"Shorten URLs with care","href":"/docs/apps/build/security/shorten-urls-with-care"}]}]},{"label":"Building blocks","isGroup":true,"children":[{"label":"GraphQL","children":[{"label":"About GraphQL","href":"/docs/apps/build/graphql"},{"label":"GraphQL basics","children":[{"label":"Queries","href":"/docs/apps/build/graphql/basics/queries"},{"label":"Mutations","href":"/docs/apps/build/graphql/basics/mutations"},{"label":"Variables","href":"/docs/apps/build/graphql/basics/variables"},{"label":"Advanced concepts","href":"/docs/apps/build/graphql/basics/advanced"}]},{"label":"Migrate to GraphQL from REST","children":[{"label":"About REST to GraphQL migration","href":"/docs/apps/build/graphql/migrate"},{"label":"Learn how to migrate","href":"/docs/apps/build/graphql/migrate/learn-how"},{"label":"Update API calls in your app","href":"/docs/apps/build/graphql/migrate/libraries"},{"label":"New product model","children":[{"label":"About the new product model","href":"/docs/apps/build/graphql/migrate/new-product-model"},{"label":"API updates","href":"/docs/apps/build/graphql/migrate/new-product-model/api-updates"},{"label":"Product model and components","href":"/docs/apps/build/graphql/migrate/new-product-model/product-model-components"},{"label":"Migrate and test high-variants","href":"/docs/apps/build/graphql/migrate/new-product-model/migrate-and-test"},{"label":"Retrieve product data","href":"/docs/apps/build/graphql/migrate/new-product-model/retrieve-data"},{"label":"Add product data","href":"/docs/apps/build/graphql/migrate/new-product-model/add-data"},{"label":"Edit product data","href":"/docs/apps/build/graphql/migrate/new-product-model/edit-data"},{"label":"Sync product data","href":"/docs/apps/build/graphql/migrate/new-product-model/sync-data"},{"label":"Linking metafields to options","href":"/docs/apps/build/graphql/migrate/new-product-model/metafield-linked"}]}]}]},{"label":"Extensions","children":[{"label":"About extensions","href":"/docs/apps/build/app-extensions"},{"label":"List of app extensions","href":"/docs/apps/build/app-extensions/list-of-app-extensions"},{"label":"Build an extension-only app","href":"/docs/apps/build/app-extensions/build-extension-only-app"},{"label":"Configure app extensions","href":"/docs/apps/build/app-extensions/configure-app-extensions"},{"label":"Remove an extension","href":"/docs/apps/build/app-extensions/remove-app-extension"}]},{"label":"Shopify Functions","children":[{"label":"About Shopify Functions","href":"/docs/apps/build/functions"},{"label":"Input and output","children":[{"label":"About input and output","href":"/docs/apps/build/functions/input-output"},{"label":"Metafields for input queries","href":"/docs/apps/build/functions/input-output/metafields-for-input-queries"},{"label":"Use variables in input queries","href":"/docs/apps/build/functions/input-output/use-variables-input-queries"},{"label":"Network access","children":[{"label":"About network access","href":"/docs/apps/build/functions/input-output/network-access"},{"label":"Use network access","href":"/docs/apps/build/functions/input-output/network-access/use-network-access"},{"label":"About performance and resilience","href":"/docs/apps/build/functions/input-output/network-access/performance-and-resilience"},{"label":"GraphQL reference","href":"/docs/apps/build/functions/input-output/network-access/graphql"}]}]},{"label":"Programming languages","children":[{"label":"Language considerations","href":"/docs/apps/build/functions/programming-languages"},{"label":"Rust for Functions","href":"/docs/apps/build/functions/programming-languages/rust-for-functions"},{"label":"JavaScript for Functions","href":"/docs/apps/build/functions/programming-languages/javascript-for-functions"},{"label":"WebAssembly","href":"/docs/apps/build/functions/programming-languages/webassembly-for-functions"}]},{"label":"Test and debug Shopify Functions","href":"/docs/apps/build/functions/test-debug-functions"},{"label":"Monitoring and handling errors in production","href":"/docs/apps/build/functions/monitoring-and-errors"},{"label":"Localization practices for Shopify Functions","href":"/docs/apps/build/functions/localization-practices-shopify-functions"}]},{"label":"Webhooks","children":[{"label":"About webhooks","href":"/docs/apps/build/webhooks"},{"label":"Subscribe","children":[{"label":"About subscriptions","href":"/docs/apps/build/webhooks/subscribe"},{"label":"Create a subscription","href":"/docs/apps/build/webhooks/subscribe/get-started"},{"label":"Subscribe using Admin API","href":"/docs/apps/build/webhooks/subscribe/subscribe-using-api"},{"label":"Deliver through HTTPS","href":"/docs/apps/build/webhooks/subscribe/https"},{"label":"Use a newer API version","href":"/docs/apps/build/webhooks/subscribe/use-newer-api-version"}]},{"label":"Customize","children":[{"label":"About customizing your webhooks","href":"/docs/apps/build/webhooks/customize"},{"label":"Filter events","href":"/docs/apps/build/webhooks/customize/filters"},{"label":"Modify payloads","href":"/docs/apps/build/webhooks/customize/modify_payloads"},{"label":"About sub-topics","href":"/docs/apps/build/webhooks/customize/sub-topics"}]},{"label":"Ignore duplicates","href":"/docs/apps/build/webhooks/ignore-duplicates"},{"label":"Troubleshoot","href":"/docs/apps/build/webhooks/troubleshooting-webhooks"},{"label":"Best practices","href":"/docs/apps/build/webhooks/best-practices"}]},{"label":"Custom data","children":[{"label":"About metafields and metaobjects","href":"/docs/apps/build/custom-data"},{"label":"About reserved prefixes","href":"/docs/apps/build/custom-data/reserved-prefixes"},{"label":"Metafields","children":[{"label":"List of data types","href":"/docs/apps/build/custom-data/metafields/list-of-data-types"},{"label":"Manage metafields","href":"/docs/apps/build/custom-data/metafields/manage-metafields"},{"label":"Definitions","children":[{"label":"About metafield definitions","href":"/docs/apps/build/custom-data/metafields/definitions"},{"label":"Use access controls for metafield","href":"/docs/apps/build/custom-data/metafields/definitions/use-access-controls-metafields"},{"label":"Conditional metafield definitions","href":"/docs/apps/build/custom-data/metafields/definitions/conditional-metafield-definitions"},{"label":"List of standard definitions","href":"/docs/apps/build/custom-data/metafields/definitions/list-of-standard-definitions"},{"label":"Manage metafield definitions","href":"/docs/apps/build/custom-data/metafields/definitions/manage-metafield-definitions"},{"label":"List of validation options","href":"/docs/apps/build/custom-data/metafields/definitions/list-of-validation-options"},{"label":"Set validation rules","href":"/docs/apps/build/custom-data/metafields/definitions/set-validation-rules"}]},{"label":"Use app-data metafields","href":"/docs/apps/build/custom-data/metafields/use-app-data-metafields"},{"label":"Manage private metafields","href":"/docs/apps/build/custom-data/metafields/manage-private-metafields"},{"label":"Migrate private metafields","href":"/docs/apps/build/custom-data/metafields/migrate-private-metafields"},{"label":"Use metafield capabilities","href":"/docs/apps/build/custom-data/metafields/use-metafield-capabilities"},{"label":"Migrate metafields","href":"/docs/apps/build/custom-data/metafields/migrate-metafields"},{"label":"Query by metafield value","href":"/docs/apps/build/custom-data/metafields/query-by-metafield-value"}]},{"label":"Metaobjects","children":[{"label":"Work with metaobjects","href":"/docs/apps/build/custom-data/metaobjects/work-with-metaobjects"},{"label":"Use access controls for metaobjects","href":"/docs/apps/build/custom-data/metaobjects/use-access-controls-metaobjects"},{"label":"Use metaobject capabilities","href":"/docs/apps/build/custom-data/metaobjects/use-metaobject-capabilities"},{"label":"List of standard definitions","href":"/docs/apps/build/custom-data/metaobjects/list-of-standard-definitions"},{"label":"Metaobject limits","href":"/docs/apps/build/custom-data/metaobjects/metaobject-limits"}]}]},{"label":"Authentication","children":[{"label":"Authentication and authorization","href":"/docs/apps/build/authentication-authorization"},{"label":"App installation","children":[{"label":"Enable Shopify-managed installations","href":"/docs/apps/build/authentication-authorization/app-installation"},{"label":"Uninstall an app with an API request","href":"/docs/apps/build/authentication-authorization/app-installation/uninstall-app-api-request"}]},{"label":"Session tokens","children":[{"label":"About session tokens","href":"/docs/apps/build/authentication-authorization/session-tokens"},{"label":"Set up session tokens","href":"/docs/apps/build/authentication-authorization/session-tokens/set-up-session-tokens"}]},{"label":"Access tokens","children":[{"label":"About token acquisition","href":"/docs/apps/build/authentication-authorization/access-tokens/"},{"label":"Token exchange","href":"/docs/apps/build/authentication-authorization/access-tokens/token-exchange"},{"label":"Authorization code grant","href":"/docs/apps/build/authentication-authorization/access-tokens/authorization-code-grant"},{"label":"Access tokens for custom apps","href":"/docs/apps/build/authentication-authorization/access-tokens/generate-app-access-tokens-admin"},{"label":"Online access tokens","href":"/docs/apps/build/authentication-authorization/access-tokens/online-access-tokens"},{"label":"Offline access tokens","href":"/docs/apps/build/authentication-authorization/access-tokens/offline-access-tokens"},{"label":"Delegate access tokens","href":"/docs/apps/build/authentication-authorization/access-tokens/use-delegate-tokens"}]},{"label":"Client secret / API key","children":[{"label":"About client secrets","href":"/docs/apps/build/authentication-authorization/client-secrets"},{"label":"Rotate or revoke client credentials","href":"/docs/apps/build/authentication-authorization/client-secrets/rotate-revoke-client-credentials"}]},{"label":"Set up embedded app authorization","href":"/docs/apps/build/authentication-authorization/set-embedded-app-authorization"}]}]}]},"page":{"gid":"0f8dc737-f14e-444e-9a8f-82dcaae5c2db","error_type":null}} //]]> </script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/runtime-ea8ae0432c21b175dec34e78932fd74fe0b148f9bd1e4e3636ac9621a838082d.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_buffer_index_js-6058094e37b5637bf74a10bf4e56b90b66298cee81a245c3fac459f7df6ffdfd.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_jquery_dist_jquery_js-ee5a0459d56a6853367ae50bfbcf439154e941a4c52791e24de38e3ee50f1abf.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_shopify_monorail_lib_esnext_producers_monorail-edge-producer_esnext-node-bbaa59-02fc12c0f234a49e04be7f3ed47d42a67e745670ec6ab6345b514edd54d70106.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/application-648df1ef626ff3b3c4ba19a4fb2204e2e1e21f4ed7819fe8a2366df67781c03d.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_shopify_react-i18n_build_esnext_hooks_esnext-82590a72ce35c447eebc1bc5b1db690730edfb1b53b129ba77fe2c84a39b5d63.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_codemirror_state_dist_index_js-49f1612af09fbcd5c83eb648524e9d2c56ed07632af21f273613b033753af213.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_codemirror_view_dist_index_js-ad6bc125e51f7345ae63ee033e12db2b0a5823ec0797930de012a85192db1b3f.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_graphql-language-service_esm_index_js-548c6d4aa5b3eb047a3639b2de5b73829afeb43317e055193115b91a1f807e12.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_codemirror_language_dist_index_js-39e44c0834846ff62af8c55ea7f7bc4204a8d6854094711b640c4a079c494bda.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_cm6-graphql_dist_index_js-node_modules_codemirror_lang-html_dist_index_j-02ea26-4715ef8549e02c3f61174a18503d048552dc67d3361546ec9ae786da5de9de9f.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_lodash_debounce_index_js-node_modules_codemirror_commands_dist_index_js-adc0c775e1cb6c31fc3687c8e4f2f341eb6dcbe9b06fe4ffc73a1bdd0d05c107.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_classnames_index_js-node_modules_babel_runtime_helpers_extends_js-node_m-f4e6f8-a9342cfc56df30ee4d5ae13dfef5c4e7f75295da5e7bdc7e7441c308751064c2.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_marked_lib_marked_esm_js-27eb913b872a447b007078c1038b6cfcdde13d8232b6fd5c4eaeb25d93aa3be4.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_html-react-parser_esm_index_mjs-5b6c0da2b0f9c6ebb9322e662fea32ae0a347159b8111ea295894c46d26ad5a7.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_react-dom_server_browser_js-8ea7fd5993ec838c75ca6dd1b64670f661e8703d5eef41b99ae912dfe3a5ed82.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_bugsnag_js_browser_notifier_js-fee1503f0d3344076a617c3f74f8934e8aeb84ebde5fe803bc7b4b2e7f163972.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_shopify_monorail_lib_esnext_producers_monorail-edge-producer_esnext-node-376426-d4a9ae4fc4c3c30f7e048cfb00ef5e025ba123f16b03b48f54d48da7338d9fc2.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_radix-ui_react-popover_dist_index_mjs-f3cfb12154ed983e6b3ec7e233f0f7ad6f9191a0c200ec25f3df448d2133d1f9.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_shopify_css-utilities_build_esnext_variation-name_esnext-node_modules_re-d73217-cdc2682a807427471bd9b2e6a0dce63593cfa7773ed4bffc3e753cc1f48935dc.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_react-dom_client_js-a8d5eb94370eb1a10fbf5f746968a8ac12c6547cf473a84618203cb7fd04af6c.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_shopify_react-i18n_build_esnext_context_esnext-node_modules_babel_runtim-8b66b8-3312ec6425803301ffe14ccc211d457d7e82c6c07721ebadface0b243df11c53.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_codemirror-graphql_lint_js-node_modules_codemirror-graphql_mode_js-node_-0c4b37-d3254adc6f8974ef34ac92ed3696aed530bf27223f7a1b8de2364423b73676ec.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_codemirror-graphql_hint_js-node_modules_codemirror-graphql_variables_hin-9fc5f2-aa99460dc82083c932f24e7bb5b5b29472de24b62c555435d596054aea7c9b42.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/vendors-node_modules_bugsnag_plugin-react_dist_bugsnag-react_js-node_modules_shopify_react-i1-a2d6af-8f05d7b50b04889b3768bbe73ef8fe7301de1543e67223688c43cedeb283ccc0.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_icons_index_ts-87fcfeceb1b52cdb4261f861424db673d124f92493cb94e1250bb74e64564481.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_components_CodeBlock_CodeBlock_tsx-app_ui_components_CodeBlock_components_SkeletonHead-fc1a35-cfe239791613842bb07888142a3d78fc3b4bf3e0f331dcba28454f894af3abf0.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_components_Search_components_SearchModal_components_Results_components_TabPanels_Resul-440ecd-68fb9c0b73ab12238cb39c630dc1dc0d7ba759a9bdcc121bc418fbbca448fa3e.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_components_Layout_Sidebar_Sidebar_tsx-9d321d4b5b31b2150c3e76eff0f87a891891c7f2c4dda266da4feb451225f352.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/app_ui_components_Layout_MainLayout_MainLayout_tsx-app_ui_components_Layout_MainLayout_index_-d16546-3d2785ce57aeaafcc0af1a52073ea46d2a660e75969efac621097bc4c3112be1.js"></script> <script src="https://cdn.shopify.com/shopifycloud/shopify_dev/bundles/baseline/manifests/markdown_in_react-e46cd2913355ee97411635ff26f4a88d7de009788bf69ee4e4e16c9e26d99c93.js"></script> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','//connect.facebook.net/en_US/fbevents.js'); fbq('dataProcessingOptions', ['LDU'], 0, 0); fbq('init', '1139564706572105'); fbq('track', 'PageView'); </script> <noscript> <img height="0" width="0" style="display: none" alt="" src="https://www.facebook.com/tr?id=1139564706572105&amp;ev=PageView&amp;noscript=1" /> </noscript> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10