Dijital Pazarlama 28 Nisan 2022

GA4’te Olmayan UTM Term Parametresini Gönderme Yöntemi

Eren Dağlar

Google Analytics 4’te (GA4) utm_campaign, utm_medium, utm_source parametrelerine denk gelen dimension (boyut) verilerini görebiliyoruz ve raporlarda kullanabiliyoruz. Ama utm_term veya utm_content parametrelerine denk gelen dimension (boyut) verilerini göremedim. Örneğin Universal Analytics’te utm_term parametresi, “keyword” (anahtar kelime) dimension’ununa  denk gelirdi.

Bu sebeple eğer reklamlarınızda utm_term veya utm_content parametrelerini kullanıyorsanız ve bunları raporlarınıza dahil etmek isterseniz şu adımları uygulayabilirsiniz:

1- Google Tag Manager’dan (GTM) utm_term ve utm_content parametrelerini alıp değişken olarak kaydedeceğiz.

2-GTM’de GA4 event tag’i oluşturacağız ve event parameters alanına bu parametreleri dimension gibi ekleyeceğiz.

3-GA4 içindeki custom definition menüsünden, GTM’den oluşturup gönderdiğimiz dimension’ların kaydını yapacağız.

4-24 saat sonrasında raporlarımıza bu verileri dahil edebileceğiz.

 

Google Tag Manager’da Değişkenleri Oluşturma

GTM’de Variables (Değişkenler) menüsü içinde yeni bir değişken yaratın. Değişkenin türü “URL” olsun. Daha sonra aşağıdaki gibi ayarlamaları yapın. Bunu utm_term parametresinin yanı sıra utm_content parametresi için de yapın. Yani iki adet değişkeniniz olsun.

google tag manager’da url dizininde yer alan utm_term parametresinin içindeki değer kaydedilir.

Google Analytics 4 Event Tag’ine Parametre Ekleme

Google Analytics 4 Event Tag’i oluşturun. Event Parameters alanına aşağıdaki gibi parametre adlarını ekleyin. Ben tüm utm parametreleri için yapmak istedim. Siz de bu şekilde yapabilirsiniz veya sadece utm_term ve utm_content’i de gönderebilirsiniz. Ama hazır bu işe girişmişken diğer parametreleri de göndermek fena olmaz. Event’in adını da utm_arrived olarak tanımladım. Yani bir utm_term algıladığı zaman bu event adı ile GA4’e bilgi gitsin.

Trigger (tetikleyici) olarak ise sadece utm_term içeren URL’lerde bu event’in tetiklenmesi için aşağıdaki gibi bir trigger oluşturdum. Eğer url’de, utm_term parametresi var ise ve bu dolu ise trigger çalışacak. utm_term’i de yukarıda oluşturduğumuz değişkenler vasıtasıyla GTM’de toplayabiliyorduk. Bu değişkeni kullanarak trigger’ı aşağıdaki gibi oluşturuyoruz.

GA4’te , GTM’den Gönderilen Dimensionları Kaydetme

Google Analytics 4’te sol taraftaki menüden Configure menüsüne tıklayın. Ardından Custom definitions kısmına tıklayın. Daha sonra aşağıdaki gibi bir ekran göreceksiniz. Create custom dimensions butonuna tıklayın.

google analytics 4'te dimension oluşturmak

Daha sonra aşağıdaki yönergeleri takip ederek dimension (boyut) kaydını yapın.

Dimension name kısmına, istediğinizi yazabilirsiniz. Bu GA4 arayüzünde sizin göreceğiniz isimdir.

Scope’u event seçiniz. Çünkü user seviyesinde bir dimension göndermiyoruz. Her oturumda bir kullanıcıya ait utm_term veya utm_content verileri değişebilir.

Event parameter kısmına, GTM’de tam olarak ne yazdıysan parametre ismine, onu yazınız. Bu şekilde eşleme yapacaktır.

google analytics 4'te dimension kaydetme

Google Analytics 4 Raporlamalarında Kullanımı

Denemelerinizi yaparken Google Analytics 4’te Realtime menüsüne girin. Event kısmında utm_arrived event’ini göreceksiniz ve içindeki parametrelerimizi. Bu parametreleri 24 saat sonraya kadar raporlamalarda kullanabileceksiniz.

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 abone olun;

https://t.me/boosmart

 

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

Facebook Reklam Hesabı Durduğunda Bildirim Otomasyonu

Eren Dağlar

Facebook reklam hesabı ile reklam yönetirken kredi kartıyla ödeme yapıyorsanız, kartınızın limiti olmadığında hesabınız durabilir ve bunu geç farkedebilirsiniz. Bu geç farketme, bazen saatler bazen günler sürebilir ve satış / lead fırsatını kaçırabilirsiniz.

Google Ads panelinde, script kullanılarak hesapta bir anomali olduğunda (son 6 saatteki impression sıfır ise) bildirim gönder gibi otomasyonlar kullanabiliyoruz. Facebook reklam hesabında hesap durduğunda direkt haberimizin olmasını sağlayacak konforlu bir yol henüz yok. Facebook reklamlarını takip edebileceğiniz “Facebook Reklam Yöneticisi” uygulamasını indirerek bir nebze, hesap durduğunda haberiniz olmasını sağlayabilirsiniz. Fakat uygulamada bildirimi çoğu zaman çok geç gönderiyor dolayısıyla efektif olmuyor.

Ben de reklam hesabı durduğunda direkt haberimiz olmasını sağlayacak farklı yollar aradım. Aklıma gelen çözüm ise Facebook Marketing API ile acaba reklam hesabının aktif olup olmama durumunu Google Sheet‘e aktarıp ardından aktarılan veri üzerinden kontrol gerçekleştirip kendime mail göndermek idi.

Facebook Marketing API ile reklam hesabının durumunu çekebileceğimi görünce çok sevindim ve yapmaya koyuldum. Aşağıda adım adım süreçleri anlatıyorum.

Developer Facebook’ta App Oluşturma

Facebook Marketing API ile veri çekebilmek için bir access_token’a ihtiyacımız olacak. Bu kod, bizim veri çekmemizi sağlayan iznimiz. Bunun için bir APP oluşturmamız gerekiyor. developer.facebook.com adresine giriş yaptıktan sonra sağ üstteki My Apps tab’ına tıklayınız. Daha sonra açılan sayfada aşağıdaki gibi “Create App” butonuna basınız.

Daha sonra çıkan seçeneklerden en üsttekini seçiniz.

Sonraki adımda gerekli bilgileri kendinize göre girebilirsiniz. Bu App’in bağlı olacağı Business Manager account’unu da seçiniz.

Developer Facebook’ta Marketing API Etkinleştirme

App oluşturulmuş oldu. Daha sonra açılan pencerede, seçenekler arasından Marketing API’yi seçiniz.

Şimdi veri akışını sağlamak için kullanacağımız access token kodunu almamız gerekecek. Bunun için Marketing API menüsü altında Tools tab’ına tıklayınız. Daha sonra açılan pencerede “ads_management” ve “ads_read” izinlerini seçip “Get Token” butonuna tıklayınız. Az sonra access_token kodunuz ekranda gözükmüş olacaktır. Bunu bir yere kopyalayınız. Yanlış hatırlamıyorsam access token kodlarının 60 günlük bir süresi var. Sonra geçerliliğini yitiriyor. Bu tip durumlarda tekrar oluşturmanız gerekiyor “Get Token” butonuna basarak.

Google Spreadsheet ile Apps Script Dosyası Oluşturma

Ben sizin için bir Google Spreadsheet dosyası oluşturdum. Buraya tıklayarak açın ve daha sonra File > Make a Copy adımlarını takip ederek kopyalayın. Daha sonra aşağıdaki gibi Tools > Script Editor adımlarını takip ederek sheet’inize bağlı bir Google Apps Script dosyası açmış olacaksınız.

google apps script dosyası oluşturma

İçinde ise aşağıdaki gibi hazırladığım kodlar yer alıyor olacak. Kodun içinde nereye ne eklemeniz gerektiğini yazdım.

Google Apps Script’te Marketing API’ye Bağlanma

Kod, Facebook’tan reklam hesabımızın status değerini çekecek. Eğer status değeri 1 veya 9 değilse, yazılan mail adresine uyarı maili atacak.

google apps script marketing api bağlanma kodu

Neden 1 veya 9 değilse mail gönderecek derseniz, Facebook Marketing API’den gelen account_status parametresine gelen değerler aşağıdaki şekilde belirlenmiş. 1 numara zaten aktif. 9 numaralı değerde de hesap aktif oluyor ama “in grace period” uyarısı gözüküyor sadece. Hesap sonuçta aktif olduğu için 1 veya 9 içermeyen her şeyi pasif olarak düşünebiliriz. Eğer bu listede sizin başınıza gelen ama reklamların durmadığı bir “status” gerçekleşmiş ise kodda yer alan if parantezinin sonuna “&& !value.match(“status=status_numarası”) syntax’ını yerleştirmeniz yeterli olacaktır.

facebook marketing api account status parametre değerleri

Şimdi, fonksiyonumuzu play tuşuna basıp çalıştırmak istediğimiz zaman klasik yetkilendirme izinleri isteyecek Google. Bunlara izin verip geçebilirsiniz. Çalıştığında ilgili spreadsheet dosyasında aşağıdaki gibi bir veri elde edeceksiniz. ****** yazan yerde reklam hesabı numaranız yazıyor olacak. Bu veri Facebook API’den geliyor. Kodumuzun son kısmında da diyoruz ki a1 hücresinin içinde status=1 veya status=9 içermeyen bir şey var ise, bana mail at. Yani account_status=1 olduğunda mail atmayacak çünkü aktif, ama 2 olduğunda mail atacak şeklinde düşünebilirsiniz.

facebook api'den spreadsheet'e gelen veri

Trigger Oluşturma ve Sonuç

Son olarak, testlerinizi yaptıysanız kodumuzun kendi kendine çalışması için trigger koymamız gerekiyor. Kod yazdığımız ekrandaki play butonunun solunda yer alan saat işaretine tıklayın. Trigger ekleme ekranına geleceksiniz. Trigger ekleme butonuna bastığınızda aşağıdaki gibi pencere açılacak. Kodunuzun fonksiyonunu seçin. Diğer ayarları da aşağıdaki gibi yapabilirsiniz. 2 saatte bir çalışacak anlamına geliyor. İsterseniz bunu her saat olarak da yapabilirsiniz, 4 saat olarak da yapabilirsiniz. Çabuk haberiniz olsun istiyorsanız saatte 1 daha efektif olur.

google apps script trigger oluşturma

Bu script çalıştıkça, eğer hesabınızın durumu aktif değilse, aşağıdaki gibi bir mail alacaksınız.

alert maili

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

iOS Uygulamalar İçin Güncel Facebook SDK Kurulumu

Eren Dağlar

Facebook SDK (Software Development Kit), uygulamanız ile Facebook arasındaki iletişimi sağlar. Nasıl ki Facebook Pixel, web sitesindeki olayların Facebook’a aktarılmasını sağlayıp reklam optimizasyonlarınıza katkı sağlıyorsa, Facebook SDK da aynı işlevi uygulamalar için görür.

Bu içerikte, iOS uygulamalara, Facebook SDK nasıl eklenir, bunu adım adım anlatmaya çalışacağım. Android SDK yükleme içeriğine buradan ulaşabilirsiniz.

Bu içerikte macOS işletim sistemli bilgisayarlarda kullanılacak Xcode programı ile SDK yüklemesini anlatacağım. Bu programın şimdilik ne yazık ki windows versiyonu yok.

Yakın zamanda Udemy’de hem Android hem iOS için Facebook SDK yükleme konusunda ücretsiz bir kurs da oluşturacağım.

Developer Facebook’ta App Oluşturma

Facebook SDK’yı App’imize entegre etmek için Developer Facebook sitesinde bir app oluşturmamız gerekiyor.

Siteye giriş yaptıktan sonra sağ üstteki My Apps tab’ına tıklayınız. Daha sonra açılan sayfada aşağıdaki gibi “Create App” butonuna basınız.

 

 

Daha sonra çıkan seçeneklerden en üstteki seçilir.

 

 

Sonraki adımda gerekli bilgileri kendinize göre girebilirsiniz. Bu App’in bağlı olacağı Business Manager account’unu da seçiniz.

 

Xcode Programını İndirme

macOS bilgisayarınızda store uygulamanıza girerek Xcode programını bilgisayarınıza indiriniz ve kurunuz.

Xcode ile Projenizi Oluşturma

Xcode programını bilgisayarınıza indirdikten sonra açın ve create new project butonuna tıklayın. Ardından çıkan pencerede aşağıdaki gibi App’i seçin.

xcode uygulamasında proje tipi seçimi

Daha sonra app’iniz için özellikleri aşağıdaki gibi girin. burası değişecek.

xcode uygulamasında proje için özellikleri belirleme

Xcode’a Facebook SDK Kütüphanesini Ekleme

Xcode programında File > Swift Packages > Add Package Dependency adımlarını takip edin.

xcode ile swift package manager ile facebook sdk kütüphanesini ekleme

Açılan penceredeki adres kısmına https://github.com/facebook/facebook-ios-sdk URL’irini yapıştırın. Daha sonra aşağıdaki ekranı göreceksiniz. Default seçenekler en güncel SDK versiyonunu sunacaktır size. Bu sebeple “Up to Next Major” seçili kalacak şekilde devam ediniz.

xcode uygulamasında facebook sdk kütüphanesini yükleme

Daha sonra aşağıdaki gibi kütüphaneleri göreceksiniz. Projenizde kullanmak istediklerinizi seçebilirsiniz ama hepsini seçmenizin bir zararı yok. Hepsini seçebilirsiniz. Bizim işimiz FacebookCore ve FacebookLogin kütüphanesiyle olacak.

xcode swift ile facebook sdk kütüphaneleri

Xcode İle Uygulamanız ve Facebook Arasındaki SDK Entegrasyonu

App’imizin Bundle ID‘sine ihtiyacımız olacak. Aşağıdaki gibi Bundle ID’nizi bulabilirsiniz. Bunu kopyalayın ve bir yere yapıştırın.

xcode uygulamasında app'inizin bundle id'sini bulma

Şimdi Info.plist dosyasına sağ tıklayıp source code’u açın.

Info.plist dosyasına aşağıdaki kodu ekran görüntüsündeki gibi yapıştırın.

 <array>

      <string>fbapi</string>

      <string>fbapi20130214</string>

      <string>fbapi20130410</string>

      <string>fbapi20130702</string>

      <string>fbapi20131010</string>

      <string>fbapi20131219</string>

      <string>fbapi20140410</string>

      <string>fbapi20140116</string>

      <string>fbapi20150313</string>

      <string>fbapi20150629</string>

      <string>fbapi20160328</string>

      <string>fbauth</string>

      <string>fb-messenger-share-api</string>

      <string>fbauth2</string>

      <string>fbshareextension</string>

    </array>

info.plist dosyası

 

Şimdi ise aşağıdaki kodu yine Info.plist dosyasında aşağıdaki gibi yapıştırın. Dikkat etmeniz gereken noktalar:

[APP_ID] yazan kısımlara Developer Facebook’ta oluşturduğumuz App’in ID’sini yazın.

[APP_NAME] yazan kısma Developer Facebook’ta oluşturduğumuz App’in adını yazın.

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb[APP_ID]</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>

info.plist dosyasına app bilgilerini ekleme

Şimdi AppDelegate.swift dosyasının içindeki kodları silin ve aşağıdaki kodu alıp yapıştırın.

import UIKit

import FBSDKCoreKit

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

    

    func application(

        _ application: UIApplication,

        didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?

    ) -> Bool {

                  ApplicationDelegate.shared.application
(application, didFinishLaunchingWithOptions: launchOptions)

                return true

    }

          

    func application(

        _ app: UIApplication,

        open url: URL,

        options: [UIApplication.OpenURLOptionsKey : Any] = [:]

    ) -> Bool {

        ApplicationDelegate.shared.application(

            app,

            open: url,

            sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,

            annotation: options[UIApplication.OpenURLOptionsKey.annotation]

        )

    }

}

app delegate dosyasını düzenleme      

 Şimdi aşağıdaki kodu Info.plist dosyasını yine kod olarak açıp ekran görüntüsündeki gibi yapıştırın.

 <key>FacebookAutoLogAppEventsEnabled</key>

    <true/>

    <key>FacebookAdvertiserIDCollectionEnabled</key>

    <true/>

    <key>FacebookAdvertiserIDCollectionEnabled</key>

    <true/>

info.plist dosyasını düzenleme

 

Şimdi view controller dosyasına girin ve aşağıdaki kodu ilgili yere yapıştırın. Bununla birlikte uygulamaya bir Facebook login inşa edeceğiz ve SDK kurulumunu test etmiş olacağız.

   let loginButton = FBLoginButton()

               loginButton.center = view.center

               view.addSubview(loginButton)

loginButton.permissions = [“public_profile”, “email”]

view controller dosyasına login kit ekleme

 

Şimdi, Developer Facebook’a gelin ve App Review > Permissions and Features kısmından public profile özelliği için Advanced Access özelliğini aktifleştirin.

developer facebook'ta public profile advanced access alma.

 

iOS Facebook SDK Kurulumunu Test Etme

iOS 14.5 ile birlikte gelen, kullanıcıların telefonlarında “ad tracking” özelliğini kapatabilmelerinden ötürü, Xcode programında uygulamamızı çalıştırdığımız zaman veriler gitmeyebilir SDK üzerinden. Bu sebeple ben iOS 13 sürümünü indirip deneme yaptım. Siz de aşağıdaki şekilde “Download simulators” seçeneğine tıklayıp iOS 13 simülatörünü indirebilirsiniz.

xcode ile ios simülasyonu indirme

Simülasyonu indirdikten sonra aşağıdaki gibi Deployment Target’i indirdiğiniz simülasyon olarak seçiniz. Ben 13 versiyonunu indirdiğim için burada da 13 seçtim.

xcode'ta deployment target ayarı değiştirme

Şimdi tüm kurulum işlemlerini tamamladık. Developer Facebook’a geri dönün ve Dashboard menüsüne gelin. Aşağı doğru inin. Analytics seçeneğini göreceksiniz. Yanındaki “set up” butona tıklayın. Tıkladıktan sonra karşınıza “Quick Start” menüsü gelecek. iOS’u seçin ve adımları next diyerek tamamlayın. Bunu es geçebilirsiniz çünkü kurulumları anlatıyor, biz yukarıda yaptık. En son adımda Events Manager linkini verecek size. Ona tıklayın. Şimdi Business Manager’da Events Manager’a girin. App’inizin adını yazın. Daha sonra Test Events alanını açın.

Ve Xcode üzerinden simülasyonu çalıştırın, oluşturduğunuz app üzerinden login gerçekleştirin. Oluşturduğunuz uygulamada giriş yaptığınız facebook adresiniz ne ise, bir üst paragrafta bahsettiğim Developer Facebook’ta da aynı Facebook adresiyle girmiş olmanız gerekiyor.

Login işleminizi de başarıyla gerçekleştirdikten sonra Events Manager’da aşağıdaki gibi event’leri göreceksiniz ve SDK kurulumunu başarılı bir şekilde yapmış ve öğrenmiş olacaksınız.

events manager'da ios sdk'nızın çalıştığını doğrulama

 

Yararlandığım kaynaklar:

https://developers.facebook.com/docs/app-events/getting-started-app-events-ios/

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

Facebook SDK Nedir? Android Uygulamalar İçin Facebook SDK Kurulumu

Eren Dağlar

Facebook SDK (Software Development Kit), uygulamanız ile Facebook arasındaki iletişimi sağlar. Nasıl ki Facebook Pixel, web sitesindeki olayların Facebook’a aktarılmasını sağlayıp reklam optimizasyonlarınıza katkı sağlıyorsa, Facebook SDK da aynı işlevi uygulamalar için görür.

Bu içerikte, Android uygulamalara, Facebook SDK nasıl eklenir, bunu adım adım anlatmaya çalışacağım. Ardından videolu içerik ve daha sonra iOS uygulamalar için de Facebook SDK kurulumunu anlatmaya çalışacağım.

Developer Facebook’ta App Oluşturma

Facebook SDK’yı App’imize entegre etmek için Developer Facebook sitesinde bir app oluşturmamız gerekiyor.

Siteye giriş yaptıktan sonra sağ üstteki My Apps tab’ına tıklayınız. Daha sonra açılan sayfada aşağıdaki gibi “Create App” butonuna basınız.

 

 

Daha sonra çıkan seçeneklerden en üstteki seçilir.

 

 

Sonraki adımda gerekli bilgileri kendinize göre girebilirsiniz. Bu App’in bağlı olacağı Business Manager account’unu da seçiniz.

 

Android Studio Programını İndirme

Buraya tıklayarak Android Studio programını bilgisayarınıza indirin ve gerekli kurulumları tamamlayın.

Uygulamanıza Facebook SDK Ekleme

Android Studio programını açın ve yeni proje yarat seçeneğine tıklayın.

Açılan pencerede “Empty Activity” seçeneğini seçin.

Daha sonra aşağıdaki gibi bir pencere açılacak. Minimum SDK için “API 15: Android 4.0.3” veya daha yükseği seçin ve projeyi yaratın.

Android Studio'da Yeni Proje Oluşturma

 

Grandle Scripts’in altında build.gradle(Project) seçin ve ekran görüntüsündeki gibi repositories kısmına

mavenCentral() ekleyin.

Bundle App dosyasına mavenCentral ekleme

 

Şimdi build.gradle (Module) gelin ve aşağıdaki gibi dependencies alanına

implementation ‘com.facebook.android:facebook-android-sdk:5.15.3’ kodunu ekleyin.

Eğer daha güncel bir SDK varsa kod sarı renk verecektir. İmleci üstünde bekleterek güncel SDK’yı import edebileceğiniz seçeneği göreceksiniz.

 

implementation alanına Facebook SDK ekleme

Bu eklemeleri yaptıktan sonra sağ üstte Sync Now butonu göreceksiniz. Butona basınız ve entegrasyon işlemini gerçekleşmesini sağlayınız.

 

android studio senkronizasyon etme

 

Şimdi Developer Facebook‘ta oluşturduğunuz App’in ID’sine ihtiyacımız var. Developer Facebook’ta App’inizi seçin ve ID’sini aşağıdaki kodda [APP_ID] yazan yere yapıştırın. Ekran görüntüsünde örnek iletiyorum.

<string name=”facebook_app_id”>[APP_ID]</string>

<string name=”fb_login_protocol_scheme”>fb[APP_ID]</string>

 

strings.xml'e app bilgilerini ekleme

 

Şimdi AndroidManifest.xml dosyasını açın. Aşağıda kare için aldığım düzenlemeleri yapacağız. Bu dosyada package=”” kısmı sizin uygulamanızın package adıdır. Bunu bir yere not alın. İhtiyacımız olacak.

Öncelikle bu kodu, ekran görüntüsünde olduğu gibi </application> elementinin sonrasına yapıştırın.

<uses-permission android:name=”android.permission.INTERNET”/>

Ardından aşağıdaki kodu </application> elementinin üstüne yapıştırın. Ekran görüntüsündeki kısımda benim APP’in ID’si ve package name’i yazıyor. Ama aslında aşağıdaki kodu eklemiştim. O alanlar otomatik olarak değişti. Yani siz elle değiştirmeye çalışmayın, direkt bu kodu ilgili yere ekleyin.

<meta-data android:name=”com.facebook.sdk.ApplicationId”
android:value=”@string/facebook_app_id”/>

<activity android:name=”com.facebook.FacebookActivity”
android:configChanges=
“keyboard|keyboardHidden|screenLayout|screenSize|orientation”
android:label=”@string/app_name” />
<activity
android:name=”com.facebook.CustomTabActivity”
android:exported=”true”>
<intent-filter>
<action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT” />
<category android:name=”android.intent.category.BROWSABLE” />
<data android:scheme=”@string/fb_login_protocol_scheme” />
</intent-filter>
</activity>

 

AndroidManifes.xml dosyasını düzenleme

Key Hash Oluşturma

Şimdi App’imiz için key hash oluşturacağız.

Mac bilgisayarlar için öncelikle bilgisayarınıza Java’yı indiriniz. Ardından Terminal’i açınız. Daha sonra bu kodu yapıştırınız. Enter’a bastıktan sonra şifre isteyecek, android yazınız. Daha sonra key hash’iniz karşınıza çıkacak. Aşağıdaki gibi. Bunu da bir yere not ediniz .İhtiyacımız olacak.

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

 

terminal'de key hash oluşturma

 

Windows bilgisayarlar için ise aşağıdaki adımları takip ediniz.

-Java Geliştirme Kitinden Anahtar ve Sertifika Yönetim Aracı (anahtar aracı)

-Google Code Archive’dan openssl-for-windows openssl library. Windows için.

Key hash oluşturmak için Java SDK klasöründeki bir komut isteminde aşağıdaki komutu çalıştırın. Windows üzerinden bu çalışmayı yapmadığım için ekran görüntüsü paylaşamıyorum bu konuda kusura bakmayın. Daha fazla bilgi Youtube’da arama yaptığınız zaman videolar çıkacaktır.

keytool -exportcert -alias androiddebugkey -keystore “C:\Users\USERNAME\.android\debug.keystore” | “PATH_TO_OPENSSL_LIBRARY\bin\openssl” sha1 -binary | “PATH_TO_OPENSSL_LIBRARY\bin\openssl” base64

Şimdi key hash bilgisini de bir yere kopyalayın. Daha sonra Facebook Developer ekranına geri dönün ve sol tarafta Settings > Basic menüsüne geçiş yapın. Aşağı doğru inin. Add Platform butonuna tıklayın ve Android’i seçin. Daha sonra aşağıdaki ekran görüntüsündeki gibi Package Name, Class Name, Key Hashes bilgilerini girin.

Package name: Yazının üst bölümünde gösterdiğim yerden alıp buraya yapıştırın.

Class name: Package Name’inizin sonuna “.MainActivity” ekleyin ve yapıştırın.

Key Hashes: Üst taraftaki yöntemleri kullanarak aldığınız kodu buraya yapıştırın.

facebook developer'da android app bağlantısını yapma

Şimdi aşağıdaki gibi MainActivity dosyasını açın. Ve kod bölümüne aşağıdaki eklemeleri yapın. Bu şekilde SDK import etmiş olacağız.

import com.facebook.FacebookSdk;

import com.facebook.appevents.AppEventsConstants;

import com.facebook.appevents.AppEventsLogger;

android studio'da main activity kısmına sdk import etme

SDK Üzerinden Event Gönderimini Gerçekleştirme

Evet SDK kurulumu tamam, şimdi bir event göndermeyi deneyerek SDK kurulumunun çalıştığına emin olalım.

Aşağıdaki kodu ekran görüntüsündeki gibi ilgili alana yapıştırın.

Bundle params = new Bundle();

params.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, “product”); params.putString(AppEventsConstants.EVENT_PARAM_CONTENT, “elbise”);

params.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, “1234242”); params.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, “TRY”);

AppEventsLogger logger = AppEventsLogger.newLogger(this);

logger.logEvent(AppEventsConstants.EVENT_NAME_VIEWED_CONTENT, 34.99, params);

 

main activity dosyasına viewcontent event'i ekleme

Daha sonra gradle.properties dosyasını açın ve android.enbableJetifier=true kodunu ilgili yere yapıştırın.

gradle.properties dosyasını düzenleme

SDK Kurulumunu Test Etme

Şimdi tüm kurulum işlemlerini tamamladık. Developer Facebook’a geri dönün ve Dashboard menüsüne gelin. Aşağı doğru inin. Analytics seçeneğini göreceksiniz. Yanındaki “set up” butona tıklayın. Tıkladıktan sonra karşınıza “Quick Start” menüsü gelecek. Android’i seçin ve adımları next diyerek tamamlayın. Bunu es geçebilirsiniz çünkü kurulumları anlatıyor, biz yukarıda yaptık. En son adımda Events Manager linkini verecek size. Ona tıklayın. Şimdi Business Manager’da Events Manager’a girin. App’inizin adını yazın. Daha sonra Test Events alanını açın.

Bu adımları tamamladıktan sonra Android Studio içinde sağ üst tarafta yeşil bir play butonu göreceksiniz. Buna tıklayın ve APP’inizi simülasyon olarak çalıştırın. Başarıyla çalıştıktan sonra Events Manager – Test Events bölümünde aşağıdaki gibi events’lerin yansıdığını göreceksiniz ve başarılı bir şekilde hem Facebook SDK kurulumu yapmış hem de bir event göndermiş olacaksınız.

facebook sdk events manager

 

Yararlandığım kaynaklar:

https://developers.facebook.com/docs/app-events/getting-started-app-events-android/

https://forum.unity.com/threads/solved-duplicated-classes-when-building-for-android.857158/

 

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/