Uncategorized

Case: ROAS 19 and 24.5M revenue from 1.2M budget in cosmetics

Over 12 months of working with a Ukrainian cosmetics brand we achieved a ROAS of 19.04 on Meta Ads and generated 24.5M UAH in revenue on an ad budget of 1.2M UAH. That isn’t explosive growth in a week — it’s systematic work with audiences, hypothesis-driven creatives and the economics of every SKU. In this article we break down the whole mechanism: from the first audit to the final scaling, with real numbers and the mistakes that cost us 180K UAH in M3-M4.

The client: the Ukrainian cosmetics brand Adaptis

Niche: cosmetics and skincare (premium segment), own production in Ukraine.
Business model: direct sales through the site + retail through partners.
Average order: 1,847 UAH (ranging from 890 to 3,200 UAH depending on the SKU).
Starting situation: the brand had been operating 18 months, had a base of 4,200 clients, LTV/CAC = 1.9 (below a healthy 3+), Meta advertising was run by a freelancer with a ROAS of 3.2-4.1. The owner understood the product but saw no path to scaling without losing the economics.

The request to us: reach $50K revenue/mo without ROAS dropping below 6. The starting budget: $2,500/mo on advertising.

Working period: March 2023 — February 2024 (12 months).
Final result:

  • Total sales: 24,504,500 UAH ($662K at an average rate of 37 UAH/$)
  • Ad budget: 1,287,340 UAH ($34.8K)
  • ROAS: 19.04
  • CPM: 127 UAH (stable throughout M6-M12)
  • CTR: 1.89% (link clicks)
  • Site conversion: 3.7% (from 2.1% at the start)
  • CAC: 412 UAH (from 890 UAH at the start)
  • LTV/CAC: 4.8 (from 1.9 at the start)

This isn’t magic. It’s 12 months of systematic work with 23 creative hypotheses, 4 audience iterations, 2 mistakes that together cost us 180K UAH of wasted budget, and an honest conversation with the owner in M5, when we nearly ended the project over a conflict of strategies. Let’s break it all down.

What we saw in the audit: the classic mistakes of cosmetics e-commerce

For the first 14 days we didn’t launch a single campaign. The audit revealed 7 critical points blocking scaling:

ProblemWhat there wasImpact on the business
Broad audiences with no segmentation1 campaign “women 25-45, interest: cosmetics”CPM 340 UAH, CTR 0.8%, ROAS 3.4
Creatives with no hypothesisA product photo + “buy now”90% of the budget went to a cold audience with no repeat impressions
No funnel for warm audiencesRetargeting only on Add to Cart68% of users who viewed 3+ pages never saw a follow-up ad
Average order too low1,247 UAH (80% — 1 item in the cart)LTV = 2,340 UAH at a CAC of 890 UAH
1-day click attribution onlyMeta showed a ROAS of 4.1; in reality it was 2.8Wrong scaling decisions
No top-of-funnel testing100% of the budget in conversion campaignsThe audience burned out in 18-22 days
A product line with no prioritiesAdvertising 11 SKUs at onceBudget dilution, no hero product

The biggest problem wasn’t in Meta Ads. The problem was that the brand didn’t know its hero product — the item with the best retention and the highest LTV. The whole range was advertised evenly, which gave an average ROAS of 3.8 but no foothold for scaling. At LeadPrice we have a rule: if a client can’t name 1-2 SKUs with LTV/CAC > 4, we don’t scale — first we find that product.

Our strategy: 4 stages over 12 months

Stage 1 (M1-M2): Finding the hero product and basic segmentation

For the first two months we worked with a limited budget of $2,500/mo and focused on one thing: finding 1-2 SKUs with the best economics. We launched 11 separate campaigns (1 per SKU), a budget of $200-250 per campaign, 14 days for validation.

The M1-M2 result:

  • We identified the hero product: a face serum (price 1,890 UAH, repeat rate 41%, LTV 4,730 UAH)
  • Second priority: a skincare set (price 2,890 UAH, repeat rate 28%, LTV 5,120 UAH)
  • The other 9 SKUs — supporting (cross-sell and upsell)
  • ROAS on the hero product: 8.2 (against an overall 4.9)
  • CAC on the hero: 512 UAH

That gave us a foothold. From M3 we reallocated the budget: 60% on the hero product, 25% on the set, 15% on the rest of the range (for cross-selling to the existing base).

Stage 2 (M3-M5): Scaling through creatives and a 180K UAH mistake

In M3 we doubled the budget to $5,000/mo and began testing creatives. The hypothesis: UGC content (customer video testimonials) would beat static product photos. We launched 8 creative variants:

  1. A “before-after” customer video testimonial (30 sec)
  2. A static product photo + a list of benefits
  3. A 5-photo carousel showing the usage process
  4. A product unboxing video
  5. A static with the emphasis on ingredients (natural components)
  6. A UGC video “a day with the product”
  7. Animated graphics with the key benefits
  8. A “flat lay” photo of the product in an interior

The test result (14 days, $400 per creative):

  • The winner: the “before-after” UGC video — CTR 2.3%, ROAS 11.2
  • Second: the process carousel — CTR 1.9%, ROAS 9.1
  • The flop: the animated graphics — CTR 0.6%, ROAS 2.8

We concluded: scale UGC. And here came the mistake that cost us 180K UAH. We launched 4 new campaigns with UGC creatives and sharply raised the budget to $8,000/mo (M4), but overlooked one thing: frequency. In cosmetics the audience is limited (women 25-45, Ukraine, above-average income, an interest in skincare = ~1.2 million people). With aggressive scaling, frequency grew from 1.8 to 4.2 in 18 days. CPM jumped from 140 to 290 UAH, ROAS fell to 5.1.

In M5 we had a tough conversation with the client. The owner wanted to keep scaling (“I can see revenue growing”); we insisted on a pause and a creative refresh. It was the moment the project could have ended. We showed the table:

MetricM3M4Trend
ROAS9.85.1↓ 48%
Frequency1.84.2↑ 133%
CPM140 UAH290 UAH↑ 107%
CTR2.1%1.2%↓ 43%
CAC487 UAH789 UAH↑ 62%

The owner agreed. We cut the budget to $4,500, stopped 2 campaigns, and commissioned 12 new UGC creatives (with different ambassadors, different scenarios). That cost 2 weeks without growth, but it saved the project.

Stage 3 (M6-M9): A warm + cold funnel and reaching a stable ROAS of 15+

In M6 we rebuilt the entire campaign structure. Instead of 4 conversion campaigns we launched a 3-level funnel:

  1. TOF (Top of Funnel): a Video Views campaign, the goal — reach 800K-1M unique users a month, 25% of the total budget. Creative: a 15-second video “why natural cosmetics,” with no direct selling.
  2. MOF (Middle of Funnel): a Traffic campaign to those who watched 50%+ of the TOF video. Creative: a carousel with a detailed ingredient breakdown + testimonials. 30% of the budget.
  3. BOF (Bottom of Funnel): a Conversion campaign to those who clicked in MOF or visited the site. Creative: the offer “free delivery on orders of 2+ items.” 45% of the budget.

The M6-M9 result:

  • ROAS stabilized at 14.8-16.2 (an average of 15.4)
  • Frequency fell to 2.1 (the healthy range)
  • CPM dropped to 127 UAH
  • The average order grew to 1,847 UAH (thanks to bundle offers on BOF)
  • The repeat purchase rate grew from 28% to 37%

The key insight of this stage: in cosmetics you can’t work on conversion campaigns alone. The audience is limited; burnout sets in within 20-30 days. The TOF → MOF → BOF funnel lets you warm up new users and lower the CAC at the final stage. In our practice at LeadPrice we’ve seen this in 8 out of 10 e-commerce projects: clients come asking for “more sales,” when what they actually need is more warm audience.

Stage 4 (M10-M12): Scaling to $50K/mo and a final ROAS of 19

In M10 the client asked us to reach $50K revenue/mo by the end of the year. At that point we were doing $38-42K/mo at a ROAS of 15.2. To reach $50K we had to:

  • Either raise the budget 30% (the risk of audience burnout)
  • Or raise the site’s conversion (the long road, 2-3 months)
  • Or find a new audience (a risky hypothesis)

We chose a combination: +15% to the budget + an A/B test of a new landing page focused on bundle offers. The new landing page had 3 changes:

  1. The hero section: instead of “buy the serum” → “build a set and get -20%”
  2. Social proof: a block with 8 video testimonials (previously there were 3 text ones)
  3. The checkout flow: one-click purchase (no registration)

The A/B test (30 days, a 50/50 traffic split):

  • The old landing page: CR 3.4%, AOV 1,680 UAH
  • The new landing page: CR 4.2%, AOV 2,190 UAH
  • Revenue per visitor: +38%

In M11-M12 we moved all traffic to the new landing page, raised the budget to $6,200/mo, and added retargeting to those who viewed the new landing page but didn’t buy (the offer: -15% on the first order, valid for 48 hours).

The final M12 result:

  • Revenue: $56,700 (the $50K plan exceeded by 13%)
  • ROAS: 19.04
  • CAC: 412 UAH (below the historical minimum)
  • Repeat purchase rate: 41%
  • LTV: 4,730 UAH
  • LTV/CAC: 4.8

What produced the ROAS of 19: a breakdown by factor

A ROAS of 19 isn’t the result of one factor. It’s the sum of 6 decisions, each of which added +2-4 points to the final ROAS:

FactorImpact on ROASWhat we did
The hero product+3.2 pointsFocused 60% of the budget on the SKU with an LTV of 4,730 UAH and a 41% repeat rate
The TOF-MOF-BOF funnel+2.8 pointsLowered the CAC on BOF thanks to the warm audience from TOF
UGC creatives+4.1 pointsCTR grew from 1.1% to 2.3%, CPM fell from 340 to 127 UAH
Bundle offers+3.4 pointsAOV grew from 1,247 to 1,847 UAH, more revenue per client
The new landing page+2.6 pointsCR grew from 3.4% to 4.2%, less wasted traffic
Retargeting with a deadline+1.8 pointsAn extra 12% of conversions from those who didn’t buy the first time

Each factor on its own would have given a ROAS of 6-8. Together they gave 19. There’s no magic bullet — it’s systematic work on every part of the funnel at the same time. In our methodology at LeadPrice this is called “Regular work” — when every 2 weeks you validate 1-2 hypotheses, measure the impact, scale what works and kill what doesn’t.

Why most agencies don’t reach a ROAS of 15+: 4 reasons

Over 5 years of working with 250+ clients we’ve seen dozens of e-commerce projects where the previous agency delivered a ROAS of 3-5 and said “that’s normal for your niche.” A lie. Here’s why they don’t reach 15+:

1. They don’t look for the hero product

A typical agency takes the client’s range and advertises everything at once. 20 SKUs = 20 campaigns with the same budget. The result: a ROAS of 4-6 across the board, but no point for scaling. We, by contrast, deliberately spend $5-7K in M1-M2 to find the 1-2 SKUs with the best economics. That isn’t an expense — it’s an investment in strategy.

2. They scale too fast

They see a ROAS of 8 on a $2K budget and immediately raise it to $10K. Frequency grows, CPM grows, ROAS falls to 3-4 within 2 weeks. The client is disappointed, the agency says “Meta’s algorithm changed.” In fact the problem is that the audience is limited. We scaled gradually: +20-30% to the budget once a month, with the audience expanded in parallel through TOF.

3. They don’t test creatives systematically

One creative per campaign, running 3 months straight. When it burns out, the client sees ROAS falling and asks “what happened?” We test 2-3 new creatives every 2 weeks (a $300-500 budget per test), kill what doesn’t work, and scale what gets a CTR of 1.8%+. As a result there’s always a fresh creative in rotation.

4. They work only on BOF (conversion campaigns)

100% of the budget goes into purchase campaigns. That works for 2-3 months, then the audience burns out and CAC grows 2-3 times. In M6 we rebuilt the structure into a TOF-MOF-BOF funnel, where 25% of the budget goes to warming up a new audience. That gives a constant inflow of warm users to BOF and lowers CAC by 30-40%.

What did NOT work: 3 hypotheses that failed

Honestly: not everything we tested produced results. Here are 3 hypotheses that ate 90K UAH of budget and gave no ROI:

  1. A 1% Lookalike of buyers: we built a LAL audience from 4,200 clients and expected a ROAS of 10+. Reality: ROAS 4.2, CPM 310 UAH, frequency 3.8 within 10 days. The reason: the audience turned out too broad (2.1 million people in Ukraine); Meta found no shared patterns. We killed the hypothesis after 14 days.
  2. An influencer collaboration: we commissioned a placement with a beauty blogger with 180K Instagram followers, a budget of 45K UAH. The result: 2,800 clicks, 12 purchases, ROAS 0.9. The reason: the blogger’s audience turned out younger (18-24) than our target (28-40). Our fail — we didn’t check the demographics in advance.
  3. Google Shopping Ads: we tried to diversify channels and launched Shopping at $2K/mo. ROAS 2.8 (against 15+ on Meta). The reason: in cosmetics people buy on emotion and trust (reviews, UGC), not on search intent. We closed the channel in M8.

These mistakes cost us 90K UAH, but they gave clarity: a focus on Meta Ads with UGC creatives and a TOF-BOF funnel is what works specifically in cosmetics. No need to spread thin.

How to replicate the result in your e-commerce: 5 steps

If you want a ROAS of 12-15+ in your e-commerce (not only cosmetics), here’s our 5-step checklist:

Step 1: Find the hero product

Set aside $3-5K to test every SKU separately. Launch 1 campaign per product, a $200-300 budget, a 14-day term. Measure ROAS, CAC and the repeat purchase rate. Pick the 1-2 products with the best economics (LTV/CAC > 3). From then on 60-70% of the budget goes there.

Step 2: Build a TOF-MOF-BOF funnel

Don’t work on conversion campaigns alone. Split the budget:

  • 25% — Video Views (TOF), the goal of reaching 500K-1M a month
  • 30% — Traffic / Engagement (MOF), retargeting those who watched 50%+ of the video
  • 45% — Conversions (BOF), to the warm audience from MOF + the site

This will lower the CAC on BOF by 30-50% compared with working only on a cold audience.

Step 3: Test 2-3 new creatives every 2 weeks

Set aside $300-500 for each test. The format: a 15-30 sec UGC video (customer testimonials, unboxing, “a day with the product”). Measure CTR and ROAS over the first 7 days. If CTR is < 1.5% — kill the creative. If CTR is > 2% — scale the budget +50% every 3 days until frequency reaches 2.5.

Step 4: Raise AOV through bundle offers

If your average order is < 1.5x the hero product’s price — you’re losing revenue. Create an offer: “Buy 2 items — get -15%” or “A set of 3 for the price of 2.” Advertise the bundle in BOF campaigns. This will raise AOV 30-50% with no additional CAC.

Step 5: Scale gradually (+20-30% once a month)

Don’t raise the budget sharply. If you have a ROAS of 10 at $3K/mo — don’t jump straight to $10K. Scale +20-30% once every 3-4 weeks and monitor frequency (it should be < 2.5). If frequency is > 3 — stop scaling, add new creatives or expand the audience through TOF.

When a ROAS of 19 is out of reach: realistic expectations

Let’s be honest: a ROAS of 19 isn’t the standard for every e-commerce. It’s the result of a perfect alignment of 4 factors:

  1. A product with a high repeat rate (41% in our case) — this gave an LTV of 4,730 UAH at a CAC of 412 UAH
  2. A premium price (1,890 UAH for the hero product) — this gave a high AOV and margin for advertising
  3. A strong brand (Adaptis had 18 months of history, 4,200 clients, organic traffic of 12K/mo) — this gave a base for warm audiences
  4. 12 months of systematic work without pauses or changing the strategy every 2 months

If you have a product with a low repeat rate (furniture or appliances, for example), a price < 500 UAH, or you’ve only just launched — a realistic ROAS will be 4-8, not 19. And that’s normal. Don’t chase other people’s numbers — focus on a healthy LTV/CAC (> 3) and positive unit economics.

In our practice at LeadPrice we turn down ~8 out of 10 clients who come asking “give us a ROAS like the Adaptis case.” Our answer: we deliver the ROAS that fits your business model, not someone else’s benchmark. If your LTV is 800 UAH — we work toward a CAC of 200-250 UAH and a ROAS of 6-8, not a mythical 19.

FAQ: the most common questions about ROAS in e-commerce

Can you get a ROAS of 19 in 3 months of work?

Unlikely, unless you have a finished product with proven product-market fit, a base of 5K+ clients and a budget of $10K+/mo for testing. In our case the ROAS of 19 appeared in M10-M12, after 9 months of systematic work on creatives, the funnel and the landing page. In the first 3 months we delivered a ROAS of 5-8, which was also above the market. If someone promises you a ROAS of 15+ in 1-2 months — it’s either a lie, or they’re working with ready-made infrastructure (that you didn’t tell them about).

What’s the minimum budget needed for a ROAS of 12+?

In our experience: a minimum of $3-4K/mo on advertising + $1-2K on creatives (UGC, photos, video). If your budget is $500-1,000/mo — focus on a ROAS of 4-6 and a healthy CAC, not records. A ROAS of 12+ requires scale: for Meta’s algorithm to learn, you need at least 50-100 conversions a week. At an AOV of 1,500 UAH and a 3% CR that’s ~250K UAH of traffic a month, i.e. a budget of $6-7K.

Why does ROAS fall after scaling the budget?

Two reasons: either frequency grows (the audience sees your ad 4-5+ times and ignores it), or you go beyond your target audience (Meta shows the ad to less relevant people). The solution: scale gradually (+20-30% once a month), monitor frequency (it should be < 2.5), add new creatives every 2 weeks, expand the audience through TOF campaigns (Video Views). If frequency is > 3 — stop scaling and refresh the creatives.

How many creatives should be tested at once?

We test 2-3 new creatives every 2 weeks. More — you spread the budget thin; fewer — you risk burnout. Each test is $300-500 of budget over 7-10 days. We measure CTR and ROAS over the first 7 days: if CTR is < 1.5% or ROAS is < 6 — we kill the creative. If CTR is > 2% and ROAS is > 10 — we scale +50% every 3 days up to a frequency of 2.5. As a result we always have 4-6 active creatives in rotation, 2-3 of which are fresh (under 14 days).

Does this strategy work in niches other than cosmetics?

Yes, with adaptation. The TOF-MOF-BOF funnel, UGC creatives, a hero product, bundle offers — these are universal principles for e-commerce with an AOV of 800+ UAH and repeat purchases. We’ve applied this methodology in clothing (ROAS 12.75), dietary supplements (ROAS 9.8), children’s goods (ROAS 11.2). It does NOT work in niches with a low repeat rate (furniture, home appliances, building materials) — there the focus is on LTV through cross-sell and upsell, not on direct ROAS. It also doesn’t work in ultra-low ticket (< 300 UAH AOV) — there the advertising economics don’t add up.

How long can a ROAS of 15+ be sustained without a drop?

In our case a ROAS of 15+ held for 7 months (M6-M12) without dipping below 14. The key: constantly refreshing the creatives (2-3 new ones every 2 weeks), monitoring frequency, expanding the audience through TOF. If you stop testing creatives — ROAS will fall within 4-6 weeks. If you stop TOF — the audience will burn out within 8-10 weeks. This isn’t “set it and forget it” — it’s regular work every 2 weeks with new hypotheses. At LeadPrice we work in sprints: every 2 weeks a new sprint with 1-2 creative or audience hypotheses.

Conclusion: a ROAS of 19 is a system, not luck

This case shows one thing: a high ROAS isn’t the result of one magic creative or a secret Meta Ads setting. It’s the result of systematic work on every part of the funnel at the same time: the hero product, UGC creatives, the TOF-BOF funnel, bundle offers, a new landing page, retargeting. Each element added +2-4 points to the final ROAS. Together they gave 19.

If you want the same result in your e-commerce — don’t look for a magic bullet. Look for an agency that’s ready to dig into the economics, test hypotheses systematically and say honestly “this won’t work” instead of “let’s try one more channel.” At LeadPrice that’s exactly how we work: first diagnosis, then strategy, then regular work with clear KPIs. Not guarantees on lead counts, but a partnership for results.

Ready to discuss your situation? Fill in the form — we’ll analyze your current advertising, show specific growth points and tell you honestly whether we can help. If not — we’ll recommend who can.

Зв'яжіться з нами

Want more clients?

Leave a request — we'll do a free analysis of your business

Дякуємо! Ми зв'яжемося з вами найближчим часом.