Showing the customize button on quick preview.

Qstomizer can be integrated into AJAX/quick‑view modals. The Customize button that appears on the standard product page is loaded by our Theme App Extension block (App Block or App Embed), which Shopify only renders when the full product section is on the page — that's why it doesn't appear inside quick views (AJAX fragments don't run App Blocks).

You can add it manually by dropping the snippet below anywhere inside your quick‑view template (typically the section/snippet your theme uses for ?view=quick-view or the JS quick‑add drawer). It uses the same metafield/tag logic as our official block, points to the same App Proxy endpoint, and requires no additional JS:

{%- comment -%} Qstomizer — Customize button for quick view / AJAX modals {%- endcomment -%}
{%- liquid
  assign qsmz_show = false
  if product.metafields.qstomizer.customizebutton
    assign qsmz_show = true
  endif
  if product.tags contains 'qstomizer-product-tag' or product.description contains 'qstomizer-product-tag'
    assign qsmz_show = true
  endif
  assign qsmz_variant = product.selected_or_first_available_variant
-%}
{%- if qsmz_show -%}
  <a href="/apps/qstomizer?qstomizer-product-id={{ product.id }}&variantid={{ qsmz_variant.id }}&qstomizer-locale={{ request.locale.iso_code }}"
     class="btn qstomizer-product-button"
     data-qstomizer-quickview
     data-product-id="{{ product.id }}">
    Customize
  </a>
  <script>
    // Keep the variant id in sync when the shopper changes options inside the quick view
    (function () {
      var btn = document.currentScript.previousElementSibling;
      var modal = btn.closest('form')
        || btn.closest('.quick-view, [data-quick-view], dialog, .modal')
        || document;
      modal.addEventListener('change', function (e) {
        if (!e.target.matches('[name^="options"], [name="id"]')) return;
        var idField = modal.querySelector('[name="id"]');
        var vid = idField && idField.value;
        if (!vid) return;
        var url = new URL(btn.href, location.origin);
        url.searchParams.set('variantid', vid);
        btn.href = url.pathname + url.search;
      });
    })();
  </script>
{%- endif -%}
Notes
  • If your quick view uses the product object under a different name (card_product, qv_product, etc.), just replace product accordingly.
  • /apps/qstomizer is our App Proxy — it must remain unchanged; it's what launches the customizer session for that product+variant.
  • The tiny inline script only keeps variantid current if the user swaps variants inside the modal. If your quick view has no variant picker, you can drop the <script> block entirely.
  • Style the button however you like (class="btn qstomizer-product-button" is a suggestion so it inherits your theme's primary button styles).