The campaign at the top of your ROAS report is probably the one bleeding you the most. Here's why, and here's the exact math I use to catch it.
I've been buying traffic for 19 years. I've watched media buyers pour budget into their "top performer" for a month, then wonder why their bank account doesn't match. It's the difference between the number your tracker reports and the number your processor keeps. Gross ROAS versus net ROAS.
Three Campaigns, Same Day, Same Budget
Three campaigns, $5,000 budget each. Gross ROAS at end of day: Campaign A (weight-loss, 14-day window) 4.0x, Campaign B (B2B SaaS trial) 2.8x, Campaign C ($49 digital product) 2.5x.
Scale A, starve C. Right? Wrong.
What The Next 30 Days Did
Weight-loss refund rates run 22-28%. By day 30, Campaign A nets 2.1x. Campaign B nets 2.6x (minimal refunds). Campaign C nets 2.4x (under 4% refunds).
Re-ranked by net: B #1, C #2, A #3. Your "best" campaign is your worst.
The Budget You Lost
Scaling A from $5K to $15K at 2.1x net nets $31,500 — a $28,500 gap from the 4.0x gross you expected. Routing that $15K to C at 2.4x would have kept $4,500 more.
Why Your Tracker Won't Show You This
Refund webhooks don't wire back to click IDs. Chargeback windows are 60-120 days. Continuity decline rates compound. Cross-device refunds get last-touch attribution. Trackers were built to fire one pixel and move on.
The 30-Minute Audit
- Pull last 30 days gross ROAS per campaign.
- Pull refund/chargeback rates per campaign from your processor.
- Compute net_roas = gross_roas × (1 − refund_rate − chargeback_rate − decline_rate).
- Rank by net. Watch the flip.
- Don't cut the bleeder — keep it running. Route incremental budget to the net winner. ## What ClickerVolt Does I built ClickerVolt because I was tired of doing this manually. It tracks net per click from day one — refund webhooks walk back to the original click-ID chain and subtract revenue from the attributed campaign. Gross and net side-by-side, per campaign, real-time. Check out ClickerVolt.
Top comments (0)