Paid media
Advertising performance of Maison Velours, per platform. Spend, conversions and ROAS as reported by each platform, checked against GA4 and actual revenue.
Luxury home textiles and fragrance · FR, DE, NL, UK, US · Stack: Shopify Plus, Amazon, bol, Klaviyo, Impact, Meta, Google Ads, Pinterest, Amazon Ads, Recharge, Okendo, GA4
4 of 4 platforms · 22 campaigns · daily data, last 30 days vs previous period
PM1Spend
Up17.9%€98,698
Platform-reported cost
PM2Impressions
Up17.8%10M
95,499 link clicks
PM3Reach
Up18.6%1.4M
Meta, TikTok, LinkedIn only
PM4Frequency
Up0.0%2.68
Impressions / reach
PM5CPM
Up0.1%€9.90
Spend / impressions x 1000
PM6CPC (link)
Down0.6%€1.03
Spend / link clicks
PM7CTR (link)
Up0.6%0.96%
Link clicks / impressions
PM8Purchases
Up15.8%2,336
Platform-reported, default window
PM9Purchase value
Up15.5%€222,075
Sum of platform claims
PM10Purchase ROAS
Down2.1%2.25x
Value / spend, platform-reported
PM11Leads (lead form)
Up21.0%265
Instant Forms and web forms
PM12Cost per lead
Down2.3%€30.88
Lead campaigns only
PM17New-customer purchases
Up17.5%450
47.2% of purchases on Google and Amazon
Source: Meta insights.spend · Google metrics.cost_micros / 1e6 · TikTok spend · Pinterest SPEND_IN_MICRO_DOLLAR · Amazon cost · LinkedIn costInLocalCurrency
PM18Alerts
Computed from the numbers on this page: pacing, ROAS, cost per lead, impression share, fatigue and double counting
PM19Spend per platform over time
Stacked, per day
Source: Meta insights.spend · Google metrics.cost_micros / 1e6 · TikTok spend · Pinterest SPEND_IN_MICRO_DOLLAR · Amazon cost · LinkedIn costInLocalCurrency
PM20Spend share
Share of spend per platform in this period
Meta
Google Ads
Amazon Ads
€37,966 · 38%
€33,588 · 34%
€20,005 · 20%
€7,139 · 7%
Previous period: €83,699 (17.9% more spend now).
PM21Platform comparison
Click a column header to sort. ROAS is platform-reported and overlaps between platforms
| Meta | €37,966 | €73,800 | 1.94x |
| Google Ads | €33,588 | €88,193 | 2.63x |
| Amazon Ads | €20,005 | €43,790 | 2.19x |
| €7,139 | €16,292 | 2.28x |
Source: ROAS = conversion value / spend per platform (Meta purchase_roas, TikTok complete_payment_roas, Amazon roasClicks14d). Do not add up.
PM22Conversions per type over time
Conversions per type (own chart, not mixed with spend)
Source: Meta actions[omni_purchase | lead | onsite_conversion.lead_grouped] and action_values[omni_purchase] (offsite_conversion.fb_pixel_purchase is pixel-only, so it misses app and onsite purchases) · Google metrics.conversions by segments.conversion_action_category (PURCHASE, SUBMIT_LEAD_FORM, BOOK_APPOINTMENT) · TikTok complete_payment, onsite_form
PM23Conversion totals
Period totals per type with the cost basis
- Purchases2,336 · €35.11 each
- Add to cart14,032
- Begin checkout5,821
- Leads265 · €30.88 each
Cost per type uses only spend of campaigns with that objective. Awareness spend (€8,474) is not attributed to any conversion type.
PM24Conversion types and API fields
Which field delivers each conversion type, per platform, with this period's counts
| Platform | Type | Count / value field | Count |
|---|---|---|---|
| Meta | Purchase | actions[omni_purchase] (offsite_conversion.fb_pixel_purchase is pixel-only) | 624 |
| Meta | Lead form | actions[lead] / onsite_conversion.lead_grouped (Instant Form) | 148 |
| Google Ads | Purchase | metrics.conversions where segments.conversion_action_category = PURCHASE | 737 |
| Google Ads | Lead form | metrics.conversions where category = SUBMIT_LEAD_FORM | 83 |
| Purchase | TOTAL_CHECKOUT | 174 | |
| Lead form | TOTAL_LEAD | 34 | |
| Amazon Ads | Purchase | purchases14d (SP: purchases7d) | 801 |
Source: Hover a field for the full mapping. [?] marks field names not yet verified. Google: cost and conversions segmented by conversion_action_category need two queries (the segment blocks cost metrics), joined on date and campaign.
PM25Cost per acquisition by type and platform
Spend of campaigns with that objective / conversions of that type
| Platform | Cost per purchase | Cost per lead |
|---|---|---|
| Meta | €45.44 up 4% | €28.67 down 3% |
| Google Ads | €38.14 up 1% | €40.31 down 1% |
| €31.88 up 6% | €17.47 down 2% | |
| Amazon Ads | €24.97 up 0% | - |
| All shown platforms | €35.11 up 2% | €30.88 down 2% |
Source: Meta cost_per_action_type · Google cost / conversions segmented by conversion_action_category · TikTok cost_per_complete_payment, cost_per_onsite_form [?] · arrows show change vs previous period (down is good)
PM26Campaigns
Click a campaign to see its ad sets or ad groups. Click a header to sort
| €12,769 | 2.39x | |
| €10,986 | 2.97x | |
| €7,897 | 2.10x | |
| €7,699 | 1.87x | |
| €6,036 | 3.04x | |
| €5,350 | - | |
| €5,122 | 2.20x | |
| €5,085 | 4.87x | |
| €4,515 | 1.34x | |
| €4,249 | - | |
| €4,157 | 3.79x | |
| €3,487 | 6.57x | |
| €3,436 | 1.58x | |
| €3,431 | 3.35x | |
| €3,355 | - | |
| €2,489 | 1.21x | |
| €2,114 | - | |
| €2,103 | 2.28x | |
| €1,894 | 1.20x | |
| €1,011 | - | |
| €920 | 1.91x | |
| €594 | - | |
| Total (22) | €98,698 | 2.25x |
Source: Meta level=campaign|adset, objective · Google campaign.advertising_channel_type, ad_group / asset_group · TikTok data_level=AUCTION_CAMPAIGN|AUCTION_ADGROUP · Pinterest level=CAMPAIGN|AD_GROUP · Amazon sponsoredProducts|sponsoredBrands|sponsoredDisplay campaigns
PM27Top creatives
Ads with their share of the ad set. Frequency above 3.4 is flagged as fatigue risk
| Health | |||
|---|---|---|---|
| Texture close-up v1Prospecting | Advantage+ Shopping | €4,142 | 1.89x | Healthy |
| Founder story v1Prospecting | Advantage+ Shopping | €3,870 | 2.77x | Healthy |
| Review quote v1Performance Max | All products | €3,834 | 3.08x | Healthy |
| Bestseller roundup v1Prospecting | UGC Reels, broad | €2,567 | 2.06x | Healthy |
| Gift wrapped v3Prospecting | Advantage+ Shopping | €2,554 | 2.49x | Healthy |
| Press mention v4Prospecting | UGC Reels, broad | €2,307 | 2.13x | Fatigue risk |
| Studio tour v2Performance Max | All products | €2,280 | 2.99x | Healthy |
| Unboxing ritual v2Prospecting | Advantage+ Shopping | €2,204 | 2.57x | Healthy |
| Weekend offer v2SP | Auto, best sellers | €1,990 | 1.76x | Healthy |
| Texture close-up v3Awareness | Reach, brand film | €1,872 | - | Fatigue risk |
Source: Meta level=ad, video_p25_watched_actions / video_play_actions for hook rate [?] · Google ad_group_ad.ad.id, asset_group_asset performance_label · TikTok data_level=AUCTION_AD, ad_name · Pinterest level=AD
PM28Attribution windows
Same spend, different window: the effect on conversions and ROAS
| Platform | Window | Value | ROAS | vs default |
|---|---|---|---|---|
| Meta | 1-day clickaction_attribution_windows=1d_click | €45,018 | 1.19x | -39% |
| Meta | 7-day clickaction_attribution_windows=7d_click | €60,516 | 1.59x | -18% |
| Meta | 1-day viewaction_attribution_windows=1d_view | €13,284 | 0.35x | -82% |
| Meta | 7-day click + 1-day view (default)default when parameter is omitted | €73,800 | 1.94x | - |
| Google Ads | Model set per conversion action (data-driven default) (default)metrics.conversions | €88,193 | 2.63x | - |
| 7d click / 1d view / 0 engagementclick_window_days=7, view_window_days=1, engagement_window_days=0 | €9,123 | 1.28x | -44% | |
| 30d click / 30d view / 30d engagement (default)default windows | €16,292 | 2.28x | - | |
| Amazon Ads | 7-daypurchases7d / sales7d | €41,163 | 2.06x | -6% |
| Amazon Ads | 14-day (default)purchases14d / sales14d | €43,790 | 2.19x | - |
Source: Meta action_attribution_windows [1d_click, 7d_click, 1d_view] (7d_view and 28d_view are being retired [?]) · Google: model and lookback are set per conversion action (data-driven default), no report-time window · TikTok 7d click / 1d view · Pinterest click_window_days, view_window_days
PM29ROAS by window
Pick a platform
The default for Meta is 7-day click + 1-day view. Always compare platforms on equal windows.
PM30Platform-reported vs GA4 vs actual revenue
Platforms claim the same order more than once. This block always covers all platforms of the client
Platforms claim
€222,075
Sum of platform-reported value
GA4 paid channels
€85,998
purchaseRevenue, last click
Actual paid-attributed
€156,473
Revenue attributed to paid channels, ex VAT
Overlap ratio
1.42x
Platform sum / actual paid-attributed
Meta (reported)
Google Ads (reported)
Pinterest (reported)
Amazon Ads (reported)
Sum of platforms
GA4 paid channels
Actual paid-attributed revenue
Actual net revenue, all channels
€73,800
€88,193
€16,292
€43,790
€222,075
€85,998
€156,473
€444,878
MER
4.28x
Net revenue / total marketing spend (ads, affiliate, email)
Paid-only MER
4.51x
Net revenue / paid ad spend
Platform blended ROAS
2.25x
Sum of claims / total spend
GA4 ROAS
0.87x
GA4 revenue / total spend
Source: GA4 runReport purchaseRevenue by sessionDefaultChannelGroup · Actual: net revenue and channel attribution from /revenue (orders, bookings; source of truth) · overlap = sum of platform value / paid-attributed actual revenue
PM31Claimed vs actual per platform
Platform-reported value / revenue actually attributed to that channel
| Google Ads | 2.63x | 1.40x |
| Meta | 1.94x | 1.60x |
| Amazon Ads | 2.19x | 1.20x |
| 2.28x | 1.50x | |
| Total | 2.25x | 1.42x Double counted |
PM32Breakdowns
Where spend and purchases come from. Rows add up to the totals of the platforms that deliver the dimension (Amazon Ads excluded)
| 35-44 · Female | €15,613 | 383 | 2.90x |
| 25-34 · Female | €13,095 | 272 | 2.41x |
| 45-54 · Female | €11,080 | 253 | 2.68x |
| 35-44 · Male | €8,294 | 154 | 2.15x |
| 25-34 · Male | €6,956 | 110 | 1.79x |
| 45-54 · Male | €5,886 | 102 | 1.99x |
| 55-64 · Female | €5,036 | 96 | 2.20x |
| 18-24 · Female | €4,029 | 59 | 1.63x |
| 55-64 · Male | €2,676 | 39 | 1.64x |
| 18-24 · Male | €2,140 | 24 | 1.22x |
| 65+ · Female | €1,511 | 21 | 1.53x |
| 65+ · Male | €803 | 8 | 1.15x |
| 35-44 · Unknown | €488 | 5 | 1.23x |
| 25-34 · Unknown | €409 | 4 | 1.03x |
| 45-54 · Unknown | €346 | 4 | 1.14x |
| 55-64 · Unknown | €157 | 1 | 0.94x |
| 18-24 · Unknown | €126 | 1 | 0.71x |
| 65+ · Unknown | €47 | 0 | 0.66x |
| Total | €78,693 | 1,535 | 2.27x |
35-44 · Female
25-34 · Female
45-54 · Female
35-44 · Male
25-34 · Male
45-54 · Male
55-64 · Female
18-24 · Female
55-64 · Male
18-24 · Male
65+ · Female
65+ · Male
35-44 · Unknown
25-34 · Unknown
45-54 · Unknown
55-64 · Unknown
18-24 · Unknown
65+ · Unknown
€15,613
€13,095
€11,080
€8,294
€6,956
€5,886
€5,036
€4,029
€2,676
€2,140
€1,511
€803
€488
€409
€346
€157
€126
€47
Source: Meta breakdowns=age,gender · Google ad_group_criterion.age_range, gender · TikTok dimensions age, gender
Google Ads
Search impression share, keywords, search terms and Performance Max
PM33Search impression share
Top campaigns over time, in percent
Source: metrics.search_impression_share · metrics.search_budget_lost_impression_share · metrics.search_rank_lost_impression_share
PM34Impression share by campaign
Sortable. Shares add up to 100% with lost shares
| Shopping | Standard, best sellers | 45% |
| Search | Non-brand, category terms | 82% |
| Search | Brand | 91% |
| Search | Lead, trade enquiry | 45% |
Source: metrics.search_top_impression_share, search_absolute_top_impression_share
PM35Top keywords
Search campaigns, spend ranked. Quality score 1-10
| maison veloursBrand | €2,421 | 223 |
| luxury bed linen | €1,567 | 12 |
| velvet cushion covers | €1,424 | 19 |
| scented candles luxury | €1,282 | 11 |
| silk pillowcase | €1,139 | 13 |
| room spray home fragrance | €997 | 11 |
| designer duvet cover | €997 | 5 |
| maison velours throwBrand | €855 | 58 |
| diffuser refill luxury | €712 | 10 |
| gift set candle blanket | €570 | 5 |
Source: keyword_view · ad_group_criterion.keyword.text, keyword.match_type, quality_info.quality_score · metrics.cost_micros, conversions
PM36Performance Max
Reporting is limited: campaign and asset group level only
| Asset group | Strength | Cost | Conv. |
|---|---|---|---|
| Bedding and throws | BEST | €3,622 | 36 |
| Home fragrance | GOOD | €3,159 | 127 |
| Cushions | GOOD | €2,390 | 66 |
| Gift sets | LOW | €1,815 | 45 |
Source: asset_group · asset_group_asset.performance_label (BEST, GOOD, LOW) · metrics on campaign with advertising_channel_type = PERFORMANCE_MAX
PM37Budget pacing
Month to date, day 4 of 31. Budget is the monthly plan per platform
Expected to date €5,282 · projected month-end €41,075 · planned €1,320 per day · €1,320 per day left to hit budget
Expected to date €4,226 · projected month-end €34,945 · planned €1,057 per day · €1,046 per day left to hit budget
Expected to date €1,009 · projected month-end €7,789 · planned €252 per day · €252 per day left to hit budget
Expected to date €2,683 · projected month-end €22,297 · planned €671 per day · €664 per day left to hit budget
Source: Spend per day from the same reports (Meta spend, Google cost_micros, TikTok spend) vs a monthly budget plan kept in the dashboard · Meta also exposes campaign daily_budget and lifetime_budget
GA4 for paid channels
Independent measurement of the same traffic: sessions, key events and revenue per default channel group
PM38Paid channels in GA4
Last-click style attribution, lower than platform-reported numbers
| Paid Social | 34,785 | €39,108 | 0.82x |
| Paid Search | 15,411 | €19,827 | 1.66x |
| Cross-network | 6,907 | €16,964 | 1.54x |
| Paid Shopping | 4,337 | €10,098 | 1.67x |
| Paid Video | 1,670 | €0 | - |
| Total paid | 63,109 | €85,998 | 1.09x |
Source: GA4 Data API runReport · dimension sessionDefaultChannelGroup · metrics sessions, keyEvents, purchaseRevenue, addToCarts, checkouts, ecommercePurchases
PM39Paid traffic funnel in GA4
From session to outcome, paid channels only
Sessions
Add to carts
Checkouts
Purchases (ecommercePurchases)
Leads (keyEvents:generate_lead)
63,109
7,108
2,773
737
156
GA4 sessions are about 26% lower than platform link clicks (consent, blockers, quick bounces). Key events must be marked as such in GA4.
Source: addToCarts, checkouts, ecommercePurchases, keyEvents:purchase | generate_lead