Awareness Avenue, Customizer
Six Shopify Liquid product customizers for personalised jewellery, including the ring pair that replaced a paid options app: tag-gated, metafield-driven, priced through hidden fee products, with no app subscription and no third party...



Six product customizers written in Shopify Liquid for a jewellery brand where almost nothing ships unpersonalised.
Built for Awareness Avenue alongside the automation work.
What was in the way
Personalised jewellery breaks the normal Shopify variant model.
A three-stone ring where each stone is a different birthstone and each can carry a name is not three variants, it is a combination the variant system was never meant to hold. Doing it with variants means thousands of SKUs, almost none of which ever sell.
Options apps solve it by rendering their own widget and taking over Add to Cart. That works until the widget has to match the theme, price a fourth charm differently, or behave one way on a necklace and another on a ring. On this store an app also owned the checkout path on the products that made the most money.
Six parts, each with a reason
A ring customizer that replaced the app
ring-customizer.liquid, 536 lines, written to replace the Globo option set on the wife rings. Three optional sections: engraving, carat upgrade and stone colour.
Each one is off unless its boolean metafield says otherwise, so a plain band renders no switches at all and a stone ring renders three.
A photo personalizer that had to bypass the AJAX cart
Photo, date and message, all three required, with the date and message accepting "N/A" as the escape and the photo hard-required.
A file cannot ride Shopify's AJAX cart/add.js, it is silently dropped. So the three fields are real named inputs inside the product form and travel on the theme's own multipart POST to /cart/add. That single constraint is why it is a separate build rather than another variation of the engraving widget.
The already-engraved case
ring-customizer-engraved.liquid, 599 lines, for rings that ship with an engraving on them.
It opens with "keep current engraving" on by default. Turning it off offers two paths: change it, which runs the normal placement and text flow, or remove it for a plain band at no charge. You can see it on The Horizon Ring.
It refuses to render if the product also carries the ring-customizer tag or the Globo tag, so two customizers can never fight over the same Add to Cart button.
Birthstones, charms and engraving
The earlier three, all on the same pattern: a birthstone picker that draws a faceted gem in the month's colour and layers a real photograph over it when one exists, a charm widget that reads its count from a variant option or renders its own stepper, and a standalone multi-engraving widget.
Pricing through hidden fee products
Charges ride existing unlisted fee products rather than variants: one handle for engraving, one for the carat upgrade, one for colour.
On Add to Cart the widget adds a fee line per chosen option and lets the theme add the ring last, so the ring sits on top of its own option lines in a cart that sorts newest first. If a fee product is ever missing, that section hides itself rather than breaking the page.
A birth flower widget with real counting
One grid of twelve months. The theme's "Number of Flowers" variant option owns how many can be picked, tapping a selected month releases the slot, repeats are blocked, and unpicked months disable themselves once the limit is hit.
The first flower is included and each additional one fires an extra-flower fee at a quantity of count minus one.
The engineering underneath
Shopify Liquid, JavaScript and CSS in the theme. No app subscription and no third party holding customer data.
Every widget is an independent snippet gated on a product tag, so turning one on is a tag rather than a deployment. Every behaviour is a metafield with a default written into the snippet, so the merchandising team changes limits and surcharges without touching code and a product with nothing set still renders correctly.
Selections save as line-item properties on the cart line, which means the order, the packing slip and the fulfilment export all carry them without anything extra installed.
Each file opens with a comment block naming its tag, its metafield namespace, its defaults and its pricing route, because the people editing products after me are not developers.
The newest pair replaced a paid options app on the ring range. The rest cover birthstones, charms, engraving, birth flowers and photo engraving.
Hire me for this
Shopify Store Management & VAFrom $10/hrFull-Stack Web DevelopmentFrom $14/hrAI & Workflow AutomationFrom $14/hrProjects like this

DECKO Referrals and Affiliate Page
An affiliate recruitment landing page for DECKO Australia, powered by UpPromote. Affiliates earn 7% commission...

Synful Novelties, Shopify Store Build
A full Shopify store design and build for Synful Novelties, a lingerie and intimates brand. Editorial,...

Adaptive Automate, Shopify Store Build
A full Shopify store build for Adaptive Automate, an independent retailer of Miccell tech accessories:...
I build software, and I measure whether it works.
The same questions I research are the ones I ask on client builds: is it reliable, is it fast, is it easy to use, and is it secure. Those four drove satisfaction in my ICT portal study, and they shape how I scope and test every project.