I already bought the parking.

A ticketing giant tried to sell me the parking I bought from them a day earlier. The email isn't the problem. The data underneath it is. If it happens at their scale, it's happening at yours.

Case-file banner: a redacted upsell email offering event parking, stamped ALREADY PURCHASED, beside a receipt reading parking purchased at checkout
Fig. 00 — Exhibit A: the upsell email, sent one day after the purchase it never checked.

I bought Forrest Frank tickets over the weekend. Don’t laugh, it’s the stage of life I’m in. And don’t tell my kids because it’s a surprise.

Hopefully my back survives with 3 kids rotating on my shoulders for hours in the GA pit. Worth it. Can’t wait to see the look on their faces when they find out.

The next morning, an email from , the platform I bought them on. One of the behemoths. Doesn’t matter who, because this isn’t about them.

“Make parking one less thing to worry about. Reserve your spot today.”

The email, T+1 day

Here’s the thing. I already reserved parking. At checkout. In the app. Same transaction as the tickets, about 24 hours earlier.

So I’m being sold something I already own.

Naturally I replied with tips. Nobody asked. CS exec problems..ha.

But the real problem isn’t the email. It’s the data underneath it.

Somewhere a campaign fired on a trigger that thinks I haven’t bought parking. Maybe the sync lagged. Maybe the check ran when I entered the journey instead of when the email fired. Maybe parking lives in a partner’s system. Doesn’t matter. The system that decides who gets the upsell couldn’t see a purchase that already happened, and it had a full day to find out.

That’s worth sitting with. This is one of the biggest platforms in live events, with data teams most companies dream about. If it happens at their scale, it’s happening at yours. This isn’t a slam on anyone. It’s a mirror.

I’ve been on the sending side too, and scaled campaigns always run on some assumptions. That’s the trade for touching thousands of accounts. But there’s a difference between a judgment call and a data point you already own. My purchase wasn’t a gray area. It was sitting in their order system. With data that clear, you can’t miss.

The part most CS orgs skip

Everyone wants the automation. Nobody wants the unglamorous work of making sure the data feeding it is clean. Partly because it’s nobody’s job. The data lives with billing, marketing ops, product, and CS ops, and the misfires happen in the seams. So they build slick campaigns on a broken foundation, and the campaigns hit the wrong people.

Why it matters more than it looks

I know the counterargument. That parking email probably pencils out. Campaign dashboards measure the sale they caught, never the attention they burned. That cost shows up two quarters later as a dead open rate, and nobody attributes it back.

An irrelevant email isn’t neutral. It’s proof. Proof you don’t know me, proof you’re not paying attention, proof that opening your next email is a waste of my time.

That’s how trust erodes. Not much at once. A little at a time. Until the customer stops opening anything you send.

And the day you finally have something worth their attention, an expansion offer, a renewal, a real reason to spend more, you’ve already trained them to ignore you.

It’s also why nobody’s accepting your QBR invite. Every automated campaign that missed was a preview of the meeting. They’re not declining the meeting. They’re declining the vanilla.

You didn’t lose the expansion because the offer was bad. You lost it earlier, one irrelevant parking email at a time.

Before your next campaign fires

Everyone’s racing to add AI to their customer lifecycle right now. Do it. But do it right. AI makes this problem worse before it makes it better. Bad data in a campaign tool sends the same wrong email a thousand times. Bad data under an AI agent invents a thousand new ones.

I’m not guessing here. I’ve deployed sentiment analysis and predictive health scoring across a 20,000-account book. We layered it with feature adoption and support data so the campaigns hitting our scaled tier were aimed at what each customer actually needed next. Aimed, not sprayed. And we weren’t cherry-picking healthy accounts. We aimed at the unengaged ones, drove usage first, and that cohort grew processing volume 7% year over year. And today I ship production AI agents in my consulting work. Those agents work because every piece of data they need is connected and reconciled. Clean data doesn’t make an agent good, it makes a good agent possible. Point AI at a broken foundation and the leverage caps out at a smarter to-do list.

But pointed at the foundation instead, it has real jobs. Fewer than the hype says, more important than the hype gets:

You don’t need AI for the basics

If your data is connected, “don’t sell someone what they already own” is a suppression rule, not AI. Table stakes. The rule takes five minutes to write. Feeding it the data is the part a behemoth just fumbled. The agent earns its keep on everything the rule wasn’t written for: the new add-on nobody put in the filter, the adoption nudge for a feature they use every day, the edge case that spans billing, CRM, and product data. Rules catch the misses you predicted. An agent catches the ones you didn’t. Not all of them, so measure the agent too. Your CRM or CSP probably already ships agents. Most draft and summarize, so expect to point one at the aim yourself. Either way, notice their setup step one: connect your data. Just don’t stop at an email list.

You do need it for the work nobody staffs

Yes, the fix is connecting the data. But pipes break, syncs fail silently, and the same customer can live as three different records across billing, CRM, and product. Basic monitoring catches the pipe that breaks loudly. The agent is for the quiet failures: the sync that succeeds but writes the wrong thing, the two systems that both look healthy while one says I own parking and the other swears I don’t. Once you know a check should exist, write it as a check. The agent’s job is finding the checks nobody knew to write, and it has nothing but time. One rule though: the agent flags, a human fixes. Never let the auditor hold the pen. That’s how you find the broken pipes before your customers do.

And you need it to hear what customers won’t tell you

If customers who just purchased are served acquisition offers, or your power users are getting “getting started” nudges, those patterns are sitting in your send logs right now. Don’t wait for the reply-to inbox. It won’t ring. Most customers aren’t like me, they don’t write back with tips. They just quietly stop clicking, stop logging in after your sends, stop showing up. Your loudest churn signal is silence.

The pattern is the same in all three: use AI to verify the aim, not just pull the trigger faster.

If the answer is no, you don’t have an AI strategy problem. You have a plumbing problem. Fix that first and the AI gets scary good. Skip it and the AI just gets scary fast.

And it’s never done. Every new feature you ship and every new data source you unlock is another chance for your triggers to drift from reality. The aim takes constant tuning.

So give the pipes an owner, usually CS Ops or RevOps. If it’s everybody’s data, it’s nobody’s problem.

And remember what you’re aiming at. Not opens, not touches, customer value. Every send either adds some or spends trust. There’s no neutral.

Aim before you fire.

See you in the pit.

Matt

End of file
Expansion & upsellCS operationsAI & automation
Work with Matt

Reading is free. The engine is a call away.

If this post hits close to home, the fix is rarely one more dashboard — it's the operating system underneath. Thirty minutes, no pitch: bring one number you can't explain and I'll tell you straight whether I can help.