QUANTM7 Docs

Migration Guide

Moving from Liquid to Quill, with a comparison of syntax and available features.

If you have worked with Liquid before, you will feel at home with Quill. The syntax is the same. The tag names are the same. The filter names are the same. This guide covers the differences so you know what to expect.

What stays the same

Almost everything. Quill uses Liquid syntax, so your existing knowledge 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

If you can write Liquid, you can write Quill.

What is different

Context objects

The main difference is in the data objects available to your templates. Quill uses its own names for some objects:

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 is similar to other Liquid 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 from other Liquid 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 Quill tags and filters are 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