How to Know if Your Ads Are Generating Real Profit for Your Online Course
Your ad manager shows a 5x ROAS. You invested R$ 10,000 and Meta Ads reports R$ 50,000 in sales. It sounds like a dream. But when you check your bank account at the end of the month, the balance doesn't back up that story. What’s going on?
The problem is that the ROAS reported by Meta or Google isn't profit. It’s attributed gross revenue—and between attributed gross revenue and real profit, there’s a chasm of fees, refunds, duplicate attributions, and costs that no one told you about.
Why Meta Ads ROAS Lies
The ROAS (Return on Ad Spend) that appears in your ad manager has structural issues you need to understand:
Inflated attribution
Meta uses attribution windows of 7-day click and 1-day view (by default). This means if someone saw your ad and bought 23 hours later via an organic link, Meta attributes the sale to the ad. If the same person saw ads from two different campaigns, both count the sale.
Gross revenue, not net
The pixel captures the total transaction value. It doesn't deduct platform fees (9.9%), refunds (5-15%), affiliate commissions, or taxes.
No visibility into operational costs
ROAS doesn't know you pay R$ 3,500 for a media buyer, R$ 2,000 for creatives, and R$ 1,500 for tools. These costs are invisible in the calculation.
The Real Calculation of Ad Return
Let's do a full exercise for an operation selling a R$ 497 course.
Ad manager data:
- Monthly Meta Ads investment: R$ 20,000
- Sales attributed by Meta: 120 sales (R$ 59,640)
- Reported ROAS: 2.98x
Adjusting for reality:
Step 1 — Correcting attribution: When cross-referencing with real sales platform data, out of the 120 sales attributed by Meta, 15 came from organic traffic that Meta wrongly claimed, and 8 were also attributed to Google Ads (duplicates).
Real Meta sales: 97 sales = R$ 48,209
Step 2 — Deducting platform fees (Hotmart, 9.9% + R$ 1):
- Revenue after fees: R$ 43,439
Step 3 — Deducting refunds (10% of sales):
- Refunds: 10 sales = -R$ 4,821
- Net revenue post-refund: R$ 38,618
Step 4 — Adding indirect acquisition costs:
- Media buyer (proportional to Meta): R$ 2,800
- Creative production: R$ 1,500
- Total real investment: R$ 20,000 + R$ 2,800 + R$ 1,500 = R$ 24,300
Step 5 — Calculating real ROAS:
- Real ROAS: R$ 38,618 ÷ R$ 24,300 = 1.59x
ROAS dropped from 2.98x to 1.59x. The operation is still positive, but with a much smaller margin than it seemed. If fixed costs and taxes are included, this margin could turn negative.
The Metric That Really Matters: Profit per Sale
Instead of looking at ROAS (which is a ratio), look at the absolute profit per sale generated by ads. This provides clarity on how much real money each sale puts in your pocket.
Using the numbers from the example:
- Net revenue per sale (post-fees and refunds): R$ 398.12
- Acquisition cost per sale: R$ 24,300 ÷ 97 = R$ 250.52
- Gross profit per sale via ads: R$ 147.60
Now you know: each sale via Meta Ads generates R$ 147.60 in gross profit. If you need to cover R$ 8,000 in monthly fixed costs, you need at least 55 sales via ads just to break even. The other 42 sales generate the real profit.
How to Identify Campaigns That Are Losing Money
Not all campaigns perform equally. It’s common to have campaigns that seem to work in the manager but lose money when you calculate real profit.
Warning signs:
CPA (Cost per Acquisition) rising month over month If your CPA was R$ 180 in January and R$ 280 in April, your margin is being eroded. Without tracking, you only notice when the bank balance gets tight.
High refund rate on ad sales If organic sales have a 5% refund rate and ad sales have 15%, paid traffic is bringing in lower-quality customers. The manager's ROAS doesn't show this.
Retargeting campaigns inflating ROAS Retargeting usually shows a very high ROAS (5x, 8x, 10x) because it reaches people who were already close to buying. But many of those sales would have happened anyway. The real incrementality of retargeting is much lower than it looks.
Promotions distorting results If you ran a campaign with a 30% discount, the ticket price dropped, but the CPA stayed the same. The ROAS might look okay, but the profit per sale plummeted.
The 3-Level Analysis Framework
To know if your ads are truly profitable, analyze them at three levels:
Level 1: Campaign
- What is the real CPA (including all costs) for each campaign?
- Which campaign has the lowest refund rate?
- Which campaign brings in customers who buy more than one product?
Level 2: Channel
- Meta Ads vs. Google Ads vs. YouTube Ads: which channel generates more profit per dollar invested?
- Which channel brings in customers with the highest LTV?
Level 3: Business
- Is the total amount invested in ads generating a positive net profit after all costs?
- What would the result be if you cut 30% of the ad budget?
- Is organic growth reducing your dependence on ads?
The Data Gap Between Ads and Revenue
The biggest obstacle to this analysis is that data lives in different systems:
- Ad costs: in Meta Business Suite / Google Ads
- Revenue and fees: in Hotmart / Kiwify / Monetizze
- Refunds: in the sales platform (with a delay)
- Operational costs: in your spreadsheet (if it exists)
Crossing all of this manually is the job of a financial analyst. And most infoproduct creators don't have one.
Groware was built to eliminate this gap. By integrating with your sales platforms and traffic sources, it automatically connects acquisition cost with real revenue—already deducting fees, refunds, and commissions. You see real profit by channel, by campaign, and by product, updated daily.
The Golden Rule
Before increasing investment in any campaign, answer one question: "Is this campaign generating real profit or just revenue?" If you can't answer with concrete numbers, the priority isn't creating new ads. It's getting visibility into the ones already running.