Raiffeisen banka vakası: EBM ağlarında dolandırıcılıkla nasıl mücadele edilir

Yayınlanan: 2022-05-25

Dijital pazarlama geliştikçe, çevrimiçi pazarlamacılar için zorlu bir mücadele haline gelen dijital bağlı kuruluş reklam sahtekarlığı da gelişiyor. Web sitelerine önemsiz trafik göndererek veya bağlı kuruluş ödüllerini tetiklemek için botlar kullanarak gerçekleştirilir. Kesin yöntem ne olursa olsun, çevrimiçi reklamcılık yoluyla yapılan her 3 dolardan 1 doları almaya devam ediyor. Başka bir deyişle, her gün taahhüt edilen önemli miktarda çalıntı gelirdir.

Bu durumda, OWOX BI ekibinin Raiffeisen bankası için sunduğu ve hem bankalar hem de diğer CPA ağı kullanıcıları için kullanışlı olacak çözümü açıklıyoruz.

İçindekiler

  • Meydan okumak
  • Çözüm
    • Adım 1. Ham verileri toplayın
    • Adım 2. Verileri işleyin
    • Adım 3. Raporlar oluşturun
  • Sonuçlar

Meydan okumak

Raiffeisen'in pazarlama uzmanları, gelir aynı kalırken bağlı kuruluş trafik maliyetlerinde çarpıcı bir artış keşfetti. Bir diğer sorun da banka müşterilerinin internet sitesine başvuru formu için veri girerken kısa oturum araları vermesiydi.

Bu nedenle Raiffeisen, CPA iştiraklerinden bazılarının bankanın ödeme sayfasındaki trafik kaynağı değerini değiştirebileceğini varsaymıştır. Şu şekilde çalışır: örneğin, bir kullanıcı indirim almak için bir tarayıcı uzantısı yükler. Kullanıcı web sitenize gittiğinde ve ödemeyi açtığında, uzantı indirim teklifi içeren bir açılır pencere görüntüler. Açılır pencereden bağlantıya herhangi bir tıklama gelirse, uzantı, çerezdeki trafik kaynağı verilerini bağlı kuruluşların trafik kaynağı verileriyle otomatik olarak yeniden yazar.

Çözüm

Pazarlama ekibi, bağlı kuruluşların trafik kaynağı verilerini kendi çıkarları için yeniden yazmaları hakkındaki hipotezi kanıtlamak için ham kullanıcı davranışı verilerini toplamaya karar verdi. Ardından, belirli müşterilerle ilgili veriler toplandı. Bu müşterilerin 60 saniyeden daha kısa bir sürede aynı sayfada iki oturumu oldu ve ikinci oturumun trafik kaynağı bağlı kuruluşa çevrildi. Bu müşterilerle ilgili bu tür veriler, diğer kanallardan gelen trafiği kendilerine bağlayan bağlı ortakların belirlenmesine yardımcı olacaktır. Sağlanan bu verilerle, kötü niyetli hareket eden web yöneticileriyle işbirliğini durdurmak ve pazarlama için bütçeyi optimize etmek mümkün olabilir.

OWOX BI ekibi, gerekli verilerin toplanmasına ve işlenmesine yardımcı oldu. İşte veri akışını gösteren bir şema:

Adım 1. Ham verileri toplayın

Google Analytics, oturum sayısı örnekleme eşiğini aştığında verileri örnekler. Bu nedenle OWOX BI analistleri, verilerin Google BigQuery'de toplanmasını önerdi. Üstelik bu bulut veri ambarı, banka için gerçekten önemli olan en yüksek güvenlik standartlarını karşılıyor.

Raiffeisen, web sitesinden Google BigQuery'ye veri aktarımını ayarlamak için OWOX BI Pipeline'ı kullandı. Bu şekilde şirketin uzmanları, neredeyse gerçek zamanlı olarak örneklenmemiş verileri elde etti ve her isabetin zaman damgasını topladı. Böyle bir çözüm, tek bir raporda, oturumlar boyunca olası tüm kullanıcı eylemleri dizilerini izlemeyi mümkün kıldı. Örneğin, şirketinizin/promosyon sayfasını ziyaret eden, TBM ile web sitesine geri dönen ve son olarak bir şey satın alan kullanıcılar hakkında bir rapora ihtiyacınız var. Bir gereklilik daha, bu ziyaretlerin seçilen tarih için raporda gösterilmesidir. İhtiyacınız olan raporu almak için sorgu:

    SELECT cp.promo.date AS Date, cp.promo.clientId AS ClientId, cp.promo.time AS Promo_time, cp.cpc.time AS CPC_time, send.time AS SEND_time FROM ( SELECT promo.date, promo.clientId, promo.time, cpc.time FROM ( SELECT date, clientId, MIN(time) AS time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE page.pagePath CONTAINS '/promo/' AND type = 'pageview' AND traffic.medium != 'cpc' GROUP BY date, clientId, ORDER BY clientId ASC) AS promo LEFT JOIN ( SELECT date, clientId, traffic.medium, time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE traffic.medium = 'cpc' AND type = 'pageview' GROUP BY date, clientId, traffic.medium, time ORDER BY clientId ASC) AS cpc ON promo.clientId=cpc.clientId WHERE promo.time < cpc.time) AS cp LEFT JOIN ( SELECT date, clientId, time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE eventInfo.eventCategory = 'send_ok' AND type = 'event' GROUP BY date, clientId, time ORDER BY clientId ASC) AS send ON cp.promo.clientId = send.clientId WHERE cp.cpc.time < send.time
SELECT cp.promo.date AS Date, cp.promo.clientId AS ClientId, cp.promo.time AS Promo_time, cp.cpc.time AS CPC_time, send.time AS SEND_time FROM ( SELECT promo.date, promo.clientId, promo.time, cpc.time FROM ( SELECT date, clientId, MIN(time) AS time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE page.pagePath CONTAINS '/promo/' AND type = 'pageview' AND traffic.medium != 'cpc' GROUP BY date, clientId, ORDER BY clientId ASC) AS promo LEFT JOIN ( SELECT date, clientId, traffic.medium, time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE traffic.medium = 'cpc' AND type = 'pageview' GROUP BY date, clientId, traffic.medium, time ORDER BY clientId ASC) AS cpc ON promo.clientId=cpc.clientId WHERE promo.time < cpc.time) AS cp LEFT JOIN ( SELECT date, clientId, time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE eventInfo.eventCategory = 'send_ok' AND type = 'event' GROUP BY date, clientId, time ORDER BY clientId ASC) AS send ON cp.promo.clientId = send.clientId WHERE cp.cpc.time < send.time

Sorgu sonucunda elde edilen tüm verilerin bulunduğu tablo aşağıdadır.

Adım 2. Verileri işleyin

Affiliate ile değiştirilen trafik kaynağı değerlerini belirlemek için gerekli değerlerin listesi oluşturuldu:

  • Kullanıcı kimliği.
  • İlk ve sonraki oturumların kaynağı ve aracı.
  • Seanslar arasındaki süre.
  • Her oturumun ilk ve nihai URL'leri.
  • Her oturumdaki etkinlikler.
  • Son oturumda işlem olayı.

Ardından, trafik kaynağı değerlerinin kesinlikle yeniden yazıldığından emin olmak için OWOX BI analistleri, şu koşulları göz önünde bulundurarak verileri filtrelemeyi seçti:

  • İki seans arasındaki süre en fazla 60 saniye olmalıdır.
  • Kaynak değiştiğinde web sitesi sayfası aynı kalmalıdır.
  • Son oturumda bir işlem olmalıdır.
  • Son oturumdaki trafik ortamı bir satış ortağı olmalıdır.

Gerekli verileri elde etmek için kullanılan SQL sorgusu:

    SELECT * FROM ( SELECT traff.clientId clientId, traff.page.pagePath pagePath, traff.traffic.source startSource, traff.traffic.medium startMedium, traff.time startTime, aff.evCategory eventCategory, aff.evlabel eventLabel, aff.evSource finishSource, aff.evMedium fifnishMedium, aff.time finishTime, aff.isTransaction isTransaction, aff.pagePath link, traff.time - aff.time AS diff FROM ( SELECT clientId, page.pagePath, traffic.source, traffic.medium, date, INTEGER(time) time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE traffic.medium != 'affiliate')AS traff JOIN ( SELECT total.date date, total.time time, total.clientId clientId, total.eventInfo.eventCategory evCategory, total.eventInfo.eventLabel evlabel, total.traffic.source evSource, total.traffic.medium evMedium, tr.eventInfo.eventCategory isTransaction, total.page.pagePath pagePath FROM ( SELECT clientId, page.pagePath, eventInfo.eventCategory, eventInfo.eventLabel, traffic.source, traffic.medium, date, INTEGER(time) time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE traffic.medium = 'affiliate') AS total LEFT JOIN ( SELECT clientId, date, eventInfo.eventCategory, INTEGER(time) time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE eventInfo.eventCategory = 'send_ok' GROUP BY 1, 2, 3, 4) AS tr ON total.clientId = tr.clientId AND total.date = tr.date WHERE tr.eventInfo.eventCategory = 'send_ok' AND tr.time>total.time)AS aff ON traff.clientId = aff.clientId) WHERE diff >-60 AND diff<0 GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ORDER BY clientId, finishTime
SELECT * FROM ( SELECT traff.clientId clientId, traff.page.pagePath pagePath, traff.traffic.source startSource, traff.traffic.medium startMedium, traff.time startTime, aff.evCategory eventCategory, aff.evlabel eventLabel, aff.evSource finishSource, aff.evMedium fifnishMedium, aff.time finishTime, aff.isTransaction isTransaction, aff.pagePath link, traff.time - aff.time AS diff FROM ( SELECT clientId, page.pagePath, traffic.source, traffic.medium, date, INTEGER(time) time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE traffic.medium != 'affiliate')AS traff JOIN ( SELECT total.date date, total.time time, total.clientId clientId, total.eventInfo.eventCategory evCategory, total.eventInfo.eventLabel evlabel, total.traffic.source evSource, total.traffic.medium evMedium, tr.eventInfo.eventCategory isTransaction, total.page.pagePath pagePath FROM ( SELECT clientId, page.pagePath, eventInfo.eventCategory, eventInfo.eventLabel, traffic.source, traffic.medium, date, INTEGER(time) time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE traffic.medium = 'affiliate') AS total LEFT JOIN ( SELECT clientId, date, eventInfo.eventCategory, INTEGER(time) time FROM TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}')) WHERE eventInfo.eventCategory = 'send_ok' GROUP BY 1, 2, 3, 4) AS tr ON total.clientId = tr.clientId AND total.date = tr.date WHERE tr.eventInfo.eventCategory = 'send_ok' AND tr.time>total.time)AS aff ON traff.clientId = aff.clientId) WHERE diff >-60 AND diff<0 GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ORDER BY clientId, finishTime

Adım 3. Raporlar oluşturun

Daha fazla analiz için, seçilen verileri Google BigQuery'den Google E-Tablolar'a aktarma eklentisi uygulandı. İçe aktarılan veriler kullanılarak, iki oturum arasında bir dakikadan az bir sürede oturumu kapatılan ve yeni oturum aynı sayfada açılan her müşterinin ID'leri ile tablo oluşturulmuştur.

Ardından, bağlı kuruluş pazarlamacılarının kötü niyetli davrandığını göstermek için veriler bir pivot tabloda bir araya getirildi. Aşağıdaki ekran görüntüsündeki sayılar değiştirilmiştir ve örnek olarak verilmiştir:

Örneğin, rapor, kaynak değeri yeniden yazılan işlemlerin sayısını ve ayrıca hangi bağlı kuruluşların trafik kaynaklarını kendi kaynaklarıyla değiştirdiğini gösterir. Rapor ayrıca hangi kanalların işlemlerin çalındığını da gösteriyor: TBM ve organik.

Sonuçlar

OWOX BI ekibi, bankanın EBM ağlarındaki zayıflıkları hızla belirlemeye ve ortadan kaldırmaya yardımcı oldu. Sağlanan çözüm sayesinde banka, bağlı kuruluşlarla ilgili istatistikleri izleyebilir (dönüşümleri ve satışları trafik kanallarına daha doğru bir şekilde ilişkilendirir) ve CPA ağlarındaki dolandırıcılık vakalarını aydınlatabilir. Pazarlama ekibi, trafik kaynaklarını yeniden yazan ve Raiffeisen bankasına makul olmayan bir şekilde fazla fatura kesen iki dürüst olmayan ortakla işbirliğini durdurarak reklam bütçesini optimize etmeyi başardı.