monkeyman.agency
industry

AI Analytics Hallucinations: Why Your Chatbot's Revenue Numbers Might Be Fiction

An AI analytics agent handed a Shopify brand $23,000 of November revenue that never existed. Here's where hallucinated metrics come from and the checks we run.

July 8, 2026 8 min read

Naomi runs growth at a supplements brand on Shopify Plus, about $4M in trailing revenue. In December she typed a question into the AI analytics tool her team had adopted that quarter: how much did subscribers contribute in November? The answer came back in two seconds, $84,412, with a tidy cohort breakdown. Finance closed the month at $61,300. The tool hadn’t miscounted. It had answered a different question than the one she asked, then dressed the answer up like a fact.

The number that didn’t exist

Naomi’s team spent a day and a half on the reconciliation. The tool had been asked for subscriber revenue in November. What it returned was gross sales for every customer who had ever held a subscription, churned ones included, one-time purchases included, refunds subtracted nowhere. The currency conversion on her Canadian store wasn’t in the query either.

None of that was visible in the answer. The answer was a single number and a chart.

That’s what separates this failure from a broken dashboard. A broken dashboard looks broken. A hallucinated metric looks exactly like a real one, same font, same confident precision to the dollar, and the only way to catch it is to already know the truth from somewhere else. Which raises an awkward question about what the tool is actually for.

The $23,000 gap was caught because finance happened to close the books that week. The scarier version is the number nobody closes books against, the segment size, the churn estimate, the channel split. Those can be wrong for months.

The magic phase, and why it’s the dangerous one

Every team we’ve watched adopt an AI analytics layer goes through the same arc. Week one is disbelief, in the good way: questions that used to take an analyst half a day come back in seconds, and most of them check out.

An agency dev told us in a Slack DM: “It won’t fail at first, so it will feel like magic. But that’s what makes it dangerous. You will trust it.”

He’s right, and the mechanism is boring old psychology. The first twenty answers verify cleanly, so you stop verifying. The failure lands on answer forty, after the tool has earned a seat in the Monday reporting meeting, and by then nobody is auditing anything. We audited fourteen Shopify stores’ reporting stacks this spring, and eleven were forwarding at least one AI-generated number to stakeholders with no verification step of any kind.

Nobody built that habit deliberately. It accreted, one correct answer at a time.

Where the wrong answers actually come from

Hallucination is the word everyone uses, but it bundles together at least three separate failure modes, and they need different fixes.

Wrong joins are the most common in our project work. The model writes a query that links orders to customers through the wrong key, or double-counts line items when a discount spans products, or misses the distinction between order currency and presentment currency. The SQL runs without error. It just answers a subtly different question than the one you asked, which is worse than crashing, because a crash gets noticed.

Invented segments are sneakier. Ask for “high-value repeat buyers” and the model has to decide what that means. Often it decides silently: repeat means two or more orders, high-value means top decile, lapsed means 90 days of inactivity. Reasonable defaults. Except your team’s working definition is top quartile and 60 days, and now two reports that use identical words disagree, and the meeting spends twenty minutes arguing about which one is broken when neither is.

Then there’s the quiet third one, stale caches. The agent reads a warehouse table that syncs nightly, answers a question about “today”, and nothing in the response mentions that its today ended at 2 a.m. During BFCM week we watched a merchant nearly reallocate ad budget off a “live” revenue figure that was fourteen hours old.

The corners of ecommerce data where it lies best

Some questions are pretty safe to hand an AI agent; total orders yesterday is hard to get wrong. The risk concentrates where ecommerce data has sharp edges.

Refunds are the classic. Gross versus net trips up human analysts, and models inherit every bit of that ambiguity without inheriting the instinct to ask. Subscription businesses stack another layer on top: bookings, billings, and recognized revenue are three different numbers, and a model asked for “subscription revenue” will pick one without telling you which.

Multi-currency stores, multi-storefront setups, and test orders that were never filtered all belong on the list too.

Attribution is the worst offender of all, because there’s no ground truth to check against. If the model invents a plausible-looking channel split, nothing anywhere in your stack will ever contradict it. It’s fiction with no fact-checker, and it looks great on a slide.

Making the model do less

The fix isn’t a smarter model. It’s a smaller job description.

The teams getting reliable answers converge on the same architecture: the language model translates the question, and something deterministic computes the answer. A semantic layer defines revenue, repeat rate, and lapsed exactly once, in code, reviewed by a human. The model selects from those definitions. It never improvises its own arithmetic.

On Shopify you have more deterministic surface to work with than most platforms offer. ShopifyQL exposes commerce-aware querying where the platform’s own metric definitions do the heavy lifting, so “net sales” means what Shopify admin means by it, not whatever a model guessed at 2 a.m. And the newer agent integrations built on the Model Context Protocol let you hand an agent a fixed set of typed tools instead of raw database access, which is the difference between giving a cashier a till and giving them the vault keys.

We rebuilt a reporting bot on this pattern for an agency client in March. Same model underneath, same questions. Errors on a 40-question benchmark went from six to zero, because the model was no longer allowed to write its own joins. The intelligence didn’t improve. The blast radius shrank.

The five-minute verification protocol

Until your stack works that way, verify by hand. Ours takes about five minutes per number, and we run it on anything that leaves the building.

Ask the same question twice, phrased differently. A deterministic pipeline returns identical answers; a hallucinating one usually drifts, and any drift at all is disqualifying. Cheap test, high yield.

Ask for the workings. “Show me the query you ran and the tables you touched.” A tool that can’t show its query is asking for faith, not trust, and you should treat its output accordingly.

Then triangulate against a source of record. Shopify admin’s built-in reports are computed deterministically, so when the agent’s November and the admin’s November disagree by more than rounding, the agent loses. Every time. Finance systems beat warehouses, warehouses beat agents, agents beat nothing.

The protocol sounds bureaucratic and takes less time than the arguments it prevents.

The vendor questions that separate tools from wrappers

AI analytics apps are pouring into the Shopify ecosystem right now, and the demos are uniformly slick. What varies is the architecture underneath. We’ve sat in on vendor evaluations for three clients over the last two quarters, and the questions that mattered were the unglamorous ones:

  • Does the model generate SQL freely, or select from a governed semantic layer?
  • Can every answer show its query, its source tables, and its data freshness?
  • When a question is ambiguous, does it guess or does it ask?
  • Are metric definitions editable by us, and version-controlled?
  • How are refunds, multi-currency, and test orders handled?
  • Is there an audit log of every question and every answer given?

A vendor who answers those six crisply is selling analytics. A vendor who pivots back to the demo is selling a chat window on top of a prayer.

One client scored three shortlisted tools against that list and the rankings flipped completely versus the demo impressions. The slickest product came last.

Agents that show their work

The direction of travel is at least encouraging. The current generation of agent frameworks is converging on citation-style answers, where every figure links back to the query that produced it and carries a freshness timestamp for the data underneath. A few tools now refuse to answer when a metric definition is missing, which sounds like a downgrade and is actually the most trust-building behavior a data product can ship.

Our bet is that “shows its work” becomes table stakes within two years, the way SSL did, and the tools that survive won’t be the most fluent ones. They’ll be the boring ones that are right.

What we keep telling clients

AI analytics isn’t a truth machine, it’s a very fast junior analyst with unlimited confidence. You’d never let a junior analyst email numbers straight to the board without review. Keep the same rule when the analyst is a model.

Adopt it for speed, not for authority. Let it draft the answer, explore the segments, write the first version of the query. But route anything that touches money, inventory, or ad budget through a deterministic check before a human acts on it. That one gate catches nearly everything.

And put your definitions in code, somewhere the model can’t rewrite them. Most of the hallucination war is won the day “revenue” means exactly one thing in your stack. That work is unglamorous, takes a week, and outlasts every model upgrade.

Naomi’s team kept the tool. They added a two-line rule to their reporting process: any AI number leaving the growth team gets triangulated against Shopify admin first, and any answer that can’t show its query gets discarded. The vendor even shipped a stale-data flag after they asked for one. Total cost of the fix was a process memo, and the $23,000 phantom never came back.

Questions we get every week

Can’t we just prompt the model to be more careful?

Prompting trims the sloppiest failures but can’t fix missing definitions or stale data, because those live outside the model. Guardrails belong in the data layer, not the prompt. We’ve never once seen a prompt eliminate wrong joins on a real schema.

Are AI analytics tools safe for small stores without a data team?

For directional questions, yes, and they’re a real upgrade over eyeballing dashboards. If a number decides ad spend or a purchase order, check it against Shopify admin first, because the risk scales with what you do with the answer, and that habit costs minutes and requires no data team.

Should we buy a Shopify-native AI tool or put an AI layer on our warehouse?

Native tools inherit Shopify’s metric definitions, which removes the most common hallucination source for single-store brands. Warehouse-based tools win once multiple channels need one source of truth. The deciding question is where your metric definitions live, not where the AI lives.

How do we know if this has already happened to us?

Pick the three AI-generated numbers your team quoted most recently and reconcile them against Shopify admin or your finance close. In our audits, roughly one in three teams finds a material gap on the first pass. It’s a sobering afternoon and it costs nothing.

Want an audit of what your AI reporting stack is quietly getting wrong? Talk to us and we’ll benchmark your agent’s answers against your source of record, wire your metric definitions into a deterministic layer, and leave you a verification protocol your team will actually run.

Need help with this?

Send us your store. We'll send back an audit.

Send us your store URL. We'll send back a free audit within 48 hours.

Phone (optional)