QUANTM7 Docs
QuillGuides

Migration Guide

What to expect when moving templates from another platform to Quill.

If you have worked with Liquid before, Quill will feel familiar. The tag and filter syntax is the same. This guide covers the differences so you know what to adjust.

What stays the same

The core syntax transfers directly:

  • Output tags: {{ variable }}
  • Logic tags: {% if %}, {% for %}, {% case %}
  • Filters: | upcase, | money, | date
  • Whitespace control: {%- -%} and {{- -}}
  • Comments: {% comment %} ... {% endcomment %}
  • Variable assignment: {% assign %}, {% capture %}
  • Looping: {% for %} with forloop variables
  • Includes: {% render %} with with, for, and named arguments

What is different

Context objects

The main difference is the data model. Quill has its own object names and properties:

Liquid (other platforms)QuillNotes
shopstoreSame data, different name
shop.money_formatHandled by money filterNo format string needed
articlepageBlog articles map to pages
linklistlinklists or menusBoth names work

Product, collection, cart, and customer objects use the same names and the same properties.

Media filters

Image handling uses the QUANTM7 CDN instead of third-party image services:

{{ product.featured_image | img_url: '400x400' }}

The syntax is the same. The output URL points to the QUANTM7 CDN. Image resizing happens on the fly.

The image_tag filter generates a full <img> element with srcset, sizes, and lazy loading built in. This is more complete than what most Liquid platforms offer.

Money filters

Money filters read your store's currency settings. Prices are stored in the smallest currency unit (pence, cents). The money filter handles the conversion and formatting.

Multi-currency support is built in. When a visitor picks a different currency, the money filter uses the converted value and the correct symbol. No extra code is needed.

Section schema

The section schema system will be familiar if you have used Liquid-based platforms. The setting types are the same. The visual editor reads the schema and builds the settings form.

One addition: Quill supports the product_list type for selecting multiple products at once:

{ "type": "product_list", "id": "products", "label": "Featured products" }

Translation

The t filter works the same way. Locale files use the same JSON format with nested keys:

{{ 'product.add_to_cart' | t }}

Quill supports variable interpolation in translations:

{ "cart.item_count": "{{ count }} items in your cart" }
{{ 'cart.item_count' | t: count: cart.item_count }}

Features not in Quill

A few features you may be used to from other platforms are not available yet:

  • Metaobjects as standalone template types (metafields on products, collections, and customers work normally)
  • Section rendering API for loading sections via AJAX
  • Predictive search API (handled through the platform's own search system)

These may be added in future releases.

Migrating a template

To move a template from another platform to Quill:

  1. Copy the template code. The tag and filter syntax is the same.
  2. Replace shop with store if used.
  3. Check image URLs. Replace any platform-specific image CDN helpers with img_url and image_tag.
  4. Test the money filter. Prices in Quill are in the smallest unit, so confirm the values are correct.
  5. Update any platform-specific includes (like content_for_index) with the Quill equivalents.
  6. Move locale files to locales/ and confirm the keys match your t filter calls.

Most templates will work with minimal changes. The biggest adjustment is usually image handling and money formatting.

On this page