Project portfolio Browse selected work

Shopify Plus Upgrade Monthly Fee Reduction + Up to $4800 Development Fee Credit - Exclusive WesWoo Offer

Developer modules / Home, collections and trust

Home, collections and trust

Move from the first-view proposition to collections and products, supported by attributable evidence.

Product cards, prices and purchase entry

Make names, key facts and prices comparable. Send multi-variant products to option selection and reserve direct add for a single default variant.

Data and dependencies

  • Product data and selected_or_first_available_variant.
  • custom.key_spec contains a short verifiable fact.

Interaction logic

  • Offer direct add for one available default variant.
  • Use the product page for options or unavailable items.
Example code · snippets/ww-product-card.liquid
Liquid · WESWOO
{% assign card_product = product %}
{% assign card_variant = card_product.selected_or_first_available_variant %}
{% assign card_form_id = 'CardProduct-' | append: section.id | append: '-' | append: card_product.id %}
<article>
  <a href="{{ card_product.url | escape }}">
    {% if card_product.featured_image %}
      {{ card_product.featured_image | image_url: width: 640 | image_tag: widths: '320, 480, 640', sizes: '(max-width: 749px) 45vw, 25vw', loading: 'lazy' }}
    {% endif %}
    <h3>{{ card_product.title | escape }}</h3>
  </a>
  <p>{{ card_product.metafields.custom.key_spec.value | escape }}</p>
  <p>{{ card_variant.price | money_with_currency }}</p>
  {% if card_product.has_only_default_variant and card_variant.available %}
    {% form 'product', card_product, id: card_form_id %}
      <input type="hidden" name="id" value="{{ card_variant.id }}">
      <button type="submit">Add to cart</button>
    {% endform %}
  {% else %}
    <a href="{{ card_product.url | escape }}">Choose options and check availability</a>
  {% endif %}
</article>

Acceptance checks

  • Compare model, price and currency with the detail page.
  • Check missing images, long names and form errors.

Do not present a starting price as the price of every variant. The caller must pass the product object.

Read it, integrate it, verify it

  1. Choose a module and confirm the data contract.
  2. Connect the fragment to the current theme or framework.
  3. Check real variants, markets and recovery states.

Examples target Shopify Online Store 2.0 themes. Headless has separate data and version boundaries. Integrate fragments with actual fields, theme components and locale files.

Architecture references

Original educational examples with Shopify documentation and pinned upstream references. Follow the applicable license when adopting repository code.

Shopify/dawn · Licensecommit 3e9ee2281dc4 · Shopify-integration theme license; architecture reference without copying the implementation.
Shopify/hydrogen · Licensecommit 9e358a2462ba · MIT; retain copyright and license when using substantial code.

References checked 2026-11-12