My App

Feiten

Vastgestelde feiten over de betaalde media, gepind op datum en bron.

Waar de conversies uit bestaan

Bevonden: 2026-07-15 · Onderwerp: Conversies · Status: vastgesteld · Bron: GAQL conversion_action + segments.conversion_action_name, 90d 2026-04-15 t/m 2026-07-14.

Over 90 dagen telde het account circa 103 conversies. De samenstelling: circa 45 procent zuivere website-leads (form_submit circa 43, afspraak 2, offertecheck 1), circa 17,5 procent SIMAR-offerte (QUALIFIED_LEAD, offline offertewaarde), slechts circa 7,8 procent (circa 8 stuks) echte keuken-orders (purchase), en circa 29 procent legacy GA4-ruis (page_view, scroll, user_engagement).

Die ruisacties staan op status REMOVED, dus zij tellen niet meer mee in het biedbare conversiegetal; die 29 procent is historisch residu dat vanzelf uit het venster loopt. De kern: orders zijn een rest-post van circa 8 procent, dus optimaliseren op orders is bij dit volume kansloos. Leads zijn de grootste categorie en het enige signaal met genoeg frequentie.

Welke conversies primair en welke biedbaar zijn

Bevonden: 2026-07-15 · Onderwerp: Conversies · Status: vastgesteld · Bron: GAQL conversion_action.primary_for_goal + customer_conversion_goal.biddable, 2026-07-15.

Acht conversie-acties staan als primair (primary_for_goal) gemarkeerd: purchase, offerte, afspraak, offertecheck, plus vier Google-native acties (Clicks to call, Local actions Directions, Local actions Website visits, Local actions Other engagements).

Maar primair is niet hetzelfde als biedbaar. Slechts vier goal-categorieën sturen het bieden echt: PURCHASE (purchase), QUALIFIED_LEAD (offerte), BOOK_APPOINTMENT (afspraak) en SUBMIT_LEAD_FORM (offertecheck). De vier Google-native acties staan wel op primair maar hun goals zijn niet biedbaar, dus zij sturen de bidding niet en vervuilen die ook niet.

Twee dingen vallen op voor de biedopzet. Purchase zit in de biedbare set maar registreert nauwelijks (zie purchase-registration-gap), dus het algoritme biedt deels op een signaal dat bijna nooit binnenkomt. En form_submit, ons grootste leadvolume (circa 9 per 30 dagen), staat op secundair, dus onze frequentste lead stuurt het bieden juist niet mee.

Budgetplafonds versus werkelijke besteding

Bevonden: 2026-07-15 · Onderwerp: Budget · Status: vastgesteld · Bron: GAQL campaign_budget + kosten 90d, budgetwijziging 2026-07-14.

Op 2026-07-14 hebben wij het actieve dagbudget van circa 320 euro naar 200 euro getrokken. Belangrijk: dat is geen bezuiniging. De werkelijke besteding lag rond 137 euro per dag (circa 44 procent benutting), dus de campagnes tikten hun plafond niet eens aan. De verlaging haalt vooral ongebruikte headroom weg, met name bij dsa_keukens (was 100 euro) en branded (was 50 euro), die enorm ruim bemeten stonden.

De verdeling op 200 euro per dag: prospection 50, dsa_keukens 42, branded 28, product_nobilia 20, local_intent 18, seasonal_action 18, leverbaar 9, plus Display awareness 12 en Display remarketing 3. Elke cap ligt boven de werkelijke besteding van die campagne, dus er wordt niets afgeknepen. De enige waar de cap nu echt begrenst is prospection, en dat is de bedoeling nu de tCPA eraf is.

Consolidatie via een gedeelde portfolio, niet fysiek samenvoegen

Bevonden: 2026-07-15 · Onderwerp: Campagnestructuur · Status: vastgesteld · Bron: onderzoek-workflow 2026-07-14, daarna uitgevoerd in account 5701314101.

Sinds 2026-07-14 delen de zes non-brand campagnes (prospection, dsa_keukens, local_intent, product_nobilia, leverbaar, seasonal_action) één gedeelde portfolio Maximize Conversions strategie (id 12153262477, zonder tCPA). Zo valt hun conversiesignaal in één leerpool, terwijl elke campagne zijn eigen budget houdt.

Wij hebben de campagnes bewust niet fysiek samengevoegd tot ad groups. Dat was het eerste idee, maar het onderzoek weerlegde het: signaalpooling vereist geen samenvoeging, en fysiek samenvoegen kost de budgetcontrole per thema. Branded blijft een aparte campagne (Target Impression Share, praktisch verzadigd op circa 95 procent impression share) en Display blijft apart (ander doel). Let op: de overstap naar een portfolio triggert een leerreset van 2 tot 3 weken.

leverbaar was geen verliezer, het was één broad keyword

Bevonden: 2026-07-15 · Onderwerp: Campagnestructuur · Status: vastgesteld · Bron: GAQL keyword_view Search__leverbaar, 90d.

De campagne leverbaar leek een verliezer met circa 377 euro per conversie, maar dat was een gemiddelde dat kapotgetrokken werd door één broad keyword "keuken kopen snel": 264 klikken, 775 euro, 1 conversie, oftewel 68,5 procent van het campagnebudget. Het phrase-zusterkeyword "keuken snel leverbaar" draait juist 68 euro per conversie, beter dan het accountgemiddelde.

Wij hebben de broad en de phrase-dubbel van "keuken kopen snel" gepauzeerd op 2026-07-14; daarmee zakt de blended kost van leverbaar naar circa 178 euro per conversie. De les die breder geldt: een slecht campagnegemiddelde eerst uitsplitsen naar keyword-niveau voordat je de campagne veroordeelt.

Consolidatie tilt het account niet boven de leerdrempel

Bevonden: 2026-07-15 · Onderwerp: Bidding · Status: vastgesteld · Bron: onderzoek-workflow 2026-07-14, Google Ads richtlijn.

Gepoold haalt de non-brand portfolio circa 20 conversies per maand. De reële Smart Bidding drempel ligt hoger: circa 30 conversies per 30 dagen voor een betrouwbare tCPA-evaluatie, en circa 50 om de leerfase echt te verlaten. De vaak genoemde 15 per 30 dagen is enkel een minimale databenchmark, geen prestatiedrempel.

Consolideren verzacht dus de versnippering (waar elke losse campagne op 1 tot 8 conversies per maand het algoritme liet gokken), maar het lost het lage volume niet op. De consequentie voor de strategie: bieden op de zeldzame order is uitgesloten, en bieden op de frequentere leads is geen keuze maar noodzaak.

Lead-based bidding is nog niet ingericht

Bevonden: 2026-07-15 · Onderwerp: Bidding · Status: open · Bron: selective_optimization ontbreekt in de deploy-tooling.

De portfolio biedt op dit moment nog op de account-brede goals, inclusief purchase. Wij willen dat het bieden richting de frequente leads gaat: offerte, afspraak, offertecheck, en ook form_submit erbij (die staat nu ten onrechte op secundair), met purchase eruit als biedsignaal omdat orders nauwelijks registreren.

Dat regelt selective_optimization per campagne, maar die code bestaat nog niet in de tooling; het vergt een bewuste bouw plus een lichte recalibratie. Dit is de belangrijkste openstaande stap: pas hierna biedt het systeem echt op het signaal dat wij willen. Zolang dit open staat, is de conclusie "alles staat goed" niet juist.

Orders uploaden wel, maar registreren niet in Google Ads

Bevonden: 2026-07-15 · Onderwerp: Attributie · Status: vastgesteld · Bron: GET /api/ops/retry-report 2026-07-15, memory purchase-conv-stilte-2026-07.

Alle vijf orders sinds 12 juni (refs 2023176, 2023191, 2023190, 2023210, 2023221, laatste order 11 juli) hebben een purchaseJob met status completed. Vier gingen als enhanced_conversion, één als click_conversion (ref 2023190, 12.800 euro, mét gclid). De backend-pipeline werkt dus aantoonbaar.

Toch toont Google Ads in de conversiekolom nul purchase over de recente periode. De oorzaak: enhanced-only uploads zonder gclid registreren pas als conversie zodra Google ze aan een advertentieklik kan koppelen. Zonder klik-match blijven ze onzichtbaar. Dit is geen kapotte pipeline maar een match-probleem. De hefboom is meer gclid-capture bij de lead (PR ksd#378) plus daarna replay-attribution, zodat bestaande orders alsnog aan een klik matchen. Dit bevestigt waarom bieden op orders kansloos is en lead-based bidding nodig is.

Meta

Meta staat onder break-even, dashboards overdrijven het rendement

Bevonden: 2026-07-15 · Onderwerp: Rendement · Status: vastgesteld · Bron: cross-channel workflow 2026-06-29, live Meta Graph v21.0 + GA4 343557453.

Over 12 maanden tot 2026-06-25 gaf Meta circa 20.902 euro uit (meer dan Google) en leverde daarmee 28 leads, oftewel 464 tot 746 euro per lead, 4 tot 7 keer duurder dan Google. De platform-ROAS van 8,6x is een illusie: 79 procent daarvan is 1-daags view-through. De verdedigbare klik-ROAS is 1,8x, wat neerkomt op 2 echte keukens. Streng gerekend is dat circa 13.000 euro verlies, ongeveer 36 procent van break-even.

Meta is niet dood: Facebook is de grootste leadbron en de lead-functie (formulier-conversies) bestaat pas sinds december 2025. Maar rapporteer op 7-daagse klik en op cost-per-lead, niet op de 8,6x. De enige meting die incrementaliteit echt beslecht is een geo-holdout-test op Meta.

fbclid ontbreekt op forms, dat is geen capture-bug maar de funnel

Bevonden: 2026-07-15 · Onderwerp: Attributie · Status: vastgesteld · Bron: workflow 2026-06-20 (3 agents + datachecks), Meta-side #255.

Van 54 website-inzendingen had er maar 1 een fbclid. Toch is dit geen capture-bug: het fbclid-pad in de code is regel voor regel symmetrisch met het gclid-pad, en gclid werkt wel (38 van de 54). Meta levert ook echt verkeer (circa 1.370 Paid Social sessies per 90 dagen), maar converteert slecht: 0,07 procent formulier-conversie tegen 1,38 procent bij Google Ads. De cookie _fbp is een rode haring, die laadt bij elke bezoeker omdat de Pixel overal staat.

De oorzaak is de funnel, niet de code: koude prospection plus een lange keuken-journey, waardoor een Meta-bezoeker later via direct of organisch terugkomt en de fbclid dan weg is (last-click ondercrediteert Meta). Belangrijk: Meta's eigen attributie hangt niet van de website-fbclid af, die optimaliseert op Pixel, _fbp, CAPI en het external_id ksd_vid. Meet Meta dus niet af aan website-fbclid.

Instagram levert de leads, Facebook en Audience Network niet (click-through)

Bevonden: 2026-07-15 · Onderwerp: Rendement · Status: vastgesteld · Bron: Meta-side placement-analyse #255, 2026-06-25 (90d prospection).

Op placement-niveau (90 dagen prospection) is de verdeling scheef. Facebook kreeg 2.282 euro (74 procent van het budget) en leverde 0 click-leads. Instagram kreeg 657 euro (21 procent) en leverde alle 5 de click-leads (feed 3, stories 2). Audience Network kreeg 129 euro en produceerde 1.579 junk-clicks met 0 leads, dat is veilig weg te snijden.

Nuance: onder een 1-daags view-venster heeft Facebook wel 7 view-through leads, dus Facebook niet meteen killen. Maar het direct-response-budget hoort naar Instagram, en Audience Network kan eruit. Het optimalisatiesignaal is hier ook kapot: 5 leads per 90 dagen ligt ver onder de leerdrempel van circa 50 per week.

Meta creative fatigue en de awareness-refresh

Bevonden: 2026-07-15 · Onderwerp: Creatief · Status: vastgesteld · Bron: memory meta-awareness-refresh + meta-retargeting 07-2026, Meta-side #255.

Meta liet acute creative fatigue zien: een frequentie van 7,8, een outbound-CTR die daalde van 3,05 procent naar 0,47 procent (april tot juni) en een landing rate die zakte van 43 procent naar 29 procent. De creatives waren op.

Als antwoord hebben wij de awareness-campagne omgebouwd van 6 oude carousels naar 1 dynamische branded ad (id 120250519868000286) met verse copy, en in juli een retargeting-campagne live gezet (10 euro per dag, warme copy naar de afspraakpagina, 3 doelgroepen). Let op de publicatieregels bij het verversen van Meta-creatives (zie meta-publication-rule).

Meta publiceren vereist asset-feed-validatie en meta:verify

Bevonden: 2026-07-15 · Onderwerp: Campagnestructuur · Status: vastgesteld · Bron: CLAUDE.md publicatie-regels, incident 2026-07-10.

Bouw een asset_feed_spec nooit als los object in een script, maar altijd via buildAssetFeedSpec(), die de spec vóór publicatie valideert (weigert onder meer optimization_type PLACEMENT zonder placement-regels en lege tekst-assets). Draai na elke ad-create of creative-swap bun run meta:verify (of geef de campagne-id mee).

De reden: de Graph API accepteert creatives die Ads Manager deels weigert, en die échte diagnose (issues_info) zie je alleen via meta:verify. Achtergrond is het incident van 2026-07-10, waarbij een creative met PLACEMENT zonder regels niet uitleverde op Stories, Reels en search, en dat alleen in Ads Manager zichtbaar was. Publicatie is pas klaar als meta:verify groen is.

Cross-channel en attributie

Google gezond, Meta onder break-even (cross-channel oordeel)

Bevonden: 2026-07-15 · Onderwerp: Rendement · Status: vastgesteld · Bron: cross-channel workflow 2026-06-29 (Meta Graph + Google Ads API + GA4), adversarieel geverifieerd.

Over 12 maanden tot 2026-06-25: Google Ads gaf 16.740 euro uit, goed voor 153,5 conversies, oftewel 109 euro per conversie (de schone maatstaf). De dashboard-ROAS van 20,1x is opgeblazen door branded plus het attributiemodel (conversiewaarde = offerte maal 0,31) en is dus niet om op te sturen. Meta staat in dezelfde periode onder break-even (zie meta-below-breakeven).

De formulier-conversie per kanaal in GA4 bevestigt het beeld: Paid Search 1,78 procent, Paid Social 0,70 procent, Audience Network 0,10 procent. De aanbeveling was budget verschuiven van Meta-prospecting naar Google non-brand, maar Shawn koos op 2026-06-29 bewust om niks uit te voeren. De acties staan klaar voor als hij ze later wil.

Conversiewaarden en de funnel (lead versus offerte versus order)

Bevonden: 2026-07-15 · Onderwerp: Conversies · Status: vastgesteld · Bron: client.json, tracking-audit 2026-07-13, memory ksd-funnel-model.

De funnel: website-formulieren zijn leads (form_submit); SIMAR-offertes en orders zijn offline conversies die via de backend /api/conversions naar Google Ads gaan. Verwar een lead nooit met een offerte, het waardeverschil is een factor 20 tot 30.

De conversiewaarden zoals live geverifieerd: showroom-afspraak 340 euro, offertecheck 450 euro, brochure 75 euro. De offerte-conversiewaarde is geen vast bedrag maar het SIMAR-offertebedrag maal 0,31 (de gemeten offerte-naar-order conversie van 31 procent). De purchase draagt de werkelijke orderwaarde. Ter ijking: de gemiddelde orderwaarde is 18.857 euro bij een marge van 20 procent.

Website gtag en backend-upload zijn hetzelfde Google Ads account

Bevonden: 2026-07-15 · Onderwerp: Attributie · Status: vastgesteld · Bron: tracking-audit 2026-07-13, live geverifieerd tegen account 5701314101.

Een terugkerend loos alarm: de website-gtag AW-17550320060 en de backend-conversie-upload op account 5701314101 zijn hetzelfde account. Het conversion_tracking_id van 5701314101 is namelijk 17550320060. Er zijn dus geen gescheiden accounts en geen dubbele meting op dat vlak.

De conversieacties zelf staan live goed: afspraak, offertecheck, offerte en purchase zijn ENABLED en primair, de oude Webflow-conversies staan op REMOVED en auto-tagging staat aan. Let op: het bestand apps/campaigns/src/tracking/conversion-actions.ts is dood (placeholders AW-XXXX); de echte config zit in de backend en in het account, gebruik dat bestand niet als bron.

UTM-gaten: Meta prospection zonder UTMs, Google Display dubbele UTMs

Bevonden: 2026-07-15 · Onderwerp: Attributie · Status: open · Bron: tracking-audit 2026-07-13, docs/tracking-audit-2026-07.md.

Twee tracking-gaten, live vastgesteld op 2026-07-13. Meta prospection en zomeractie (50 euro per dag) sturen verkeer zonder UTMs, dus GA4 ziet ze als Organic of Referral; de awareness- en retargeting-campagnes doen het wel goed met utm_source=meta en utm_medium=paid_social. Google Display heeft juist dubbele en tegenstrijdige UTMs: een hardcoded ad-UTM (utm_medium=display) plus de account-suffix (utm_medium=cpc).

De gekozen richting is niet ad-hoc fixen maar migreren naar dynamische tracking-templates: voor Google een final_url_suffix met ValueTrack-macro's plus een kanaal-override medium=display op Display, voor Meta één url_tags met macro's voor campagne, ad en placement, waarna de hardcoded link-UTMs weg kunnen. Dit is nog te bouwen, vandaar de status open.

Analyses draaien op 90 dagen, niet op 30

Bevonden: 2026-07-15 · Onderwerp: Rendement · Status: vastgesteld · Bron: memory ksd-reporting-window.

Wij analyseren de betaalde kanalen standaard over 90 dagen, niet over 30. De keuken-journey is lang (weken tot maanden tussen eerste klik en order), dus een venster van 30 dagen onderschat de ROAS en de attributie sterk.

Praktische noot: LAST_90_DAYS is geen geldig GAQL-preset, gebruik in queries dus expliciete datums (segments.date tussen een begin- en einddatum). Houd dit venster consistent aan zodat cijfers tussen analyses vergelijkbaar blijven.

On this page