Sample report · fictional Northlight identity and anonymized figures Reporting week Monday 20 – Sunday 26 July 2026 · compared with 13–19 July 2026 · all figures in EUR, Europe/Paris
The week in one line
Store revenue grew +36% to €50,518 on 54% less paid spend - but that is not an efficiency win.
Meta stopped delivering entirely on 21 July and has not spent since. Google carried the week at a
3.61 ROAS, brand search did the heavy lifting, and store demand held up without any Meta support at all.
The headline MER of 6.15 should be read as "we didn't spend", not "we got better" -
and the fact that revenue rose anyway is the single most interesting thing in this report.
Anomalies & decisions required
9 items · 1 critical
Trading trend - last 6 complete weeks
Store revenue is refund-corrected net revenue, excluding Point of Sale, per the account's saved revenue basis (incl. tax & shipping).
Weekly store net revenue
Week of 6–12 July remains the strongest of the period (€65.9k). This week recovers most of last week's dip without paid support from Meta.
Weekly paid spend by platform
Meta collapses from €10.3k to €0.7k. Google holds flat.
Google AdsMeta Ads
Weekly MER (store revenue ÷ paid spend)
6.15 this week - the highest since mid-June, entirely a function of spend being switched off.
Daily store revenue vs. paid spend - last 14 days
The shaded band marks the Meta blackout (21–26 July). Store revenue does not fall with it - daily takings run at or above the pre-blackout level throughout.
Store revenue (excl. POS)Google spendMeta spend
Daily store revenue is gross of cross-period refunds and taken from the daily channel table; it will differ by ~1–3% from the refund-corrected weekly total in the KPI tiles.
Channel contribution this week
Store revenue is refund-corrected net revenue on the store. Google, Meta and Klaviyo revenue is last-click attributed value reported by each platform - these overlap with each other and with store revenue, and must never be added together. Blended ROAS and MER use store revenue over Meta + Google spend only.
Store & Trading
Shopify · 20–26 July
A strong trading week on volume and basket size. 145 orders (+12%) at a €348.40 AOV, well above the €291 planning target and 21% ahead of last week - the mix moved up into the Midnight collection. Refunds fell to €962, or 1.9% of revenue.
Daily store revenue & orders
Monday 20 July was the peak day (€10.7k / 24 orders).
Revenue by destination country
US is 51% of this POS-inclusive operational view. "Unassigned" is a data-quality problem, not a market.
Where the revenue came from
Point of Sale is excluded from all reported revenue by the account's saved sales-channel policy. The "matrixify app" channel carries bulk-imported historical orders and did not contribute this week.
Top products - week vs. previous week
Net merchandise revenue, refund-correct, incl. tax and excl. shipping (shipping cannot be defensibly allocated to a product line).
Reading the trading week
Basket mix did the work, not traffic. Orders +12% but revenue +36% - the delta is entirely AOV. Midnight Ritual Set (€2,330, one unit), Midnight Renewal Serum (5 units, +€1,468 w/w) and Polar Eye Concentrate (10 units, +€1,638 w/w) drove it. Worth checking whether the July offer is pushing customers up the ladder, and whether that survives when the offer ends.
Arctic Renewal Mask remains the volume engine but softened - 35 units, -15% w/w, €4,585. Its Limited Edition sibling added 16 units / €2,239 (+23%). The LE is the highest-ROAS creative subject on Meta and is under-supported everywhere else.
Hong Kong AOV is €836 across 4 orders. Small volume, extraordinary basket - this is the VIC profile the ICP describes. Four orders is not a trend, but if HK/SG holds this basket it deserves a dedicated retention and concierge motion rather than broad acquisition.
€5,545 across 20 orders has no country attached ("ZZ") in the POS-inclusive operational country view. This view does not reconcile to the saved store basis above, so use it for directional market mix only until the country field is fixed at source.
Refunds at 1.9% of revenue (from 8.5% last week) is healthy for luxury skincare and suggests last week's spike was a one-off batch rather than a product or fulfilment issue. Worth confirming the cause so it does not recur.
Meta Ads
Delivery stopped 21 July
!
CriticalMeta has not delivered a single impression since 20 July
Spend, impressions and clicks are all exactly zero for 21, 22, 23, 24, 25 and 26 July. Data rows exist for those days - this is a genuine delivery stop, not a reporting gap. Meanwhile “Acquisition · Core Range” is still set to ACTIVE with a €1,162/day budget and €1,162 of budget remaining, which is what you would expect from a billing hold, an account-level restriction or a payment-method failure - not from someone pausing campaigns.
Do today: open Meta Ads Manager → Billing & Payments and Account Quality. Confirm whether the stop was intentional. At the historical run-rate of ~€1,461/day, six dark days is roughly €8.7k of planned acquisition spend that was never deployed.
Meta daily spend & impressions - last 14 days
20 July is already a half-day (€744 vs a €1,411–2,000 norm). From 21 July the account is completely dark.
Campaigns that delivered this week
Only three campaigns delivered at all, and only on 20 July. Revenue is Meta last-click attributed value. The single €420 purchase booked to Retention · Cross-Sell on 23 July is attribution catching up on a click from before the blackout.
Account structure - what is waiting to switch back on
The ad account carries 147 campaigns, of which only 3 are ACTIVE. The paused estate still holds live daily budgets - BFCM 2025 (€5.27k/day across 6 campaigns), Holiday Peak 2025 (€2.7k/day across 4), Christmas Essentials (€1.04k/day), Spring Launch 2026 (€498/day), Awareness Copenhagen 2026 (€1.7k/day). None of them should ever be re-enabled by accident.
Before anything restarts, pause the two active “kill” ads. “Clinical Proof” and “Cloudberry Cream Hero” have spent €1,316 in the last 30 days for zero purchases at 0.04% and 0.05% CTR. They are still ACTIVE and will start burning the moment delivery resumes. See the Creative tab.
Restart at a controlled level, not at €1,494/day. Last week Meta spent €10.3k for €9.5k attributed at 0.93 ROAS - below the 1.5 target and roughly half Google's efficiency. Going straight back to the old run-rate reinstates a known-unprofitable spend line.
Use the blackout as a measurement asset. Store revenue rose 36% with Meta at zero. One week is not proof, and last week was itself a weak comparison - but it is enough signal to justify a proper geo-holdout (e.g. Meta on in US/AU, off in UK/EU for 3 weeks) before committing Q4 budget. This is the single highest-value analysis available right now, and it is free.
Warm audiences are 4.6× more efficient than cold. Over the last 30 days, warm-audience creative returned 4.97 ROAS at €62 CPA on €3.4k of spend; cold returned 1.09 at €271 CPA on €27.9k. The restart should be weighted far more heavily toward retention, DPA and cross-sell than the current split implies.
Google Ads
Best week since mid-June
Google held spend almost exactly flat (€7,473, +1%) and more than doubled attributed revenue to €26,973 (+117%). ROAS 3.61 against a 1.5 target; CPA €170 against a €208 target. Underneath that headline, roughly €1,743 a week is going into a video campaign that has never converted, and Shopping is buying brand-intent traffic at up to 29× the price the Brand campaigns pay for it.
Spend vs. attributed revenue by campaign
Reach US takes 23% of the budget and returns nothing. BRAND_US takes 4% and returns half the revenue.
SpendAttributed revenue
Campaign performance - week vs. previous week
Conversions can be fractional because Google attributes fractionally across data-driven paths. Targets: ROAS 1.5, CPA €208.
Ad groups
Top Shopping / PMax products by spend
Feed titles are partly in Chinese and Japanese for the same SKUs sold in English-language markets - see the feed note below.
Search terms - money going the wrong way
Two distinct problems show up in this week's terms, and they need opposite fixes.
1. Brand intent bought at Shopping prices - move to Brand, negative in Shopping
These are people looking for Northlight, misspelling it. Shopping_2026 is paying €3.39–€31.75 a click for them. BRAND_US buys the correctly-spelled version of the same intent at €1.10.
2. Generic and competitor terms with no return - negative these
All in the Shopping "Hero Products" ad group, all at zero conversions. Competitor names (Competitor Epsilon, Competitor Zeta, Competitor Eta, Competitor Mu, Competitor Beta, Competitor Delta, Competitor Theta, Competitor Alpha, Competitor Iota) plus broad generics. The brand's own positioning is explicit that competitors are never named - buying their traffic at €3.32–34 a click is neither on-brand nor profitable.
Decisions for Google
Reach US (video) - €1,743 this week, €3,537 over 14 days, zero conversions and zero attributed revenue at a 0.08% CTR. Either it is an upper-funnel play with an agreed brand-lift measurement and a fixed budget cap, or it is €7.5k a month with no answer attached. This needs an explicit client decision, not another week of drift.
Shopping_2026 is the weakest converting line - ROAS 1.33 (below the 1.5 target, down from 1.57) and CPA €337 (63% above target) on €2,023. Roughly €291 of this week's spend went to terms that cannot convert. Cleaning the negatives alone should move it back above target without touching bids.
PMAX_Feed_Only is the improvement story - ROAS 1.08 → 2.44 on 8% less spend, conversions +43%. This is where the marginal euro should go if Meta stays dark, not into Reach US.
BRAND_US at 42.8 ROAS and €17 CPA is doing exactly what brand search should do - but note that half of Google's reported revenue this week sits in a campaign that harvests demand created elsewhere. As Meta comes back or awareness spend changes, this number will move for reasons that have nothing to do with the Search campaign itself.
BRAND_HKSG CPA jumped from €19 to €175 - flagged automatically as critical, but it is one conversion on €175 of spend. Watch it, don't act on it.
Feed hygiene: several top-spending Shopping items carry Chinese or untranslated titles while serving English-language markets, and brand values are inconsistent ("northlight" vs "northlight"). That suppresses relevance and query matching. A feed title and brand-field pass is a cheap, high-leverage fix.
Klaviyo
€10,650 attributed · -22% w/w
Email attributed €10,650 across 41 orders - 21% of store revenue, with no media cost. Flows carried it (€6,177 from 13 flows) while campaigns did the volume but converted poorly. Deliverability is not the problem: open rates are 34–41%, bounce 0.39%, spam complaints essentially zero. Click-through is the problem - 0.36% to 0.85% on the big sends.
Revenue per recipient by flow
Welcome Series returns €14.54 per recipient. Five flows returned nothing at all this week.
Campaign revenue per recipient
The US-segmented send returned 4.7× the global list on the identical offer.
Flows
Campaigns sent (last 14 days)
What to do with email
Segment by market before anything else. "July Offer one week left" sent to 25,649 on the main list returned €0.067 per recipient. The same offer sent to 3,233 US contacts returned €0.314 - 4.7× - with a 41% open rate and nearly double the click rate. That is the cheapest available win in the account: split the main list by market and language and re-run the next send.
Click rate, not open rate, is the constraint. 10,791 people opened the Extreme prolongation email and 244 clicked (2.3% of openers). At luxury-skincare benchmarks that should be 8–15% of openers. The offer and the CTA hierarchy inside the email are what is failing, not the subject line or the send reputation.
Browse Abandonment is broken. 122 recipients, 78 unique opens, 9 unique clicks - and zero conversions and zero revenue. The Polar variant is receiving traffic and the legacy variant (43 recipients) is also at zero. Check that the flow's conversion tracking and product links are intact before assuming it is a creative problem.
Abandoned Checkout returned €0 on 50 recipients while Abandoned Cart returned €877 on 143. Checkout abandoners are further down the funnel and should convert better, not worse. Same diagnostic: tracking first, then content.
Post-Purchase is quietly excellent - €1,023 from 173 recipients on a single click. That is subscription and reorder revenue landing through the flow. Worth expanding into a proper Saho-ritual replenishment sequence given the routine-adoption strategy.
Review and Loyalty-Points flows returned zero revenue on 194 combined recipients. They are not revenue flows by design - but the Loyalty reminder at 5.9% click rate and no conversion suggests the redemption path is worth testing end-to-end.
Unsubscribe rate on campaigns (0.16–0.22%) is safe, but the main list is absorbing three promotional sends a fortnight against a "no discount language, exclusivity-first" brand voice. Two of the three sends this fortnight were offer-deadline emails. Worth watching list health over the next month.
Creative performance
Meta · rolling 30 days, 27 Jun – 26 Jul
Meta delivered on only one day of the reporting week, so creative is assessed on a rolling 30-day window: €31,352 across 60 ads, all tagged. The pattern is unambiguous and it contradicts where the money actually went.
!
Serious52% of creative spend went to the format with the worst return
UGC video took €16,446 (52% of spend) at 1.05 ROAS. Static image took €13,928 at 2.17 ROAS and produced more purchases (96 vs 62) on less money. A single ad - nl-6-26-UGC-NORA-2-video - absorbed €10,005, or 32% of all creative spend in the window, and returned 0.99.
Do: cap any single ad at ~15% of the creative budget, and rebalance the static:video split toward statics on restart. This matches the account's own recorded learning from the previous 90 days.
✓
OpportunityThe two best ads in the account are starved and fatiguing
nl-4-26-ARM-ice-2-static returned 7.92 ROAS at €43 CPA on €601. nl-6-26-arm-limited-edition-overhead-view-static returned 7.10 ROAS at €47 CPA on €705. Together that is 4% of spend producing 29 purchases. Both are flagged fatiguing, and both are Arctic Renewal Mask / Limited Edition subjects.
Do: brief three new variants on the same subject and layout family before the fatigue lands, and give the existing two a materially larger share on restart.
ROAS by creative format
Bar length is ROAS; the label carries the spend behind it.
ROAS by hook type
Exclusive-gift / limited-edition framing wins again. Problem-solution takes half the budget at 0.97.
By audience temperature
Warm audiences are 4.6× more efficient. 89% of creative spend went to cold.
By lifecycle stage
"Fatiguing" ads are the best performers in the account - they are winners nearing the end of their run, not problems. "Kill" is €3,472 at 0.37 ROAS.
Top 16 ads by spend
The same creative appears more than once when it runs in multiple ad sets - rows are ad-level, matching Ads Manager. CTR trend compares the second half of the window with the first.
Scale these
Turn these off before Meta restarts
All still ACTIVE. Combined €3,166 in 30 days for 4 purchases.
Creative brief - what to produce next
Three Arctic Renewal Mask Limited-Edition statics in the overhead / texture family that produced 7.1 and 7.9 ROAS. Exclusive-gift framing, no discount language, on-brand vocabulary ("a treasure", "Northlight Circle", "limited"). This is the account's proven angle and its two best assets are both fatiguing.
Two "stat / proof" statics - stat_number returns 2.13 ROAS at €165 CPA on 16 ads, second-best hook by volume. Lead with the clinical claim in the visual, not in the body copy where nobody reads it.
One testimonial static in the "hotel 5-stars" layout - 1.97 ROAS at €150 CPA and the highest CTR of any hook with real spend (1.14%). The existing pair is fatiguing.
Stop commissioning long-form UGC video for cold prospecting until the format proves out on a controlled budget. Three UGC videos consumed €14,794 at a blended 1.03. The €2,442 "UGC Nora – Tired-Skin Reset" cut produced one purchase at 0.06% CTR.
Retarget with what already works. Warm audiences at 4.97 ROAS / €62 CPA are barely being served - €3,432 of €31,352. Arctic Renewal Mask is the stated gateway product in the ICP; a cross-sell sequence from Arctic Renewal Mask buyers into Cloudberry Barrier Cream and Nordic Hydration Serum is the obvious next build.
Kill the "Clinical Proof" and "Cloudberry Cream Hero" concepts entirely. €1,316 for zero purchases at 0.04–0.05% CTR is not a fatigue problem or a budget problem - the creative is not being looked at.
Actions for the coming week
Ranked by value at risk
Method, sources and data quality
How the numbers are built
Reporting week
Mon 20 – Sun 26 July 2026, Europe/Paris. Comparison is the immediately preceding 7 days (13–19 July).
Store revenue
Refund-corrected net Shopify revenue: in-window order revenue under the brand's saved basis (incl. tax and shipping), less refunds recorded in the window against earlier orders. Point of Sale is excluded.
Platform revenue
Last-click attributed conversion value as reported by Meta, Google and Klaviyo. These bases overlap each other and store revenue and are never summed.
MER
Store net revenue ÷ (Meta + Google spend). Excludes agency fees, creative production and any other media.
CAC
Meta + Google spend ÷ Shopify first-time customers in the window.
Targets
ROAS 1.5 · CPA €208 · AOV €291, from the account profile.
Creative window
Rolling 30 days (27 Jun – 26 Jul), because Meta delivered on only one day of the reporting week.
Caveats a reader should know
Meta data runs through 26 July; Google through 27 July. All comparisons in this report are cut at 26 July so every channel covers the same seven days.
The operational country view is POS-inclusive and does not reconcile to the saved store basis. It contains 20 orders worth €5,545 with no destination country, so treat geographic mix as directional until the field is fixed at source.
Daily store revenue in the charts is gross of cross-period refunds and taken from the daily channel table; weekly KPI tiles use the refund-corrected figure. Expect a 1–3% difference between the two.
Google conversions are fractional under data-driven attribution and continue to be credited for several days after the click, so this week's Google numbers will still move slightly.
The Meta connector shows historical date gaps in the underlying daily tables. For 21–26 July, rows exist with explicit zero values, which is why the blackout is read as real rather than as missing data.
One week is one week. This report does not measure incrementality. The revenue-up-while-Meta-was-off result is a signal worth testing, not a causal finding.
Not covered in this report
TikTok and any other paid channel, organic social, affiliate and influencer, retail and spa sell-through, inventory and stock cover (the inventory table is empty in the data source), subscription churn and cohort LTV, gross margin and contribution profit, logistics and fulfilment cost, and fraud/chargebacks. If any of these should appear in the weekly rhythm, they need a data source connected first.
Turn connected performance data into a report your team can use.
Kreel brings revenue, paid media, lifecycle, product, country, and creative evidence together so a human can decide what happens next.