Kasus bank Raiffeisen: Cara mengatasi penipuan di jaringan CPA

Diterbitkan: 2022-05-25

Seiring berkembangnya pemasaran digital, penipuan iklan afiliasi digital juga menjadi tantangan yang memukau bagi pemasar online. Ini dilakukan dengan mengirimkan lalu lintas sampah ke situs web atau menggunakan bot untuk memicu imbalan afiliasi. Tidak peduli metode yang tepat, masih dibutuhkan $1 dari setiap $3 yang dihasilkan melalui iklan online. Dengan kata lain, itu adalah sejumlah besar pendapatan curian yang dilakukan setiap hari.

Dalam hal ini, kami menjelaskan solusi yang diberikan oleh tim OWOX BI untuk bank Raiffeisen yang akan berguna bagi bank dan pengguna jaringan CPA lainnya.

Daftar Isi

  • Tantangan
  • Larutan
    • Langkah 1. Kumpulkan data mentah
    • Langkah 2. Proses data
    • Langkah 3. Buat laporan
  • Hasil

Tantangan

Pakar pemasaran Raiffeisen menemukan peningkatan dramatis dalam biaya lalu lintas afiliasi, dengan pendapatan tetap sama. Masalah lainnya adalah nasabah bank mengalami jeda sesi singkat saat memasukkan data formulir aplikasi di website.

Itulah mengapa Raiffeisen berasumsi bahwa beberapa afiliasi CPA mereka dapat menggantikan nilai sumber lalu lintas di halaman checkout bank. Cara kerjanya seperti ini: misalnya, pengguna memasang ekstensi browser untuk mendapatkan diskon. Saat pengguna membuka situs web Anda dan membuka pembayaran, ekstensi menampilkan jendela pop-up dengan penawaran diskon. Jika ada klik pada tautan dari jendela pop-up, ekstensi secara otomatis menulis ulang data sumber lalu lintas di cookie dengan data sumber lalu lintas afiliasi.

Larutan

Tim pemasaran memutuskan untuk memulai dengan mengumpulkan data perilaku pengguna mentah untuk membuktikan hipotesis tentang afiliasi yang menulis ulang data sumber lalu lintas untuk keuntungan mereka. Selanjutnya, data tentang pelanggan tertentu dikumpulkan. Pelanggan ini memiliki dua sesi di halaman yang sama dalam waktu kurang dari 60 detik, dan sumber lalu lintas sesi kedua dialihkan ke afiliasi. Data seperti itu tentang pelanggan ini akan membantu mengidentifikasi mitra afiliasi yang menghubungkan lalu lintas dari saluran lain ke diri mereka sendiri. Dengan tersedianya data ini, dapat dimungkinkan untuk menghentikan kerjasama dengan webmaster yang beritikad buruk, dan mengoptimalkan anggaran untuk pemasaran.

Tim OWOX BI membantu mengumpulkan dan mengolah data yang diperlukan. Berikut skema untuk mendemonstrasikan aliran data:

Langkah 1. Kumpulkan data mentah

Google Analytics mengambil sampel data saat jumlah sesi melebihi ambang pengambilan sampel. Itu sebabnya analis OWOX BI menyarankan untuk mengumpulkan data di Google BigQuery. Selain itu, gudang data cloud ini memenuhi standar keamanan tertinggi, yang sangat penting bagi bank.

Untuk menyiapkan impor data dari situs web ke Google BigQuery, Raiffeisen menggunakan Pipeline OWOX BI. Dengan cara ini, spesialis perusahaan mendapatkan data tanpa sampel hampir secara real-time dan mengumpulkan stempel waktu dari setiap klik. Solusi semacam itu memungkinkan untuk melacak semua kemungkinan urutan tindakan pengguna di seluruh sesi, dalam satu laporan. Misalnya, Anda memerlukan laporan tentang pengguna yang mengunjungi halaman/promo perusahaan Anda, kembali ke situs web melalui BPK, dan, akhirnya, membeli sesuatu. Satu hal lagi yang diperlukan adalah menampilkan kunjungan ini untuk tanggal yang dipilih dalam laporan. Berikut kueri untuk mendapatkan laporan yang Anda butuhkan:

    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

Di bawah ini adalah tabel dengan semua data yang diperoleh sebagai hasil dari kueri.

Langkah 2. Proses data

Daftar nilai yang diperlukan dibuat untuk mengidentifikasi nilai sumber lalu lintas yang diubah dengan nilai afiliasi:

  • Identitas pengguna.
  • Sumber dan media sesi pertama dan berikutnya.
  • Waktu antar sesi.
  • URL pertama dan terakhir dari setiap sesi.
  • Acara di setiap sesi.
  • Peristiwa transaksi di sesi terakhir.

Selanjutnya, untuk memastikan nilai sumber lalu lintas benar-benar ditulis ulang, analis OWOX BI memilih untuk memfilter data dengan mempertimbangkan kondisi berikut:

  • Jangka waktu antara dua sesi harus hingga 60 detik.
  • Halaman situs web harus tetap sama ketika sumber berubah.
  • Harus ada transaksi di sesi terakhir.
  • Media lalu lintas di sesi terakhir harus afiliasi.

Berikut kueri SQL yang digunakan untuk mendapatkan data yang diperlukan:

    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

Langkah 3. Buat laporan

Untuk analisis lebih lanjut, add-on untuk mengimpor data yang dipilih dari Google BigQuery ke Google Spreadsheet telah diterapkan. Dengan menggunakan data yang diimpor, tabel dibuat dengan ID setiap pelanggan yang sesinya ditutup dan sesi baru dibuka di halaman yang sama, dalam waktu kurang dari satu menit di antara dua sesi.

Selanjutnya, data disatukan dalam tabel pivot untuk menunjukkan bahwa pemasar afiliasi bertindak dengan itikad buruk. Angka-angka pada tangkapan layar di bawah ini diubah dan diberikan sebagai contoh:

Misalnya, laporan menunjukkan jumlah transaksi dengan nilai sumber yang ditulis ulang, serta afiliasi mana yang telah mengganti sumber lalu lintas dengan sumber mereka sendiri. Laporan tersebut juga menunjukkan saluran mana yang transaksinya dirampok: BPK dan organik.

Hasil

Tim OWOX BI membantu dengan cepat mengidentifikasi dan menghilangkan kelemahan dalam jaringan CPA bank. Berkat solusi yang diberikan, bank dapat memantau statistik afiliasi (lebih akurat mengaitkan konversi dan penjualan ke saluran lalu lintas) dan mengungkap kasus penipuan dalam jaringan CPA. Tim pemasaran berhasil mengoptimalkan anggaran iklan dengan menghentikan kerja sama dengan dua mitra yang tidak jujur ​​yang menulis ulang sumber lalu lintas dan bank Raiffeisen yang ditagih berlebihan.