How a Shopify Brand Goes From 0 to 2 AI Citations in 30 Days: A Live Audit Log

Jump to section›
Most Shopify brands don't know if AI citations are moving until they see themselves quoted in a ChatGPT or Perplexity answer. By then, the brand has been making changes for weeks without feedback.
This post is the reverse — a live audit log of one brand's first thirty days, with the exact dates, the exact queries, the exact codebase changes, and the exact citation outcomes recorded as they happened.
The brand is our own. We ran the same diagnostic we run for clients, on ourselves, in public.
The result: zero citations on day one, one wrong citation on day three, two correct citations by day twenty-eight. The fix was four file edits, less than fifty lines of code.
#The starting line: day zero baseline
The first run of the audit was day one of a coordinated AI Visibility sprint. The brand had a live ecommerce-consultancy site, a published blog, a fresh llms.txt at the site root, and the standard Organization, Article, and FAQPage schema across every blog post.
We ran a nine-query Perplexity sweep across head, mid-tail, and long-tail terms covering Shopify B2B, Magento 2, headless commerce, AI Visibility consulting, and brand-name lookups.
The result was zero of nine cited. The brand was not present in any answer.
This is not unusual. Most ecommerce brands score zero on their first AI Visibility audit because the entity-authority signal that AI engines need — third-party listicles, directory profiles, schema-cross-referenced category placement — is absent or scattered.
What we did have, by day three: a strong long-tail brand-name query was returning a hit.
#Day three: the first citation was wrong
Three days after the baseline, the query luma-e shopify ecommerce agency returned a Perplexity citation. The brand was named. The category was correct. The location was wrong.
The exact phrasing surfaced by Perplexity:
"Based in Malta (Sliema), the agency runs Shopify and Magento builds for premium DTC brands and claims more than two hundred stores over ten years."
Two facts in that sentence were wrong. The brand is based in Ho Chi Minh City, Vietnam, not Malta. The portfolio claim was fifty-plus projects, not two hundred. Both errors were grounded in real surfaces the AI engine had read — just stale or contradictory ones.
This is the most informative outcome you can get on a first citation. The brand is now being indexed, retrieved, and surfaced. The signal that matters has activated. But the data being surfaced is wrong because the engine is picking a stale signal in the presence of contradictions.
The same week, we audited the surfaces that fed the citation. Three sources of disagreement turned up:
- The Organization JSON-LD emitted on every page had no
addressblock at all. The engine had to fall back to whatever it could find elsewhere. - The llms-full.txt file at the site root included a positioning line written four months earlier that read "Solo+AI agency" and a portfolio-scale line that read "200+ stores over 10 years." Both were aspirational or outdated; neither matched current copy.
- The trustLine string in the i18n message files for the English homepage said "50+ stores" — correct — but no other surface backed it up.
The engine had picked the loudest signal, which happened to be the llms-full.txt overclaim, and built a sentence around it. The Malta detail likely came from a third-party scrape we never found, but the absence of a JSON-LD address let it stand.
#The fix: four file edits, under fifty lines
Three days after the wrong citation, we shipped a coordinated fix across four surfaces.
Edit one: Organization JSON-LD. Added an address block with addressLocality: "Ho Chi Minh City" and addressCountry: "VN" to the Organization schema in lib/schema-org.tsx. This schema renders on every page, so the change propagated immediately to the next crawl.
Edit two: llms-full.txt positioning line. Changed "Solo+AI agency" to "AI-first agency" in public/llms-full.txt. The reasoning was twofold: the "Solo+AI" phrase was being read as an aspirational founder-codename rather than a category, and a competing product brand at SoloAgency.io was actively claiming the "solo AI agency" slot. Keeping the old phrase reinforced the competitor's brand.
Edit three: llms-full.txt portfolio count. Changed "200+ stores over 10 years" to "50+ projects." The fifty-plus number is the verifiable figure; the two-hundred-plus claim had no defensible source.
Edit four: i18n trustLine. Updated the trustLine string in messages/en.json and messages/vi.json to "50+ projects across Shopify Plus and Magento 2." This made the on-page hero copy align with the llms-full.txt fact and the Organization schema.
Total diff: forty-three lines across four files. No new templates, no new routes, no new content.
We re-deployed and re-pinged the search engines via IndexNow on the affected URLs.
#Day twenty-eight: the second citation was correct
Twenty-five days after the fix shipped — twenty-eight days from baseline — we re-ran the audit.
Perplexity returned two citations across the seven queries we sampled. One was a recurring brand-name citation, now correctly stating Ho Chi Minh City as the location, "AI-first ecommerce operating model" as the positioning, and the Shopify Plus and Magento 2 platform scope. The Malta error was gone. The "200+" overclaim was gone.
The second citation surfaced on a different long-tail query, luma-e AI visibility ecommerce, and added a fresh fact correctly: "small senior-led team" — language that appears in the llms-full.txt and the about-page copy, now consistent across both.
Two citations is not category dominance. It is a measurable baseline that did not exist twenty-eight days earlier, and it moved in response to a specific, traceable codebase change.
#What this log actually shows
Three things worth taking from this log if you are running the same audit on a Shopify or Magento store.
The first signal is rarely a clean win. A wrong citation is a confirmation that the index is working — that the brand has crossed a threshold where it is retrievable at all. Treat it as a diagnostic, not a defeat. The wrong facts will tell you which surfaces disagree.
Consistency beats coverage. Adding more content, more pages, or more directory profiles will not fix a citation that is wrong because two existing surfaces contradict each other. The leverage move is to align the surfaces the engine already reads.
The fix is usually small. The change set that moved the brand from one wrong citation to two correct ones was four files. No new content. No new schema types. No vendor purchases. Coordinated alignment of what was already there.
#The reproducible diagnostic
For any Shopify Plus brand that wants to run the same audit on themselves, here is the diagnostic in five steps.
Step one: run a nine-query baseline on Perplexity. Three head queries naming the category, three mid-tail queries adding a qualifier or vertical, three long-tail queries adding location or brand name. Record cited or not cited for each. This is your day zero.
Step two: when the first citation appears, read what it says, not whether it is right. Pull out the location claim, the portfolio claim, the category claim, and the named differentiator. Each one is a thread back to a specific surface the engine read.
Step three: audit four surfaces in this order. Organization JSON-LD on a live page (use curl and grep for application/ld+json). Then llms.txt and llms-full.txt at the site root. Then the trustLine, hero, and footer copy in the i18n message files or templates. Then your profile descriptions on Clutch, GoodFirms, DesignRush, and Sortlist.
Step four: pick the strongest contradiction and align all four to the canonical fact. Do not add new signals. Correct or remove the wrong ones. Re-deploy.
Step five: ping IndexNow with the affected URLs and re-run the same nine-query audit in three, seven, and twenty-one days. Record the delta.
The whole loop fits inside a thirty-day window. Most of the work is in step two — reading the wrong citation carefully enough to follow it back to its source.
#When this method does not work
This method assumes the brand is already at the threshold of retrievability — that there is at least one source the engine can find. If a baseline audit returns zero citations and no entity signal exists for the brand on third-party listicles or directories, the fix is upstream of schema alignment. You need to land on at least one listicle or comparison page in your vertical before signal alignment becomes the lever.
Likewise, if the brand has fewer than ten blog posts indexed and no Article schema emitted server-side, AI engines have no on-site content cluster to draw from. The four-file fix above will not produce a citation if there is nothing for the citation to reference. Schema and llms.txt alignment is a multiplier on existing content authority, not a substitute for it.
#What we are tracking next
The next thirty days of the same log will measure whether Cluster A long-tail queries — beyond the brand-name lookup — pick up citations as the on-site blog cadence compounds. The hypothesis is that the same alignment discipline applied to category-level queries will produce category-level citations on a two-to-six-week index lag.
If that hypothesis holds, the playbook generalises: the same four-surface alignment that fixed a wrong brand citation in twenty-eight days will fix a missing category citation in eight to twelve weeks. We will publish the next checkpoint when the data is in.
#Sources
Internal: AI citation log Day 25 through Day 28 (Perplexity nine-query sweep, deltas verified by re-run), lib/schema-org.tsx diff, public/llms-full.txt diff, messages/en.json and messages/vi.json trustLine diff.
External patterns referenced: Ahrefs research on listicle citation correlation in ChatGPT answers (verified live during this sprint).
Cross-references: The AI Visibility Score: A Reproducible Audit Method, Why Your Shopify Store Isn't Cited by ChatGPT (and How to Fix It in 30 Days), The 5 Schema Types ChatGPT Actually Reads.