Widgets and template tags are little blocks of text you can drop into your pages, blog posts, or product descriptions to add things like a product card, a contact form, a WhatsApp button, or your shop name. You don't need to know any code. You paste a short tag, and your shop turns it into something useful at the top of the page.
This guide explains how the system works, where you can use it, and what to do when something doesn't render. Every widget has its own how-to article linked below.
The two systems
Your shop has two ways to insert dynamic content into your text:
- Widgets (shortcodes) are written in square brackets, like
[product id=12]or[whatsapp]Chat with us[/whatsapp]. They render as a styled block — a button, a card, a form, an embedded video, and so on. - Template tags (merge tags) are written in double curly braces, like
{{site_name}}or{{site_email}}. They become the matching value from your shop. Use them for short, inline things — your shop name, your contact email, the current year.
Template tags run first, then widgets. That means you can use a tag inside a widget. For example:
[whatsapp text="Hello {{site_name}}, I have a question"]Chat with us[/whatsapp]When the page renders, {{site_name}} becomes your real shop name first, then the WhatsApp widget builds the button with the prefilled message.
Where you can paste them
Widgets and template tags work in every place where you write rich content for your shop:
- Custom pages (About, Contact, Returns, etc.)
- Blog posts
- Product descriptions
- Category descriptions
- Your homepage sections that accept text
- Announcement bars
They do not work inside form labels, settings fields, or anywhere else that expects plain text only.
The basic syntax in 30 seconds
A widget can be one of two shapes:
Self-closing — one tag, no body. Used by widgets that don't need any text inside them:
[product id=12]
[contact_info]
[shipping_table]Paired — opening tag, content, closing tag. Used by widgets where you write the inner text yourself:
[callout style=tip title="Save 10%"]Use code WELCOME at checkout.[/callout]
[whatsapp]Chat with us on WhatsApp[/whatsapp]Each widget accepts attributes inside the opening tag, separated by spaces. Values can be unquoted for single words (style=tip) or wrapped in double quotes for anything with spaces (title="Save 10%").
The 6 how-to articles
Each group of widgets has its own help article with full examples, attributes, and use cases:
- Showing products with widgets — single products, grids, sliders, prices, stock badges, category cards
- Buttons, banners, and layout widgets — buttons, full-width CTA banners, dividers, spacers
- Contact, WhatsApp, and social widgets — contact form, contact info card, WhatsApp button, social icons, map embed
- Rich content widgets — callouts, FAQs, quotes, video embeds, shipping rate tables
- Template tags reference — every
{{tag}}with what it outputs
Common gotchas
Nothing happens, the widget shows up as plain text. Almost always a typo. Check that the brackets and tag name are correct — [product id=12], not {product id=12} or [Product id=12] (tag names are lowercase). Curly braces are only for template tags.
The widget says "Product not found in this shop." The product ID points to a product that doesn't belong to your shop, was deleted, or is hidden. Open the product in your dashboard and copy the correct ID from the URL.
A template tag like {{site_email}} is empty. The matching field on your shop is empty. Go to Settings → Contact info and fill it in. Save. Refresh the page.
The page looks fine in preview but breaks for shoppers. Some widgets (like the contact form) only fully work for real visitors, not in your own admin preview. Open your shop in a private browser window to test as a customer.
Tags inside HTML attributes don't work. Widgets cannot be nested inside HTML tags you've written by hand. Put the widget on its own line.
Editor picker (the easy way)
You don't need to memorise widget syntax. Inside your dashboard, every rich-text editor has a "+ Insert widget" button. Click it, pick the widget you want, fill in the fields, and the editor pastes the correct syntax for you. Same for template tags — there's a "+ Insert tag" picker that drops {{site_name}}, {{site_email}}, etc. into the cursor position.
Use the picker until you remember the syntax of the widgets you use most.