A 97x ROAS looks impossible. It is real. And it is not even the number that matters most.
Eight months of reports showing 3x ROAS, while the bank account stayed in the red. 84 out of 120 products were promoted at a loss, with nobody noticing. We took over access, ran a margin audit on every SKU, and pulled 70% of the catalog from campaigns. Two months later: 2,044,274 RON in Google revenue from 21,064 invested, plus Meta campaigns. Net POAS 26x.
Google Ads ROAS
Google revenue
Net POAS
Total conversions
Why does a store with 3x ROAS call for help?
Because a 3x ROAS is a figure that misleads. It looks good in the report, yet on the bank statement the story is different. The store in Sibiu sold electric scooters at an average price of 3,300 RON per unit and had been running Google Ads for eight months. The weekly report showed ROAS 3.2, plenty of orders, and a campaign "consolidating performance." Monthly profit, however, showed up nowhere.
The deal was simple and made no promises. Access for a month, no touching the campaigns, only a profit audit on real numbers, and then a verdict, if there was anything to do. He was not after promised figures, but after the truth behind the reports.
The first week meant exporting data exclusively, from Google Ads, Analytics, Shopify, SmartBill, and the courier. When we tried to overlay Shopify revenue onto SmartBill costs, the numbers did not match, not by a wide margin. Where Google reported profit, SmartBill showed a loss on every order.
Once we finished the overlay across all 120 products, the picture was clear: 84 were promoted at a loss, that is 70% of the catalog. Performance Max pushed them hardest because they had high search volume. The algorithm did exactly what it was told, namely maximize conversions, so it was not at fault. The problem was the wrong objective.
The audit verdict was hard to accept. Eight months of selling at a loss across most of the catalog, with nobody noticing, because nobody had run a margin audit. It was outside the previous agency's mandate, which optimized ROAS, not profit.
What do you find when you look AT the numbers, not ABOVE them?
Two weeks of analysis surfaced what the previous agency had not looked for in eight months.
- Real POAS across the account was under 0.7x. Every order from Google lost about 50 lei once you subtracted product cost, shipping, courier fee, returns, and the Shopify cut. The 3x ROAS looked fine precisely because nobody was deducting those costs.
- There was no connection between SmartBill and Google, only two parallel systems. Google optimized by its own definition of performance, the accountant counted separately, and the founder, caught in the middle, wondered why profit never showed. The bridge between the two data sources had never been built.
- Of 120 products, only 36 had margin above 25% after all costs. The remaining 84 were at break-even or in outright loss. Performance Max pushed exactly those 84 hardest, because it executed the objective it was given, not the correct one.
- The Google Shopping feed had truncated titles, missing basic specs (range, top speed, weight, battery), and inconsistent images. CTR was 1.8% and conversion rate 0.19%. Both sat 30 to 40% below category average, so half the traffic left before seeing the price.
- Enhanced Conversions was off and there was no offline conversion tracking for returns. Google counted a sale as closed even after the customer sent the scooter back two weeks later. As a result, the algorithm learned from false signals and decisions were made on false data. A vicious circle.
- Average cost per conversion was 120 RON. The algorithm bid on every product, including negative-margin ones. A 120 RON conversion on a product with 80 RON margin means a 40 RON loss per order. That had been the "normal" for eight months.
What we did. IN the account, AT SKU level, not ABOVE the numbers.
Month 1, week 1. A rigorous profit audit.
We consolidated Shopify, SmartBill, and Google Ads into one spreadsheet, product by product and cost by cost. Net margin after shipping, courier, returns, and platform fees. The whole thing fit into a 40-row table, and that document changed the conversation. Nothing was disputed and nobody fell back on what the old agency had claimed. One question remained, namely what we do next.
Month 1, week 2. 84 products pulled from campaigns.
We split the catalog into three tiers. At the top, 18 products with margin above 35%, the premium scooters that generated profit. In the middle, 18 products with margin between 25 and 35%, high-end accessories. At the bottom, 84 products that no longer had a place in campaigns. We pulled all 84 in one evening, after flagging up front that total volume would dip for about a week. The call was made with eyes open, since the target was not volume but profit per order.
Month 1, week 3. Performance Max restructured.
We retired the single PMax campaign and built two separate Maximize Conversions campaigns. One for the 18 premium scooters, with aggressive budget and specific asset groups, and one conservative for accessories. Each with its own creative set, no mixing. We dropped the 300% tROAS bidding and let the algorithm work with clean conversion objectives. The goal was no longer sales at any cost, but profitable sales.
Month 1, week 4. Feed rebuilt from scratch.
Titles rewritten around search intent. Full specs in descriptions: range, top speed, battery, weight. Images redone on a single template, neutral background, product in context. Custom labels for automatic segmentation (tier, margin, season). Enhanced Conversions on with first-party data. Offline conversion tracking for returns, so that Google removes the order from stats whenever the money goes back to the client. The feed was finalized by Sunday midnight, and by Monday morning the campaigns had already run 8 hours on the new structure.
Month 2. Meta Ads in parallel.
Once Google had stabilized (conversions at 33.68 lei average cost, down from 120), we opened Meta. A small budget, 15,998 lei across the full 60 days, funded from the savings on the trimmed catalog. Full funnel on the eight hero products, pixel with eventId dedup, CAPI running. Meta delivered 195 conversions, with Purchase ROAS between 43 and 65, depending on audience. Google captures the demand of those already searching, whereas Meta creates the demand. Two channels with two distinct roles.
Month 2. Daily POAS reporting.
An automated report in Google Sheets, showing POAS per product, per campaign, and per day. We no longer discussed ROAS or clicks, but net profit per unit sold. Within a few weeks, the report became the shared decision tool, with direct access for the client too. That, in fact, is the goal: a client who understands the numbers no longer depends on the agency and decides together with us, not through us.
Screenshots straight from the platforms.
The numbers in these images are exactly what you would see if the founder opened his account for you. You can verify them anytime, on a call.


The numbers, short version.
60 days, January 27 to March 29, 2026. Google Ads plus Meta Ads. Total ad spend: 37,062 RON.
| Metric | Before | After | Note |
|---|---|---|---|
| Net POAS | 0.7x | 26x | after all real costs |
| Google Ads ROAS | 3.2x | 97x | |
| Google Ads revenue | N/A | 2,044,274 RON | from 21,064 RON invested |
| Meta Purchase ROAS | N/A | 43-65x | 195 purchases, 15,998 RON invested |
| Total conversions | ~250 | 821 | 626 Google, 195 Meta |
| Google cost per conversion | ~120 RON | 33.68 RON | |
| Profitable orders | ~35% | 100% | |
| Products active in ads | 120 | 36 | 84 removed |
| Shopping CTR | 1.8% | 3.4% | |
| Site conversion rate | 0.19% | 0.67% |
Where we got it wrong too.
We did not get everything right on the first try. We state plainly three things we handled poorly on this account and what we learned from them.
- We pulled 84 products in a single day, a classic case of impatience. Organic traffic dipped 15% for a week while Google adjusted to the new structure. Next time we cut in waves of 20 to 30 per week. A sharp catalog change unsettles the algorithm, whereas a gradual one recalibrates it.
- After we cleaned up the duplicates, dashboard ROAS appeared to drop from 3.2 to 2.1. A drop like that worries anyone who does not know the cause. It took a few rounds of explanation to show the drop was in fact the truth surfacing, not a new problem. We should have prepared the context before the change, not after, since poor communication harms as much as a poor strategy.
- We launched Meta too early, in week 5, while Google had not fully settled. The first 10 days on Meta were modest, with ROAS between 8 and 12. With two more weeks of patience, we would have entered Meta with a cleaner POAS from day one. A second channel is not opened until the first one is stable.
What we learned and what we carry forward.
- 01Nothing gets touched without a margin audit at SKU level. On this store, that single exercise saved everything, which is why we now repeat it on every client with more than 50 products. It is the first step, non-negotiable.
- 02Apparent ROAS misleads systematically in the absence of offline conversion tracking for returns. The return rate sat around 8%, enough on its own to inflate ROAS by a third over reality. Consequently, returns tracking is now the very first thing we set up at onboarding, not the campaign.
- 03A small, healthy catalog outperforms a large, bloated one. 36 profitable products generated 2.04 million RON in 60 days, while 120 mixed products had produced close to zero net in the months before. Less means more when every unit of budget has a clear destination.
- 04Launching Meta too early burns budget you never recover. Waiting one full month after Google stabilizes is the difference between a clean POAS and two weeks of corrupted data. On the next project we waited exactly four weeks, and POAS in the first 30 days came in at twice the level.
- 05Daily POAS reporting changes the client relationship. You are no longer the agency that brings numbers once a week, but the partner working with the same data. When the client reads the table alone and starts proposing adjustments, the objective is met. The goal is for the client to verify at any time and no longer depend on us.