Stacklane is now Vantion LabsLearn more

All work

Every product change writes its own Shopify listing, in four languages

30.7sfrom product change to a listing ready for review

A product change fires a webhook and a draft listing is ready about half a minute later: copy in that brand's voice, three translations with their own SEO fields, a hero image, and a fact check that marks every claim the source text does not support.

Client
Confidential client · Multi-brand Shopify retailer
Capability
Automation

The problem

The company sells several brands through one Shopify store, in four languages, and keeps adding brands. Every listing was written by hand and then written again in German, Dutch and French, each with its own SEO title and meta description. It took about four hours a day, and adding a brand meant adding that whole job again, so the work grew faster than the catalogue did.

What we built

Two n8n workflows around a Cloudflare Worker. The first catches the Shopify product webhook, normalises it and hands it to the Worker, which owns the pipeline: ingest, generate, translate, image. Every step has its own error branch, so a failed image is recorded as a failed image instead of losing the draft. Claude writes the copy and the translations, Flux on Workers AI makes the hero image, Supabase holds the state. The second workflow fires when a reviewer approves and writes the listing and all three translations back to Shopify. Every draft also carries a fact check: the model's own output is compared statement by statement against the product's source text, and anything the source does not support is flagged with the field it came from and the reason. The lifecycle sits in Postgres and is enforced by a trigger, and row level security keeps each brand's queue to the people who work on it, which is what makes the next brand cheap to add.

The result

The four hours a day are gone. A measured run goes from Shopify webhook to a listing ready for review in 30.7 seconds, with three translations and a hero image. Every step records the model it used and how long it took. Nothing reaches the store without a person, and because the fact check has already marked the claims the source will not support, that person is reading a short list rather than re-reading the whole listing.

What it produced

One product, measured

A real run on the connected store, replayed.

4.1s
6.2s
7.3s
13.2s

0.0s

Image and translate run one after the other. In parallel they would save about seven seconds.

languages, each with its own SEO fields

checked against the product's own source text

From a product change to a listing someone was happy to publish

Six stops. Hold one to see what it does.

Where the products already live, and the only place a listing is ever really live.

A change to a product sends a webhook. When we update the store, Shopify tells us the product changed, because it did, by us. We recognise our own write coming back three seconds later and skip it.

A model writes every listing. A person decides whether it goes out, and the store will not take one that nobody approved.

Want something like this?

Thirty minutes with the founder about one process in your operation. Nothing to prepare.