I spend a lot of my time talking to customers. Across those conversations, the same five problems come up again and again.
What surprised me is how few of them are about reporting. Teams rarely come to us because a dashboard is wrong. They come because of what their data does after it leaves the warehouse, when it reaches ad platforms, CRMs, messaging tools, and, increasingly, AI agents.
Those systems act on data and learn from it. When the data is wrong, the result is a bad decision made automatically, often thousands of times a day.
1. Your ad platform is learning from incomplete conversions
Meta's and Google's bidding systems are machine learning optimizers, and they learn from the conversions you send them. Most companies still feed them through a browser pixel.
That pixel depends on a cookie and a click ID lasting from the ad click to the purchase. On iPhones, in Safari, and behind ad blockers, they often don't. The customer still buys, but the ad platform never hears about it, so it optimizes on a partial picture of who your buyers are.
The teams that fixed this stopped relying on the browser. Their backend already knows who bought, what, and for how much, so they send that to each platform directly. The best ones also send outcomes that happen weeks after the click, like a funded loan or an in-store sale, and tell the platform which conversions they don't want more of.
In our view, the pixel should be the backup and your own systems the source of truth.
2. Bots are teaching your ads the wrong lessons
Bot traffic came up far more than I expected, and the concern usually wasn't inflated traffic numbers.
When a bot fills in a form or lands on a conversion page, and that event reaches an ad platform, the algorithm treats it as a real customer and goes looking for more traffic like it. Scrapers and AI crawlers also create events that every downstream tool bills you for.
Some of the junk is self-inflicted: test events, duplicate calls, and old app versions still sending events that were retired long ago.
Most teams clean this up separately in each tool, so every tool ends up with a different number. The teams that got it under control filtered once, at collection, and sent every tool the same cleaned stream.
3. Your event definitions have drifted from reality
Almost every team has a document that describes their events. Almost none say it still matches what their apps actually send.
Names drift between teams. Property types change. An app version from two years ago keeps sending an event that was renamed last spring.
For a long time, the cost was a confusing dashboard and an analyst who knew which version to trust. Agents don't have that analyst. Ask one how many people signed up last week and it will find every variant of the sign-up event, with no way to tell which one is right.
The teams handling this well treat their event schema like an API: defined in code, reviewed like code, and enforced when events are collected. I think an enforced tracking plan is the cheapest context you can give an agent, and most teams don't have one yet.
4. Consent has to be enforced in the pipeline
A consent banner records a choice. On its own, it doesn't stop a single tag, and we regularly see teams find tags on their own sites that load before the visitor has chosen anything.
The real question is simple: which tool may receive which data, for which person? If the answer lives in a dozen vendor settings pages, one of them is probably wrong right now. If it lives in the pipeline, every new tool follows the rule from day one, including the AI tools teams are adding this year.
5. One customer shows up as three
Safari deletes cookies set by JavaScript after seven days without a visit. That means someone who reads your pricing page on a Monday and buys the following week shows up as a brand-new visitor. We also often see checkout flows, especially on Shopify, drop the visitor's ID and campaign data on the way to the order.
So the same person ends up as three records: a visitor, a shopper, and a customer. Attribution breaks, experiments put one person in two variants, and any agent reasoning about that customer sees only part of their story.
The teams that fixed this made collection first-party and made sure one visitor ID survives every step, from the first page view to the order.
Fix it once, where the data is collected
Across all five of these problems, the teams that got it right didn't fix the problem in each downstream tool. They fixed it once, where the data is collected, and let every tool inherit the result.
That matters more than ever now that the systems downstream are often algorithms and agents, which act on whatever you send them without asking whether it's right.
Start with the one costing you the most, and fix it at collection. Every tool downstream gets the benefit.
I’m sharing more learnings from my customer conversations on X. Follow me at @soumyadeb_mitra.










