Google Ads (SEA)
Als je Google Ads campagnes hebt opgezet voor ecommerce bedrijven, zal je dit jezelf afvragen. Hoe kan ik winst meten in Google Ads? Want Google meet dit niet voor je.
Je ziet de kosten en opbrengsten van de campagnes, maar niet de daadwerkelijke winst. Een gemiste kans dus. In dit blog leg ik je uit hoe je dit wel meet (zonder dat je hier een betaalde tool voor nodig hebt).
Check je bestaande ecommerce tracking
Je wil eerst je bestaande tracking bekijken. Gaat je ecommerce tracking goed? Of zijn er foutjes?
Ga naar Google Analytics en klik links op ‘Verkennen’. Maak een lege verkenning aan en selecteer als dimensies bijvoorbeeld:
- Categorie van item
- Itemnaam
Bij waarden, gebruik standaard ecommerce metrics. Zoals:
- Items gekocht
- Artikelen bekeken
- Artikelen toegevoegd aan winkelwagen
- Artikelopbrengst
Kijk naar opvallendheden. Je kunt het ook checken door te testen in Google Tag Manager met de DebugView open in GA4.
Zie je fouten? Fix deze dan eerst. Ziet alles er goed uit? Top, je kan beginnen met het meten van je winst.
Krijg scherp wat je winstmarges zijn
Dan is het belangrijk om per productcategorie – al helemaal mooi is natuurlijk per product – te kijken wat je winstmarges zijn. Doe je dit per productcategorie? Zet de categorieën dan op een rijtje met daarnaast de winstmarges. Dan kun je aan de slag met Google Tag Manager.
Winstmarges in je ecommerce Data Layer krijgen per categorie
Hiervoor willen we de ecommerce Data Layer gaan overschrijven. Zo ziet dit er standaard uit voor een purchase event:
dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ event: "purchase", ecommerce: { transaction_id: "T_12345", // Sum of (price * quantity) for all items. value: 72.05, tax: 3.60, shipping: 5.99, currency: "USD", coupon: "SUMMER_SALE", items: [ { item_id: "SKU_12345", item_name: "Stan and Friends Tee", affiliation: "Google Merchandise Store", coupon: "SUMMER_FUN", discount: 2.22, index: 0, item_brand: "Google", item_category: "Apparel", item_category2: "Adult", item_category3: "Shirts", item_category4: "Crew", item_category5: "Short sleeve", item_list_id: "related_products", item_list_name: "Related Products", item_variant: "green", location_id: "ChIJIQBpAG2ahYAR_6128GcTUEo", price: 10.01, quantity: 3 }, { item_id: "SKU_12346", item_name: "Google Grey Women's Tee", affiliation: "Google Merchandise Store", coupon: "SUMMER_FUN", discount: 3.33, index: 1, item_brand: "Google", item_category: "Apparel", item_category2: "Adult", item_category3: "Shirts", item_category4: "Crew", item_category5: "Short sleeve", item_list_id: "related_products", item_list_name: "Related Products", item_variant: "gray", location_id: "ChIJIQBpAG2ahYAR_6128GcTUEo", price: 21.01, promotion_id: "P_12345", promotion_name: "Summer Sale", quantity: 2 }] } });
Maak vervolgens in Google Tag Manager een custom variabele. Zorg ervoor dat dit een aangepaste JavaScript-macro variabele is:
Geef deze variabele een naam, bijvoorbeeld: ecommerce profit
Ik gebruikte zelf de volgende code:
function() { // Haal de waarde van de variabele op var ecommerceData = {{Ecommerce datalayer}}; // Lookup table for margins var lookupTable = { "Tassen": 0.15, "Shirts": 0.3, // Add more categories as needed }; // Function to replace '&' in strings function replaceAmpersand(value) { if (typeof value === 'string') { return value.replace(/&/g, '&'); } return value; } // Recursive function to process objects and arrays function processValue(value) { if (typeof value === 'string') { return replaceAmpersand(value); } else if (Array.isArray(value)) { return value.map(processValue); } else if (typeof value === 'object' && value !== null) { var processedObject = {}; for (var key in value) { if (value.hasOwnProperty(key)) { processedObject[key] = processValue(value[key]); } } return processedObject; } return value; } // Function to calculate profit_price and total profit_value function calculateProfit(ecommerce) { var totalProfit = 0; ecommerce.items.forEach(function(item) { var category = item.item_category; var margin = lookupTable[category] || 0; // Default to 0 if category not found item.profit_price = parseFloat((item.price * margin).toFixed(2)); totalProfit += item.profit_price * item.quantity; }); ecommerce.profit_value = parseFloat(totalProfit.toFixed(2)); } // Process the ecommerceData and calculate profits ecommerceData = processValue(ecommerceData); calculateProfit(ecommerceData); return ecommerceData; }
En sla de variabele op.
Ga vervolgens naar je GA4 tag en ga onder ‘meer instellingen’ naar E-commerce en selecteer als gegevensbron ‘Custom Object’. Kies bij E-commerce-object je ingestelde variabele:
Als je deze data ook in GA4, wil je ook een custom dimensie aanmaken voor je winstmarge variabele. Deze variabele, die de waarde pakt van de winstmarge, gebruiken we ook voor Google Ads. Je maakt deze variabele als volgt:
Om deze informatie mee te sturen naar Google Ads, wil je een nieuwe Google Ads tag aanmaken. Zet bij conversiewaarde je variabele voor de winstmarge berekening.
Trigger deze tag op de aankoop conversie.
Kies ervoor in Google Ads dit als secundaire conversie te meten.
Je kunt ook een aangepast kolom maken in je Google Ads account die alleen deze conversie laat zien. Filter in deze kolom alle conversies op de conversienaam die je aan dit event geeft.
De ecommerce variabele uitgelegd
We maken gebruik van een Lookup Tabel voor marges. Dit is voor elke categorie natuurlijk verschillend, dus vul per categorie de marge in. Is je marge 0,50%? Vul dan 0.5 in als productmarge. Doe dit voor elke categorie die je hebt. Zie hiervoor onderstaande code:
var lookupTable = { "Tassen": 0.15, "Shirts": 0.3 // Voeg hier meer categorieën toe };
In mijn geval zag ik een fout in de tracking van de ecommerce data. Het &-teken werd een “&” Bij het verwerken van de data willen we ervoor zorgen dat eventuele HTML-entiteiten zoals & worden vervangen door hun normale tekens.
function replaceAmpersand(value) { if (typeof value === 'string') { return value.replace(/&/g, '&'); } return value; }
Hiervoor gebruiken we een recursieve functie om door het hele object te lopen en de waarden te verwerken.
function processValue(value) { if (typeof value === 'string') { return replaceAmpersand(value); } else if (Array.isArray(value)) { return value.map(processValue); } else if (typeof value === 'object' && value !== null) { var processedObject = {}; for (var key in value) { if (value.hasOwnProperty(key)) { processedObject[key] = processValue(value[key]); } } return processedObject; } return value; }
De winst berekenen: nu voegen we een functie toe die de profit_price en profit_value berekent en afrondt op twee decimalen. Want we willen de winst in euro’s berekenen.
function calculateProfit(ecommerce) { var totalProfit = 0; ecommerce.items.forEach(function(item) { var category = item.item_category; var margin = lookupTable[category] || 0; // Standaard naar 0 als categorie niet gevonden is item.profit_price = parseFloat((item.price * margin).toFixed(2)); totalProfit += item.profit_price * item.quantity; }); ecommerce.profit_value = parseFloat(totalProfit.toFixed(2)); }
Tot slot verwerken we de ecommerceData en berekenen we de winst.
function() { var ecommerceData = {{Ecommerce datalayer}}; ecommerceData = processValue(ecommerceData); calculateProfit(ecommerceData); return ecommerceData; }
Door deze stappen te volgen, hebben we een e-commerce variabele die automatisch de profit_price en profit_value berekent en afrondt op twee decimalen. Dit helpt je om een beter inzicht te krijgen in hun winstmarges per productcategorie en hun totale winstwaarde.
Lijkt jou dit een mooie stap om je Google Ads account naar een hoger niveau te tillen? Neem dan contact met ons op!
Over de schrijver:
Nino is een technisch online marketeer en voelt zich thuis in Google Analytics (GA4), SEA, SEO, Tagmanager en conversieoptimalisatie. Hij beschikt over een uitstekende helicopterview die ervoor zorgt dat zijn online marketing inspanningen ook daadwerkelijk bijdragen aan de bottom-line doelstellingen. Nino woont in Didam, is erg sportief (squash, hardlopen, fitness etc.) en volgt alle ontwikkelingen op het gebied van online marketing op de voet.
Google Ads uitbesteden?
Laat een efficiënte en effectieve Google Ads campagne maken door een bureau met zó veel SEA-ervaring dat Google Ads voor hen als natuurlijke habitat aanvoelt.
Meer informatie over google ads uitbesteden.
- Google Ads gecertificeerd
- Google Ads voor webshops
- Google Ads voor B2B & leadgeneratie
- Google Shopping (i.c.m. met CSS)
- Ook voor Google Ad Grants (non-profit)