Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.launchmystore.io/llms.txt

Use this file to discover all available pages before exploring further.

Extensions

Extensions allow your app to add custom UI and functionality directly into merchant stores. There are four types of extensions:

Theme Blocks

Add blocks to store themes that merchants can position in their storefront

Checkout UI

Extend checkout with custom fields, upsells, and integrations

Post-Purchase

Show content after order placement

Admin Blocks

Add panels to the merchant admin dashboard

How Extensions Work

  1. You define extension files (templates + schemas)
  2. You upload extensions via API when your app is installed
  3. Merchants configure extension settings in theme editor
  4. LaunchMyStore renders your extension in the appropriate context

Extension File Structure

Extensions are stored in your app’s extension directory:
public/extensions/{domainSlug}/{appHandle}/
├── blocks/
│   ├── product-reviews.aqua          # Liquid template
│   └── product-reviews.schema.json   # Block schema
├── snippets/
│   └── review-stars.aqua             # Reusable snippets
├── assets/
│   ├── extension.css
│   └── extension.js
└── app.json                          # Extension manifest

Extension Manifest

The app.json file declares your extensions:
{
  "handle": "my-reviews-app",
  "name": "Product Reviews",
  "version": "1.0.0",
  "extensions": {
    "theme_blocks": [
      {
        "handle": "product-reviews",
        "name": "Product Reviews Block",
        "target": "product"
      }
    ],
    "checkout_ui": [
      {
        "handle": "trust-badges",
        "name": "Trust Badges",
        "target": "checkout.cart-line-list.render-after"
      }
    ],
    "admin_blocks": [
      {
        "handle": "reviews-panel",
        "name": "Reviews Panel",
        "target": "product.details.block"
      }
    ]
  }
}

Installing Extensions

When your app is installed, upload extension files to the store:
// After OAuth completes
await fetch('https://store.launchmystore.io/api/apps/install-extensions', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    domainSlug: 'merchant-store',
    appHandle: 'my-reviews-app',
    blocks: [
      {
        handle: 'product-reviews',
        template: '{% comment %}Liquid template{% endcomment %}...',
        schema: { /* block schema */ }
      }
    ],
    snippets: [
      { handle: 'review-stars', template: '...' }
    ],
    assets: [
      { filename: 'extension.css', content: '...' }
    ]
  })
});

Uninstalling Extensions

When your app is uninstalled, clean up extension files:
await fetch('https://store.launchmystore.io/api/apps/uninstall-extensions', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    domainSlug: 'merchant-store',
    appHandle: 'my-reviews-app'
  })
});

Extension Templates

Extensions use Liquid templating, identical to Shopify themes:
{% comment %} product-reviews.aqua {% endcomment %}

<div class="reviews-widget" data-product-id="{{ product.id }}">
  <h3>{{ block.settings.title }}</h3>
  
  {% if block.settings.show_rating %}
    <div class="average-rating">
      {% render 'review-stars', rating: product.metafields.reviews.rating %}
    </div>
  {% endif %}
  
  <div class="reviews-container" id="reviews-{{ product.id }}">
    Loading reviews...
  </div>
</div>

<script src="{{ 'extension.js' | extension_asset_url }}"></script>

Block Schemas

Define settings merchants can configure:
{
  "name": "Product Reviews",
  "target": "product",
  "settings": [
    {
      "type": "text",
      "id": "title",
      "label": "Section Title",
      "default": "Customer Reviews"
    },
    {
      "type": "checkbox",
      "id": "show_rating",
      "label": "Show Average Rating",
      "default": true
    },
    {
      "type": "range",
      "id": "reviews_per_page",
      "label": "Reviews Per Page",
      "min": 5,
      "max": 50,
      "step": 5,
      "default": 10
    }
  ]
}

Available Targets

Theme Blocks

  • index - Homepage
  • product - Product pages
  • collection - Collection pages
  • cart - Cart page
  • article - Blog articles
  • page - Custom pages

Checkout UI

  • checkout.cart-line-list.render-after
  • checkout.contact.render-after
  • checkout.shipping-method-list.render-after
  • checkout.payment-method-list.render-after
  • checkout.order-summary.render-after

Admin Blocks

  • product.details.block
  • order.details.block
  • customer.details.block
  • collection.details.block
  • discount.details.block
  • And 26 more targets