The page, unchanged
The section is left out of the page entirely. The product template renders exactly as it did before the block was dragged in.
Routine suggestion
A section block on the product template that shows the complementary products you set in Shopify. It renders in Liquid while Shopify builds the page, so it is painted with the rest of your theme — and every card it prints is a product a shopper can buy at that moment.
The data
On a product in Shopify admin you can name the products that go with it. That field is where this block reads from, and it is the only place it reads from.
The block runs in Liquid while Shopify builds the page: it reads the field, counts how many of those products can be bought, and renders the cards. That path is Liquid and your catalogue: one field, read while the page is built, so a card and Shopify agree at the moment a shopper sees it.
The same field also answers the shopper who asks the chat what goes with a product, so the section on the page and the answer in the panel quote the same field.
Everything on this page was read out of the block that ships: its template, its settings schema, its eleven translation files and the plan table that decides whether it appears. Every figure below is a property of that code.
Settings
These are all the choices the block offers in the theme editor. Leave any of them empty and it falls back to a value it can defend.
Write your own, or leave both empty. Empty falls back to the wording in your vertical pack, then to the block’s own translation — eleven storefront languages ship with it.
Between two and four, three unless you change it. If fewer than that can be bought, fewer are shown: the row carries exactly the ones a shopper can buy.
One word by default. The button posts one unit of the variant on the card to Shopify’s own cart endpoint, and tells your theme to refresh the cart.
Optional, and left empty on purpose in most stores: the block inherits the colour you already chose for the chat, so one decision covers every surface. A value you do type passes through Shopify’s own colour filter, and only a colour it recognises is printed.
You drag it into the product template where you want it and remove it the same way, in Shopify’s own theme editor. The placement lives in your theme’s own layout data, written by Shopify when you drop it in.
Which products to pair is set on the product in Shopify, where your catalogue already is — one list, edited in one place, by the person who knows the range. Holding a second copy inside Refik would give you two lists to keep in step with each other.
Limits
A suggestion block is the easiest place in a store to become slightly untrue — a sold-out item, a price that differs from the till, a pairing invented by software. Each of those three is closed off inside the block itself.
The price rule is here because it was once wrong. The card printed the cheapest variant’s price while the button added the first variant in stock, so the moment a cheap size sold out the shopper read one figure on the card and was charged another, silently. Both now come from the same value, and a test holds them together.
Silence
A block that draws a blank in silence is the worst outcome: you dragged it in, the page looks finished, and the reason stays hidden. So the silence is split by audience.
The section is left out of the page entirely. The product template renders exactly as it did before the block was dragged in.
A note only you can see, naming which of the two states you are in and what would change it. It is printed only inside the theme editor, so it reaches you alone.
The same sentence is written to the browser console on the live storefront too, so “why is that section missing” can be answered by looking.
The two states are kept apart because the work is different. An empty pairing field sends you to that product in Shopify admin to fill it. All of them out of stock asks only for patience: the section returns on its own once one of them is back. An earlier version counted the field where it should have counted the stock, so a product whose pairings had all sold out printed a heading above an empty row — quiet enough to pass review, and wrong on the page.
Two jobs
The block is named after the routine, but it does one part of it. Knowing what pairs with a product and putting products in the order they are used are different questions, and Refik answers them in different places.
The separation is written into the assistant’s own instructions: the tool that lists pairings is told, in as many words, that the routine table belongs to the routine tool alone — so a shopper who asks for a routine gets the routine. A recorded conversation is on the session page.
Questions
The four section blocks — search help, product questions, the question bar and this one — are on Growth and above. Starter ships the chat bubble as its one storefront surface. The tiers are on the pricing page.
The block renders. Refik writes its own plan flag when your plan changes, and if that flag is missing or unreadable the block is shown: a fault on our side leaves a section you are paying for on the page. Only an explicit “off” hides it, and when it does you get a note in the theme editor saying so.
The cards are built on the server, so they are painted before the block’s stylesheet arrives. The declarations that decide the size of a card are repeated inside the block itself; when the stylesheet lands, only colour and shadow change, so the layout holds. A test compares the two copies and fails if they drift apart.
One card, at the width of a card. This was wrong once: the row was told to fill the space it was given, so a single pairing stretched across the full page and its square image became a page-wide square. Cards now have a maximum width and line up from the start; leftover space stays empty.
Your vertical pack first, then the block’s own translation. A beauty store gets “Complete the routine” and “What our advisor pairs with this”; the block’s own default is “Goes well with this”. Both ship in eleven languages, and the vertical packs are listed with what each one changes.
The product template, and that is the only one Shopify offers you: the block declares that template in its schema, because the pairings are a field on a product. The question bar is the block that goes on any template — the five surfaces are compared on where Refik answers.
Where this block sits among the other four, and what each of them covers, is on where Refik answers. What it reads out of Shopify, and the single line it writes, is listed step by step on the setup page.