Custom Liquid is the escape hatch built into every modern Shopify theme: a section (and block) where you paste your own Liquid, HTML, CSS or JavaScript straight from the theme editor, no code files touched. It is the fastest way to add something your theme does not offer, and the most misunderstood, because its limits are real.
Here is where it lives, what to paste into it, and when to use a better tool.
Where to find Custom Liquid
In the theme editor (Online Store, then Customize): Add section, then Custom Liquid, on any OS 2.0 theme, Dawn included. Inside product templates you can also add it as a block among the product information blocks, which gives your code access to the current product object.
Paste your code in the box, save, done. Whatever you paste renders exactly where the section sits.
Three snippets worth pasting
1. A shipping-deadline bar (Liquid date math, no app needed):
<div style="text-align:center;padding:10px;background:#f6f6f4;font-size:14px;">
Order today, ships by
{{ 'now' | date: '%s' | plus: 259200 | date: '%A, %B %-d' }}
</div>
The 259200 is three days in seconds; adjust to your handling time.
2. A trust badges row (plain HTML, style to taste):
<div style="display:flex;gap:24px;justify-content:center;padding:16px;font-size:14px;">
<span>Free shipping over $50</span>
<span>30-day returns</span>
<span>Secure checkout</span>
</div>
3. A conditional product note (as a Custom Liquid block on the product template):
{% if product.tags contains 'preorder' %}
<p style="color:#8a5f14;font-size:14px;">
Pre-order item: ships within 3 weeks.
</p>
{% endif %}
Tag-driven, so merchandising controls it without touching code again.
Custom CSS, the sibling feature
For styling rather than content, most themes also expose Custom CSS (in the theme editor under the theme settings, and per-section on recent themes). Paste CSS there rather than wrapping <style> tags in Custom Liquid; it survives section reshuffles and keeps overrides in one place.
What Custom Liquid can't do
The honest limits, and where people hit them:
- No settings. Whatever you paste is hardcoded: changing the text means editing code again. Real sections expose settings through a schema so anyone on the team can edit in the sidebar.
- No blocks, no repetition. A testimonial list or logo row wants repeatable blocks; Custom Liquid gives you one box.
- It grows into a liability. Five Custom Liquid sections across templates is unversioned, undocumented code nobody remembers. At that point you want actual sections in the theme.
- Complex features do not fit. Bundles, comparison tables, tabbed product info: these are real sections with markup, style and schema working together.
When you outgrow the box
The graduation path used to be "hire a developer to build the section". Now it is a sentence: describe what you wanted the Custom Liquid to do, "a trust bar with icons, editable text, and a toggle per badge", and generate it as a proper section, settings included, editable by anyone. Custom Liquid stays what it was meant to be: the quick hatch, not the architecture. Terms you will meet on the way are all in the theme glossary.
FAQ
Is Custom Liquid free? Yes, it is a built-in feature of OS 2.0 themes. No app required.
Can I put JavaScript in Custom Liquid?
Yes, <script> tags work. Keep it light: scripts pasted this way load on the page like any other and can slow it down.
Why is my Custom Liquid not showing product info?
Object access depends on context: product is only available inside product templates (use it as a block there). On the homepage, there is no product to reference.
Custom Liquid vs editing theme code? Custom Liquid survives theme updates and stays visible in the editor; edits to theme files are more powerful but live in the code. For anything with settings or repetition, a generated section beats both.
Keep reading: Shopify schema generator and generate a custom Shopify theme.