Scaling Mylky to €4.6M on Google Ads at 16.7x ROAS
Mylky
CLIENT
Mylky
SERVICE PROVIDED
Google Ads, YouTube Ads
TIMELINE
4 Weeks

About the brand
Mylky is a Swedish DTC brand founded in Borås by Martin and Isa, built around a single product: a countertop appliance that makes fresh, additive-free plant-based milk in 60 seconds using ingredients you already own. What began as an answer to expensive, additive-heavy supermarket alternatives grew into a multi-market eCommerce operation, now shipping across seven European countries: Sweden, Germany, the Netherlands, Belgium, Norway, Austria, and Switzerland. One product, seven markets, one clear message: fresher, cleaner, and cheaper than anything on a shelf.
The challenge
When we took over in October 2025, the problem was not demand. It was account structure. Brand, non-brand, Shopping, DSA, and Performance Max were all running at the same time, competing in the same auctions and distorting each other's data. Revenue was coming in, but the efficiency read could not be trusted. There was no reliable way to tell what any single campaign was actually contributing.
The account was also already live across several European markets with no shared campaign logic. Each market had been built as a copy of the last. As spend increased, the campaigns competed against each other harder, and the structure would have broken before it could scale.
Our strategy
The core principle was simple. Every campaign should have one clearly defined job, and bid controls and automation scripts should stop those jobs from bleeding into each other. Our approach came down to five elements.
1. Every campaign was given a single role. Brand search ran on Manual CPC, because branded demand already exists and needs disciplined bidding rather than an algorithm bidding up traffic we would win anyway. Brand Shopping ran on Maximize Clicks with a hard CPC cap, which keeps branded product traffic cheap. Non-brand campaigns were kept fully separate, so their data never mixed with branded traffic.
2. Two scripts enforced the boundaries. Campaign roles do not hold on their own. Brand Shopping tends to drift into non-brand queries, and DSA tends to match terms the account already targets. We deployed two custom scripts to stop both. The first blocks non-brand queries from entering brand Shopping. The second excludes every keyword the account already owns from DSA. This kept each campaign's reporting clean, so every budget decision was based on numbers we could trust.
3. Non-brand scaled under tight constraints. Non-brand Shopping and Search ran on portfolio tROAS strategies paired with bid caps. The tROAS target sets the efficiency Google has to hit. The bid cap limits how aggressively it can bid in the auction. Together they let non-brand grow on real signal, without the rising cost-per-click that quietly erodes margin as budgets increase.
4. DSA worked as a discovery engine. Rather than running broad and cannibalising Search, DSA was set up to do one job: find new search terms the account did not already own. Winning terms were reviewed every two weeks and moved into the core keyword Search campaigns. DSA finds the demand, Search captures and scales it, and DSA keeps looking for the next gap.
5. Demand Gen created upper-funnel demand with proven creative. The brand was already running paid social, so it had video and image creative with a proven track record. We used those assets in Demand Gen instead of building and testing new creative from scratch. That gave the account a top-of-funnel layer that built awareness and lifted branded search, without the long and expensive testing phase a cold creative launch usually needs.
Once this structure was proven in the home market, we rolled it out across all seven European markets. The campaign structure and the scripts stayed identical everywhere. What changed per market was the detail: ad copy in the local language, plus budgets, tROAS targets, and CPC caps set to fit each market's own margins, currency, and competition. Same structure, different settings, rather than copying one market's numbers across every country.
Results
Across nine months, Google Ads became both the biggest revenue driver and the most efficient channel in Mylky's media mix.
On Triple Whale's cross-channel attribution, Google Ads drove 40% of total attributed revenue, ahead of Meta's 37.4%, while spending a fraction of the budget. Google spent just 17% of Meta's ad spend (€276K against €1.6M) yet produced more total revenue (€4.60M against €4.30M), at 6.2x Meta's ROAS (16.68x against 2.68x) and a 6.4x lower cost per acquisition (€10.13 against €64.48).
It was also the brand's main new-customer engine. Google Ads brought in 23,592 new customers at an €11.70 new-customer CPA, with 95% of its revenue coming from first-time buyers. This was acquisition, not just harvesting demand that already existed. All of it fed into €9.6M in total business revenue at a 32.6% net margin.
The takeaway is not the revenue figure. It is that the account scaled spend and added markets while the efficiency read stayed clean and ROAS held above 16x, because the structure was built to scale before it was asked to.
€4,602,462 Conversion Value (Oct 2025 – Jul 2026)
27,255 Total Conversions
16.68x Google Ads ROAS



