Here's a question I ask every client, and it never gets a comfortable answer: your discount code made sales, sure. But did it actually do its job?
Most of us check one thing after a promo runs, did sales go up, and call it a day. I get it, it feels like the right question. It's just not the whole one.
You already know the cleanest version of this: that popup asking for your email or phone number in exchange for 20% off your first order. That thing has one job, turn a stranger into a first-time buyer, and it's a clean win every single time. Most of your codes aren't that simple, because most of your codes aren't going out to strangers.
(Here just for the discount code guide? Head over here to get the full guide that covers different goals you might have, the offers that match them, and the specific segments to target. Plus a resource on how to find this data in Square, Shopify, Acuity, and others. I'm only covering why this is important in this piece)
I run this same check with every client, whether we're talking about a discount code or a signup form: what was the goal, and did you actually hit it? Not "did revenue go up." The specific thing you set out to make happen.
Say you run a coffee shop and you email a "we miss you, 20% off your next order" code to your entire email list, hoping to bring back anyone who's drifted. A month later, fifty people redeem it. Nice, right? Except if forty of those fifty are regulars who'd have shown up that week anyway, full price, no discount needed, you didn't gain forty new outcomes. You gained forty people paying less for the order they were already going to make. That margin's just gone.
A discount is a trade: you're giving up margin for a specific change in behavior. Some of that trade is worth making. If the code reached ten people who'd genuinely gone quiet, and it actually brought them back, that's real, incremental revenue, and the margin was worth spending. On the other forty redemptions, you paid for something that was going to happen anyway. Small business margins can't take that hit, over and over, without you checking who's actually redeeming.
Most discount codes fall into a handful of goals, new revenue, appreciation, reactivation, list growth, a bigger basket, filling a slow period, moving inventory, converting someone to a membership, and each one comes with its own segment and its own trade. Mixing them up is exactly where the margin leaks out. The full breakdown, by goal, by business type, with example offers, lives in the cheat sheet I mentioned before. The rule that matters here is simpler than the table: know your goal before you create your offer, because the goal is what tells you who should even be redeeming it.
Send a reactivation code to people who never left, and you gave up margin for nothing in return.
Segmentation is just a long word for a really simple concept: the group of people you want to talk to right now based on a set of criteria.
It's the actual list you send to, built from your own email lists, sales, or customer data before you write the offer.
If your goal's reactivation, segmentation means pulling everyone who hasn't ordered in 30 days out of your POS or CRM and sending the code to that list, and only that list, not your full list with a subject line that says "we miss you." The list itself has to be the filter.
Email subscribers are a little tricky, because you only want the reach people who haven't subscribed yet. But, the popup itself can't tell who's subscribed and who isn't - it shows to everyone the same way. So if the rule is 'anyone who fills out the form gets the code,' someone already on your list can fill it out again and get a discount on an email address you gave them a year ago. What do you do in this case? Well, the code itself does the segmentation: it only works if that email isn't in your CRM yet, or if they've never gotten a welcome email from you. Let it validate for someone already on the list, and you've paid for an email address you already owned.
Same logic for a subscription. Pull customers who've bought from you 3 times, but never joined the recurring plan. Send it to people already on the plan instead, and you're just discounting a renewal they were going to make anyway.
Different goal, filters on different criteria, to build different lists. But the rule stays the same: decide who belongs in the segment before you write the offer, not after you see who redeemed it.
Once your list's segmented, checking the result is usually as simple as looking at your own shop data. If you only mailed the reactivation code to your lapsed-customer list, your POS or CRM already shows you who redeemed it and what they'd bought before. You don't need a second system for that. You already know who you sent it to.
Google Analytics, with UTM parameters on your links, earns its keep in exactly one case: when you don't have the list yet. A first-purchase popup or a "join our list" offer reaches people before you have any record of them, so your shop data's got nothing to check against until they convert. That's the one spot where GA tells you something your own data can't: which email, which ad, which channel actually brought that stranger to your site.
For everything else, the reactivation code, the appreciation code, the subscription conversion, you're controlling who got the offer from the jump. Check your shop data first. Save GA for when the audience starts out anonymous.
None of this needs a data team. It just needs a few decisions made before you launch anything, not after.
That's the whole exercise, honestly, whether it's a discount code, a signup form, or anything else with a redeem button. "Did I make sales" was never the real question. "Did it do the job I built it for" is the one worth answering.
And you don't need to hire someone part-time to make this happen. If you're running the shop solo and your Sundays are already spoken for, this is the piece I take off your plate, no extra hire required. Reach me at alyssa@warpandweft.studio or book time using the form below.