Share your passport.

Make the passport easy to find before and after purchase. Add a clickable link on the matching webshop product page, and a scannable code where your category's rules require it. The exact data carrier and placement depend on the product rules that apply to you.

Copy-paste the snippet.

Every passport has its own URL — https://productpasses.com/p/linen-overshirt-ss26. The HTML examples below use that sample passport. For your own products, open your QR page and copy the link or card already filled with the correct URL. Use one passport per matching product page.

Minimal — text link
Works anywhere a product description accepts HTML (Shopify, Woo, Squarespace, Webflow, custom). Drop in the description editor's HTML view.
<a href="https://productpasses.com/p/linen-overshirt-ss26" target="_blank" rel="noopener" style="display:inline-flex;align-items:center;gap:6px;color:#0A0A0A;font-weight:500;text-decoration:underline;text-decoration-color:#FF4F1F;text-underline-offset:3px;">
  Digital Product Passport
</a>
Card — link + small description
A boxed callout that fits the product gallery / specs area. Works in any rich-text editor that accepts inline styles.
<a href="https://productpasses.com/p/linen-overshirt-ss26" target="_blank" rel="noopener" style="display:flex;gap:12px;align-items:center;padding:12px 14px;border:1px solid #E6E2D8;border-radius:12px;background:#FFFEFB;text-decoration:none;max-width:340px;">
  <span style="width:32px;height:32px;border-radius:8px;background:#FFE5DA;color:#B5320E;display:inline-flex;align-items:center;justify-content:center;font-weight:600;">P</span>
  <span style="flex:1;">
    <span style="display:block;font-size:14px;font-weight:500;color:#0A0A0A;">Digital Product Passport</span>
    <span style="display:block;font-size:12px;color:#6B6B66;margin-top:2px;">Materials · care · repair · end-of-life</span>
  </span>
</a>
Shopify — Liquid (theme-wide)
Connected Shopify store: use the no-code theme block first. If you edit your theme, add this once to a product template. It reads the productpasses.passport_url metafield we set on activation.
{%- assign passport_url = product.metafields.productpasses.passport_url.value -%}
{%- if passport_url != blank -%}
  <a href="{{ passport_url | escape }}"
     target="_blank" rel="noopener"
     class="product-dpp-link"
     style="display:inline-block;margin-top:12px;padding:8px 14px;border:1px solid #E6E2D8;border-radius:999px;text-decoration:none;color:#0A0A0A;font-weight:500;">
    Digital Product Passport
  </a>
{%- endif -%}
WooCommerce — functions.php
Adds the DPP link below the price on every product page. Reads the passport slug from a Woo product custom field named `dpp_slug` — set that per product in the Custom Fields section of the product editor (enable via Screen Options if hidden).
// functions.php in your active theme
add_action( 'woocommerce_single_product_summary', 'productpasses_dpp_link', 25 );
function productpasses_dpp_link() {
  global $product;
  $slug = get_post_meta( $product->get_id(), 'dpp_slug', true );
  if ( ! $slug ) return;
  printf(
    '<a href="https://productpasses.com/p/%s" target="_blank" rel="noopener" class="dpp-link" style="display:inline-block;margin:10px 0;padding:8px 14px;border:1px solid #e6e2d8;border-radius:999px;text-decoration:none;color:#0A0A0A;font-weight:500;">Digital Product Passport</a>',
    rawurlencode( $slug )
  );
}
Tip — generate the snippet automaticallyFrom inside the admin, the /admin/qr page now has a Copy embed snippet button next to each passport. It pre-fills your slug so you don't need to template anything yourself.

One sticker. Anywhere it'll be seen.

  1. In /admin/qr, pick the product and download the QR. PNG (1024 px) for thermal sticker printers (Brother QL, Dymo, Zebra). SVG for vector-clean printing on hangtags, woven labels, or screen-printed packaging.
  2. Treat 15 × 15 mm as a starting point, not a guaranteed minimum. Print size, contrast, the number of modules and the scanner all affect readability. Test your actual label on several phones before printing a batch.
  3. Best spots — in order of how reliably buyers find them:
    • Sewn-in care label (textiles)
    • Hangtag
    • Inside of the lid / packaging interior
    • Bottom or back of the product itself
  4. Print one test sticker first. Scan it with your phone. Confirm the passport loads. Then run the bulk print.
Check the label after wear. Our QRs use high error correction, which can recover some damaged data. It does not guarantee a scan after a particular percentage of surface damage. Test the printed label after washing or abrasion too.
Common questions
Do I need both the physical QR and the webshop link?

Check the applicable category rules for the required data carrier and where it must appear. A webshop link helps buyers find the same information before purchase. The exact legal requirements depend on the product and market.

Can I use one QR for a whole product family / SKU range?

The required level of identification depends on the applicable product rules. Use separate passports when variants need different information, such as materially different compositions, and check your category's final requirements before printing.

What if I change the passport later?

Editing a passport is fine — the URL stays the same and content updates. Do not change its public URL or permanently delete it after printing; old QRs would then return 404. Deactivated passports stay scannable for your grace period, then show a read-only 'no longer active' page.

Does the QR work offline?

The QR encodes a URL — to load the passport, the scanner's phone needs internet (almost always cellular or wifi at this point). The QR itself doesn't go stale, but the passport page is a live, EU-hosted web page.

Ready to print your first one?

Start free, pick a product, download the QR.

Already have an account? Open the QR downloads