CONTACT

Hoe kun je winst meten in Google Ads?

Door Nino Kraus op 11 juli 2024

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:

Hoe kun je winst meten in Google Ads?

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:

Hoe kun je winst meten in Google Ads?

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:

Hoe kun je winst meten in Google Ads?

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. 

Hoe kun je winst meten in Google Ads?

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 “&amp” 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!

Online marketing bureau

Online marketing uitbesteden

Met onze data-gedreven aanpak en focus op meetbare resultaten zorgen we ervoor dat jouw marketingbudget maximaal rendeert. Of het nu gaat om campagnes, slimme optimalisaties of baanbrekende innovaties met A.I., wij leveren bewezen impact. Kies voor een team dat jouw groeiambities begrijpt en samenwerkt als verlengstuk van jouw organisatie. Samen maken we online succes waar.

Datagedreven online marketing met resultaat

Wij zijn online marketing 'vakidioten', echte 'nerds'. Wij volgen alle ontwikkelingen op de voet. Ontdek wie wij zijn, waar we voor staan en wat ons bijzonder maakt.

Online marketing team
Rooza Online Marketing heet nu dofollow.
Lees hier meer.

Wij zijn dofollow.
Wegwijs in online marketing.

Wij ben jij?

Willemsplein 44-2
6811 KD Arnhem
Parkeren

dofollow BV
KVK 88435016
IBAN NL11 KNAB 0254 8654 61
BTW NL864624189B01