Inspiration
Shopify merchants pay to bring shoppers in from TikTok and Meta ads, friends' recommendations, their own emails and, more and more, AI assistants like ChatGPT. Every one of those shoppers lands in the same store with the same message. Someone who clicked an ad for one product gets a generic homepage, and a friend's discount stays invisible until checkout. We tested the existing Shopify personalization apps: they switch one line of text on one rule, and none of them can show whether the change earned anything. We wanted a store that greets every visitor based on how they arrived, and proves it.
What it does
Greetd detects where each visitor came from and changes the store to match, before the page is drawn:
- Ads: the banner and pinned product continue the exact ad that was clicked, down to the individual ad.
- Friends: "Domantas sent you −10%", with a personal price on product cards and the discount applied automatically at checkout. Every buyer gets their own share link on the thank-you page.
- Email: clicks from the shop's own campaigns continue the email's offer.
- AI assistants: visitors from ChatGPT, Perplexity, Gemini and others get an answer-first product page: comparison, FAQ, delivery date for their country.
- Country & cart: free-shipping progress per country, plus "your discount is applied".
For merchants: an AI writer drafts offers in the visitor's language (merchant approves), every offer is a real Shopify discount the app creates and checks, an optimizer shifts traffic to the winning version, and 10% of visitors always see the plain store, so the dashboard shows real extra revenue with a probability.
How we built it
- Shopify app (React Router + TypeScript) with Shopify CLI on a dev store
- Theme app extensions: a head script decides the segment before first paint; blocks render banner, pinned product, prices, proof panel and cart offers
- Checkout UI extension for the thank-you share link; Web Pixel for funnel events; App Proxy for session tracking
- Shopify Admin GraphQL for discount codes, orders and metafields; Prisma for sessions and stats
- Claude API (Haiku) for the offer writer and dashboard insights, behind guardrails
- Bayesian stats and Thompson sampling for the optimizer
- Claude Code as our pair programmer, with an overnight run that added 300+ automated tests
Challenges we ran into
- Keeping prices honest: the price shown on the store must equal what checkout charges, across percentage, fixed and free-shipping offers, minimum orders and sale items.
- No flicker: changing a page after it loads makes it jump; we moved the decision into the page head.
- AI traffic is hard to detect: AI tools tag links inconsistently, and mobile apps often send no signal, so we built confirmed/probable tiers that stay safe when wrong.
- EU rules: personalized prices must be labelled, and strike-through prices bring the 30-day lowest-price rule.
- Setup pain: Windows + OneDrive, tunnel timeouts, app proxy and permission scopes.
Accomplishments that we're proud of
- A working control group: every number on the dashboard is measured, not claimed.
- AI that writes offers but can't invent claims or exceed the merchant's discount limit.
- Offers backed by real Shopify discount codes, so the store never promises what checkout won't honor.
- Going from idea to a full working app in about a day, with a large automated test suite behind it.
What we learned
- Personalization without measurement is just guessing; the control group is the product.
- Shopify's platform rules shape the product (e.g. Functions in custom apps need Shopify Plus).
- AI-referred visitors behave differently: they arrive having compared options already, so they need answers, not sales copy.
What's next for Greetd
- Pilots with real merchants running paid ads, starting with stores we already work with
- Theme adapters for the most popular Shopify themes, and EU-compliant price displays (30-day prior price)
- Importing ad text directly from Meta and TikTok so offers match each ad automatically
- Group buys ("bring 2 friends") measured against the control group
- Shopify App Store launch, with a free start until the dashboard proves uplift