around each block. Since you already add the li-block to a wrapping element, this results in unnecessary nested
s. Blocks are now rendered without Shopify’s extra wrapper by default. But if you need a specific HTML tag, you can use li-block:tag="div" (for example), which will wrap the li-block element in an tag.
Webflow
Copy
li-block = Text
li-block:tag = div
Shopify
Copy
####
[hashtag](https://docs.liquiflow.app/section-settings/theme-blocks#giving-access-to-all-theme-blocks-in-a-theme)
Giving Access to all Theme blocks in a Theme
If you want a section to have access to all blocks in a theme, you can add `theme` as the value of the `li-cf-theme-blocks` attribute. Like this:
Webflow
Copy
li-cf-theme-blocks="theme"
####
[hashtag](https://docs.liquiflow.app/section-settings/theme-blocks#private-blocks)
Private Blocks
By adding an underscore (\_) in front of a block name (li-block=”\_Image”), you can make the block private to a specific section. This prevents it from appearing in sections that have access to all theme blocks. This gives you more control over how and where theme blocks can be used and combined. [Learn more here.arrow-up-right](https://shopify.dev/docs/storefronts/themes/architecture/blocks/theme-blocks/targeting#private-blocks)
[PreviousBlockschevron-left](https://docs.liquiflow.app/section-settings/blocks)
[NextStatic Blockschevron-right](https://docs.liquiflow.app/section-settings/static-blocks)
Last updated 1 month ago
Was this helpful?
This site uses cookies to deliver its service and to analyze traffic. By browsing this site, you accept the [privacy policy](https://www.liquiflow.app/legal/privacy-policy)
.
close
AcceptReject
---
# Welcome to Liquiflow | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close

circle-check
**Welcome to our new Docs:** If you have any feedback, please provide it in our [discord channelarrow-up-right](https://discord.gg/56KwXaUW5X)
:)
[hashtag](https://docs.liquiflow.app/#overview)
Overview
-------------------------------------------------------------
We're delighted that you've made it here. In the following sections, we'd like to explain what Liquiflow is, how it works, how it will advance your business, and why we, as an e-commerce agency, are absolutely excited about it. 🎉
We firmly believe that visual programming is the future of frontend development, and Webflow is a perfect fit for this purpose. Additionally, we're thrilled with the extent and functionality of the e-commerce CMS Shopify.
Liquiflow brings together the best of both worlds. You can develop your online shops directly in Webflow and equip them with the necessary variables through Liquiflow. We'll take care of the rest. Once connected with Liquiflow, we convert the project into a Shopify theme and keep everything up to date as soon as you publish in Webflow.
[hashtag](https://docs.liquiflow.app/#quick-links)
Quick links
-------------------------------------------------------------------
[](https://docs.liquiflow.app/useful/liquiflow-starter-templates)

**Start with Webflow Template**
Use a fully working Template as starting point.
[](https://docs.liquiflow.app/useful/cheat-sheet)

Liquiflow **Cheatsheet**
Checkout the Liquiflow Cheat sheet.
[](https://discord.gg/56KwXaUW5X)

**Join our Free Discord Group**
Join our Discord community to get your questions answered.
[hashtag](https://docs.liquiflow.app/#what-is)
What is Liquiflow?
----------------------------------------------------------------------
Liquiflow is a converter that connects your Webflow project to Shopify, generating fully-featured e-commerce themes. With the assistance of custom attributes in Webflow, you can design your shop to your liking, and Liquiflow takes care of the rest. We equip your project with complete Liquid code and ensure that you don't lose the advantages of both Webflow and Shopify.
[hashtag](https://docs.liquiflow.app/#who-is-for)
Who is Liquiflow for?
----------------------------------------------------------------------------
You might be wondering, why do I need Liquiflow? Liquiflow is essential for anyone looking to create a custom Shopify theme with maximum flexibility. It provides unparalleled tools and features that empower you to design a unique and fully functional online store tailored to your needs.
Our current clients include:
* Shopify Agencies and Freelancer
* Webflow Agencies and Freelancer
* Shopify Merchants with their own Development or Marketing Team
circle-info
**Disclaimer:** Liquiflow is a professional tool, as the name suggests ;) To fully leverage its capabilities, it is essential to learn the Shopify Liquid Template Language and Webflow.
[NextGetting Startedchevron-right](https://docs.liquiflow.app/fundamentals/getting-started)
Last updated 7 months ago
Was this helpful?
* [Overview](https://docs.liquiflow.app/#overview)
* [Quick links](https://docs.liquiflow.app/#quick-links)
* [What is ?](https://docs.liquiflow.app/#what-is)
* [Who is for?](https://docs.liquiflow.app/#who-is-for)
Was this helpful?
sun-brightdesktopmoon
sun-brightdesktopmoon
---
# How to Convert Your Theme | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
Liquiflow provides several methods to manage and maintain your Shopify theme. It is crucial to ensure that your content originates from Shopify, keeping your Webflow project as minimal as possible (e.g., assets should be managed in Shopify, not uploaded to Webflow).
The most efficient way to handle your Shopify theme is by using our GitHub integration. By connecting your Liquiflow project to a GitHub repository and linking the repository to Shopify, you significantly streamline your workflow. The following steps will explain these methods in detail.
[hashtag](https://docs.liquiflow.app/fundamentals/how-to-convert-your-theme#how-to-connect-to-github)
How to Connect to GitHub
-----------------------------------------------------------------------------------------------------------------------------------
Follow these steps to connect your Liquiflow project to GitHub and Shopify:
1
Log in to your GitHub account and create a new repository with a “README” file.
2
Log in to your Liquiflow account and create a new project.
3
Open the project and go to the Settings.
4
Click “Connect to GitHub” and follow the steps.
5
Authorize the repository you created earlier (or all, if you prefer).
6
Return to the Liquiflow project and select the repository you want to connect.
7
Select a branch (usually, there will only be one "main" branch if the project is empty).
8
If you haven’t converted your theme yet, please follow the steps outlined in [“Convert Your Theme”arrow-up-right](https://www.liquify.pro/docu/convert-your-theme#convert-your-theme)
before connecting your Theme to GitHub.
9
Go to Shopify, open “Online Store” and select “Themes.” Click “Add Theme” and choose “Connect from GitHub.”
10
Connect your GitHub account and follow the steps. Then, choose a repository and branch.
11
You are now ready to convert your theme 🎉.
[hashtag](https://docs.liquiflow.app/fundamentals/how-to-convert-your-theme#convert-your-theme)
Convert your Theme
-----------------------------------------------------------------------------------------------------------------------
Follow these steps to export and convert your Theme:
1
Export the code from Webflow.
2
Upload the ZIP file into your Liquiflow project. Before converting, you can select a branch as described above.
3
Open the pull request to review the results. If you are not using GitHub, download the theme and continue with "[Convert your theme without GitHub](https://docs.liquiflow.app/fundamentals/how-to-convert-your-theme#convert-your-theme-without-github)
".
4
Check the changed files in GitHub to review all the updates.
5
Merge the branch once you are satisfied with the results. After merging, you can delete the merged branch.
If the branch has any conflicts, you can resolve them directly in GitHub.
6
Your conversion is now complete. 🎉 You can go to Shopify and check the results.
If any bugs occur, follow the steps [herearrow-up-right](https://www.liquify.pro/docu/debugging)
.
###
[hashtag](https://docs.liquiflow.app/fundamentals/how-to-convert-your-theme#convert-your-theme-without-github)
Convert your theme without GitHub
Follow these steps to export and convert your theme:
1
Export the code from Webflow.
2
Upload the ZIP file into your Liquiflow project. Before converting, you can select a branch as described above.
3
Download the converted theme
4
Go to Shopify and upload the ZIP in the online shops theme section
5
After uploading, you need to copy the schema files from the current version into the new version to keep the content.
6
Your conversion is now complete. 🎉 You can go to Shopify-Editor and check the results.
If any bugs occur, follow the steps [herearrow-up-right](https://www.liquify.pro/docu/debugging)
.
[PreviousTemplate Structurechevron-left](https://docs.liquiflow.app/fundamentals/template-structure)
[NextOverviewchevron-right](https://docs.liquiflow.app/section-settings/overview)
Last updated 7 months ago
Was this helpful?
* [How to Connect to GitHub](https://docs.liquiflow.app/fundamentals/how-to-convert-your-theme#how-to-connect-to-github)
* [Convert your Theme](https://docs.liquiflow.app/fundamentals/how-to-convert-your-theme#convert-your-theme)
* [Convert your theme without GitHub](https://docs.liquiflow.app/fundamentals/how-to-convert-your-theme#convert-your-theme-without-github)
Was this helpful?
sun-brightdesktopmoon
sun-brightdesktopmoon
---
# Overview | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
In addition to Shopify objects, you can implement settings that allow your Shopify content editor to modify both the content and appearance directly within Shopify. To achieve this, use the `li-settings` tag. Using a modifier, you can access all of Shopify's provided [Settings Inputsarrow-up-right](https://shopify.dev/docs/themes/architecture/settings/input-settings)
.
In Webflow, you define the name of the Shopify setting inside the value of the attribute (e.g. Headline). The content inside the element is used as the default placeholder value in the Shopify editor.
Webflow
Copy
li-settings:text = Headline
This will be converted into:

[hashtag](https://docs.liquiflow.app/section-settings/overview#section-settings)
Section Settings
------------------------------------------------------------------------------------------------------
[Settingschevron-right](https://docs.liquiflow.app/section-settings/settings)
[Blockschevron-right](https://docs.liquiflow.app/section-settings/blocks)
[Custom Settingschevron-right](https://docs.liquiflow.app/section-settings/custom-settings)
[Sectionschevron-right](https://docs.liquiflow.app/section-settings/sections)
[Theme Blockschevron-right](https://docs.liquiflow.app/section-settings/theme-blocks)
[PreviousHow to Convert Your Themechevron-left](https://docs.liquiflow.app/fundamentals/how-to-convert-your-theme)
[NextSettingschevron-right](https://docs.liquiflow.app/section-settings/settings)
Last updated 7 months ago
Was this helpful?
Was this helpful?
sun-brightdesktopmoon
sun-brightdesktopmoon
---
# App Blocks | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
When using `li-content-for-blocks`, or `li-content-for-theme-blocks` you can also include App Blocks. If you have an app installed that supports App Blocks, they will now appear in the Shopify Editor.

[PreviousStatic Blockschevron-left](https://docs.liquiflow.app/section-settings/static-blocks)
[NextCustom Settingschevron-right](https://docs.liquiflow.app/section-settings/custom-settings)
Last updated 7 months ago
Was this helpful?
Was this helpful?
sun-brightdesktopmoon
sun-brightdesktopmoon
---
# Custom Settings | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
You can also use `li-settings:custom` to create other settings which can be adjusted in the Shopfy Theme Editor. Add `li-settings:custom="example-name"` to a Webflow Embed and place the Section-Settings-Schema inside of it. In this example, we are creating a range slider.
Webflow
Copy
{
"type": "range",
"id": "font_size",
"min": 12,
"max": 24,
"step": 1,
"unit": "px",
"label": "Font size",
"default": 16
}

You can refer to the setting inside your section like this: `style="font-size: {{ section.settings.font_size }}"`
The value of the attribute `li-settings:custom` will be used as a header inside the Shopify Theme Editor. This makes it easier to organize and group related settings inside one embed, so everything looks cleaner later on in the Shopify Theme Editor. If you do not want a header to appear, leave the value of `li-settings:custom` empty.
To group your settings into one header, turn your settings JSON into an array, like this:
Webflow
Copy
[\
{\
"type": "range",\
"id": "font_size",\
"min": 12,\
"max": 24,\
"step": 1,\
"unit": "px",\
"label": "Font size",\
"default": 16\
},\
{\
"type": "text",\
"id": "headline",\
"label": "Headline",\
"default": "Example Headline"\
}\
]

[PreviousApp Blockschevron-left](https://docs.liquiflow.app/section-settings/app-blocks)
[NextOverviewchevron-right](https://docs.liquiflow.app/liquid-attributes/overview)
Last updated 7 months ago
Was this helpful?
Was this helpful?
sun-brightdesktopmoon
sun-brightdesktopmoon
---
# Overview | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
[hashtag](https://docs.liquiflow.app/liquid-attributes/overview#liquid-tags)
Liquid Objects
------------------------------------------------------------------------------------------------
The CMS content of your shop can be accessed using objects such as `product`, `collection`, or `cart`. You can place these objects in Webflow using the `li-object` tag. Learn more about the available options with Shopify objects in the [Objects chapter](https://docs.liquiflow.app/liquid-attributes/objects)
.
[hashtag](https://docs.liquiflow.app/liquid-attributes/overview#liquid-filters)
Liquid Filters
---------------------------------------------------------------------------------------------------
With liquid filters, you can modify the output of your content. You can calculate values, format a string (text) and so much more. You can find a list of all filters [herearrow-up-right](https://shopify.dev/docs/api/liquid/filters)
or in the Shopify [Cheat sheetarrow-up-right](https://www.shopify.com/partners/shopify-cheat-sheet)
.
Filters can be applied to a `li-object` value by using a pipe symbol `|` followed by the desired filter. Learn more about all the possibilities with Shopify filters in the [Filters chapter](https://docs.liquiflow.app/liquid-attributes/filters)
.
[hashtag](https://docs.liquiflow.app/liquid-attributes/overview#liquid-tags-1)
Liquid Tags
-----------------------------------------------------------------------------------------------
Liquid tags, in the context of the Shopify Liquid template language, are special markers enclosed in curly braces and percentage signs, like `{% ... %}`. These tags are used to perform various control and logic operations within the template. Liquid tags are responsible for executing specific actions, such as loops, conditionals, and more, to dynamically generate content or perform operations on the data.
To use this functionality in Webflow, we have prepared the following tags. These tags will always wrap the `div` they are attached on.
You can't apply multiple liquid tags (`li-for`, `_li-if_`, `li-unless`) to one element. If you need that, you should use the `:inside` modifier to display the tag inside the `div` it's applied. Learn more about all the possibilities with Shopify tags in the [Filters chapter](https://docs.liquiflow.app/liquid-attributes/filters)
, [Conditional chapter](https://docs.liquiflow.app/liquid-attributes/conditional)
and [Other Liquid Tags](https://docs.liquiflow.app/liquid-attributes/other-liquid-tags)
chapter.
[PreviousCustom Settingschevron-left](https://docs.liquiflow.app/section-settings/custom-settings)
[NextObjectschevron-right](https://docs.liquiflow.app/liquid-attributes/objects)
Last updated 7 months ago
Was this helpful?
* [Liquid Objects](https://docs.liquiflow.app/liquid-attributes/overview#liquid-tags)
* [Liquid Filters](https://docs.liquiflow.app/liquid-attributes/overview#liquid-filters)
* [Liquid Tags](https://docs.liquiflow.app/liquid-attributes/overview#liquid-tags-1)
Was this helpful?
sun-brightdesktopmoon
sun-brightdesktopmoon
---
# Iteration (Lists) | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
[hashtag](https://docs.liquiflow.app/liquid-attributes/iteration-lists#for-loop)
For Loop
----------------------------------------------------------------------------------------------
To loop through an array — such as a list of products or product tags — you can use the `li-for` tag. This tag automatically duplicates the associated element for each item in the array. Within the loop, you have direct access to the current object being iterated over.
For example, when looping through a list of products, you can access individual product properties using dot notation (e.g. `product.price`).
Webflow
Copy
Shopify
Copy
{% for product in collection.products %}
{{ product.price }}
{% endfor %}

For positioning**,** you can use the `:inside` modifier. The converted code will look like this:
[PreviousFilterschevron-left](https://docs.liquiflow.app/liquid-attributes/filters)
[NextConditionalchevron-right](https://docs.liquiflow.app/liquid-attributes/conditional)
Last updated 3 months ago
Was this helpful?
Was this helpful?
sun-brightdesktopmoon
Webflow
Copy
li-for:inside = product in collection.products
Shopify
Copy
{% for product in collection.products %}
{{ product.title }}
{% endfor %}
sun-brightdesktopmoon
---
# Conditional | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
[hashtag](https://docs.liquiflow.app/liquid-attributes/conditional#if)
If
------------------------------------------------------------------------------
Using `li-if`, you can show an element when a specified condition is met. For instance, you can verify the availability of a product. If the condition is `true`, you can display the "Add to Cart" button or a specific tag.
Webflow
Copy
li-if = product.available != true
Shopify
Copy
{% if product.available != true %}
Sold out
{% endif %}
Therefore, Shopify gives you a bunch of operators you can use to check if data is true or contains something. Here is a list of all the operators:
* `==`
* `!=`
* `>`
* `<`
* `<=`
* `>=`
* `or`
* `and`
* `contains`
[hashtag](https://docs.liquiflow.app/liquid-attributes/conditional#unless)
Unless
--------------------------------------------------------------------------------------
With this tag, you check if the condition is `false`. The functionality is the same as `li-if`.
[hashtag](https://docs.liquiflow.app/liquid-attributes/conditional#case)
Case
----------------------------------------------------------------------------------
When you want to display an element which should meet different conditions, you can wrap these elements with the `li-case` tag. Inside the wrapper, you put the elements with different `li-when` tags.
Within `li-case`, you can only include elements with the `li-when` attribute. The value of this attribute specifies the condition to be met. If you leave the last `li-when` tag empty, it will act as an `else` condition. For Example:
[PreviousIteration (Lists)chevron-left](https://docs.liquiflow.app/liquid-attributes/iteration-lists)
[NextOther Liquid Tagschevron-right](https://docs.liquiflow.app/liquid-attributes/other-liquid-tags)
Last updated 7 months ago
Was this helpful?
* [If](https://docs.liquiflow.app/liquid-attributes/conditional#if)
* [Unless](https://docs.liquiflow.app/liquid-attributes/conditional#unless)
* [Case](https://docs.liquiflow.app/liquid-attributes/conditional#case)
Was this helpful?
sun-brightdesktopmoon
Webflow
Copy
li-unless = product.available == true
Shopify
Copy
{% unless product.available == true %}
Sold out
{% endunless %}
Webflow
Copy
li-case = product.type
Webflow
Copy
li-when = 'T-Shirt'
Shopify
Copy
//Element where li-case was attached
{% case product.type %}
{% when 'T-Shirt' %}
T-Shirt
{% when 'sweater' %}
Sweater
{% else %}
Other products
{% endcase %}
sun-brightdesktopmoon
---
# Miscellaneous | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
[hashtag](https://docs.liquiflow.app/liquid-attributes/miscellaneous#li-attribute)
li-attribute
----------------------------------------------------------------------------------------------------
The `li-attribute` tag allows you to assign reserved HTML attributes — such as `class`, `src`, or `href` — to any element. This is particularly useful in Webflow, where certain attributes are restricted or automatically managed by the designer.
Example:
Webflow
Copy
li-attribute:class = {% if product.available %} tex-color-green {% endif %}
Shopify
Copy
Another example:
Webflow
Copy
li-attribute:id = {{ product.id }}
Shopify
Copy
[hashtag](https://docs.liquiflow.app/liquid-attributes/miscellaneous#li-liquid)
li-liquid
----------------------------------------------------------------------------------------------
When using Liquid code directly in Shopify, Webflow may alter the formatting of certain characters —especially double quotes — within Custom Code elements or
[hashtag](https://docs.liquiflow.app/add-ons/liquiflow-elements#js-attributes)
JS Attributes
-------------------------------------------------------------------------------------------------
###
[hashtag](https://docs.liquiflow.app/add-ons/liquiflow-elements#li-object-vs-li-js-object)
li-object vs li-js-object
Both tags work similarly by displaying information from the Shopify CMS. The regular [`li-object`](https://docs.liquiflow.app/liquid-attributes/objects)
is used for Liquify functionality, while the `li-js-object` accesses Shopify's API responses via Alpine JS. We currently use the `li-js-object` in various components and plan to implement more in the future. Here is an example on how the two tags get converted:
Webflow
Copy
li-object = product.title
Shopify
Copy
{{ product.title }}
And this is an example for `li-js-object`:
Webflow
Copy
li-js-object = product.title
Shopify
Copy
Placeholder
###
[hashtag](https://docs.liquiflow.app/add-ons/liquiflow-elements#li-js-price)
li-js-price
As we can't apply Liquify filters in our Alpine JS Data, we have to come up with alternative methods. This special object tag will display a number in the store's currency.
###
[hashtag](https://docs.liquiflow.app/add-ons/liquiflow-elements#li-js-if)
li-js-if
If you want to hide things based on certain rules, you can use `li-js-if` with Shopify's Date API. For example, the original price when a discount is applied.
###
[hashtag](https://docs.liquiflow.app/add-ons/liquiflow-elements#li-element)
li-element
Sometimes, we use the `li-element` in Webflow for special purposes to make things easier. We've established predefined functionalities for these tags, with plans for further expansion in the future. For instance, the "Add-to-cart" element is given a special tag called `li-element="add-to-cart"`. In the next sections, we'll explain how these are commonly used.
[PreviousHow it Workschevron-left](https://docs.liquiflow.app/section-converter/how-it-works)
[NextMini Cartchevron-right](https://docs.liquiflow.app/add-ons/liquiflow-elements/mini-cart)
Last updated 6 months ago
Was this helpful?
* [Introduction](https://docs.liquiflow.app/add-ons/liquiflow-elements#introduction)
* [Alpine JS](https://docs.liquiflow.app/add-ons/liquiflow-elements#alpine-js)
* [JS Attributes](https://docs.liquiflow.app/add-ons/liquiflow-elements#js-attributes)
* [li-object vs li-js-object](https://docs.liquiflow.app/add-ons/liquiflow-elements#li-object-vs-li-js-object)
* [li-js-price](https://docs.liquiflow.app/add-ons/liquiflow-elements#li-js-price)
* [li-js-if](https://docs.liquiflow.app/add-ons/liquiflow-elements#li-js-if)
* [li-element](https://docs.liquiflow.app/add-ons/liquiflow-elements#li-element)
Was this helpful?
sun-brightdesktopmoon
Webflow
Copy
li-js-price = product.price
Shopify
Copy
Placeholder
Webflow
Copy
li-js-if = product.price < product.original_price
Shopify
Copy
Placeholder
sun-brightdesktopmoon
---
# SEO | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
In general, Liquiflow converts everything you build in Webflow into Shopify. We encourage you to follow best practices for SEO structure and guidelines. On this page, we share some tips we’ve learned over the years, with more to come.
[hashtag](https://docs.liquiflow.app/useful/seo#html-lang-attribute)
HTML Lang Attribute
---------------------------------------------------------------------------------------------
During the conversion process, we replace the default `lang=""` set by Webflow with Shopify’s `request.locale.iso_code` object. This ensures the correct language attribute is applied based on the user’s request and your store’s language settings.
[hashtag](https://docs.liquiflow.app/useful/seo#structured-data-schema)
Structured Data (Schema)
-----------------------------------------------------------------------------------------------------
You can add your structured data directly in the head section of the selected page. Additionally, you can replace JSON strings with Liquid variables, making it adaptable for page templates like product or collection pages. Our default settings can be found in the [Webflow Starter Kit](https://docs.liquiflow.app/useful/liquiflow-starter-templates)
.
[hashtag](https://docs.liquiflow.app/useful/seo#page-title-and-meta-description)
Page Title and Meta Description
---------------------------------------------------------------------------------------------------------------------
You can use page objects within Webflow’s page settings. For example, the page title can be accessed with `{{ page_title }}`, and the description with `{{ page_description }}`. These can be edited directly in Shopify. To update SEO information, go to the specific page in Shopify, scroll to the bottom, and edit the search engine listing.
[hashtag](https://docs.liquiflow.app/useful/seo#file-size)
File Size
-------------------------------------------------------------------------
We recommend not implementing assets directly in Webflow. Instead, add them via the Shopify theme editor and CMS. There, you can use the Liquid `image_tag` [filterarrow-up-right](https://shopify.dev/docs/api/liquid/filters/image_tag)
to control image size based on its usage. This is particularly useful when content editors upload large files, which can hurt SEO. Shopify will automatically resize the image to the appropriate size using the `image_tag` filter.
[PreviousResourceschevron-left](https://docs.liquiflow.app/useful/resources)
[NextShopify 1.0 vs Shopify 2.0chevron-right](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0)
Last updated 7 months ago
Was this helpful?
* [HTML Lang Attribute](https://docs.liquiflow.app/useful/seo#html-lang-attribute)
* [Structured Data (Schema)](https://docs.liquiflow.app/useful/seo#structured-data-schema)
* [Page Title and Meta Description](https://docs.liquiflow.app/useful/seo#page-title-and-meta-description)
* [File Size](https://docs.liquiflow.app/useful/seo#file-size)
Was this helpful?
sun-brightdesktopmoon
sun-brightdesktopmoon
---
# Shopify 1.0 vs Shopify 2.0 | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
In June 2021, during the Shopify Unite event, Shopify unveiled one of its most significant updates to date: Online Store 2.0, commonly known as Shopify 2.0. This update introduced a fresh approach to Shopify’s theme architecture, profoundly impacting merchants’ operations.
Online Store 2.0 offers substantial opportunities for you and your clients. It enables your Merchant to edit the content and structure freely in Shopify.
Let’s dive in.
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#key-differences-between-shopify-1.0-and-2.0)
Key Differences Between Shopify 1.0 and 2.0
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
###
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#speed-and-performance)
**Speed and Performance**
One of the most notable improvements in Shopify 2.0 is enhanced speed and performance. Shopify 2.0 is faster and more efficient, handling more traffic and transactions without performance issues.
###
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#customization)
**Customization**
Shopify 2.0 significantly expands customization options. Users can now create custom templates and designs without needing development skills, which wasn’t possible with Shopify 1.0. This empowers store owners to design unique, personalized online stores effortlessly. Whether it’s changing your site content or rearranging sections, these tasks are now simple and do not require technical expertise.
###
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#marketing-tools)
**Marketing Tools**
Shopify 2.0 introduces advanced marketing tools, including email campaigns, social media integrations, and SEO optimization. These tools simplify promoting products and reaching a broader audience, enhancing the overall marketing strategy for merchants.
###
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#mobile-optimization)
**Mobile Optimization**
Given the rise of mobile commerce, eCommerce platforms must be optimized for mobile devices. Shopify 2.0 is designed with mobile optimization in mind, ensuring customers have a seamless browsing and purchasing experience on smartphones and tablets. The theme customizer responds natively to mobile views, providing a better perspective on the customer experience.
###
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#app-integrations)
**App Integrations**
Shopify 2.0 offers a broader selection of app integrations compared to Shopify 1.0. This makes it easier for merchants to add new features and functionalities to their online stores without hiring developers. With the enhanced functionalities of Online Store 2.0, the need for multiple apps is reduced, leading to faster load speeds.
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#how-those-work-with-shopify-2.0)
How Those Liquiflow work with Shopify 2.0?
-------------------------------------------------------------------------------------------------------------------------------------------------------
To leverage the full benefits of Shopify 2.0, we highly recommend using our GitHub integration. The primary difference lies in the content storage format: most content is now stored in JSON templates within the template folder. Without GitHub integration, you would need to manually copy all template files to maintain your shop.
Our GitHub integration automates this process. After your initial conversion, we ensure that the template folder remains untouched in future conversions. This prevents any overrides to content changes made directly in the Shopify editor.
To enable Shopify 2.0, you need to activate it in your Liquiflow Project settings. We strongly advise against attempting this with a Shopify 1.0 project. Therefore, it’s crucial to decide whether to use Shopify 1.0 or 2.0 before starting your project.
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#main-benefits-with)
Main Benefits with Liquiflow
----------------------------------------------------------------------------------------------------------------------------
###
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#dynamic-sections)
**Dynamic Sections**
With Shopify 2.0 enabled, all your content must be placed within a section tagged with _li-section_\=_"SECTION NAME"_. Each section should be nested inside a main element with the attribute _li-element_\=_"content-for-layout"_. Any content outside the content-for-layout element will be statically written into the layout file. This setup is particularly useful for elements like the Navbar, Footer, or Announcement Bar.
Within Shopify, you now have the flexibility to move, edit, add, or delete sections. This allows merchants to modify the structure and content without affecting the underlying code.
###
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#page-templates)
**Page Templates**
Each necessary page (Product, Collection, Blog, etc.) you create in Webflow must include the attribute _li-page_\=_"PAGENAME"_ on the body tag. This tag informs Shopify about the specific purpose of each page. Content pages do not require a _li-page_ tag, as they will automatically be recognized as static pages by Liquiflow.
If you do not want to import a page, simply add _li-page_\=_"remove"_.
In Shopify, merchants can edit existing page templates or create new ones based on the existing templates. For instance, if you have a product that requires special features, you can create a new page template and assign it to that product. This functionality allows you to create landing pages, CMS pages (such as Jobs, Team, etc.), or alternative product pages.
###
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#dynamic-content)
**Dynamic Content**
With Shopify 2.0, you can populate section settings with dynamic content. For example, you can create a single Hero design and use it on both the Article and Collection pages by selecting the appropriate dynamic variable for each page. This feature allows you and your merchants to build a scalable infrastructure for your shop.
###
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#app-blocks)
**App Blocks**
With App Blocks in Shopify 2.0, adding apps within your sections is very easy. We are currently working on implementing this feature in Shopify.
[hashtag](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#fazit)
Fazit
----------------------------------------------------------------------------------------
At Halbstark, we always use Shopify 2.0 for our projects. In our opinion, it is the best way to maintain and develop Shopify themes. If you have any questions, feel free to join our Discord server.
[PreviousSEOchevron-left](https://docs.liquiflow.app/useful/seo)
[NextLiquiflow Starter Templateschevron-right](https://docs.liquiflow.app/useful/liquiflow-starter-templates)
Last updated 7 months ago
Was this helpful?
* [Key Differences Between Shopify 1.0 and 2.0](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#key-differences-between-shopify-1.0-and-2.0)
* [Speed and Performance](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#speed-and-performance)
* [Customization](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#customization)
* [Marketing Tools](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#marketing-tools)
* [Mobile Optimization](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#mobile-optimization)
* [App Integrations](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#app-integrations)
* [How Those work with Shopify 2.0?](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#how-those-work-with-shopify-2.0)
* [Main Benefits with](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#main-benefits-with)
* [Dynamic Sections](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#dynamic-sections)
* [Page Templates](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#page-templates)
* [Dynamic Content](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#dynamic-content)
* [App Blocks](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#app-blocks)
* [Fazit](https://docs.liquiflow.app/useful/shopify-1.0-vs-shopify-2.0#fazit)
Was this helpful?
sun-brightdesktopmoon
sun-brightdesktopmoon
---
# Debugging | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
Sometimes it can happen that you set some attributes wrong in Webflow. During the conversion process, we do not verify attribute values. So be careful with what you write in there. Here are some tips and tricks to help you get your theme up and running.
[hashtag](https://docs.liquiflow.app/useful/debugging#automated-support-service)
Liquiflow Automated Support Service
-------------------------------------------------------------------------------------------------------------------------
When working in Webflow, you can always publish your site and visit the staging domain. After implementing the Liquiflow script from the project settings in the , you will see the Liquiflow Automated Support Service. Press “Run Attribute Check” to view all bugs on the current page.

circle-info
With this configuration, a small icon will automatically appear minimized in the top right corner of your Webflow page. To make it automatically visible, remove the _auto_ and _min_ attributes. It will only appear on .webflow URLs.
[hashtag](https://docs.liquiflow.app/useful/debugging#shopify-logs)
Shopify Logs
-------------------------------------------------------------------------------------
When working with GitHub integration, you can always check the logs in Shopify. These logs provide valuable insights into any Liquid errors and their locations. You can switch between commits using the dropdown menu. If Shopify identifies an issue, implement the solution in Webflow and convert again.

[hashtag](https://docs.liquiflow.app/useful/debugging#debugging-in-shopify-without-github)
Debugging in Shopify without GitHub
-----------------------------------------------------------------------------------------------------------------------------------
When you manually upload the Shopify theme, Shopify won’t import files that contain errors, making debugging a bit challenging. However, you can always open the Shopify Code Editor and search for missing pages. Create the file manually and paste the code into the new file. Shopify will then indicate what is wrong with your file.

[hashtag](https://docs.liquiflow.app/useful/debugging#no-errors-occurred-but-the-page-looks-incorrect)
No errors occurred, but the page looks incorrect?
-------------------------------------------------------------------------------------------------------------------------------------------------------------
When using the GitHub integration to convert a theme, it might look different from Webflow even if no errors occur. Shopify may need some time to process the new CSS information in the Theme Editor. To see the updated page immediately, check the Page Preview, where the new CSS file will be applied.
[hashtag](https://docs.liquiflow.app/useful/debugging#zip-file-is-too-large)
ZIP file is too large?
--------------------------------------------------------------------------------------------------------
If your ZIP file is too large, it’s usually because you’ve uploaded heavy image files into Webflow. To resolve this issue, delete the images in Webflow and use a placeholder image tagged with `li-settings:image="SETTING NAME"`. This way, you can add the images later in the Shopify editor.
[PreviousCheat Sheetchevron-left](https://docs.liquiflow.app/useful/cheat-sheet)
[NextWebflow and GSAP Animationschevron-right](https://docs.liquiflow.app/useful/webflow-and-gsap-animations)
Last updated 7 months ago
Was this helpful?
* [Automated Support Service](https://docs.liquiflow.app/useful/debugging#automated-support-service)
* [Shopify Logs](https://docs.liquiflow.app/useful/debugging#shopify-logs)
* [Debugging in Shopify without GitHub](https://docs.liquiflow.app/useful/debugging#debugging-in-shopify-without-github)
* [No errors occurred, but the page looks incorrect?](https://docs.liquiflow.app/useful/debugging#no-errors-occurred-but-the-page-looks-incorrect)
* [ZIP file is too large?](https://docs.liquiflow.app/useful/debugging#zip-file-is-too-large)
Was this helpful?
sun-brightdesktopmoon
Copy
sun-brightdesktopmoon
---
# Mini Cart | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
The Mini-Cart is a widely used component in the E-Commerce realm. It pops up when a product is added to the cart and usually slides in from the right side. We avoid using the Webflow-Ecommerce Elements in Webflow due to its excessive and unnecessary JavaScript load we don't need in Shopify. Instead, in Our Starter Theme, you'll discover a header containing all the necessary elements.

Before we explore the component further, here are some versatile elements that can be used throughout your entire Webflow project:
####
[hashtag](https://docs.liquiflow.app/add-ons/liquiflow-elements/mini-cart#add-to-cart)
Add-to-Cart
Place this element within a product item. It adds the current variant to the cart and triggers the Mini-Cart to open upon clicking.
Webflow
Copy
li-element = direct-add-to-cart
####
[hashtag](https://docs.liquiflow.app/add-ons/liquiflow-elements/mini-cart#mini-cart-toggle)
Mini-Cart Toggle
This element toggles the mini-cart's visibility upon clicking and can be positioned anywhere within the theme. Typically, it's used as a cart icon in the navbar for easy access.
Webflow
Copy
li-element = mini-cart-toggle
####
[hashtag](https://docs.liquiflow.app/add-ons/liquiflow-elements/mini-cart#mini-cart-item-count)
Mini-Cart Item Count
This element displays the current number of items in the cart and can be positioned anywhere within the theme. It's commonly used to show the item count in the navbar.
Webflow
Copy
li-element = mini-cart-item-count
####
[hashtag](https://docs.liquiflow.app/add-ons/liquiflow-elements/mini-cart#mini-cart-empty)
Mini-Cart Empty
This element is displayed when the mini-cart is empty and can be placed anywhere within the theme.
Webflow
Copy
li-element = mini-cart-empty
###
[hashtag](https://docs.liquiflow.app/add-ons/liquiflow-elements/mini-cart#mini-cart-component)
Mini-Cart Component
Discover all the essential elements required for and usable within the mini cart here. The grey outlines show how the elements should be nested within one another.
**mini-cart:** This element holds and shows the component. Every following element should go inside this one.
mini-cart
**mini-cart-container:** This element is the actual Mini-Cart and appears animated when the `is-open` class is applied. You can only position this element once on a page. It needs to be inside the `mini-cart`
Within this element, use the `li-js-object` to showcase the cart information. Here's an example of the objects available for use:
* `total.price`
* `total.discount`
* `total.original_total_price`
mini-cart > mini-cart-container
**mini-cart-full:** This element should be placed within the `mini-cart-container` element and will be shown when the cart has items inside. It needs to be inside the `mini-cart-container`
mini-cart > mini-cart-container > mini-cart-full
**mini-cart-item:** This element should be placed within the `mini-cart-full` element and represents an individual item within the Cart. It needs to be inside the `mini-cart-full`
Within this element, use the [`li-js-object`](https://docs.liquiflow.app/add-ons/liquiflow-elements/mini-cart#li-object-vs-li-js-object)
to showcase product information. Here's an example of available objects for use:
* `product.title`
* `product.featured_image`
* `product.vendor`
* `product.price` (name: [`li-js-price`](https://docs.liquiflow.app/add-ons/liquiflow-elements/mini-cart#li-js-price)
)
mini-cart > mini-cart-container > mini-cart-full > mini-cart-item
**mini-cart-item-increase:** This element should be nested inside the `mini-cart-item` and can be added to a `div` to increment the product quantity in the cart. Change the Cursor to pointer for a better usability. It needs to be inside the `mini-cart-item`
**mini-cart-item-decrease:** This element should be nested inside the mini-cart-item and can be added to a `div` to decrease the product quantity in the cart. Change the Cursor to pointer for a better usability. It needs to be inside the `mini-cart-item`
**mini-cart-item-remove:** This element should be nested inside the `mini-cart-item` and can be added to a `div` to remove the product from the cart. Change the Cursor to pointer for a better usability. It needs to be inside the `mini-cart-item`
**mini-cart-item-quantity:** This element should be placed within the `mini-cart-item` and connected to a `div`. The _div_ will be replaced by an input field, allowing the customer to adjust the quantity of the item. It needs to be inside the `mini-cart-item`
[PreviousLiquiflow Elementschevron-left](https://docs.liquiflow.app/add-ons/liquiflow-elements)
[NextProduct Variant Swatchchevron-right](https://docs.liquiflow.app/add-ons/liquiflow-elements/product-variant-swatch)
Last updated 6 months ago
Was this helpful?
Was this helpful?
sun-brightdesktopmoon
Webflow
Copy
li-element = mini-cart
Webflow
Copy
li-element = mini-cart-container
Webflow
Copy
li-element = mini-cart-container
Webflow
Copy
li-element = mini-cart-item
Webflow
Copy
li-element = mini-cart-item-increase
Webflow
Copy
li-element = mini-cart-item-decrease
Webflow
Copy
li-element = mini-cart-item-remove
Webflow
Copy
li-element = mini-cart-item-quantity
sun-brightdesktopmoon
---
# Cheat Sheet | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
Here is a list of all the currently available Liquiflow attributes. The “Compatible with” section indicates whether an attribute can be used on the same element alongside others. However, be aware that using multiple attributes on the same element might cause one to override the other.
Attribute name
Compatible with
Description
`li-object`
`li-attribute`, `li-object`
To insert a [Shopify objectarrow-up-right](https://shopify.dev/docs/api/liquid/objects)
, use `li-object="product.title"`. This will render as `{{ product.title }}` within the attached element. You can also use a modifier to specify its position, such as `li-object:class="product.title"`, which will render as `class="{{ product.title }}"`. [Learn more.](https://docs.liquiflow.app/liquid-attributes/objects)
`li-attribute`
`li-object`, `li-attribute`
This tag allows us to use reserved attributes like class or src on every element. This is an example on how to use it: `li-attribute:class = "{% if product.available %} tex-color-green {% endif %}"` will be converted into `class = "{% if product.available %} tex-color-green {% endif %}"`. [Learn more](https://docs.liquiflow.app/liquid-attributes/miscellaneous#li-attribute)
.
`li-js-object`
`li-js-object`
This attribute generates an [Alpine.jsarrow-up-right](https://alpinejs.dev/start-here)
object ([x-bindarrow-up-right](https://alpinejs.dev/directives/bind)
or [x-textarrow-up-right](https://alpinejs.dev/directives/text)
) to dynamically display data without requiring a page reload, making it ideal for use in components like the mini cart or variant container. You can use modifiers to describe the position, like `li-object`. [Learn more](https://docs.liquiflow.app/add-ons/liquiflow-elements#li-object-vs-li-js-object)
.
`li-settings`
`li-settings`
You can implement [settingsarrow-up-right](https://shopify.dev/docs/storefronts/themes/architecture/settings/input-settings)
that allow your [Shopify content editorarrow-up-right](https://shopify.dev/docs/storefronts/themes/architecture/settings/input-settings)
to modify both the content and appearance directly within Shopify. To achieve this, we've introduced the `li-settings` tag. For example, `li-settings:text` to provide a text input. [Learn more](https://docs.liquiflow.app/section-settings/settings)
.
`li-for`
\-
When you need to [iterate over an arrayarrow-up-right](https://shopify.dev/docs/api/liquid/tags/for)
, such as a list of products or product tags, you can employ the `li-for` tag. This tag will duplicate the attached element. Within a loop, you have access to the object you're iterating through. For example, `li-for="product in collection.products"`. [Learn more](https://docs.liquiflow.app/liquid-attributes/iteration-lists)
.
`li-paginate`
\-
When using a forloop with `li-for`, you can manage [paginationarrow-up-right](https://shopify.dev/docs/api/liquid/tags/paginate)
using the `li-paginate` tag. Inside the `li-paginate` tag, you’ll have access to the [pagination objectarrow-up-right](https://shopify.dev/docs/api/liquid/objects/paginate)
. This is useful, for example, on collection pages. By default, only `50` products are rendered, but with `li-paginate`, you can override this limit. [Learn more.](https://docs.liquiflow.app/liquid-attributes/miscellaneous#li-paginate)
`li-if`
\-
This [tagarrow-up-right](https://shopify.dev/docs/api/liquid/tags/if)
toggles the visibility of the attached element based on a specified condition. For example, `li-if="product.available"` generates a conditional wrapping tag: `{% if product.available %}
Product is available
{% endif %}`_._ [Learn more](https://docs.liquiflow.app/liquid-attributes/conditional#if)
.
`li-unless`
\-
This [tagarrow-up-right](https://shopify.dev/docs/api/liquid/tags/unless)
functions similarly to `li-if` but displays the element when the specified condition is false. [Learn more](https://docs.liquiflow.app/liquid-attributes/conditional#unless)
.
`li-when`
\-
When you want to display an element which should meet different conditions, you can wrap these elements with the `li-case` [tagarrow-up-right](https://shopify.dev/docs/api/liquid/tags/case)
. Inside the wrapper, you put the elements with different `li-when` [tagsarrow-up-right](https://shopify.dev/docs/api/liquid/tags/case)
. [Learn more.](https://docs.liquiflow.app/liquid-attributes/conditional#case)
`li-js-if`
\-
This attribute generates an [Alpine.jsarrow-up-right](https://alpinejs.dev/start-here)
`
` with [`x-if`arrow-up-right](https://alpinejs.dev/directives/if)
applied, allowing you to dynamically hide or show elements based on various criteria without reloading the page. It is particularly useful in components like the mini cart or product variant container. [Learn more](https://docs.liquiflow.app/add-ons/liquiflow-elements#li-js-if)
.
`li-section`
\-
This attribute creates a [Shopify section filearrow-up-right](https://shopify.dev/docs/storefronts/themes/architecture/sections)
containing all the HTML within the element. These sections can later be rearranged in the Shopify editor, and with `li-settings`, their content can be made editable. [Learn morearrow-up-right](https://www.liquify.pro/docu/getting-started#sections)
.
`li-section-group`
\-
This attribute creates a [Shopify group section filearrow-up-right](https://shopify.dev/docs/storefronts/themes/architecture/section-groups)
containing all the sections as json. Th's can be used to create dynamic header or footer groups in the Shopify Theme editor. [Learn more](https://docs.liquiflow.app/section-settings/sections#section-groups)
.
`li-block`
\-
Within the `li-section` attribute, you can use `li-block` to create repeating elements ([Blocksarrow-up-right](https://shopify.dev/docs/storefronts/themes/architecture/blocks)
) that can later be edited directly in the Shopify editor. [Learn more](https://docs.liquiflow.app/section-settings/blocks)
.
`li-content-for-blocks`
\-
This attribute allows you to group multiple `li-block` elements, providing editors with various options to rearrange elements within a section. Additionally, it enables the inclusion of app blocks in the section. [Learn more.](https://docs.liquiflow.app/section-settings/blocks#li-content-for-blocks)
`li-content-for-theme-blocks`
\-
This attribute allows you to create block files and nested block elements, providing editors with various options to rearrange elements within a section. Additionally, it enables the inclusion of app blocks in the section. [Learn more.](https://docs.liquiflow.app/section-settings/theme-blocks)
`li-page`
`li-layout`
The `li-page` attribute specifies the type of [template for a pagearrow-up-right](https://shopify.dev/docs/storefronts/themes/architecture/sections)
, such as a product or article page. This attribute must be attached to the `` element of the page. [Learn more.](https://docs.liquiflow.app/fundamentals/template-structure)
`li-layout`
`li-page`
The `li-layout` attribute specifies the type of layout which should be used on this template. This helps to minimize the number of layout files in your theme. This attribute must be attached to the `` element of the page. [Learn more.](https://docs.liquiflow.app/fundamentals/template-structure)
`li-content-for-layout`
\-
Every page requires this attribute. Within the element containing this attribute, you can place all the sections that can later be rearranged using Shopify 2.0. This attribute is typically applied to the `main` element of the page. [Learn more](https://docs.liquiflow.app/fundamentals/template-structure)
.
`li-form`
\-
This attribute offers versatile functionality by wrapping the attribute value in `{% ... %}`. For example, you can easily assign a variable using `li-tag`, such as: `li-tag="assign title = product.title"`. [Learn more.](https://docs.liquiflow.app/liquid-attributes/forms)
`li-liquid`
\-
This attribute helps maintain the Liquid syntax within a code block. [Learn more](https://docs.liquiflow.app/liquid-attributes/miscellaneous#li-liquid)
.
`li-snippet`
\-
This attribute creates reusable [snippetsarrow-up-right](https://shopify.dev/docs/storefronts/themes/architecture#snippets)
in Shopify, making it easier to build scalable templates. [Learn more](https://docs.liquiflow.app/liquid-attributes/snippets)
.
`li-element`
\-
This attribute is a specialized Liquiflow attribute with predefined functionalities. A complete list of all `li-elements` can be found [here](https://docs.liquiflow.app/add-ons/liquiflow-elements)
.
`li-cloak`
\-
Elements with the `li-cloak` attribute are hidden using CSS. The `li-cloak` tag is removed during conversion. [Learn more.](https://docs.liquiflow.app/liquid-attributes/miscellaneous#li-cloak)
[PreviousFormat Theme (Prettier)chevron-left](https://docs.liquiflow.app/add-ons/format-theme-prettier)
[NextDebuggingchevron-right](https://docs.liquiflow.app/useful/debugging)
Last updated 7 months ago
Was this helpful?
Was this helpful?
sun-brightdesktopmoon
sun-brightdesktopmoon
---
# Section Rendering API | Liquiflow
circle-info
Liquify Pro is now Liquiflow 🎉
close
circle-exclamation
**Alpha Feature**
This feature is still in development. While it is already live on some stores, we are actively refining the code. Got feedback? Feel free to share it with us on Discord!
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#core-principals-1)
Core Principals
----------------------------------------------------------------------------------------------------------
You can use the Section Rendering API to load parts of your theme with an AJAX request. This lets you update parts of a page without reloading the whole thing — just fetch and swap out the sections you need.
This is really useful for things like filtering a collection, changing a product swatch, or showing predictive search results.
###
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#how-to-use-the-section-rendering-api-with)
How to use the section rendering API with Liquiflow**?**
With the new li-render tag, we’re bringing the power of the Section Rendering API into the Liquiflow universe. We’ve included a few default use cases, but you also have the flexibility to build a completely custom functionality.
In the following steps, we’ll show you how to use it for collection filtering, variant swatches, predictive search, and a basic example you can adapt to any part of your store.
circle-exclamation
**Heads up**
This is a more advanced feature intended for users with some technical experience.
###
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#getting-started)
Getting started
1
Go to GitHub and copy the code from our [repositoryarrow-up-right](https://github.com/liquify-pro/Section-Rendering-API)
.
2
In Shopify, open your **Theme Code Editor**.
3
Navigate to the **Assets** folder and click **\+ Add a new asset**.

4
Create a **new blank JavaScript file** named `section-rendering`.
5
Paste the copied code from GitHub into this new file.
6
In your **Webflow project settings**, paste the following script **before the tag**:
Copy
You’re now ready to jump into Webflow and start adding the necessary attributes.
In the next steps, we’ll walk you through some special use cases and show you how to customize things even further.
* * *
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#filtering-collections)
Filtering Collections
--------------------------------------------------------------------------------------------------------------------
For a better user experience, it is recommended to not reload the entire page whenever you apply a filter on the collection page. This can be done with the Section Rendering API and a few Liquiflow attributes.
First, you need to wrap all filter elements and the collection list inside the _li-render-filter_\="_wrapper_" tag. When using the Starter Template, it’s best to apply it to the .padding-global element.
li-render-filter = wrapper
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#filter-element)
Filter Element
First we will take care of the filter element. On the filter checkboxes or radio buttons you need to add the following Attributes:
**Optional:** Here, you can select the trigger type. These are standard JavaScript events like `click`, `input`, `change`, etc. By default, the trigger is set to `change`.
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#filter-price-element)
Filter Price Element
For price filtering, use the special tag we’ve provided. Make sure to place it on the **min price** input field.
This tag should be placed on the **max price** input field.
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#filter-clear-all)
Filter Clear All
To clear all currently applied filters, you can add an element with the following attributes. When clicked, it will reset all active filters.
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#remove-single-filter)
Remove Single filter
To remove a single filter, loop through all applied filters and add an element inside each one with the following attribute. When clicked, it will remove just that specific filter.
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#sort-collection)
Sort Collection
To sort the current collection, simply add the following attribute to your sort element:
**Optional:** Here, you can select the trigger type. These are standard JavaScript events like _click_, _input_, _change_, etc. By default, the trigger is set to change.
**Optional:** By default, filters are applied automatically when a checkbox or radio is selected. However, you can also choose to apply filters only when the user clicks a submit button. To do this, simply add the following attribute to your button element:
* * *
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#predictive-search)
Predictive Search
------------------------------------------------------------------------------------------------------------
To dynamically show contents of your shop, you can use Shopify's predictive search. You only need to apply a few attributes to make it work. Here is a link to the [Shopify Documentationarrow-up-right](https://shopify.dev/docs/api/ajax/reference/predictive-search)
.
First, you need to wrap all search elements inside the `li-render-search="wrapper"` tag.
All following attributes need to be on the same `li-render-search="wrapper"` element
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#optional-search-type)
Optional: Search type
The **search type** setting lets you define which types of pages should be included in the search. The following are the accepted values, which can be combined in a comma-separated list:
* `product`
* `page`
* `article`
* `collection`
* `query`
This setting should be added to the element with `li-render-search="wrapper"`.
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#optional-search-limit)
Optional: Search Limit
This tag allows you to set a limit on the number of search results. Simply enter a number between `1` and `10` as the attribute’s value — the default is `10`. Add this attribute to the element with `li-render-search="wrapper"`.
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#optional-search-limit-scope)
Optional: Search Limit Scope
Decides the distribution of results. The following are the accepted values:
* `all`: Return results up to `limit` across all types.
* `each`: Return results up to `limit` per type.
The default value is `all`. Add this attribute to the element with `li-render-search="wrapper"`.
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#optional-search-unavailable)
Optional: Search unavailable
Specifies whether to display results for unavailable products. The following are the accepted values:
* `show`: Show unavailable products.
* `hide`: Hide unavailable products.
* `last`: Show unavailable products below other matching results.
The default value is `last`.
To change the default value, you can use [Search Settingsarrow-up-right](https://help.shopify.com/manual/online-store/search-and-discovery/settings)
in the Search & Discovery app. This parameter is only applicable to type `product`. Add this attribute to the element with `li-render-search="wrapper"`.
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#optional-search-fields)
Optional: Search fields
Specifies the list of resource fields to search. The following are the accepted values:
* `author`
* `body`
* `product_type`
* `tag`
* `title`
* `variants.barcode`
* `variants.sku`
* `variants.title`
* `vendor`
The default search fields are `title`, `product_type`, `variants.title`, and `vendor` which can be combined in a comma-separated list. For the best search experience, you should search on the default field set. Add this attribute to the element with `li-render-search="wrapper"`.
li-render-search = wrapper
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#search-input)
Search Input
To enable the search functionality, place an input field inside the element with `li-render-search="wrapper"`. Then, add the following attribute to the input element:
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#optional-render-target)
Optional: Render Target
If you only want to re-render a specific part of the section, you can add this attribute to an element. Everything inside that element will be refreshed on update.
This is especially useful when using a popup — for example, wrapping your search results with this ensures the popup stays open during a search. Otherwise, the entire section would be re-rendered, causing the popup to close.
* * *
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#recommended-products)
Recommended Products
------------------------------------------------------------------------------------------------------------------
To display recommended or related products on a product page, you can use the following attributes.
First, add an element with the `li-render-recommended="wrapper"` attribute. This should wrap the products list.
All of the following **attributes** must be added to the element with `li-render-recommended="wrapper"`.
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#optional-recommendation-intent)
Optional: Recommendation intent
The recommendation intent that is used to generate product recommendations. You can use intent to generate product recommendations on various pages across the online store, according to different strategies. [Learn more about recommendation intentsarrow-up-right](https://shopify.dev/docs/storefronts/themes/product-merchandising/recommendations)
.
The accepted values are `related` and `complementary`. The default value is `related`. Add this attribute to the element with `li-render-recommended="wrapper"`.
####
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#optional-limit)
Optional: Limit
Limits the number of results. The value can range from `1` to `10`, and the default is `10`. Add this attribute to the element with `li-render-recommended="wrapper"`.
li-render-recommended = wrapper
**Optional:** If you only want to re-render a specific part of the section, you can add this attribute to an element. Everything inside that element will be refreshed on update.
* * *
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#custom-wrapper-variant-swatch)
Custom Wrapper (Example: Variant Swatch)
-----------------------------------------------------------------------------------------------------------------------------------------------
The **Custom Wrapper** is a special attribute designed for advanced use cases.
For example, it can be used to re-render a custom variant swatch like the one below—allowing you to load additional variant images or metafields dynamically. It unlocks a range of new possibilities while keeping performance on point.
It's important to wrap the elements inside `li-render-custom="wrapper"`:
If the `li-render-custom-trigger` elements are being re-rendered (for example, when they are in the `li-render-custom="target"` element), you need to set this attribute to the `li-render-custom="wrapper"` to re-initialize these elements.
All the following **attributes** must be added to the element with `li-render-custom="wrapper"`.
li-render-custom = wrapper
The following two attributes should be added to an element that will **trigger the rendering**.
For example, you can apply them to variant selectors to dynamically fetch and update content related to the selected variant.
**Optional:** Here, you can select the trigger type. These are standard JavaScript events like `click`, `input`, `change`, etc. By default, the trigger is set to `change`.
If you only want to render a certain part of the section, you can apply the follwing attribute
* * *
[hashtag](https://docs.liquiflow.app/add-ons/section-rendering-api#events)
Events
--------------------------------------------------------------------------------------
If you are familiar with JavaScript, you can use our Events to run your own scripts. The following events are provided:
This event runs before any changes have been made to the DOM
`liquify:before-render`
This event will run once the filter-elements have been rendered
`liquify:filter-rendered`
This event will run once the custom-elements have been rendered
`liquify:custom-rendered`
This event will run once the search-elements have been rendered
`liquify:search-rendered`
This event will run once the recommended-elements have been rendered
`liquify:recommended-rendered`
This event will run any time a section has been rendered through our script
`liquify:sections-rendered`
[PreviousBundleschevron-left](https://docs.liquiflow.app/add-ons/liquiflow-elements/bundles)
[NextFormat Theme (Prettier)chevron-right](https://docs.liquiflow.app/add-ons/format-theme-prettier)
Last updated 7 months ago
Was this helpful?
* [Core Principals](https://docs.liquiflow.app/add-ons/section-rendering-api#core-principals-1)
* [How to use the section rendering API with ?](https://docs.liquiflow.app/add-ons/section-rendering-api#how-to-use-the-section-rendering-api-with)
* [Getting started](https://docs.liquiflow.app/add-ons/section-rendering-api#getting-started)
* [Filtering Collections](https://docs.liquiflow.app/add-ons/section-rendering-api#filtering-collections)
* [Predictive Search](https://docs.liquiflow.app/add-ons/section-rendering-api#predictive-search)
* [Recommended Products](https://docs.liquiflow.app/add-ons/section-rendering-api#recommended-products)
* [Custom Wrapper (Example: Variant Swatch)](https://docs.liquiflow.app/add-ons/section-rendering-api#custom-wrapper-variant-swatch)
* [Events](https://docs.liquiflow.app/add-ons/section-rendering-api#events)
Was this helpful?
sun-brightdesktopmoon
Webflow
Copy
li-render-filter = wrapper
Webflow
Copy
li-render-filter = filter
Webflow
Copy
li-render-filter-value = {{ filter_value.value }}
Webflow
Copy
li-render-filter-name = {{ filter_value.param_name }}
Webflow
Copy
li-render-filter-trigger = click
Webflow
Copy
li-render-filter = price-min
Webflow
Copy
li-render-filter-min-param = {{ filter.min_value.param_name }}
Webflow
Copy
li-render-filter = price-max
Webflow
Copy
li-render-filter-max-param = {{ filter.max_value.param_name }}
Webflow
Copy
li-render-filter = clear-all
Webflow
Copy
li-render-filter = filter-remove
Webflow
Copy
li-render-filter-value = {{ filter_value.url_to_remove }}
Webflow
Copy
li-render-filter = sort
Webflow
Copy
li-render-filter-trigger = change
Webflow
Copy
li-render-filter = submit-button
Webflow
Copy
li-render-search = wrapper
Webflow
Copy
li-render-search-type = product, page, article, collection, query
Webflow
Copy
li-render-search-limit = 10
Webflow
Copy
li-render-search-limit-scope = all, each
Webflow
Copy
li-render-search-unavailable = last
Webflow
Copy
li-render-search-fields = author, body, product_type, tag, title
Webflow
Copy
li-render-search = input
Webflow
Copy
li-render-search = target
Webflow
Copy
li-render-recommended = wrapper
Webflow
Copy
li-render-recommended-product = {{ product.id }}
Webflow
Copy
li-render-recommended-path = {{ routes.product_recommendations_url }}
Webflow
Copy
li-render-recommended-intent = related
Webflow
Copy
li-render-recommended-limit = 4
Webflow
Copy
li-render-recommended = target
Webflow
Copy
li-render-custom = wrapper
Webflow
Copy
li-render-custom-reinit = true
Webflow
Copy
li-render-custom-value = {{ product.url }}?section_id={{ section.id }}&variant={{ value.variant.id }}
Webflow
Copy
li-render-custom-trigger = input
Webflow
Copy
li-render-custom = target
sun-brightdesktopmoon
---
# Email Protection | Cloudflare
Please enable cookies.
Email Protection
================
You are unable to access this email address docs.liquiflow.app
--------------------------------------------------------------
The website from which you got to this page is protected by Cloudflare. Email addresses on that page have been hidden in order to keep them from being accessed by malicious bots. **You must enable Javascript in your browser in order to decode the e-mail address**.
If you have a website and are interested in protecting it in a similar way, you can [sign up for Cloudflare](https://www.cloudflare.com/sign-up?utm_source=email_protection)
.
* [How does Cloudflare protect email addresses on website from spammers?](https://developers.cloudflare.com/waf/tools/scrape-shield/email-address-obfuscation/)
* [Can I sign up for Cloudflare?](https://developers.cloudflare.com/fundamentals/setup/account/create-account/)
Cloudflare Ray ID: **9d854ef2edecd6d8** • Your IP: Click to reveal 54.237.218.47 • Performance & security by [Cloudflare](https://www.cloudflare.com/5xx-error-landing)
---