Your Best Campaign Is Your Worst Campaign

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 not fraud. It's not network games. It's the difference between the number your tracker reports and the number your processor keeps. Gross ROAS versus net ROAS.

Most media buyers rank campaigns by gross. That's fine until refunds, chargebacks, and declines catch up. Which they always do. And when they do, the ranking flips.

Disclosure: ClickerVolt is our product. We aim for fairness in every comparison: we credit competitors where they excel and only highlight genuine gaps. All pricing and features are verified against live sources.

Three Campaigns, Same Day, Same Budget

Here's a real pattern. Three campaigns, $5,000 budget each, same day. You pull your tracker report at end of day and see:

RANKED BY GROSS ROAS 1 Campaign A Weight-loss supplement • 14-day return window • $5K spend SCALE CANDIDATE — "TOP PERFORMER" 4.0x 2 Campaign B B2B SaaS trial • ~5-8% refund rate • $5K spend 2.8x 3 Campaign C $49 digital product • instant delivery • $5K spend 2.5x WHAT MOST MEDIA BUYERS SEE AT END OF DAY Gross ROAS from tracker — 24 hours after spend

The tracker snapshot — what every "data-driven" scaling playbook acts on.

Campaign A is crushing it. You pour your scaling budget into it. Fifteen thousand dollars the next day. You stop routing new money to Campaign C. That's the move, right? It's what every "data-driven" playbook tells you to do.

Three weeks later, you look at your payout statements. Here's what actually happened.

What The Next 30 Days Did To These Numbers

The gross ROAS is a single-day snapshot. It tells you what the customer's credit card authorized, not what your processor actually kept. Over the next 30 days, the numbers move.

Campaign A (weight-loss, 14-day return window): The niche has real product-fit problems. Customers order, try for a week, request a refund. Industry refund rate for this category sits around 22-28%. There are also chargebacks from buyers who forgot they ordered, and a non-trivial decline rate on the rebill cycle if the offer has a continuity component. By day 30, Campaign A's net ROAS is 2.1x. Down from 4.0x.

Campaign B (B2B SaaS trial): Low refund rate (around 5-8%), virtually no chargebacks, and the customers who convert to paid tend to stay paid. Net ROAS: 2.6x. Down from 2.8x, but almost unchanged.

Campaign C (digital product, instant delivery): Digital product buyers at the $49 price point rarely refund (under 4%). No chargebacks to speak of. Net ROAS: 2.4x. Down from 2.5x.

Re-rank them by net:

RANKED BY NET ROAS AFTER 30 DAYS OF REFUNDS, CHARGEBACKS, DECLINES 1 Campaign B Was #2 by gross • stable economics • almost no leakage TRUE WINNER — REROUTE SCALE BUDGET HERE 2.6x 2 Campaign C Was #3 by gross • $49 digital • under 4% refund rate 2.4x 3 Campaign A Was #1 by gross • refunds hit day 7-21 • chargebacks + declines THE BLEEDER — FROM 4.0x TO 2.1x IN 30 DAYS 2.1x THE RANKING FLIPPED You scaled the bleeder • starved the real winner • lost $4,500 in net revenue on the reallocation

Same campaigns, same budgets — but now ranked by what your processor actually kept.

The campaign you scaled to $15K is actually your worst performer. The campaign you starved of budget was your second-best on a net basis. Your "median" campaign was the actual winner.

The Budget You Already Lost

Let's put numbers on this. You scaled Campaign A from $5K to $15K. One month. Using the net ROAS of 2.1x instead of the gross 4.0x:

  • Scaled spend: $15,000
  • Gross revenue at 4.0x: $60,000
  • Net revenue at 2.1x: $31,500
  • Gap: $28,500 of revenue that doesn't exist

On the other side, Campaign C had a net of 2.4x. If you'd routed those same $15K to Campaign C instead, you'd have kept about $36,000 — $4,500 more net revenue on the same budget, with a steadier P&L.

The cost of ranking by gross isn't just the refund leakage on the bleeder. It's the opportunity cost of budget you could have routed to the campaigns that actually keep money.

Why Your Tracker Won't Show You This

Most affiliate trackers are built to report one number: what the customer's card authorized at the moment of click-to-order. That's gross. Refund events happen days or weeks later, on the processor or network side, often through a webhook your tracker either doesn't receive or doesn't route back to the original click.

A few specific reasons this goes unreported:

1. Refund webhooks don't wire back to the original click ID. Networks push refund events, but they push them at the conversion level, not the click level. If your tracker doesn't store the click → conversion → network-txn-id chain, it can't reconcile. Most don't.

2. Chargeback windows are 60-120 days. By the time a chargeback lands, the tracker has already archived or rolled up the original day's data into weekly aggregates. The chargeback shows up as a standalone negative event with no campaign attribution.

3. Decline rates on continuity offers compound. If your offer has a monthly rebill, the month-2 declines are essentially sunk margin the tracker never reflects. The first month looks great. Month 3 looks like attrition.

4. Cross-device attribution loss hides in the refunded segment. When a customer refunds after buying on a second device, the refund usually gets attributed to the last-touch click on that device, not the original traffic source. Your paid campaign gets credit for a conversion that another channel will later get debited for.

None of this is fraud. It's infrastructure that was built when tracking had one job: fire the conversion pixel and move on.

What to Do Right Now

You don't need to rebuild your stack. You need a 30-minute audit.

Step 1. Pull your last 30 days of gross ROAS per campaign. Most trackers give you this in two clicks.

Step 2. Pull your refund and chargeback rates per campaign from your processor. Stripe, PayPal, ClickBank, and most networks expose this. If yours doesn't, you're paying the blind tax every month.

Step 3. Compute net ROAS. net_roas = gross_roas × (1 − refund_rate − chargeback_rate − decline_rate). Do this per campaign, not per account. Account-level averages hide exactly the pattern you're trying to find.

Step 4. Rank by net. Look for the flip. If your top gross campaign is in a refund-heavy niche, you'll see it drop 1-3 positions. The quiet campaign with steady economics rises.

Step 5. Stop scaling the bleeder. Route incremental budget to the real winner. Don't cut Campaign A. Net 2.1x still makes money, and pulling spend mid-flight wipes the platform's learned patterns (you'd be rebuilding its optimization from zero the next time you push budget there). Keep it running at current spend. Take the budget you were about to scale it with and route that to your net winner instead. Start with 20-30% incremental reallocation, watch for two weeks, and compound from there.

What ClickerVolt Does Differently

Full disclosure: I built ClickerVolt because I got tired of doing this audit manually for every campaign I ran.

ClickerVolt tracks net per click from day one. When a refund webhook fires, it walks back to the original click-ID chain and subtracts the revenue from the attributed campaign. Chargebacks get the same treatment. You see gross and net side-by-side, per campaign, in real-time — no month-end reconciliation, no spreadsheet math.

That's the feature I built first because it's the one I needed first. Every other media buyer I know either does this manually or doesn't do it at all.


Rank your last thirty days by net, not gross. Watch the order flip. If you want the tool that does this automatically, check out ClickerVolt.

Ready to Track Smarter?
Start for free — every feature, no credit card, no trial countdown.
Try ClickerVolt Free →
500 events/month free · All features included · No credit card