On an eCom project, we tracked promo codes using a custom parameter promo_code. It felt cleaner than default tags. At first — all good. Purchase events fired, promo codes passed, GA4 showed what was used and when.
Two weeks later, the client asked: “Half the orders have no promo code. Is this a bug — or are people not entering it?”
We investigated — and saw 40% of orders were missing promo code data. Which was weird.
Turns out: GA4 + custom parameters can silently fail. If you don’t follow the chain — register → configure → wait — GA4 just drops the data.
Other pitfalls:
• Parameters over 100 characters get trimmed
• There’s a cap on parameters per event
• Events may fire before GA4 “knows” the parameter
• Seeing it in DebugView ≠ seeing it in reports
No errors. Just blank fields.
Because of this:
• The client couldn’t track partner promo performance
• A working code looked like a failure
• Partners argued over attribution
• Leadership paused the campaign — losing revenue
And all because no one double-checked how the parameter flowed from site to report. It all “looked set up.”
Now I always validate custom parameters before using them:
• Manually test from site to GA4
• Check both DebugView and BigQuery
• Watch for trimming issues
• Track how many sessions have the parameter vs. don’t
• Wait before using new parameters in reports — GA4 needs time to process them
If you think custom parameters are “set and forget” — your data may already be lying.
GA4 won’t warn you. But the business will eventually ask: “Who are all the people we gave those promo codes to?”
Want to get all my top Linkedin content? I regularly upload it to one Notion doc.
Go here to download it for FREE.


