Tip: Hét alternatief voor Google Optimize & A/B-testen is itClicked.nl.

Google Ads (SEA)

Hoe kun je winst meten in Google Ads?

Door:

Nino Kraus

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 specialist

Over de schrijver:

Nino Kraus

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.

  1. Google Ads gecertificeerd
  2. Google Ads voor webshops
  3. Google Ads voor B2B & leadgeneratie
  4. Google Shopping (i.c.m. met CSS)
  5. Ook voor Google Ad Grants (non-profit)

Online marketing uitbesteden?

Dankzij veel ervaring met google ads (sea) en andere onderdelen van online marketing gaan we deze uitdaging graag aan.

Contact
0%