SUMMER2O Is Not SUMMER20: How Discount Code Typos Quietly Kill Shopify Sales
Put these two codes in front of a customer on a phone, in a hurry, with a checkout timer of their own patience running:
SUMMER20SUMMER2O
One ends in the digit zero, the other in the letter O. In most of the fonts your marketing ships in — email subject lines, Instagram captions, package inserts — they are pixel-for-pixel near-identical. One of them takes 20% off. The other produces:
Enter a valid discount code or gift card
No hint that it was close. No “did you mean SUMMER20?” The customer tries once, maybe twice, concludes the promo is fake or over, and either pays full price annoyed or abandons the cart entirely.
Where typos actually come from
Watching failed codes across checkouts, the same patterns repeat:
Look-alike characters. O↔0 is the king, followed by I↔l↔1, S↔5, B↔8, Z↔2. Any code containing these is generating a background rate of failures right now.
Transcription, not copy-paste. Codes read in a video or podcast, printed on a packaging insert, or seen on another device get typed from memory. That’s where doubled letters drop (SUMER20), spaces sneak in (SUMMER 20), and phonetic spellings appear.
Cross-promo contamination. Customers type last month’s code, an influencer’s personal code with a digit off, or a code from a different store. From your side these look like nonsense strings; from theirs, it’s a legitimate attempt to use “the discount.”
One thing you do not need to worry about: capitalization. Shopify discount codes are case-insensitive — summer20 works fine. The failures come from the characters, not the case.
Why you never hear about it
A typo produces the generic invalid-code error — the same one shown for expired or made-up codes (cause #1 in our full troubleshooting checklist). The customer has no way to know they were one character away, and contacting support mid-checkout is friction almost nobody accepts. So the failure is silent on both ends: they think your promo is broken; you think your campaign has a soft conversion rate.
Shopify keeps no report of these attempts — the typed string is shown to no one and stored nowhere. (More on that gap in how to track failed discount codes.)
Naming codes that resist typos
The cheapest fix is upstream, when you name the code:
- Ban look-alikes. No O/0, I/l/1, S/5, B/8, Z/2.
SUMMER20fails this test;SUMMERSALEpasses. - Use real words. Dictionary words survive human memory far better than letter-number soup.
WELCOMEbeatsWLC10X. - Shorter is safer. Every extra character is another chance to fumble. Twelve characters is a transcription test, not a discount.
- Match the channel. Codes that will be heard (video, podcast, radio) need to be unambiguous when spoken:
TENOFFsurvives audio;X2K10does not. - One live pattern at a time. If
SPRING15,SAVE15andVIP15run simultaneously, customers will blend them.
Recovering the sales you’re already losing
For the typos already happening, you have three moves:
Create the alias. If SUMMER2O is being typed repeatedly, create it as a second code with identical value, limits, and dates. The customer who “mistypes” now just… gets the discount. Keep the alias’s usage tracked separately — it’s also your measure of how bad the original name was. (This is a judgment call: aliases add admin clutter, so reserve them for typos with real volume.)
Fix the creative. If one channel produces one specific typo, the creative is the bug: the font renders 0 like O, the insert’s print is smudged, the caption line-breaks mid-code. Cheaper than an alias and stops the bleed at the source.
Rename next time. Feed what you learn back into the naming rules above. Typo patterns are remarkably consistent per audience.
The prerequisite for all three is seeing the typos. That’s the job Recoupon was built for: it records every failed code at your checkout exactly as typed, then clusters the look-alikes — SUMMER2O ×4, SUMER20 ×2, SUMMER 20 ×1 → probably meant SUMMER20, with the cart value summed so you know what the cluster is worth. It recommends the alias; creating it stays your call, in your admin. The free plan shows the failures as they happen.
A note on “did you mean”
E-commerce checkouts don’t offer did-you-mean for discount codes, and there’s a good reason: fuzzy-matching codes server-side would let anyone brute-force their way from SUMMER1 to a working code. Guessable aliases you create deliberately are fine; automatic fuzziness would be a security hole. The realistic play is exactly the loop above — see the typos, decide which ones deserve to work, make them real codes.
Typos are the most fixable revenue leak in discounting: the demand is proven (they’re at checkout, code in hand), the fix is minutes, and the failure repeats until someone looks.