The challenge
The brand had the demand. What it wanted was profitable growth: to grow in Sweden without losing ground in Norway, and to know which months actually made money. Influencer marketing had carried the brand for years, and the next step was measuring what each channel paid back.
With Black Friday a week away, we reviewed the advertising, the analytics and the store at once, and found room to grow at every layer.
The data
- Some purchases were counted twice, which made the real sales trend hard to read
- Data was flowing to 2 analytics accounts, one of them shared with a sister brand, which blurred the reporting and slowed the pages down
- Bot visits were mixed in with real shoppers, so ad spend was being optimized partly on bad data
The campaigns
- Google’s shopping ads showed only the XS size of each product
- The brand’s own name was not part of the main Google campaign, which left room for competitors on searches for it
- About 60% of the catalog had no product category in the data Google reads
- Neither Google nor Meta yet told new customers from returning ones, or brand searches from new demand, and Meta had room to win back past visitors
The team had worked with agencies before and had one more worry: seeing the account passed from hand to hand. We told them on day one that the specialist who started on it would stay on it, and they did.
The solution
We started with Google Ads, Meta Ads and the tracking underneath both, and rebuilt the measurement first so every later decision rested on real numbers. CRO came later, when the team’s conversion rate started to dip.
Web AnalyticsCounting every sale once, on both domains
ServicesServer-Side Tracking · Conversion Tracking · Profit Analytics
We removed the double purchase tracking and the second GA4 property, then built server-side tracking through Stape for Google Ads and GA4, with the Conversions API for Meta. Each country has its own domain, so the setup runs per domain rather than as one copy-paste.
- A custom loader keeps browsers and ad blockers from stripping out the tags
- Cookie Keeper restores marketing cookies, so a returning visitor is recognized as one
- Every purchase is tagged as a new or returning customer, so we could see when spend was going on people who would have bought anyway
Keeping the bots out
Stape’s bot detection filtered the fake traffic out of the data. The bots were still hitting the store, so we guided the team through a Cloudflare setup and recommended an experienced developer for it: putting Cloudflare in front of Shopify is a specialist job, well beyond an afternoon’s work.
Seeing where breakeven sits
We set up Lifetimely on Shopify and loaded it with every cost the business carries: staff, overheads, and the marketing channels that do not connect on their own. For the first time the team could see which days and months made a profit. The same tool tracked how fast each product sold, which told the team when to reorder.
Pay Per ClickPutting every size back on the shelf
ServicesGoogle Ads · Feed Management
The campaigns carried only the XS version of each product, because the team was worried the sizes would bid against each other. Shoppers search with their size in mind, though, and plenty of them were never going to buy an XS. We brought every size back in.
The larger sizes turned out to be some of the best sellers, with higher conversion rates. Someone who wears an XL or XXL often struggles to find activewear that fits, and this brand had it in stock.
Getting the brand back into its own searches
We split Google Shopping into two campaigns: a brand Shopping campaign for people searching for the brand by name, and a non-brand one for everyone else. Brand searches now land on the brand’s own products instead of its competitors’, and we track their traffic and impression share apart from the new demand the non-brand campaign goes out to find.
A feed written the way each country searches
We rebuilt the feed in DataFeedWatch, gave the uncategorized 60% a proper product type, and fixed titles, stray HTML characters and material attributes. Then we rewrote the titles from keyword research run separately for each market.
- In Sweden, “tröja” draws 5 to 10 times the searches of “sweatshirt”
- In Norway, “lyseblå” beats “light blue” by a wide margin
- Norwegian shoppers search for “scrunch tights” in English, not in translation
That mix is normal in Scandinavia, where people use English every day. A feed translated word for word would have missed a large share of them.
Campaigns that follow the stock
With lean stock and frequent launches, we watched availability closely and moved budget as products sold out. New collections got a campaign of their own, so they gathered visibility quickly instead of waiting to earn a place in the custom label groups. When a Sweden-only jeans campaign dropped to a single product in stock, we merged categories so it always had something to show.
For Black Friday we moved Shopping in Norway onto a Comparison Shopping Service through DataFeedWatch, which lowers the cost of each click, and brought Sweden across in December.
Paid SocialA method for angles, and a model who looked like the customers
ServicesMeta Ads · Creative
The team had been making videos around what was trending each week. We added a method: research the angle first, then build the video around it. For the tights, that meant scrunch detail, fit, shape and fabric. For the jeans, a curve-friendly fit, comfort, stretch and real denim.
We rebuilt the account on an ABO structure with broad targeting, split audiences into new and existing customers, and launched a catalog sales campaign that shows people the exact product they looked at and left.
The curvy model
Google Ads kept telling us XL and XXL were selling well. In the old Meta data, we found a video with a curvier model that had done well and then been set aside. We brought it back, and it became one of the top videos on the account. Plenty of women wanted to see activewear on a body like theirs, and social media rarely showed them one.
Christmas, and Valentine’s Day
For the holidays we wrote video scripts for the team to shoot. The one that drew the most purchases showed how comfortable the jeans stay after a big Christmas dinner.
For Valentine’s Day, the creative the team had planned read as more intimate than the brand usually sounds and risked disapproval on Meta. We advised against running it and sent over our own ideas, which the team produced.
The brand had a large library of influencer photos and videos, most of it shot for a single format. We ran it through our in-house AI resizing tool, so every piece of content could run in every Meta placement.
CRONorway and Sweden, 2 kinds of friction
ServicesConversion Audit · UX & Design · Testing & Implementation
The team watched conversion rate more closely than any other number, and when it started to slip, they asked us to look at the store itself. By then the ads had already given them reason to trust our read on the data.
We watched real sessions in Microsoft Clarity, through heatmaps and recordings, to see where shoppers hesitated and where they gave up. Most traffic and revenue came from phones, and the 2 markets stalled in different places. Norwegian shoppers knew the brand and dropped off on the way through checkout. Swedish shoppers, newer to it, needed more help finding the right product and trusting it.
A mobile-first roadmap
We turned what we saw into a roadmap in 3 areas.
- Buying: a sticky add-to-cart, quick-buy, Klarna shown early, and clearer cart and checkout messaging
- Trust: reviews and social proof close to the price
- Finding: fit guidance, better filters and sorting, and simpler category navigation
Research before changes
We helped set up the Shopify review app that put customer reviews on the product pages, along with the other connected apps the roadmap relied on. When the team wanted to change something on the site without research behind it, we said so. Sometimes we advised against the change, and sometimes we reshaped it to follow best practice, so every change to the store had a reason we could point to.
The results
Once every size was back in Shopping, sizes S to XXL converted at 3.4%, against 2.5% for XS, the one size the campaigns had carried before. That is a 37% better conversion rate at a 21% lower cost per conversion. Over the holiday weeks, from 24 December to 6 January, the new sizes added 117 conversions on top of the 81 from XS, and XXL converted best of all.
On Meta, the angle method kept getting sharper through the sales calendar. In Norway, the best Valentine’s ad brought 143 purchases at $5.12 each, about 40% cheaper than the self-gift ads in the Mother’s Day sale a few days earlier, and the Norway campaign closed 265 purchases in total.
Underneath it all, the team now has numbers it can trust. Every sale is counted once, on both domains, with bots filtered out and new customers split from returning ones. Lifetimely shows where breakeven sits, so budget decisions start from profit instead of from revenue.
- Tracking rebuilt server-side across both domains, with a 100% match rate on Google Ads conversions
- Bot sessions filtered out of GA4 and out of the signals the bidding algorithms learn from
- Full visibility on profit, stock movement and reorder timing
- A curvier model’s video back on Meta and among its top performers
+37%
Shopping conversion rate · sizes S to XXL vs XS
-40%
Meta cost per purchase · best Valentine's ad, Norway
100%
Google Ads conversion match rate · server-side