Dijital Pazarlama 06 Ocak 2022

Google Tag Manager (GTM) ile 1 Kez Tetiklenen Tag Oluşturma

Eren Dağlar

Google Tag Manager (GTM)’de bazı durumlarda tetiklenmesi gereken bir etiketin sadece 1 kez tetiklenmesini isteyebileceğimiz durumlar olabilir.

Örneğin:

  • Kullanıcı bir dönüşümü tamamladıktan sonra sayfayı yenilediği zaman dönüşüm etiketinin tekrar çalışmasını önlemek.
  •  Etiketin (tag) tetiklenme şartını sağlayan tetikleyicinin (trigger), farklı sayfalarda veya farklı tıklamalarda tekrar tetiklenmesini önlemek. Örnek olarak diyelim ki, kullanıcı üye girişi yapmamışsa datalayer’a login=false değeri geliyor. Üye girişi yaptığında ise datalayer’a login=true değeri geliyor. Siz eğer tetikleyicinizin tetiklenme şartını “eğer login parametresi, true değerini içeriyorsa” şeklinde yaparsanız, her bir sayfa görüntülemede bu trigger tetiklenebilir ve kullanıcı giriş yaptığı halde aynı etiketiniz çalışmaya devam edebilir.

Bu senaryolar çoğalabilir, bu tarz senaryolar için ihtiyaç, bir etiketi bir oturumda sadece bir kez tetikletmek. Başıma bu ihtiyaç ilk olarak 2.5 sene önce gelmişti ve o zamandan beri çeşitli durumlar için bu çözümü kullanıyorum.

Bir etiketi bir oturumda sadece bir kez tetikletmek için bir cookie oluşturmalıyız, bu cookie’nin içine ise öyle bir değer atamalıyız ki bu değer sayesinde etiketi bir kez tetikletmek istediğimizi Google Tag Manager’da ayarlayabilelim.

Şimdi Google Tag Manager’a girelim ve bir Custom HTML etiketi oluşturalım. Bunun içine aşağıya paylaştığım kodu yapıştıralım. Kodun ne işe yaradığını da açıklıyorum.

  • Bu kod ile, isFirstPageView adında bir cookie oluşturuyoruz.
  • Bu cookie’nin değeri eğer “undefined” olursa, henüz bu cookie bir değer almamış demektir. Yani cookie, tarayıcıya kaydolmamış, siteye girilmemiş demektir.
  • Bu cookie’nin değeri “undefined” olduğunda, kullanıcı ilk sayfa görüntülemesini yapmış demektir. Bu sebeple cookie’nin değerini “true” yapıyoruz. Yani isFirstPageView değeri true oluyor.
  • Bu cookie’nin değeri eğer “true” ise yani kullanıcının tarayıcısına bu cookie düşmüşse, bir sonraki sayfa görüntülemesinde değerini “false” yapıyoruz. Kullanıcı birden fazla kez sayfa görüntüleme yaptığı için artık cookie’de, isFirstPageView = false değerini oluşturmuş oluyoruz.

<script>
function setCookie(name, value, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = “expires=”+ d.toUTCString();
document.cookie = name + “=” + value + “;” + expires + “;path=/”;
}

function getCookie(name) {
var cookies = document.cookie.split(“;”),
toReturn;

for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
if (cookie.indexOf(name + “=”) === 0) {
toReturn = cookie.substring((name + “=”).length, cookie.length);
}
}

return toReturn;
}

(function() {
var pageviewCount = getCookie(“isFirstPageView”);

if (typeof pageviewCount === “undefined”) {
pageviewCount = true;
} else {
pageviewCount = false;
}

setCookie(“isFirstPageView”, pageviewCount);

})();
</script>

cookie html

Örneğin, kullanıcı /tesekkurler sayfasına düştü diyelim ve sizin de bu sayfa için dönüşüm sayan etiketiniz var diyelim. Kullanıcı bu sayfaya ilk geldiği anda yukarıda paylaştığım Custom HTML etiketinini de tetikletmemiz gerekir. Tetiklettiğimiz zaman isFirstPageView cookie’sinin değeri true olacak. Ardından kullanıcı sayfayı yenilese veya aynı oturumda bir kez daha gelse bu sayfaya, bir daha dönüşüm etiketimizin tetiklenmemesi için şu işlemi yapmalıyız:

  • Dönüşüm etiketimizin tetikleyicisini açıp tetiklenme şartlarına ek olarak şu şartı eklemeliyiz. “isFirstPageView eğer true değerini içeriyorsa” 
    • Bu şekilde sadece kullanıcı dönüşümü ilk gerçekleştirdiği anda dönüşüm sayan etiketiniz çalışacak, diğer görüntülemelerde  isFirstPageView cookie’sinin değeri false olacağı için bir daha tetiklenmemiş olacak.

isfirstpageview cookie value -2

isfirstpageview cookie value -1

Şimdi bu şekilde bir tetikleyicini nasıl yapacağımıza bakalım.

Artık cookie’ye değer atadığımız için şimdi o değeri Google Tag Manager’da bir değişkende depolayabiliriz.

Değişkenler (variables) menüsünden yeni bir değişken oluşturun, türünü birincil taraf çerezi (first party cookie) seçin ve oluşturduğumuz cookie’nizin adını yazın.

cookie trigger

Bu şekilde sadece 1 kere istediğiniz tag’i tetikletebilirsiniz. Görseldeki gibi koşul sağlamanız yeterli olacaktır.

 

Yararlandığım kaynak

YouTube kanalımıza abone olun;

https://www.youtube.com/c/boosmart

Instagram hesabımızı takip edin;

https://www.instagram.com/boosmartcom/

Telegram kanalımıza katılın;

https://t.me/boosmart

Diğer içeriklerimizi de inceleyin:

https://boosmart.com/tr/blog/

Dijital Pazarlama 29 Aralık 2021

Google Ads Script – Kampanya Harcama Anomalileri

Eren Dağlar

Google Ads’te kampanyaların harcamaları, akıllı teklif stratejilerilerinden özellikle Hedef ROAS (Target ROAS) ve Hedef EBM(Target CPA) kullanıyorsanız kampanyanın performans trendine göre ani yükselişlere veya azalışlara gebe olabiliyor.  Birden çok hesabınız ve her hesabınızda onlarca kampanya olması durumunda bu anomalileri her gün tespit edebilmeniz imkansız. Bu yazımda, Brainlabs sitesinden bulduğum ve yaklaşık 1.5 senedir kullandığım bir Google Ads Script inden bahsedeceğim.

Benim kullandığım şekilde bana her gece 11’de kampanyaların bugünkü harcamasının, önceki 3 günlük harcama ortalamasının %40 fazlası veya altında ise size bu şartı sağlayan kampanyaları aşağıadaki gibi mail atıyor.

googleads_spend_checker

Kodu istediğiniz şekilde konfigüre edebilirsiniz. İngilizce açıklamaları Türkçeleştirdim.

Aşağıdaki kodda sizin konfigürasyon yapabileceğiniz yerleri kırmızı ile işaretledim. Bunun dışındaki yerlere dokunmayınız. Google Ads hesabınızda Scriptler bölümüne aşağıdaki script’i ekleyebilirsiniz. Script’inizin çalışma saati her gün gece 11 olsun derim. Geç bir saat vermeliyiz ki bugünkü harcamaları yeterince çekebilsin.

 

/**
*
* Change in Campaign Spending Alert
*
*
*
* Version: 1.0
* Google AdWords Script maintained on brainlabsdigital.com
*
**/

function main() {
//Konfigurasyonlar

var campaignNameDoesNotContain = [];
// Kontrol etmesini istemediğiniz kampanyalar için kullanabilirsiniz.
// Örneğin GDN içeren kampanyaları kontrol etmesini istemezseniz “GDN” yazabilirsiniz.,
// Örneğin “GDN”,”PLA” yazarsanız, hem GDN hem de PLA içeren kampanyaları kontrol etmez.
// Tüm kampanyaları kontrol etmesini istiyorsanız olduğu gibi bırakınız.

var campaignNameContains = [];
// Kontrol etmesini istediğiniz kampanyalar için kullanabilirsiniz.
// Örneğin SRCH içeren kampanyaları kontrol etmesini isterseniz “SRCH” yazabilirsiniz,
// Örneğin SRCH ve DSA içeren kampanyaları kontrol etmesini istersenzi “SRCH”,”DSA” yazabilirsiniz.
// Tüm kampanyaları kontrol etmesini istiyorsanız olduğu gibi bırakınız.

var addressesToNotify = [];
// Uyarıları göndermek istediğiniz mail adreslerinizi yazacağınız yerdir:
// [‘[email protected]’, ‘[email protected]’]
// [‘[email protected]’]

//////////////////////////////////////////////////////////////////////////////
// Thresholds

var percentageDifferenceSpend = 40;
// Pozitif değer yazılmalıdır.
// Örnek olarak 40 yazarsanız, kampanyanızın bugünkü harcaması, ortalamaya göre %40 fazla veya az ise mail atar.

var averageSpendMinimumThreshold = 100.00;
// Kampanya harcaması için belirlediğiniz ortalamadır. 100 TL yaparsanız, ortalama harcaması 100 TL ve üzeri olan kampanyaları kontrol eder.

var earliestHour = 22;
// Script’in çalışacağı en erken saati belirlediğiniz yerdir. Script’in gün içinde yeterli datayı toplaması için burayı geç bir saat belirleyiniz.

//////////////////////////////////////////////////////////////////////////////
// Advanced settings

var timePeriod = 3;
// Kampanyaların kaç günlük harcamasının ortalamasını alacağını belirlediğiniz yerdir.

// Örnek olarak 3 yaparsanız, her kampanyanın 3 günlük harcamasının ortalamasını alır ve belirlediğiniz anomali yüzdesine göre mail atar.

//////////////////////////////////////////////////////////////////////////////
// Değiştirmemeniz gereken kodlar aşağıdadır.

// Validate input
var validated = validateInput(
addressesToNotify,
percentageDifferenceSpend,
averageSpendMinimumThreshold,
earliestHour,
timePeriod
);

if (validated !== true) {
throw validated;
}

// Create date strings for AWQL query and data comparison
var dates = makeDates(timePeriod);

// Check if it’s too early to run the script or not
if (dates.currentHour < earliestHour) {
Logger.log(‘Too early for code, need coffee.’);
return;
}

// Get the IDs of the campaigns to look at
var ignorePausedCampaigns = true;
var activeCampaignIds = getCampaignIds(campaignNameDoesNotContain, campaignNameContains, ignorePausedCampaigns);

// Construct the AWQL query using the campaign IDs and dates
var query = constructQuery(activeCampaignIds, dates);

var queryReport = AdWordsApp.report(query);

// Calculate sum of spend today and historically by campaign ID
var costs = calculateCostByCampaign(queryReport, dates);

Logger.log(“Got the costs for all campaigns”);

// Generate a dictionary of overspending campaigns
var overSpendingCampaigns = checkPercentageChange(costs, averageSpendMinimumThreshold, timePeriod, percentageDifferenceSpend);

// Do nothing if there are no overspending campaigns
if (Object.keys(overSpendingCampaigns).length === 0) {
Logger.log(‘No overspending campaigns.’);
return;
}

Logger.log(‘Overspending campaigns: ‘ + JSON.stringify(overSpendingCampaigns));

// Notify contacts if there are overspending campaigns
notifyContact(addressesToNotify, overSpendingCampaigns, averageSpendMinimumThreshold);
Logger.log(“Email sent.”);
}

function validateInput(addressesToNotify,
percentageDifferenceSpend,
averageSpendMinimumThreshold,
earliestHour,
timePeriod
) {

if (addressesToNotify.length === 0) {
return ‘Please provide at least one email address to notify.’;
}

if (percentageDifferenceSpend <= 0) {
return ‘Please provide a positive percentage difference spend.’;
}

if (averageSpendMinimumThreshold <= 0) {
return ‘Please provide a positive average spend minimum threshold.’;
}

if (earliestHour > 23 | earliestHour < 0) {
return ‘Please provide an earliest hour between 0 and 23 inclusive.’
}

if (timePeriod < 1) {
return ‘Please provide a time period of at least one day.’
}

return true;
}

function notifyContact(addresses, overSpendingCampaigns, threshold) {
var accountName = AdWordsApp.currentAccount().getName();
var subject = accountName + ‘ | Spend Checker Script | Campaigns have exceeded your spend change threshold.’;
var body = ‘The following campaigns have exceeded the ‘ + threshold + ‘% spend threshold:\n\n’;

var campaignIds = Object.keys(overSpendingCampaigns);

for (var i = 0; i < campaignIds.length; i++) {
var campaignId = campaignIds[i];
var campaign = overSpendingCampaigns[campaignId];
var campaignName = campaign.campaignName;
var percentageChange = campaign.percentageChange.toFixed(2);
var spendToday = campaign.today.toFixed(2);

body += (i+1) + ‘. \nName: ‘ + campaignName + ‘\n’ +
‘ID: ‘ + campaignId + ‘\n’ +
‘Change(%): ‘ + percentageChange + ‘\n’ +
‘Spend today (TL): ‘ + spendToday + ‘\n\n’;
}

MailApp.sendEmail(addresses.join(‘,’), subject, body);
}

function checkPercentageChange(costs, spendThreshold, timePeriod, percentageThreshold) {
var campaignIds = Object.keys(costs);

return campaignIds.reduce(function(overspendingCampaigns, campaignId){
var campaign = costs[campaignId];
var averageSpend = campaign.sumTimePeriod / timePeriod;
var spendToday = campaign.today;

if(averageSpend < spendThreshold){
return overspendingCampaigns;
}

var percentageChange = ((spendToday – averageSpend) / averageSpend) * 100;

if (Math.abs(percentageChange) > percentageThreshold) {
campaign[‘percentageChange’] = percentageChange;
overspendingCampaigns[campaignId] = campaign;
}

return overspendingCampaigns;
}, {});
}

function makeDates(timePeriod) {
var millisPerDay = 1000 * 60 * 60 * 24;
var timeZone = AdWordsApp.currentAccount().getTimeZone();

var now = new Date();
var dateInPast = new Date(now – ((timePeriod + 1) * millisPerDay));

var todayHyphenated = Utilities.formatDate(now, timeZone, ‘yyyy-MM-dd’);
var todayFormatted = todayHyphenated.replace(/-/g, ”);
var currentHour = Utilities.formatDate(now, timeZone, ‘H’);

var dateInPastFormatted = Utilities.formatDate(dateInPast, timeZone, ‘yyyyMMdd’);

return {
‘todayHyphenated’: todayHyphenated,
‘todayFormatted’: todayFormatted,
‘dateInPastFormatted’: dateInPastFormatted,
‘currentHour’: currentHour,
};

}

function constructQuery(activeCampaignIds, dates) {
var currentHour = dates.currentHour;
var todayFormatted = dates.todayFormatted;
var dateInPastFormatted = dates.dateInPastFormatted;

var query =
‘SELECT CampaignName, CampaignId, Cost, HourOfDay, Date ‘ +
‘FROM CAMPAIGN_PERFORMANCE_REPORT ‘ +
‘WHERE CampaignId IN [‘ + activeCampaignIds.join(‘,’) + ‘] ‘ +
‘AND CampaignStatus = ENABLED ‘ +
‘AND HourOfDay < ‘ + currentHour + ‘ ‘ +
‘DURING ‘ + dateInPastFormatted + ‘,’ + todayFormatted;

Logger.log(‘AWQL Query: ‘ + query);

return query;
}

function calculateCostByCampaign(report, dates) {
var reportRows = report.rows();
var costs = {};

while(reportRows.hasNext()) {
var row = reportRows.next();
var cost = parseFloat(row.Cost);
var campaignId = row.CampaignId;

if (costs[campaignId] === undefined) {
costs[campaignId] = {
‘today’: 0,
‘sumTimePeriod’: 0,
‘campaignName’: row.CampaignName,
}
}

if (row.Date === dates.todayHyphenated) {
costs[campaignId].today += cost;
} else {
costs[campaignId].sumTimePeriod += cost;
}
}

return costs;
}

function getCampaignIds(campaignNameDoesNotContain, campaignNameContains, ignorePausedCampaigns) {
var whereStatement = “WHERE “;
var whereStatementsArray = [];
var campaignIds = [];

if (ignorePausedCampaigns) {
whereStatement += “CampaignStatus = ENABLED “;
} else {
whereStatement += “CampaignStatus IN [‘ENABLED’,’PAUSED’] “;
}

for (var i=0; i<campaignNameDoesNotContain.length; i++) {
whereStatement += “AND CampaignName DOES_NOT_CONTAIN_IGNORE_CASE ‘” + campaignNameDoesNotContain[i].replace(/”/g,’\\\”‘) + “‘ “;
}

if (campaignNameContains.length == 0) {
whereStatementsArray = [whereStatement];
} else {
for (var i=0; i<campaignNameContains.length; i++) {
whereStatementsArray.push(whereStatement + ‘AND CampaignName CONTAINS_IGNORE_CASE “‘ + campaignNameContains[i].replace(/”/g,’\\\”‘) + ‘” ‘);
}
}

for (var i=0; i<whereStatementsArray.length; i++) {
var campaignReport = AdWordsApp.report(
“SELECT CampaignId ” +
“FROM CAMPAIGN_PERFORMANCE_REPORT ” +
whereStatementsArray[i] +
“DURING LAST_30_DAYS”);

var rows = campaignReport.rows();
while (rows.hasNext()) {
var row = rows.next();
campaignIds.push(row[‘CampaignId’]);
}
}

if (campaignIds.length == 0) {
throw(“No campaigns found with the given settings.”);
}

Logger.log(campaignIds.length + ” campaigns found”);
return campaignIds;
}

 

Yararlandığım kaynaklar:

Brainlabs

YouTube kanalımıza abone olun;

https://www.youtube.com/c/boosmart

Instagram hesabımızı takip edin;

https://www.instagram.com/boosmartcom/

Telegram kanalımıza katılın;

https://t.me/boosmart

Diğer içeriklerimizi de inceleyin:

https://boosmart.com/tr/blog/

Dijital Pazarlama 16 Kasım 2021

Session Storage ve Tag Manager İle Subdomain’e Veri Aktarımı

Eren Dağlar

Session storage birçok web analytics vakasında işinize yarayabilir olabilir, bu yazıda yaşadığım vaka üzerinden ilerleyeceğim.
Diyelim ki trafik yolladığımız site ile kullanıcıların lead olmasını sağladığımız site farklı. Örneğin reklam yatırımını  “www.sitem.com” adresine yapmak durumundayız. Kullanıcı form doldurmak istediği zaman onu www.kayit.sitem.com adresine yönlendirmek durumundayız diyelim. Normalde bu kullanıcı deneyimi pek kullanıcı dostu bir deneyim değil ama bazı websiteleri bu şekilde hazırlıyor altyapılarını.

Ve istiyoruz ki kullanıcı subdomain adresine yönlendirilip orada form doldurduktan sonra, CRM’e ben bu kullanıcının hangi trafik kaynağını kullanarak geldiğini de yazayım. Bu durumda, kullanıcı ana domain’e geldiği zaman aslında trafik kaynaklarını URL’de görürüz. Fakat ana domain’de bir sayfa değişimi gerçekleştiği zaman URL’deki parametreler ortadan kalkacak ve kullanıcı form doldurmak için subdomain’e yönlendirildiği zaman bir şekilde ana domain ile subdomain’i konuşturmamız gerekecek.

İhtiyacımız olan şeyler Session Storage kullanımı ve Javascript ile ana sitede HTML’i manipüle etmek.

Session Storage, bir kullanıcının websitenize girip daha sonra sekmeyi veya tarayıcıyı kapatana kadar olan sürede – yaklaşık olarak bir oturum süresinceye kadar – oluşturduğunuz parametre ve o parametrelere karşılık değerleri kayıt altında tuttuğunuz bir web depolama özelliğidir. Cookie‘lere (çerezler) benzer. Bildiğim kadarıyla cookie’lerde bir bitiş tarihi ayarlayabilirken, session storage verileri tarayıcı veya sekme kapandığı anda kaybolur.

Google Tag Manager’da UTM Parametrelerinin Değerlerinden Değişken Oluşturma

Ana domain’e kullanıcı yolladığımız için kullanıcı şöyle bir url’e tıkladı diyelim:
boosmart.com/?utm_source=facebook_feed
&utm_medium=cpc&utm_campaign=Conversion_Prospecting

Kullanıcı sitede birkaç sayfa gezdikten sonra URL’deki bu UTM bilgileri gitmiş olacak. İşte bu bilgileri depolamayı ve subdomain’e aktarmayı Session Storage kullanarak halledeceğiz.
Şimdi kullanıcı siteye geldiği anda URL’deki UTM parametrelerini, Google Tag Manager‘da değişkenlere atayalım.

GTM’de soldaki menüden Variables tabına tıklayın ve URL türünde değişken oluşturmayı seçin. Ardından aşağıdaki şekilde konfigürasyonlarını yapabilirsiniz. Örnek olarak sadece utm_campaign’i koydum. utm_source ve utm_medium için de aynı adımları tekrarlayıp toplamda 3 adet değişken oluşturmalısınız. Veya kaç tane utm parametre verisini takip etmek istiyorsanız değişkene atamak istediğiniz her biri kadar değişken oluşturmalısınız.

Google Tag Manager'da utm_source verisini değişkene atama

Google Tag Manager’da Session Storage Değerleri Oluşturma

Bu özelliğin sadece reklamdan gelen kullanıcı için tetiklenmesini istiyoruz. Reklamı da ana domain’e yönlendiriyorduk. Aşağıdaki trigger, utm parametleri varsa tetiklenecek şekilde ayarlı. Yani kullanıcı reklamdan geldiği zaman çalışacak. Bir de  Page Hostname‘den, subdomain adımızı hariç tutuyoruz ki bu tag subdomain’de de tetiklenmesin. Sadece ana domainde tetiklensin.

Google Tag Manager'da UTM Verisi Boş Değilse Tetiklenecek Trigger Oluşturma

Bu arada Google Ads’te auto-tagging kullanıyorsanız utm parametrelerine ihtiyaç duymayacağınız için, bir lead’in kaynak bilgilerini CRM‘e aktarmak için Google Ads Value Tracking parametrelerini ayarlamanız gerekmektedir. Eğer Google Ads Value Tracking özelliğini kullanıyorsanız yine UTM parametrelerinden nasıl GTM’de değişken oluşturduysak aynı mantık ile Value Tracking parametreleri için de oluşturabilirsiniz. Ben şu an herkesin aşina olduğu UTM üzerinden ilerliyorum.
Google Ads Value tracking özelinde de ayrı bir blog yazısı oluşturacağım. Doğru kullanımda sağladığı katkı inanılmaz iyi oluyor.

Tag’imiz de aşağıdaki gibi olacak. URL’de UTM parametreleri varsa bu tag çalışacak ve UTM’deki parametre verilerinden oluşturmuş olduğumuz değişkenlerin içindeki verileri alıp Session Storage’a değer ekleyecek.

Google Tag Manager'de Session Storage Verileri Oluşturma

Aşağıda çalışma örneğini görebilirsiniz. Reklama tıklayıp ana sayfaya düştüm. Sonra birkaç sayfa gezdim ve URL’de artık UTM parametresi kalmadı. Fakat Session Storage, geldiğim kaynak bilgilerini kayıt altına aldı.

Session Store Çalışma Örneği

Google Tag Manager’da Session Storage Verilerinden Değişken Oluşturma

GTM’de yine soldaki menüden Variables tabına geliyoruz ve custom javascript türünde bir değişken oluşturuyoruz. Aşağıdaki kod, Session Storage içinde yer alan parametrelerin değerlerini çekip Variables menüsünde oluşturduğumuz değişkene aktarmayı sağlıyor. Aşağıda sadece utm_campaign için bir ekran görüntüsü koydum. Yukarıdaki adımlarda session storage’e aktardığınız diğer parametreler için de aynı adımları tekrarlayınız. Yani utm_medium, utm_source, utm_campaign verilerini toplayacaksak Session Storage’dan, toplam 3 adet aşağıdaki gibi değişken oluşturmamız gerek.

Google Tag Manager'da Session Storage Değerlerini Okuma
Google Tag Manager’da Subdomain’e Session Storage Verilerini Aktarma

Artık kullanıcının hangi kanaldan geldiği verilerini Session Storage tutabiliyoruz ama kullanıcı ana domain üzerinden bir butona veya linke tıklayıp subdomain’imize gidince oraya bu bilgileri aktarmamız lazım. Bunu da şöyle yapabiliriz:

Ana domain’den, subdomain’e giden her link’i GTM’den manipüle edeceğiz ve linkin sonuna her kullanıcı özelinde otomatik olarak, ref parametreleri yerleştireceğiz. Böylelikle kullanıcı subdomain’e giden bir linke tıkladığında aşağıdaki gibi bir link oluşacak. Kullanıcı hangi reklam kaynağından geldiyse ona göre dinamik olarak değişecek.
subdomain.boosmart.com/?ref_source=facebook_feed&
ref_medium=cpc&ref_campaign=Conversion_Prospecting

Şimdi aşağıdaki gibi trigger oluşturalım. Click URL, ana domainden subdomain’e giden link’i içeriyor. Page Hostname ise ana domain’i içeriyor. Yani bu trigger, kullanıcı ana domainde iken eğer subdomain’e gitmek isterse tetiklensin anlamı taşıyor.

Google Tag Manager Click Trigger

Tag’imiz de aşağıdaki gibi olacak. Önce querySelector ile ana domain’den subdomain’e verilen tüm linkleri topluyoruz ve links adlı bir değişkene atıyoruz.

Daha sonra linkimizin sonuna eklemek istediğimiz parametreleri yazıyoruz addstring değişkeni oluşturarak. Bir önceki adımda Session Storage’tan çektiğimiz verileri, değişkenlere atamıştık GTM’de. Şimdi o değişkenleri kullanarak parametrelerimizi aşağıdaki gibi oluşturuyoruz.

Daha sonra bir döngü oluşturuyoruz ve ana domain’den subdomain’e yönlendirmek için eklenen her “href” özelliğini manipüle etmek üzere linklerimizin sonuna, addstring değişkenindeki cümleyi eklemiş oluyoruz.
Örnek olarak şöyle bir link oluşmuş oluyor:
subdomain.boosmart.com/?ref_campaign=Conversion_Prospecting
&ref_medium=cpc&ref_source=facebook_feed

Google Tag Manager a href linklerini değiştirmek
Kullanıcının subdomain’inize yönlendirikten sonra birkaç sayfa gezip daha sonra kayıt olma senaryosu da olabilir. Bu durumda URL’den ref parametre verileri kaybolacağı için, aynı ana domainde yaptığımız gibi subdomain’iniz için de URL’deki ref parametrelerinden Session Storage kaydı oluşturabilirsiniz. Daha sonra bir kullanıcı form doldurup kayıt olduğu zaman, yazılımcınız CRM’e veri gönderirken Session Storage’tan çekeceği bilgiler ile ilgili kullanıcının hangi reklam kaynağından, kampanyasından geldiğini CRM’e kaydetme imkanını edinmiş olacak. Gerisi artık yazılımcının işi 🙂

Yararlandığım kaynaklar:

https://stackoverflow.com/questions/58991043/overwrite-utm-parameter
https://www.simoahava.com/analytics/two-ways-to-persist-data-via-google-tag-manager/

YouTube kanalımıza abone olun;

https://www.youtube.com/c/boosmart

Instagram hesabımızı takip edin;

https://www.instagram.com/boosmartcom/

Telegram kanalımıza katılın;

https://t.me/boosmart

Diğer içeriklerimizi de inceleyin:

https://boosmart.com/tr/blog/

Dijital Pazarlama 15 Ekim 2021

Performance Max: Reklam Kampanyalarının Verimliliğini En Üst Seviyeye Çıkarın

Ayşe Nur Akyüz

Google Ads tarafından yeni bir kampanya türü olarak duyurulan Performance Max, pazarlama ve reklamcılık alanında yeni bir yükselen yıldız olma yolunda ilerliyor.

Performance Max kampanyası ile ilgili tüm sorularınızın cevabını yazımızın devamında bulabilirsiniz.

Performance Max Kampanyası Nedir?

Performance Max, makine öğrenimini kullanarak bütün Google envanterlerinde performansınızı en üst düzeye çıkarmayı hedefleyen bir kampanya türüdür.

Bu kampanya ile daha fazla dönüşüm odaklı müşteri kazanabilir ve tüm Google Ads verilerine erişim sağlayabilirsiniz. Ayrıca düşük bütçe ile makine öğrenimi teknolojisinden yararlanarak hedef müşteri kitlenizin davranışlarını anlık olarak takip edebilirsiniz.

Elde ettiğiniz hedef kitle sinyallerinden gelen değerlerle otomasyonu yönlendirebilir ve kampanya dönemini hızlandırabilirsiniz.

Performance Max, hali hazırda Google Ads envanterlerinde kaçırmış olduğunuz potansiyel müşterilerinizi otomasyona yönlendirerek onları kazanmanızı sağlar.

Ayrıca, yeni bir kampanya deneyimi kullanarak iş hedeflerinizi odak noktasına alır ve otomasyonu direk olarak hedeflerinize yönlendirerek Google Ads performansınızı en üst düzeye çıkartır.

Performance max hedeflemesi dönüşüm odaklı müşteri kitlesini önceliklendirir ve böylece sizlere daha fazla potansiyel müşteri, online satış ve site ziyareti sağlar.

Performance Max, bir kampanya özelinde birden çok hedefleme yapmanıza olanak sağlar ve böylece otomasyonu en yüksek getiri sağlayacak şekilde yönlendirebilirsiniz.

Performance Max Nasıl Çalışır?

Şimdi gelelim kampanyanın nasıl çalıştığına!

Kampanya hedefiniz doğrultusunda aşağıdaki maddeleri sağlayabiliyor olmanız gerekir:

  • Müşterileriniz için belirlediğiniz yeni dönüşüm hedeflerini kullanarak oluşturduğunuz pazarlama/performans hedeflemeleri
  • Metin, resim, ve video kaynakları

 

Yayınlar

  • Google My Business (isteğe bağlı)
  • Google Merchant Center (yakında gelecek)
  • Dinamik Reklam Akışları
  • İş Verisi Özet Akışları

 

Sinyaller

  • Yeniden pazarlama listelerinin dahil olduğu birinci taraf hedef kitlesi
  • Özel hedef kitlenin dahil olduğu Google verileri
  • Coğrafi Hedefler
  • Bütçe

 

Sağladığınız hedeflemeler doğrultusunda reklamlar Arama, Haritalar, Görüntülü Reklam Ağı, Gmail , Keşfet Özet Akışı, YouTube ve Gelen Alışveriş reklam envanterinde otomatik olarak yayınlanacaktır.

Reklamlar Nasıl Görünüyor?

Performance Max kampanyalarında Search, Display, Discover, Gmail ve YouTube reklamlarının nasıl göründüğünü görselde inceleyebilirsiniz.

Performans Sonuçlarını Değerlendirme

Performans sonuçlarına göre bakılacak veriler ise şu şekildedir:

  • CPA / ROAS 
  • Müşteri Dönüşüm Oranları 
  • Bütçe Kullanımı

Hedeflemelerinize göre performans dağılımlarına bakmak da ayrıca yardımcı olacaktır.

 

Dijital Pazarlama 19 Ağustos 2021

Google Ads Dönüşüm Kurulumu – GTM ile Server Side Tagging

Eren Dağlar

Google’da, Facebook gibi dönüşümleri GTM Server Side üzerinden kurabilmemiz için tag entegrasyonu geliştirdi. İşin iyi tarafı, şimdilik Facebook Conversion API kurulumu kadar zor değil. Google Ads Dönüşüm kurulumunu GTM Server Side ile yapmamız için ihtiyaç duyacaklarımız:

  • Google Analytics 4
  • Google Tag Manager Server Side Container
  • Google Ads Conversion Tag
  • Google Ads Conversion Linker
  • Google Ads Conversion Tag’e eklenecek değişkenler.

Ayrıca, GTM ile Facebook Conversion API için ücretsiz Udemy kursuma buraya tıklayarak kayıt olabilirsiniz.

GTM Server Side Container Kurulumu

Eğer daha önce Server Side container kurmamışsanız bu adımı uygulayın. Kurmuşsanız geçebilirsiniz.
Öncelikle Google Tag Manager’da Server container oluşturacağız. Server container’ımızın çalışabilmesi için ise Google Cloud Platform üzerinden server yaratacağız.

Tag Manager hesabınızda Admin > Container > + butonu yolunu takip ederek aşağıdaki gibi container tipini Server olarak işaretleyin.

Create butonuna bastıktan sonra karşınıza aşağıdaki gibi bir pencere çıkacak. Mavi butona tıklayın. Tıkladıktan sonra eğer Google Cloud Platform’da bir billing account hiç oluşturmamışsanız bunu oluşturmanız istenecek. İlk oluşturduğunuzda kredi kartı bilgilerinizi girmek gerecek ama 300 dolar hediye edecek size. Bu hediye, server kurmaya ve denemeleri yapmaya hatta bir süre kullanmaya rahatlılıkla yeter.

Eğer Google Cloud Platform’da billing account oluşturma işlemini başarıyla tamamlarsanız aşağıdaki pencereyi göreceksiniz. My Billing Account seçili olacak. Artık mavi butona basıp Google Cloud Platform’da server oluşturmuş olacağız.

Aşağıdaki pencereyi gördüğünüzde gerçekten birkaç dakika beklemeniz gerekecek.

Ve server’ımız başarıyla oluşturuldu. Bu bilgilere her zaman Google Tag Manager Server Container içinde sağ üstteki GTM-XXXXXXX numarasının olduğu yere tıklayarak bakabilirsiniz. İleride ihtiyacımız olacak.

Google Cloud Platfrom Project ID’ye tıklayarak server’ınızın oluşturulduğu paneli inceleyebilirsiniz. Bizim şimdilik bu kısımda bir işimiz yok.

Default URL ise artık server’ınızın URL’i.

Ayrıca server oluşturma hakkında kafanıza takılan sorular var ise Simo Ahava’nın Youtube videosunu da bu linkten izleyebilirsiniz.

GTM Web Container’da GA4 Tag’ini Kurma

GA4 property’sini, Google Analytics’te kolayca oluşturabilirsiniz. Nasıl oluşturulacağı bu içeriğimizin konusu değil, onu da dahil edersek çok daha uzun bir içerik olacaktı. Bu sebeple eğer oluşturmadıysanız nasıl oluşturacağınıza dair bir youtube linki bırakıyorum.

Analytics’e, GTM server’dan akışı sağlamak için, Web Container içindeki tag’imizi de server için yapılandırmamız gerekecek. Web container içinde GA4 Configuration tag tipini seçip, Analytics’te oluşturduğunuz GA4 property’sinin measurement ID’niz girdikten sonra Send to server container kısmını işaretleyin ve ilgili alana Server URL‘inizi girin. Ardından, trigger olarak All Pages‘i seçin.

web_containerda_ga4_ayarlari

Server URL’inize, Server Container’ı içinde sağ üstteki GTM-XXXXXXX numarasının olduğu yere tıklayarak bakabilirsiniz. Default URL, server URL’inizdir.

GTM Web Container’da GA4 Event Tag’ini Kurma

Web container’da kuracağımız event sayesinde Server Container’da Google Ads Conversion Tag’ine veri aktarımı yapabileceğiz. Bunun için ben purchase event’ini örnek göstereceğim. Çünkü Google Ads’te bunu dönüşüm olarak sayacağım.

Web container’da yeni tag oluşturun ve tag tipini Google Analytics: GA4 Event olarak seçin. Configuration Tag kısmına, GA4 All Pages tag’inizi ekleyin.

Event name’i purchase olarak girin. Daha sonra Event Parameters alanına Google Ads’e göndermek için seçtiğiniz parametreleri girin. Benim gibi aşağıdaki şekilde yaparsanız, GA4’e de veriler gideceği için shipping, tax gibi verileri göremiyor olacaksınız GA4 property’sinde. Ben Universal Analytics üzerinden ecommerce takibi yaptığım için ve GA4’ü sadece Server üzerinden veri gönderimi yapabilmek için kullandığımdan dolayı, Google Ads’e gitmesi için ihtiyacım olan verileri girdim, bu yüzden tax,shipping, coupon gibi parametreler yok, çünkü GA4’ü amaç değil araç olarak kullanmayı tercih ediyorum. Asıl takipleri de halen Universal Analytics üzerinden gerçekleştiriyorum.

currency parametresi: TRY olarak girdim.

value parametresi: enhanced ecommerce datalayer’ından çektiğim sipariş tutarı verisini girdim.

transaction_id: enhanced ecommerce datalayer’ından çektiğim transaction id verisini girdim.

items: enhanced ecommerce datalayer’ından çektiğim satılan ürün verilerini girdim.

web_containerda_ga4_event_ayarlama

Trigger olarak ise purchase event’i datalayer’a pushlandığı zaman çalışacak şekilde ayarladım. Datalayer’ım aşağıdaki şekilde. Bu linkten aldığım datalayer’ı kullandım örnek olarak. Gerçek bir e-ticaret sitesi üzerinden test yapmadığım için örnek bir datalayer kullandım.

enhanced_ecommerce_purchase_datalayer

 

GTM Server Container’da GA4 Tag’i Kurma

Şimdi Server container’ımızı açalım. Tag kısmından Google Analytics 4’ü seçelim ve aşağıdaki gibi gerekli düzenlemeleri yapalım. Parameters to exclude özelliği çok işlevsel. GA4’e gitmesini istemediğiniz parametleri girebiliyorsunuz. Burası bilgi olarak kalsın, şimdilik yapmanız şart değil.

Trigger olarak ise aşağıdaki gibi ayarlayın. Client Name ilk aşamada gözükmeyebilir. Eğer yoksa GTM panelinde sol taraftaki Variables kısmında Built – in variables kısmından seçip aktif hale getirebilirsiniz.

Aşağıdaki trigger’ın anlamı, websitesinde Google Analytics 4’ü tetikleten herhangi bir şey olduğunda, server container‘daki GA4 Tag’ini çalıştır ve verinin server’dan gitmesini sağla demek.

GTM Server Container’da Conversion Linker Kurma

Server Container’da tag bölümünden yine yeni tag oluşturun ve tipini Conversion Linker seçin. Trigger olarak da All Pages’i ekleyin.

Conversion linker tag’ini kurmak şu işimize yarıyor.

  • Google Ads sunucusuna bir açılış sayfası işareti gönderir.
  • Sayfa URL’inde gclid parametresi varsa yani Google Ads reklamları üzerinden siteye girilmiş ise FPGCLAW  çerezini ayarlayarak tıklama kimliğini cookie’ye yazar.

gtm_server_containera_conversion_linker_ekleme

GTM Server Container’da Google Ads Dönüşüm Tag’i Kurma

Google Ads hesabınızda isterseniz test için yeni bir conversion yaratın ve Conversion ID ile Conversion Label verisini aşağıdaki gibi ekleyin. Ya da var olanın Conversion ID ve Conversion Label verisini kopyalayıp aşağıdaki gibi ekleyin.

Provide product-level sales data kısmını seçip aşağıdaki gibi yaparsanız, datalayer’ınızdan satılan ürünlerle ilgili id, price verileri de gelir. Ama bu şart değil. Önemli olanlar transaction_id, value ve currency değerleri. Ekstra veri gitmesini istiyorsanız ve datalayer’ınız doğru geliyorsa otomatik olarak verileri çekecektir.

gtm_server_containerda_google_ads_conversion_tagi

Trigger olarak ise purchase event trigger’ı oluşturun ve ekleyin. Web container’daki gibi.

purchase_event_triggeri_olusturma

 

Google Ads Dönüşüm Kurulumunun Test Edilmesi

Event, kurulumları tamamlamış olduk. Şimdi web container ve server container’ınızda preview modunu açın. Alışveriş işlemini tamamladığınızda, aşağıdaki gibi Google Ads Conversion tag’iniz tetiklenmiş olacak.

gtm_server_container_preview_mode

Üzerine tıkladığınızda aşağıdaki gibi bir HTTP Request göreceksiniz.

gtm_server_container_googleads_https_response

Daha sonra sitede console ekranını açıp cookie’lere baktığınız zaman FPGCLAW adında bir cookie göreceksiniz. Bunu conversion linker oluşturuyor ve içinde tıklama kimliğiniz yer alıyor.

Google Tag Assistant eklentisinden de conversion tag’inizin çalıştığını doğrulayabilirsiniz. Dikkat ederseniz, dönüşüm tag’ini server container’da kurmuştuk fakat içine conversion value, currency parametrelerini eklememiştik. Web container içinde kurduğumuz GA4 tag’inde bu parametreleri girdiğimiz için otomatik olarak kendisi alacak.

google_tag_assistant_google_ads

 

Yararlandığım Kaynaklar

 

——–

YouTube kanalımıza abone olun;

https://www.youtube.com/c/boosmart

 

Instagram hesabımızı takip edin;

https://www.instagram.com/boosmartcom/

 

Telegram kanalımıza katılın;

https://t.me/boosmart

 

Diğer içeriklerimizi de inceleyin:

https://boosmart.com/tr/blog/

Dijital Pazarlama

GTM ile Facebook Conversion (Dönüşüm) API Kurulumu Nasıl Yapılır?

Eren Dağlar

Udemy’den ücretsiz bir şekilde kursumuza kayıt olabilirsiniz: https://www.udemy.com/course/google-tag-manager-ile-facebook-conversion-api-kurulumu/

iOS 14.5 güncellemeleri ve ileride cookie bazlı takip sistemlerinin iyice sekteye uğraması tehlikesine karşın,  Facebook bir önlem geliştirmişti. Facebook Conversion API, Facebook Pixel’e normalde direkt browser üzerinden veriler gidiyorken yani cookie’ler ile takip sağlanıyorken artık websitesindeki eventleri direkt server üzerinden Facebook pixel’e gönderme yöntemidir. Buna Facebook Conversion API (Facebook Dönüşüm API) diyoruz. Peki Facebook Conversion API kurulumu nasıl yapılır? Uzun süren inceleme, araştırma ve denemelerimden sonra sektörde birçok insanın nasıl yapıldığını merak ettiği bu kurulumu dilimize kazandırmaktan mutluluk duyuyorum.

Aşağıda adım adım anlatıyorum.

GTM Server Side Container Kurulumu

Öncelikle Google Tag Manager’da Server container oluşturacağız. Server container’ımızın çalışabilmesi için ise Google Cloud Platform üzerinden server yaratacağız.

Tag Manager hesabınızda Admin > Container > + butonu yolunu takip ederek aşağıdaki gibi container tipini Server olarak işaretleyin.

gtm server side container oluşturulması

Create butonuna bastıktan sonra karşınıza aşağıdaki gibi bir pencere çıkacak. Mavi butona tıklayın. Tıkladıktan sonra eğer Google Cloud Platform’da bir billing account hiç oluşturmamışsanız bunu oluşturmanız istenecek. İlk oluşturduğunuzda kredi kartı bilgilerinizi girmek gerecek ama 300 dolar hediye edecek size. Bu hediye, server kurmaya ve denemeleri yapmaya hatta bir süre kullanmaya rahatlılıkla yeter.

Eğer Google Cloud Platform’da billing account oluşturma işlemini başarıyla tamamlarsanız aşağıdaki pencereyi göreceksiniz. My Billing Account seçili olacak. Artık mavi butona basıp Google Cloud Platform’da server oluşturmuş olacağız.

Google Cloud Platformda Billing Account Oluşturulması

Aşağıdaki pencereyi gördüğünüzde gerçekten birkaç dakika beklemeniz gerekecek.

google cloud platform'da server oluşturuluyor

Ve server’ımız başarıyla oluşturuldu. Bu bilgilere her zaman Google Tag Manager Server Container içinde sağ üstteki GTM-XXXXXXX numarasının olduğu yere tıklayarak bakabilirsiniz. İleride ihtiyacımız olacak.

Google Cloud Platfrom Project ID’ye tıklayarak server’ınızın oluşturulduğu paneli inceleyebilirsiniz. Bizim şimdilik bu kısımda bir işimiz yok.

Default URL ise artık server’ınızın URL’i.

Ayrıca server oluşturma hakkında kafanıza takılan sorular var ise Simo Ahava’nın Youtube videosunu da bu linkten izleyebilirsiniz.

google cloud platformda server oluşturuldu

Google Analytics 4 Eventlerini Yapılandırma

Conversion API (Dönüşüm API) süreci, aşağıdaki gibi gerçekleşecek. Web Container içinde Universal Analytics değil Google Analytics 4 ile event’lerimizi yapılandıracağız ve Facebook’a da göndereceğimiz event’leri seçeceğiz. Ardından Server Container içinde, Facebook Conversion API tag’i ile otomatik olarak GA4 event’lerini, Facebook Pixel event’lerine dönüştürmüş ve server üzerinden göndermiş olacağız.

Simo Ahava - Conversion API Facebook Process

GA4 Pageview Tag’ine Transport URL’i Girme

GA4 property’sini, Google Analytics’te kolayca oluşturabilirsiniz. Nasıl oluşturulacağı bu içeriğimizin konusu değil, onu da dahil edersek çok daha uzun bir içerik olacaktı. Bu sebeple eğer oluşturmadıysanız nasıl oluşturacağınıza dair bir youtube linki bırakıyorum.

Analytics’e, GTM server’dan akışı sağlamak için, Web Container içindeki tag’imizi de server için yapılandırmamız gerekecek. Web container içinde GA4 Configuration tag tipini seçip measurement ID’niz girdikten sonra Fields to Set kısmına “transport_url” yazıp karşısına ise server url’inizi giriniz. (yukarıdaki bahsettiğim default url) Trigger olarak All Pages seçiniz.

GA4 pageview tag'ine transport url'i girme

Server URL’inize, Server Container’ı içinde sağ üstteki GTM-XXXXXXX numarasının olduğu yere tıklayarak bakabilirsiniz. Default URL, server URL’inizdir.

Server Container’da Google Analytics 4 Tag’i Kurma

Şimdi Server container’ımızı açalım. Tag kısmından Google Analytics 4’ü seçelim ve aşağıdaki gibi gerekli düzenlemeleri yapalım. Parameters to exclude özelliği çok işlevsel. Çünkü web container’daki GA4 event tag’lerinde, Facebook’a gidecek parametler de gireceğiz az sonra. Ama bunların bazıları Google Analytics’in işine yaramayacak. Dolayısıyla onların, bu yöntemle Analytics’e gitmesini engellemiş oluyoruz.

server container içinde ga4 tag'i kurulumu

Trigger olarak ise aşağıdaki gibi ayarlayın. Client Name ilk aşamada gözükmeyebilir. Eğer yoksa GTM panelinde sol taraftaki Variables kısmında Built – in variables kısmından seçip aktif hale getirebilirsiniz.

Aşağıdaki trigger’ın anlamı, websitesinde Google Analytics 4’ü tetikleten herhangi bir şey olduğunda, server container‘daki GA4 Tag’ini çalıştır ve verinin server’dan gitmesini sağla demek.

gtm server'da client name event'i

Server Container’da Facebook Conversion API Tag’ini Kurma

Yine server container içinde iken, sol taraftaki template kısmına girelim ve Tag Template menüsündeki “Search Gallery” butonuna tıklayarak Facebook Conversion API Tag‘i seçelim ve bunu Server container’ımıza ekleyelim.

server container'da facebook conversion api template seçimi

Ekledikten sonra Tag kısmına gelip yeni tag oluşturmak istediğimizde artık Facebook Conversion API Tag’ini görebileceğiz. Bunu seçip aşağıdaki gibi boşlukları dolduralım.

facebook conversion api tag kurulumu

Facebook Business Manager’da Events Manager’da Pixel ID‘nizi ve Test Event Code‘unuzu kolayca bulabilirsiniz. API Access Token oluşturmak için Events Manager’da settings kısmında gelip aşağıdaki gibi access token oluşturabilirsiniz. Bunu kopyalayın ve Tag’inizdeki ilgili yere yapıştırın.

conversion api token oluşturma

Oluşturduğumuz Facebook Conversion API Tag’inin, trigger’ını ise aşağıdaki gibi ayarlayın. Client Name ilk aşamada gözükmeyebilir. Eğer yoksa sol taraftaki Variables kısmında Built – in variables kısmından seçip aktif hale getirebilirsiniz.

Aşağıdaki trigger’ın anlamı, websitesinde Google Analytics 4’ü tetikleten herhangi bir şey olduğunda, Facebook Conversion API tag’ini de tetiklet demektir.

Facebook Conversion API Trigger'ı Kurulumu

Eğer sadece Facebook Pixel’ine göndermek istediğiniz eventler için tetiklenmesini istiyorsanız ise aşağıdaki şekilde variable menüsünden bir lookup table değişkeni oluşturunuz. Bu içeriği, e-ticaret siteleri özelinde oluşturduğum için, e-ticaret event’leri üzerinden ilerliyorum.

Server container'da lookup table variable'ı oluşturma

Daha sonra Facebook Conversion API Tag’imiz için oluşturulan Trigger’a aşağıdaki şartı ekliyoruz. Böylece, sadece belirli event’ler GA4’te tetiklendiği zaman Facebook Pixel’e veri gidecek.

Facebook Conversion API Trigger'ı Kurulumu 2

Buraya kadarki olan bölümde Facebook pixel’e, pageview event’ini Server üzerinden gönderme işlemini tamamladık. Şimdi diğer eventlerin kurulumuna geçiyoruz.

GA4 Event Tag’leri ile Facebook Event’leri Arasındaki Uyumluluk

Nasıl oluyor da web container’da kuracağımız GA4 event’leri otomatik olarak Facebook Pixel’e gidecek diye kafanıza takılabilir. İki firma sağolsun işimizi kolaylaştıracak düzeni kurmuşlar. Web container’da kurabileceğimiz aşağıdaki event’ler, Server container’da otomatik olarak Facebook event’lerine dönüşecek. Server Container içinde kurduğumuz Facebook Conversion API tag’i bu işi otomatik olarak halledecek.

Event name in GA4 tag  Converted
by Facebook’s tag
add_payment_info AddPaymentInfo
add_to_cart AddToCart
add_to_wishlist AddToWishlist
begin_checkout InitiateCheckout
generate_lead Lead
page_view PageView
purchase Purchase
search Search
signup CompleteRegistration
view_item ViewContent

by simo ahava

Ek olarak, web container’daki GA4 event tag’lerine gireceğimiz soldaki parametreler, yine otomatik olarak Server Container’da kuracağımız Facebook Conversion API tarafından sağdaki parametrelere dönüştürülecek.

GA4 parameter name Converted by the Facebook tag
currency currency
value value
transaction_id order_id
by simo ahava

GA4 ile ViewContent Event’ini Facebook Pixel’e Gönderme

E-ticaret websitenizde enhanced ecommerce datalayer‘larınızın kurulu olduğunu düşünerek bundan sonraki sürece devam edeceğim. Google Tag Manager üzerinden daha önce enhanced ecommerce kurulumu yapmışsanız veya datalayer’dan veri alma hakkında çalışmalar yapmışsanız kolayca yapabilirsiniz.

Web container içinde Google Analytics: GA4 Event tag‘i oluşturun. Configuration Tag kısmı, GA4 pageview tag’iniz olacak.

Event Name olarak view_item değerini girin. Bu sizin e-ticaret takibinde bildiğiniz product detail event’i aslında.

Event Parameters kısımlarına ise:

x-fb-cd-content_type : product değeri alacak. Çünkü Facebook event taglerinde content type değeri hep product oluyor.

currency: Buraya, datalayer’dan aldığınız currency değerini girebilirsiniz değişken olarak. Ben statik değer olarak TRY yazdım.

value: Ürün görüntüleme sayfasında, enhanced ecommerce datalayer’ına yansıyan ürünün fiyatı tuttuğunuz değişkeni girin.

x-fb-cd-content_ids: Ürün görüntüleme sayfasında, enhanced ecommerce datalayer’ına yansıyan ürün id’sinin tutulduğu değişkeni girin.

items: Bu kısım, ecommerce ürün görüntüleme verilerin Google Analytics 4’e gitmesi için. Enhanced ecommerce datalayer’ınız eğer Universal Analytics ise datalayer yolunuz ecommerce.detail.products olacak. Eğer GA4 enhanced ecommerce datalayer’ınız var ise datalayer yolunuz ecommerce.items olacak.

Trigger kısmına da ürün sayfası görüntülendiğinde ortaya çıkan datalayer event’inizi girin. UA datalayer’ınız var ise event’iniz productdetail değerine eşit olacaktır. GA4 datalayer’ınız var ise view_item değerine eşit olacaktır bu değer.

Bunları doğru bir şekilde yaptıktan sonra server tarafında hiçbir işlem yapmanıza gerek yok. Çünkü otomatik olarak Facebook Conversion API tag’i, bunun ViewContent event’i olduğunu anlayacak ve Facebook pixel’e bu verileri gönderecek. Yukarıdaki açıklamalarda transport url‘den bahsetmiştik. Bunun sayesinde Server Container’ınıza bu veriler otomatik olarak gidiyor olacak. Ekstra bir işlem yapmaya ihtiyaç yok.

ga4 viewcontent event'i kurulumu

GA4 ile Add to Cart Event’ini Facebook Pixel’e Gönderme

Bu Add To Cart event’i olduğu için Event Name kısmına add_to_cart yazın. Event Parameters değerlerini ise yukarıdaki adımda anlattığım gibi girin.

Trigger’ınızı da aynı şekilde sitede sepete ekle butonuna basıldığı zaman çıkan datalayer’ınızın event name’ine eşitleyin.

Sitenizde add to cart event’i tetiklendiği zaman hem Google Analytics’e hem de Facebook Pixel’e veriler akacak bu şekilde. Server container’da bir işlem yapmanıza gerek yok.

ga4 add_to_cart event'i kurulumu

GA4 ile Purchase Event’ini Facebook Pixel’e Gönderme

Son adıma geldik. Aynı mantık ile tag’inizi yapılandırın. Event Name purchase olacak. Parameter Name’lere karşılık gelen değişkenlerinizi ise oluşturup giriniz.

Trigger’ınız da alışveriş tamamlandığında çıkan enhanced ecommerce datalayer’ınızdaki event name’e eşit olmalı. Bu event’in ismi genellikle purchase’dır.

ga4 purchase event'i kurulumu

Kurulumun Test Edilmesi

PageView Event Kurulumunun Test Edilmesi

Web Container’ınızı ve Server Container’ınızı preview mode‘a alın. Aynı zamanda Facebook Events Manager’daki Test Events menüsü de açık dursun.

Şimdi siteye girip önce pageview event’imiz Facebook Pixel’e server’dan gidiyor mu bakalım.

gtm server container page_view event testi

Hem GA4 property’sine hem de Facebook Pixel’e başarılı şekilde gittiğini göreceğiz.

Request tab’ına tıklayıp Facebook Conversion API seçtiğinizde aşağıdakine benzer bir pencere açılacak. Gönderdiğiniz verileri burada da görebilirsiniz. HTTP status code’un 200 olması, başarıyla gönderme işleminin yapıldığı anlamına geliyor.

gtm server container'da facebook conversion api request'ini görüntüleme

Events Manager’a da server’dan pageview event’inin geldiğini görmelisiniz.

facebook events manager server'dan gelen pageview eventi

ViewContent Event Kurulumunun Test Edilmesi

Web container’da kurduğumuz GA4 view_item event tag’i, GA4 pageview tagine eklediğimiz transport_url sayesinde, Server tarafında otomatik olarak algılanacak.

gtm server side container view_item

GA4’e göre view_item event’i otomatik olarak Facebook’un anlayacağı ViewContent event’ine dönüştürülüyordu. Aşağıda başarılı bir şekilde gittiğini görebilirsiniz. Web container’da kurduğumuz view_item event tag’inde girdiğimiz parametleri otomatik olarak algılandı ve Facebook pixel’e gönderildi. Benim datalayer’larımda bu veriler vardı. Sizinkilerde farklı veriler olacağı için tamamen aynı değerler gelmeyecektir. Bu add_to_cart ve purchase event’leri için de geçerli.

facebook events manager server'dan gelen viewcontent eventi

Add to Cart Event Kurulumunun Test Edilmesi

ViewContent ile benzer şekilde test edebileceğiniz için ekran görüntülerini aşağıda paylaşmam yeterli olacaktır.

gtm server side container add_to_cart

Facebook Events Manager Test Event kısmında ise aşağıdaki gibi gözükmekte.

facebook events manager server'dan gelen add_to_cart eventi

Purchase Event Kurulumunun Test Edilmesi

Server Container Preview’da aşağıdaki gibi görünecektir.

gtm server side container purchase

Facebook Events Manager Test Event kısmında ise aşağıdaki gibi gözükecektir.

facebook events manager server'dan gelen purchase eventi

SONUÇ

Uzun süren denemelerim ve araştırmalarımdan sonra Facebook Conversion API kurulumunu adım adım açıklayıp bu konuda dijital pazarlama ekosistemine Türkçe içerik kazandırdığım için mutluyum. Yazım hatalarım varsa affola.

Sorularınız var ise [email protected] adresine mail atabilir ya da Linkedn’den bana ulaşabilirsiniz.

 

Conversion API (Dönüşüm API) kurulumunu yapmayı öğrendiğim kaynağı paylaşıyorum. Daha detaylı, sorularınız varsa gidermenize yardım edebilir: https://www.simoahava.com/analytics/facebook-conversions-api-gtm-server-side-tagging/

 

——–

YouTube kanalımıza abone olun;

https://www.youtube.com/c/boosmart

 

Instagram hesabımızı takip edin;

https://www.instagram.com/boosmartcom/

 

Telegram kanalımıza katılın;

https://t.me/boosmart

 

Diğer içeriklerimizi de inceleyin:

https://boosmart.com/tr/blog/

Dijital Pazarlama 17 Nisan 2021

Google Ads Anahtar Kelime Eşleme Türüne Göre BigQuery Analizi

Eren Dağlar

Google Ads’te halihazırda 3 çeşit anahtar kelime eşleme türü mevcut. Sıralı eşleme, tam eşleme ve geniş eşleme. Alışveriş reklamlarının Türkiye’de arama sonuçlarından kalkmasından sonra arama ağı kampanyalarının bütçeleri arttığı için eşleme türlerine göre performansı merak ettim.  Google Ads anahtar kelime eşleme türüne göre BigQuery kullanarak performans analizi gerçekleştirdim.

Eğer siz de merak ediyorsanız, aşağıdaki adımları takip ederek uygulayabilirsiniz.

Google Ads Verilerini BigQuery’e Aktarmak

Önceki yazılarımdan bu linkteki içeriği açarak adım adım anlatımı inceleyebilirsiniz.

BigQuery SQL Sorgu 1

Sorguyu kopyalamanız için aşağıda metin olarak da paylaşıyorum. Aşağıdaki ekran görüntüsünde açıklamaları da okuyabilirsiniz.

Sorguyu çalıştırıp sonuç aldıktan sonra ‘Save Results’ kısmına tıklayıp sonuçları BigQuery tablosu olarak kaydediniz. Tablo isminizi ‘keyword_performance’ yapabilirsiniz.

dataset_name: tablonuzun ait olduğu dataset adı

YourCustomerID: Google Ads hesabınızın ID’si

sorgu 1 - google ads anahtar kelime eşleme türüne göre performans

 

SELECT
a.CriterionId, #anahtar kelimenin id’si
a.CampaignId, #ilgili anahtar kelimenin bulunduğu kampanyanın id’si
b.CampaignName, #ilgili anahtar kelimenin bulunduğu kampanyanın adı
SUM(a.Clicks) AS Clicks, #ilgili anahtar kelimelerin aldığı tıklamaların toplamı
SUM(a.Impressions) AS Impressions, #ilgili anahtar kelimelerin aldığı gösterimlerin toplamı
SUM(a.ConversionValue) as Value, #ilgili anahtar kelimelerin aldığı cironun toplamı
SUM(a.Cost) as Cost #ilgili anahtar kelimelerin aldığı harcamaların toplamı
FROM
`dataset_name.Campaign_YourCustomerID` AS b #yukarıdaki b.CampaignName buraya ait. kampanya tablosundan kampanya ismi bilgisi çekiyoruz.
JOIN
`dataset_name.KeywordBasicStats_YourCustomerID` AS a #yukarıdaki a. ile başlayanlar anahtar kelime istatistikleri tablosundan çekiliyor.
ON
a.CampaignId = b.CampaignId
AND b._DATA_DATE = ‘2021-04-08’#bu sembolik. eski kampanyaları almamak için yakın bir tarih seçtim.
WHERE
a._DATA_DATE BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 8 DAY)
AND DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY) #son 7 gündeki datalara göre analiz yapıyoruz burada.
AND b.CampaignName LIKE ‘%SRCH%’ #sadece arama ağı kampanyalarını analiz etmesi için.
GROUP BY
1,
2,
3
ORDER BY
CriterionId DESC

BigQuery SQL Sorgu 2

Aşağıdaki sorguyu çalıştırın ve çıkan sonucu yine ‘Save Results’a basarak BigQuery tablosu olarak kaydedin. Tablo ismini ‘match_types’ olarak girebilirsiniz.

SELECT distinct CriterionId, KeywordMatchType FROM `dataset_name.Keyword_YourCustomerID` group by 1,2

BigQuery'de bir sonucu tablo olarak kaydetmek.
BigQuery’de bir sonucu tablo olarak kaydetmek.

BigQuery SQL Sorgu 3

sorgu 3 - anahtar kelime eşleme türüne göre performans analizi

SELECT
c.KeywordMatchType, #2.sorguda oluşturduğumuz tablodan anahtar kelime eşleme türünü çekiyoruz.
SUM(a.Clicks) as Clicks,
SUM(a.Impressions) as Impressions,
SUM(a.Value) as Revenue,
SUM(a.Cost) as Cost,
ROUND(SUM(a.Cost) / SUM(a.Clicks),3) as CPC,
ROUND(SUM(a.Clicks) / SUM(a.Impressions),3) as CTR
FROM `dataset_name.keyword_performance` as a #1.sorgu sonucunda oluşturduğumuz tablo
join `dataset_name.match_types` as c #2.sorgu sonucunda oluşturduğumuz kablo
on a.CriterionId = c.CriterionId
where a.CampaignName like ‘%SRCH_GNRC%’
group by 1

BigQuery Analiz Sonucu

Sonuç olarak, seçtiğiniz tarih aralığına göre anahtar kelimelerinizin eşleme türüne göre performanslarını analiz edebileceksiniz.

Phrase: Sıralı eşleme

Exact: Tam eşleme

Broad: Geniş eşleme

bigquery anahtar kelime eşleme türüne göre performans analiz sonuçları

 

YouTube kanalımıza abone olun;

https://www.youtube.com/c/boosmart

Instagram hesabımızı takip edin;

https://www.instagram.com/boosmartcom/

Telegram kanalımıza katılın;

https://t.me/boosmart

Diğer içeriklerimizi de inceleyin:

https://boosmart.com/tr/blog/

Google Ads 12 Nisan 2021

BigQuery ile Google Ads – DSA’de Tetiklenen Ama Hedeflenmeyen Terimler

Eren Dağlar

Türkiye’de alışveriş reklamlarının arama sonuçlarından kaldırılmasından sonra dinamik arama ağı (DSA) kampanyalarının önemi çok arttı. Alışveriş reklamları varken, dinamik arama ağı kampanyalarına ayırdığımız bütçe, toplam aylık bütçemizin belki %15-20’sini kapsarken artık %40-45’ini kapsamaya başladı.

Dinamik arama ağı kampanyalarına bildiğiniz gibi anahtar kelime (keyword) ekleyemiyoruz. Websitemizin, organik index’inden faydalanarak kullanıcıların yaptığı aramaları alakalı açılış sayfasıyla eşleştirip reklam gösteriyor.

Google Ads‘te arama ağı kampanyalarında hedeflediğimiz bir kelime, bazen dinamik arama ağı kampanyalarında da tetikleniyor olabilir.  Şöyle bir soru geliyor aklıma. Dinamik arama ağından tetiklenen kelimelerden, benim normal arama ağı kampanyalarında hedeflemediğim var mı? Bunu analiz ederek reklam vermediğim kelimeleri bulup, bunları arama ağı kampanyalarında hedefleyebilirim.

Bu analizi yapmak için BigQuery kullandım.

Verileri Google Ads’ten BigQuery’e Aktarma

Google Ads’ten Google BigQuery’e veri aktarımını sağlayabilmek için öncelikle BigQuery Data Transfer API‘yi etkinleştirmemiz gerekiyor. Bunu yapmak için Google Cloud Platform‘da iken sol taraftaki menüden APIs & Services menüsüne gelinir ve Library’e tıklanır. Açılan sayfadaki arama kısmına BigQuery Data Transfer yazıldığında ilgili API çıkacaktır. Bunu basit bir şekilde enable edebilirsiniz.

bigquery library menüsü
bigquery library menüsü

Data Transfer API’sini aktifleştirdikten sonra BigQuery’e geçilir. Açılan sayfada sol taraftaki sekmelerden Transfers’e tıklanır.

big query'de transfer menüsüne girmek
big query’de transfer menüsüne girmek

Ardından açılan sayfadan Create Transfer’e tıklanır. Çünkü Google Ads’ten veri çekmek için bir transfer oluşturacağız.

bigquery'de transfer oluşturma
bigquery’de transfer oluşturma

Aşağıdaki adımlar takip edilerek Transfer oluşturulur. Transfer’in başarı ile tamamlanması için BigQuery’e giriş yaptığınız adresin aynı zamanda ilgili Google Ads hesabında da ekli olması gerekir.

google ads transfer konfigürasyonları
google ads transfer konfigürasyonları

 

Transferi oluşturduktan sonra, oluşturduğunuz transferin içine girip çalışıp çalışmadığını kontrol edebilirsiniz. İlk verilerin gelmesi zaman alabilir. Transfer başarılı tamamlanıyorsa başında yeşil check olur.

bigquery transfer geçmişi
bigquery transfer geçmişi

 

Transfer gerçekleştiği zaman BigQuery’de verilerin aktarıldığı dataset’in altında aşağıdaki gibi birçok tablo göreceksiniz. Bu tablolar, Google Ads’ten gelen verilerin gruplandığı yer. Biz bu tablolar arasından arama terimleriyle ilgili olan tablodan veri çekeceğiz.

bigquery google ads tablolar
bigquery google ads tablolar

BigQuery ile Google Ads Analizimizi Oluşturma

Google Ads verileriniz BigQuery’e akmaya başladıktan sonra aşağıdaki SQL komutlarıyla analizinizi yapabilirsiniz. En aşağıya kopyalamanız için de yapıştıracağım.

bigquery sql sorgusu
bigquery sql sorgusu

Sonuçlar ise aşağıdaki gibi olacak. Siz isterseniz click, conversion value gibi metrikleri de dahil edebilirsiniz. SQL üzerinden mofidiye işlemlerinizi yapabilirsiniz.

bigquery analiz sonuçları
bigquery analiz sonuçları

SQL Sorgusu

with dsa_queries as(
SELECT
query.CampaignId as qCampaignId,
campaign.CampaignName as qCampaignName,
query.Query as qQuery,
SUM(query.Impressions) as qTotalImpressions
FROM
`dataset_name.SearchQueryStats_YourCustomerID` AS query
join `dataset_name.Campaign_YourCustomerID` AS campaign
on query.CampaignId = campaign.CampaignId and campaign._DATA_DATE = ‘2021-04-09’
where campaign.CampaignName like ‘%Product%’ and Date between DATE_SUB(CURRENT_DATE(),INTERVAL 8 DAY) and DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY)
group by 1,2,3
), search_queries as (

SELECT
query.CampaignId as sCampaignId,
campaign.CampaignName as sCampaignName,
query.Query as sQuery,
SUM(query.Impressions) as sTotalImpressions
FROM
`dataset_name.SearchQueryStats_YourCustomerID` AS query
join `dataset_name.Campaign_YourCustomerID` AS campaign
on query.CampaignId = campaign.CampaignId and campaign._DATA_DATE = ‘2021-04-09’
where campaign.CampaignName not like ‘%DSA_%’ and Date between DATE_SUB(CURRENT_DATE(),INTERVAL 8 DAY) and DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY)
group by 1,2,3
order by SUM(Impressions) desc),

combinedtable as(
select
dsa_queries.qQuery,
SUM(dsa_queries.qTotalImpressions) as tImpressions
from dsa_queries
left join search_queries
on search_queries.sQuery = dsa_queries.qQuery
where search_queries.sQuery is null
group by 1
)
select * from combinedtable
order by tImpressions desc

 

YouTube kanalımıza abone olun;

https://www.youtube.com/c/boosmart

Instagram hesabımızı takip edin;

https://www.instagram.com/boosmartcom/

Telegram kanalımıza katılın;

https://t.me/boosmart

Diğer içeriklerimizi de inceleyin:

https://boosmart.com/tr/blog/

Dijital Pazarlama 28 Mart 2021

GTM ile Tag’i Belirlenen Süre Sonrasında Tetiklemek

Eren Dağlar

Google Tag Manager’de, bir etiketi (tag) tetiklemek için, belirli bir süre geçmesini istediğiniz durumlar olabilir. Örneğin;

sayfada belli bir süre geçtikten sonra ortaya çıkan bir html element’inin class bilgisini almak,

sayfada belirli bir süre geçtikten sonra değişen bir uyarı metnini takip edebilmek

gibi durumlar düşünebilirsiniz. Bugün bu tarz işlere ihtiyacınız yoksa bile eğer websiteniz için Tag Manager kullanan biri iseniz ileride birgün yüksek ihtimalle ihtiyaç duyabilirsiniz.

Tag Manager’da “Timer” tetikleyicisi ile zamana bağlı tetikleme işlemleri yapılabilir. Fakat bu yazıda anlatacağım çözüm, daha esnek ve sizin özelleştirmeleriniz dahilinde yapılan bir tetikleyici olacak.

Örnek Olay

İnternet sitesinde bilgi formu doldurulup submit edildikten sonra “Form gönderiliyor” şeklinde bir bilgi geliyor. 6.5 saniye sonra ise aynı yerde “Form Başarıyla Gönderildi” yazıyor.

Google Tag Manager ile ilgili mesajın gözüktüğü DIV’in class adını çekebiliyoruz. Ama bu bir işimize yaramıyor. Çünkü formun doldurulduğu sayfada, “Form Gönderiliyor”  mesajının gözüktüğü yerdeki DIV tag’inin class adı “alert-sending” iken “Form Başarıyla Gönderildi” metni geldiğinde ilgili class adı “alert success” oluyor. Yani sayfa tekrar yüklenmeden, dinamik bir şekilde ilgili elementin class adı değişiyor. Sayfa ilk yüklendiğinde DIV tag’inde “alert success” verisi yok. Form doldurulup başarıyla submit edildikten 6.5 saniye sonra “alert success” verisi geliyor. Dolayısıyla öyle bir tetikleyici üretmeliyiz ki, 6.5 saniye sonra çalışmalı ve o çalıştığı andaki DIV tag’inin class adını çekmeli. Yani “alert success” verisini.

Tag Manager’da yeni bir tag oluşturuyoruz ve içine aşağıdaki kodu yapıştırıyoruz. Değiştirebileceğiniz özellikler kodda yazmakta. Ben bu kodu, “formu gönder” butonuna tıklandığında çalışacak şekilde kurdum. Daha doğrusu, “formu gönder” butonuna tıklandıktan 6.5 saniye sonra çalışacak şekilde 🙂

custom timer javascript kodu
custom timer javascript kodu

Kodumuz aşağıdaki gibi. Bunu Custom HTML tag’i oluşturup içine yapıştırınız.

<script>
(function() {
// CHANGE THESE THREE:
var eventName = ‘custom.timer’; // The event name that is pushed into dataLayer
var interval = 6500; // The interval in milliseconds
var limit = 1; // The number of times the timer fires

// OTHER SETTINGS:
var timerNumber = 1;
var startTime = new Date().getTime();

var fireTimer = function() {
var timeNow = new Date().getTime();
window.dataLayer.push({
‘event’ : eventName,
‘custom.timerCurrentTime’ : timeNow,
‘custom.timerElapsedTime’ : timeNow – startTime,
‘custom.timerStartTime’ : startTime,
‘custom.timerEventNumber’ : timerNumber,
‘custom.timerId’ : timerId,
‘custom.timerInterval’ : interval,
‘custom.timerLimit’ : limit
});
timerNumber += 1;
if (limit < timerNumber) {
window.clearInterval(timerId);
}
};

var timerId = window.setInterval(fireTimer, interval);
})();
</script>

Bu kod 6.5 saniye sonra çalışacak ve datalayer’a “custom.timer” adlı event’i gönderecek. Çünkü ismini bu şekilde belirlemiştik. Siz süresini değiştirebililirsiniz.

Daha sonra Tag Manager’da bir event listener oluşturup , bunu istediğiniz tag için kullanabilirsiniz. Yeni bir trigger oluşturup, trigger tipini “Custom Event” seçip aşağıdaki adımları takip ederek oluşturabilirsiniz.

custom-timer-trigger
custom-timer-trigger

Aşağıda da çalışmasını video şeklinde paylaşıyorum. Önce formu gönderme butonuna basılıyor. Basıldığı anda kodumuz tetikleniyor.  Eğer form başarılı şekilde gönderilmiş ise 6.5 saniye sonra custom timer event’imiz tetikleniyor. Bu da Tag Manager’ın formun gönderilmesini takip edebildiğini gösteriyor.

Yararlandığım kaynak: https://www.simoahava.com/gtm-tips/timer-trigger/

https://www.youtube.com/c/boosmart

Instagram hesabımızı takip edin;

https://www.instagram.com/boosmartcom/

Telegram kanalımıza abone olun;

https://t.me/boosmart

Diğer blog yazılarımızı inceleyin:

https://boosmart.com/tr/blog/

Dijital Pazarlama 15 Şubat 2021

Dönüşümleri Artıracak Akıllı Teklif Stratejileri

Nurseli Demir

Google Ads Teklif Stratejisi Nedir?

Teklif Stratejileri, hedef kitlemizin reklamlarımızla yapmış oldukları etkileşimleri sonucunda elde edilen bütün sinyalleri aynı anda takip ederken, bu verileri makine öğrenmesi ile harmanlayarak reklamlarımızın performansının artmasına yardımcı oluyor. Bütün bunları manuel olarak takip etmek oldukça fazla zaman ve efor gerektirdiği için, Google Ads’in bize sunmuş olduğu dönüşümleri artıracak Akıllı Teklif Stratejileri, bilinen diğer adıyla “ Smart Bidding Strategies”i en doğru şekilde anlamamız ve kullanmamız bize birçok yönden fayda sağlayabilir.  

Kullanım alanları kampanya türlerine göre değişen “Teklif Stratejileri”; gösterim, tıklama, dönüşüm, ROAS (reklam harcamalarının getirisi), CPA (sonuç başına maliyet) gibi çeşitli kampanya hedeflerinize göre belirlediğiniz bir Google Ads özelliğidir. Bu özellik, sahip olduğunuz bütçeyi optimum düzeyde harcayarak, daha iyi maliyetlerle verimli sonuçlar elde etmenize olanak tanıyabilir.

Kampanyalarınız için doğru Google Ads Teklif Stratejisini belirlemeden önce, hedefinizin ne olduğunu belirlemeniz gerekmektedir. 

Amacınız bir kampanya için trafiğinizi artırmak, bir diğer kampanyanız için ise dönüşüm artırmak olabilir. Sonrasında ise maksimum harcayabileceğiniz bütçeyi belirlemeniz ve elinizdeki geçmiş verilerle doğru kararları vermeniz gerekebilir.

 Conversion ve Conversion Value odaklı bid stratejiler

Dönüşümleri Artırmak için Hangi Akıllı Teklif Stratejisi Tercih Edilmeli?

Google Ads’in makine öğrenimi ile reklamlarımızı optimize etmeye olanak tanıdığını hepimiz biliyoruz. Dönüşüm odaklı Akıllı Teklif Stratejileri, Google Ads’in makine öğrenimi sayesinde dönüşümleri en üst düzeye çıkarmak için her bir açık artırmada dönüşüm gerçekleşme potansiyelini değerlendirdiği gerçek zamanlı tekliflerdir. Yani sizin manuel olarak teklif belirlemenize gerek kalmadan, sistem otomatik olarak en doğru teklifi belirler. Üstelik bunu, dönüşüm gerçekleştiren kullanıcıların kullandıkları cihaz, bulundukları lokasyon, tercih ettikleri saat dilimi ve kullandıkları dil gibi bir çok sinyali de göz önünde bulundurarak gerçekleştirir. Bu sayede makine öğrenimi en doğru kişiyi en doğru anda yakalayarak istediğiniz dönüşümü elde etmenize olanak tanır.

Dönüşüm odaklı stratejileri kullanmanız için Google Ads hesabınızda “Dönüşüm”lerin (conversion) takip ediliyor olması gerekiyor. 

Aşağıdaki maddelerden amacınıza en uygun Teklif Stratejilerini inceleyebilir, size en uygun olanı Google Ads kampanyalarınızda kullanabilirsiniz.

 

Hedef Edinme Başına Maliyet (Target CPA)

Hedef EBM (Target CPA) tamamiyle otomatik olarak işleyen bir teklif stratejisidir ve reklam verenlerin dönüşüm (conversion) başına harcanacak maliyetini belirlemelerine olanak tanır. Google bu teklif stratejisini kullanmanız için reklam hesabınızın son 30 günde en az 30 adet dönüşüm elde etmiş olmasını öneriyor.  

Öncelikle Hedef EBM teklif stratejisinde kampanya için maksimum CPA, yani Edinme Başına Maliyet değeri belirlenmesi gerekmekte. Makine öğrenimi ise bu hedef doğrultusunda elde edebileceği maksimum dönüşümü (conversion) elde etmeye çalışacaktır. Yani her bir dönüşüm için harcayacağınız hedef CPA değerini yakalamaya çalışacaktır.

Target CPA Akıllı Teklif Stratejisi

Target CPA değeri nasıl belirlenir? 

Bunun için kampanyanızın son 15, 30, 45, 60 gündeki gerçekleşen CPA değerine bakmanız gerekebilir. Target CPA değerini belirlerken geçmişte gerçekleşen CPA değeri size referans olacaktır. Burada amacımız, sizin için bir dönüşümün maliyetinin en fazla ne kadar olması gerektiğini hesaplamaktır. Bu size Target CPA değerinizi verecektir. Eğer Target CPA değerinizi gerçekleşen değerinden düşük tutarsanız, Google bu maliyetle conversion getiremeyeceği için kampanya para harcamamaya başlayacaktır. 

Örneğin kampanyanın son 30 gündeki CPA değeri 10 TL ise ve siz “ben 2 TL’den dönüşüm elde etmek istiyorum” şeklinde düşünüp 2 TL hedef verirseniz, makine öğrenimi bunu gerçekleştirmeye çalışmak için hacmi daraltıp harcamalarınızı düşürecektir. Yani 2 TL maliyetle dönüşüm elde edebilirsiniz günün sonunda fakat istediğiniz sayıda dönüşüm elde edemeyebilirsiniz. Bu sebeple gerçekçi ve optimum bir Target CPA belirlemeniz gerekmekte.

Target CPA hangi durumda kullanılabilir?

Target CPA, belirli bir dönüşüm maliyeti hedefleyen reklamverenler için tercih edilebilir. Genellikle Lead Generation odaklı markalar tarafından tercih edilen Target CPA teklif stratejisini, elinizde geçmiş veriye dayalı dönüşüm başına maliyet bilgisi varsa da rahatlıkla tercih edebilirsiniz. Bu sayede doğru bir teklif vererek Google’ın bu maliyetlerde dönüşüm getirmesini sağlayabilirsiniz.

Target CPA (Hedef EBM) teklif stratejisi sürekli kontrol gerektiren ve aynı gün içinde %25’den fazla bir oranda değişiklik yapılmaması gereken bir teklif stratejisidir. Yani Target CPA hedefiniz 10 TL ise, onu en az 7.5 TL’ye, en fazla 12.5 TL’ye çıkarmanız önerilir. Daha yüksek oranda yapılan değişiklikler makine öğrenmesine zarar verebilir.

Şunu da belirtmeliyiz ki belirlediğiniz Target CPA değerine her gün müdahale etmek doğru bir karar olmayacaktır. Yaklaşık 2 haftalık gözlemleriniz sonucunda bu değeri gerçekleşen değerlere yakın olacak şekilde güncellemenizi önerebiliriz. Fakat bu değişiklikler her zaman için istenen sonucu vermeyebilir. Örneğin markanız için hareketli bir sezondan durgun bir sezona geçiş yapıyorsanız, Target CPA değerinizi düşürmek hem trafiğinizi, hem de elde edebileceğiniz dönüşüm sayısını düşürmenize sebep olabilir. Bu sebeple Target CPA değerinizde radikal değişiklikler yapmadan önce sezonsallık, rekabet gibi durumları da göz önünde bulundurmanızda fayda var.

 

Hedef ROAS (Target ROAS)

ROAS, reklam harcamalarınız sonucunda elde ettiğiniz yatırım getirisini ifade eder ve ROAS = (Gelir) / (Maliyet) * 100 formülü ile hesaplanır. 

Yani bir kampanya için 100 TL harcamış ve bunun sonucunda 200 TL gelir elde etmişseniz, burada ROAS değeriniz 200/100*100, yüzde olarak ifade edersek de %200 olacaktır. Bu da reklam yatırımınızın %200’ü, yani 2 katı kadar ciro elde ettiğiniz anlamına gelmektedir.

Target ROAS Akıllı Teklif Stratejisi

Target ROAS değeri nasıl belirlenir?

Target ROAS için hedef belirlerken, kampanyanızın son 15, 30, 45, 60 gündeki gerçekleşen ROAS (conv. value / cost) değerine bakmak, yani kampanyanızın gerçekleşen ROAS değerinden yararlanmak, en doğru kararı vermenize yardımcı olacaktır. Bu sayede, e-ticaret sitenizdeki bir satıştan elde edilen değerin (conversion value), reklam maliyetinizin yüzde kaçına eşit olması gerektiğini Google’ın makine öğrenimine bildirirsiniz ve Google da size bu ROAS değerine yakın değerler getirmeye çalışarak karlılık elde etmenize yardım eder.

Target ROAS hangi durumlarda kullanılabilir?

Google, reklam hesabınızda son 30 günde en az 50 dönüşüm gerçekleştiği takdirde Target ROAS kullanılmasını önermekte. Aynı zamanda websitenizde veya uygulamanızda yer alan dönüşüm değerlerinizi (gerçekleşen alışverişin tutarı) dinamik olarak takip eden ve Google Ads’e aktaran, Google Ads Conversion Tag’inin (Google Ads Dönüşüm Etiketi) ekli olması gerekmektedir. Böylelikle müşterilerinizin hangi reklam sayesinde, ne kadar maliyetle, ne kadarlık ürün satın aldığını Google Ads’in öğrenmesine ve buna göre makine öğrenimini geliştirmesine olanak tanırsınız

Eğer bu iki şartı da sağlıyorsanız ve dahası reklam yatırımınız ile bunun sonucunda tahmini ne kadar ciro elde edebileceğinizi geçmiş veriye bakarak belirleyebiliyorsanız, Target ROAS tam size göre bir teklif stratejisi olabilir. 

Örneğin bir e-ticaret siteniz olduğunu ve Google Ads üzerinde geçmişe dayalı veriye sahip olduğunuzu varsayalım. Target ROAS teklif stratejisi, reklam maliyetlerinizi optimum düzeyde tutarak, karlılığınızı artırmayı amaçlar. 

Target ROAS değeri nasıl çalışır? 

Target ROAS değerinizi %400 olarak girdiğiniz bir senaryoda Google size maliyetinizin 4 katı ciro kazandırmaya çalışacaktır. Eğer gerçekleşen ROAS değeriniz %200 ise ve siz %400 Target ROAS belirlemişseniz, Google Ads bu ROAS’ı kısa vadede getiremeyeceği için kampanya harcama yapmayı azaltabilir. Bu sebeple gerçekleşen değerlere göre teklif belirlemeniz önemlidir. Eğer Target ROAS ile çalışan bir kampanya harcama yapmayı azaltmış ise, burada ROAS değerini düşürmeyi deneyebilirsiniz. 

Burada ayrıca belirtmeliyiz ki tüm kampanya ve hesaplar için genel geçer bir ROAS değeri belirtilemez. Her bir reklam hesabında ve kampanyada gerçekleşen ROAS değeri, satılan ürünlerin satış değeri, satın alma potansiyeli gibi kriterler ile doğru orantılı olarak şekillenecektir. 

Target ROAS değeri de tıpkı Target CPA gibi sürekli kontrol gerektirmekle birlikte değerler üzerindeki değişiklikler günlük olarak yapılmamalıdır. Aksi durumlar olmadıkça aynı gün içinde %25 oranından yüksek bir ölçüde değişiklik yapılmamalıdır. Yani ROAS değerimiz %1000 ise; bunu en az %750’ye düşürmeniz veya en çok %1250’ye çıkarmanız önerilir. Daha fazla oranda yapılan değişiklikler makine öğrenmesine zarar verebilir. 

Kampanya üzerindeki 1-2 haftalık gözlemleriniz sonucunda Target ROAS değerini, gerçekleşen ROAS değerlerine göre revize etmeniz gerekebilir. Burada da sezonsallık, rekabet gibi konuları göz önünde bulundurarak doğru kararı vermek gerekmektedir. Yanlış verilen bir karar hem trafiğinizi, hem de elde edebileceğiniz dönüşüm değerlerini düşürmenize sebep olabilir. 

 Belirtmekte fayda var ki ROAS teklif stratejisi tıklama başına ücret almaktadır. Yani reklamınız ne kadar tıklanırsa o kadar ücret ödersiniz.

 

Dönüşümleri Artırma (Maximize Conversion)

 Bu teklif stratejisini kullanmak için de yine Google Ads dönüşümlerinin (conversion) hesabınızda olması gerekmektedir. Belirlediğiniz bütçenin tamamını harcayarak dönüşüm sayınızı maksimize etmek istiyorsanız Dönüşümleri Artırma yani Maximize Conversion teklif stratejisini tercih edebilirsiniz.

Maximize Conversion

Maximize Conversion hangi durumlarda kullanılabilir?

Bu teklif stratejisinde ROAS değeri belirlemek veya CPA değeri belirlemek gibi işlemler bu teklif stratejisinde yoktur, yani manuel olarak yapmanız gereken bir iş yükü Target CPA ve Target ROAS’a göre daha azdır. Bu da size zaman kazandırırken, bütçeniz doğrultusunda en yüksek sayıda dönüşüm elde etmenize olanak tanır. Fakat Maximize Conversion teklif stratejisi hedef değer belirlemenize olanak tanımadığı için olası yüksek maliyetlerin önüne geçebilmek için kampanyaları sürekli olarak takip etmeniz gerekecektir. 

Aynı zamanda bu teklif stratejisinin tercih edilebilmesi için Google’ın makine öğrenmesinde kullanabileceği geçmişe dayalı bir verinin bulunması gerekmektedir. Google geçmişte gerçekleşmiş olan dönüşümleri hesaplar ve her açık artırma için doğru teklife karar verir. Eğer hesabınızda geçmişe dönük bir dönüşüm (conversion) verisi yoksa, bu teklif stratejisini kullanmak maliyetlerinizi yükseltmek dışında bir sonuca ulaştırmayabilir.

Kısacası bu teklif stratejisi reklam harcamasındaki karlılık veya dönüşüm başına maliyet hedefi olmayan, bütçesiyle maksimum dönüşümü elde etmeye çalışan reklamverenler için uygun diyebiliriz.

Dönüşüm oranınızı düzenli olarak artırmak için “Dönüşüm Oranlarını Artırmak için Her Ay Yapılacak 11 Şey” adlı blog yazımızı okuyabilirsiniz.

Dönüşüm Değerini En Üst Düzeye Çıkarma (Maximize Conversion Value)

Bu strateji ile Google Ads, en yüksek dönüşüm değerini elde ederken, bütçenizin tamamını harcamaya çalışır. Yani bu sefer maksimize edilen değer dönüşüm sayısı değil, belirlediğiniz dönüşümün değeri olacaktır. Daha çok e-ticaret için kullanılan bir teklif stratejisidir.

Maximize Conversion’da dönüşüm sayısını artırmak amaçlanırken, Maximize Conversion Value ile dönüşümlerden gelen dönüşüm değeri (conversion value) artırılmaya çalışılır ve Google en yüksek ciroyu getirmek üzere reklamları ilgili kitleye doğru zamanda göstermeye çalışır. 

Maximize Conversion hangi durumlarda kullanılabilir?

Google, geçmişe dayalı kampanya verilerinin olması durumunda Maximize Conversion Value teklif stratejisinin kullanılmasını önermekte. Eğer bütçenizin tamamını harcamak ve dönüşüm sayısından çok bu dönüşümlerin sağlayacağı ciroyu önemsiyorsanız, Maximize Conversion Value teklif stratejisini göz önünde bulundurabilirsiniz. 

 

Geliştirilmiş Tıklama Başına Maliyet (Enhanced CPC)

 Google bu teklif stratejisi ile CPC değerini benzer seviyede tutmaya çalışırken, dönüşümleri artırmayı hedefler. 

Bu teklif stratejisi, Manuel Teklif Stratejilerine (Manuel Bidding Strategies) oldukça benzese de, burada CPC için belirlediğiniz teklif üzerinden, Google’ın kendi algoritmasına göre ayarlamalar yapmasına olanak tanırsınız. Yani Google manuel olarak belirlediğiniz Tıklama Başına Maliyetinizi, faydalı olacağını düşündüğü bir noktada artırabilir veya azaltabilir. Bu da siz farkında olmadan gerçekleşen CPC değerlerinizin markanız için belirlediğiniz hedeflerinizin dışında gerçekleşmesine sebep olabilir.

Enhanced CPC

Teklif Stratejisi Tercih Edildikten Sonra Ne Yapılmalı?

Google bize birçok akıllı teklif stratejisi sunuyor, bunlardan bazıları daha az müdahale gerektirirken, bir kısmı da geçmişte gerçekleşen değerlerinizden elde ettiğiniz sonuçlara göre karar vermenize olanak tanıyor. Fakat hangi teklif stratejisini tercih ederseniz edin, kampanyalarınızın gerçekleşen CPC, CTR, CPA, Conversion Value, Conversion Rate gibi birçok metriğini düzenli olarak incelemeniz ve sezonsallık, rekabet, maliyet, reklam metinlerinin eskimesi gibi durumları da göz önünde bulundurarak anlamlı bir sonuç çıkarmanız ve bu sonuca göre de gerekli optimizasyonların yapılması gerekmektedir. Aksi halde maliyetleriniz yükselirken, hedefinizden uzaklaşmanız söz konusu olabilir. 

Kısacası Google Ads bize sonuca ulaşmak için birçok yöntem sunuyor. Bunlardan hangisini ne zaman tercih edeceğimiz ise tamamen hedefimize ve o anın şartlarına göre şekilleniyor.

 

YouTube kanalımıza abone olun;

https://www.youtube.com/c/boosmart

Instagram hesabımızı takip edin;

https://www.instagram.com/boosmartcom/

Telegram kanalımıza katılın;

https://t.me/boosmart

Diğer içeriklerimizi de inceleyin:

https://boosmart.com/tr/blog/