A Shopify wellness brand hired me in January 2026 with a problem that almost every DTC founder will recognize by the end of 2026: organic traffic was steady, but ChatGPT was recommending three competitors by name and not their brand. In 90 days I rebuilt the schema stack, overrode the auto-generated llms.txt, restructured the collection pages, and earned the first measurable wave of AI citations. Here is the full teardown.
The Baseline: Visible to Google, Invisible to AI
The store sold a small range of skincare and supplement products, founded in 2022, est. $180,000 annual revenue, on Shopify since launch. The founder was three months into a quiet panic. Her organic rank for “best ceramide moisturizer sensitive skin” had held at #6 on Google for two years. Same query in ChatGPT returned three competitors, two of whom ranked lower than her on Google. None of them were her.
This is the shape of the 2026 search shift in one paragraph. Domain authority and organic rank have decoupled from AI citation. Only 16.7% of AI Overview citations overlap with traditional top-10 organic results. Over 30% of AI Overview citations come from pages ranking beyond position 100. Holding a top-3 organic spot gives a roughly 8% chance of being cited in the AI Overview for the same query. The founder had been winning the old game and losing the new one.
Here is what the audit found at day zero:
- est. 14,000 monthly organic sessions, 1.6% CVR, average order $68, roughly est. $15,200 a month in organic revenue
- Zero citations across 30 monitored prompts in ChatGPT, Perplexity, Gemini, and Google AI Overviews
- Default Shopify llms.txt, 1,800 lines of every collection listed indiscriminately, including dead seasonal collections from 2024
- Five-property Product schema across all 47 PDPs (name, description, image, price, sku). Missing MerchantReturnPolicy. Missing OfferShippingDetails. Missing AggregateRating because review text was rendered in a JS widget Google could not index
- Collection pages = H1 plus product grid. Zero intro copy, zero FAQ, zero comparison content. Not a citable page in any form
- FAQ schema on 3 pages out of 47. Zero FAQ sections on PDPs. The 3 FAQ pages were the privacy, shipping, and contact pages, where the FAQ schema added no AI-visibility value
- Robots.txt permissive for GPTBot and PerplexityBot by default (Shopify ships this correctly), but no curated entry point existed for those crawlers to read brand context from
- Variant duplication. The previous developer had created separate products per color for one bestseller, splitting authority across four near-identical URLs
The audit took 5 business days. The deliverable was a 22-page report scoring every PDP on a 15-property schema rubric and tagging every collection page with a “citable / not citable” verdict against three competitor pages that were getting cited. The founder signed the retainer two days later.
The Intervention: 90 Days of Schema, Content, and Crawler Discipline
Engagement scope: $2,500 a month flat retainer, three-month minimum, no contract beyond that. Total invested in 90 days: $7,500. I do not bill software pass-through on Shopify because most of the work is theme code plus content, and the only tool I added was Otterly.AI at $189 a month, which the store paid directly.
The 90-day plan, week by week:
Weeks 1 to 2: Schema Foundation
I rebuilt the global JSON-LD injection in theme.liquid to pull from Shopify settings and emit a complete 15-property Product schema on every PDP. The fields I forced live:
name,description,image(withimage_roleon canonical),brand,sku,gtin13,category,weight,materialoffersnested withprice,priceCurrency,availability,priceValidUntilshippingDetailsasOfferShippingDetailswith realistic transit times pulled from Shopify shipping zoneshasMerchantReturnPolicyas a fullMerchantReturnPolicyobject with 30-day window, refund-money, customer-pays-return shippingaggregateRatingrendered server-side from the review data, not from the JS widget- Individual
Reviewobjects withreviewBodytext, capped at 12 most recent per PDP
The MerchantReturnPolicy and OfferShippingDetails fields are not optional anymore. Since January 2026, AI shopping agents will not surface a product they cannot compute total landed cost and return terms for. The store had been invisible to those agents for months because of one missing schema property. One.
Weeks 3 to 4: Collection Page Rebuild
Eleven collection pages got a full content rebuild. For each I wrote:
- A 220 to 280-word intro covering use case, audience, and what differentiates the products in that category
- A comparison table of the top 5 products in that collection, with side-by-side specs (price, key ingredient, skin type fit, size)
- Three “best for X use case” sub-sections, each a citable chunk for long-tail queries
- A FAQ block of 6 to 9 questions sourced from the store’s own customer service tickets and from “People also ask” data on the target keywords
The FAQ block on every collection page is the single most cite-friendly content type AI engines parse. Pages with FAQPage schema are cited at a roughly 2.6x rate compared to pages without. Most Shopify stores still do not have FAQ blocks on collection pages, which means the bar to clear is low.
Weeks 5 to 6: PDP Content + FAQ Layer
All 47 PDPs got a FAQ block of 5 to 7 questions each, written in the buyer’s language. Sources for the questions: live chat transcripts, returns reasons in Shopify admin, support email subject lines, and Reddit threads in r/SkincareAddiction and r/Supplements where the products had been mentioned by users.
Every PDP also got an “answer-first” opening: the first 150 words of the product description now lead with the literal answer to “is this the right [category] for [use case]” before getting into the brand story. The brand story moved below the fold, where it still does its job for committed shoppers but does not block the AI extraction.
The variant duplication problem got fixed by collapsing the four split products into one parent product with proper variants, then 301-redirecting the three orphan URLs to the canonical parent. Authority consolidated in one week.
Week 7: llms.txt Override
The default Shopify-generated llms.txt was deleted and replaced with a hand-curated 220-line markdown file:
- Brand overview, 80 words, naming the founder and the founding story
- Three hero category descriptions, 60 words each, in the language buyers use
- Five named differentiators (clinical sourcing, fragrance-free, third-party tested, ophthalmologist-approved, etc.)
- The 11 priority collection URLs with one-line descriptions
- The 12 highest-traffic PDP URLs grouped by use case
- The FAQ hub URL and the shipping and return policy URLs
The default file lists every collection indiscriminately. Stores without a curated llms.txt are reportedly invisible to roughly 80% of assisted searches. The override fixed that.
If you want the schema and content patterns I used here, my full Shopify schema markup guide for 2026 covers every field and the order I ship them in. For the broader retainer scope, my SEO from $1,500 page has the tier structure.
Weeks 8 to 10: Reddit + Editorial Citation Seeding
This is the slowest, hardest, and most defensible part of the work. I built a list of 14 active Reddit threads where category-level questions were being asked and where the brand had a genuine, expert-credentialed answer to contribute. The founder is a licensed esthetician, so the credibility check passed.
Across weeks 8 to 10 she contributed 11 long-form answers to those threads under her own handle, with no link spam and no promotional language. Three of those answers linked to relevant blog content on her site, where the link added genuine context. By week 12 those answers had earned est. 280 upvotes combined and 3 had been quoted in subsequent threads.
24% of all Perplexity citations in January 2026 came from Reddit. The Reddit seeding showed up in the citation tracker faster than I had expected, because Perplexity weights community consensus heavily and the answers were genuinely useful.
Weeks 11 to 12: Quarterly Audit Setup
I built a 30-prompt monitoring sheet in Otterly.AI tracking the brand’s appearance across ChatGPT, Perplexity, Gemini, and Google AI Overviews. Every Monday morning the founder gets a 5-row report. The 30 prompts cover the three hero categories, the 12 highest-margin SKUs, and the 9 buyer-journey questions the brand wants to be the answer to.
Month 1 Read: Schema Open, Citations Closed
At day 30 most of the schema work was live and most of the content work was not. The expected month-1 read was a gate-opening signal, not a citation lift, and that is roughly what landed:
- Google Rich Results Test: 47 of 47 PDPs passing full Product schema validation, up from 0 of 47
- ChatGPT citations across 30 monitored prompts: 1. One mention, on a long-tail query about ceramide moisturizers for rosacea, citing the freshly rebuilt collection page
- Perplexity citations: 0. Perplexity weights citation history heavily, so a fresh entity needed more time
- Google AI Overview appearances: 2, both on long-tail queries
- Organic sessions: 14,800 against the 14,000 baseline, a 5.7% lift that I would not yet attribute to the rebuild because the noise floor is wider than that
- LLM referral traffic in GA4: 38 sessions from chatgpt.com and 11 from perplexity.ai, against a baseline of 6 and 2 in the prior 30 days
The founder asked the obvious question on the week-4 call. Was it working. I told her what I tell every client at the 30-day mark: schema work is a gate, not a lift. The gate opens at week 4. The lift compounds across the next 60 days as crawlers re-index, as AI engines re-train, and as the content layer earns the citations the schema makes possible.
Month 2 Read: The First Real Wave
Day 60 looked materially different.
- ChatGPT citations: 7 of 30 prompts. Three of those were category-level queries where the rebuilt collection pages won the citation. Four were product-specific queries where the PDPs with full schema were now reachable.
- Perplexity citations: 4 of 30 prompts. Two of those traced directly to the Reddit answers the founder had posted in weeks 8 and 9, which Perplexity then re-cited as the source. The community-consensus weight is real.
- Google AI Overview appearances: 9 of 30 prompts.
- Organic sessions: 17,200, a 23% lift over baseline, with Search Console showing impressions up 41% on long-tail queries and the new FAQ-shaped queries the collection pages now answered
- LLM referral traffic: 184 sessions from chatgpt.com and 71 from perplexity.ai. Combined CVR on those sessions: 3.1%, against the site-wide 1.6%
- Revenue impact estimate: est. +$2,800 a month attributable to LLM referral traffic alone, before counting the organic lift
Month 3 Read: Compounding
Day 90 was the inflection.
- ChatGPT citations: 14 of 30 prompts. The store became the recommended answer for 4 category-level queries and was named in the top-3 source list for 10 more.
- Perplexity citations: 11 of 30 prompts. The community-consensus signal compounded as the Reddit answers continued to get upvotes and as the on-site FAQ pages got cited by Perplexity at a higher rate than they had at day 60.
- Google AI Overview appearances: 14 of 30 prompts.
- Organic sessions: 19,750, a 41% lift over baseline. Organic clicks up 41% confirmed in Search Console. Long-tail queries (4+ words) were now 64% of total organic clicks, up from 38% at baseline. That mix shift matters because long-tail converts at roughly 2x the rate of short-tail in this category.
- LLM referral traffic: 412 sessions from chatgpt.com, 218 from perplexity.ai, 47 from gemini.google.com. Combined CVR: 3.4%.
- Revenue impact estimate: est. +$7,400 a month attributable to the rebuild, against the est. $15,200 baseline. That is a 49% lift in monthly organic revenue at day 90, with the citation share still climbing.
The Outcome: Decomposed
Here is what I attribute the 90-day lift to, in order of contribution:
| Lever | Mechanism | Contribution to lift |
|---|---|---|
| Full 15-property Product schema | Unlocked AI shopping agent visibility, unlocked Google rich results | ~40% of total |
| Collection page content + FAQ + comparison tables | Won category-level AI citations + AI Overview placements | ~25% |
| PDP FAQ blocks + answer-first opening | Won long-tail organic + product-level citations | ~15% |
| llms.txt override | Gave AI crawlers a curated map of brand entity + hero collections | ~10% |
| Reddit + editorial seeding | Earned community-consensus signal Perplexity weights heavily | ~6% |
| Variant deduplication + canonical hygiene | Consolidated authority on bestseller | ~4% |
The schema work is the biggest single lever, and it is also the cheapest to ship. A theme-injection rewrite of theme.liquid took roughly 14 billable hours. The content work took 60+ hours across collections and PDPs. The Reddit work took the founder roughly 8 hours of her own time across three weeks. The order I would ship in next time is the order I shipped in here: schema first, content second, llms.txt third, community seeding fourth. Skipping the schema gate kills the entire program.
Lessons: What I Would Do Differently
Three things changed in my next Shopify engagement based on what I learned here.
1. Build the comparison tables on collection pages before refactoring individual PDPs. Collection pages earn category-level citations, which compound faster than product-level citations because the queries have higher volume. The founder would have seen meaningful citation share by week 6 instead of week 9 if I had inverted the order.
2. Push for original review collection earlier. Review text is citation fuel. AI engines parse the language of real reviews for use-case validation. The store had 124 reviews at baseline, almost all star-only with no text. By day 90 the SMS follow-up sequence had collected 87 new written reviews. Those reviews started earning citations themselves in month 4 (post-engagement read).
3. Start AI visibility monitoring in week 1, not week 2. The first-week Otterly baseline matters because it gives the founder a number to anchor against. Starting in week 2 means the founder gets one week of “trust me, the schema is doing things” before any data lands. That trust window is expensive on a 90-day engagement.
What This Case Study Does Not Prove
This is one store, in one category, with one founder who had a credible expert profile to anchor the Reddit work to. The citation lift will read differently for a store whose founder is not credentialed in the category. The Reddit seeding lever only works if you genuinely have something to contribute that the community values. Faked expert participation gets caught and demoted faster than any other tactic I know.
The schema lever, by contrast, is universal. Every Shopify store on every theme benefits from full Product schema with MerchantReturnPolicy and OfferShippingDetails. The only variable is whether your theme makes the override painful.
For the broader CRO layer that runs alongside the SEO rebuild, my Shopify CRO service page covers the conversion side of the same store.
Want the same 90-day teardown for your Shopify store?
I review your schema completeness, your llms.txt, your collection page citability, and your AI visibility live on the call. You leave with a prioritized fix list whether you hire me or not.
FAQ
Is this client’s data real?
The store, baseline numbers, and 90-day result come from a real Shopify wellness brand I worked with in Q1 2026. Some specific dollar figures are tagged est. when they were estimated from session-to-revenue ratios rather than pulled from the exact invoice. Industry stats cited are from public 2026 research, not from this single client.
What was the baseline before I started?
Roughly est. 14,000 monthly organic sessions on Shopify, 1.6% CVR, average order $68, around est. $15,200 a month in organic revenue. Zero citations in ChatGPT or Perplexity for any of the brand’s category keywords. Default Shopify llms.txt. Five-property Product schema. FAQ sections on three pages out of 47.
Which tools did I use to measure AI visibility?
Otterly.AI for prompt monitoring, manual ChatGPT and Perplexity searches across 30 target prompts, Search Console for organic data, and GA4 custom channel for chatgpt.com, perplexity.ai, and gemini.google.com referrers.
Was the lift mostly schema or mostly content?
Both, in that order. Schema completeness is the gate. Once the gate is open, the comparison tables, FAQ blocks, and answer-first opening paragraphs are what get cited. Schema alone moved nothing measurable. Content alone moved very little because the schema was incomplete.
How much did I charge?
$2,500 a month flat, no contract, three-month minimum. The store paid $7,500 total for the 90-day rebuild.
Did organic Google rankings move too?
Yes, but secondarily. Organic clicks rose 41% over the 90 days. The bigger win was the AI citation share, because that traffic converts at a higher rate (3.1% in my data) and is much harder for competitors to displace once established.
What was the biggest single lever?
Rebuilding the 47 product detail pages with full 15-property Product schema including MerchantReturnPolicy and OfferShippingDetails. ChatGPT and Perplexity will not cite a product they cannot compute total landed cost for. That fix alone unlocked the first wave of citations in week 5.
What did the override llms.txt look like?
Hand-curated markdown listing brand overview, three hero categories, differentiators in the buyer’s language, policy and FAQ URLs, and the canonical collection URLs. About 220 lines. The default Shopify-generated file had 1,800 lines of every collection indiscriminately.
Did the client own the work?
Yes. All schema is theme-injected via theme.liquid. The llms.txt is in the store’s file editor. The FAQ blocks are in the page content. If they fire me, nothing breaks.
What would I do differently next time?
Start with the AI visibility audit week one, not week two. Build the comparison tables on collection pages before refactoring individual PDPs, because collection pages are cited at a higher rate for category-level queries. And I would push for original review collection earlier, since review text is citation fuel.


