Dokumentasi

Panduan EdgeConversions

Semua yang Anda perlukan untuk mengirim data konversi yang andal ke Meta dan Google — ditulis untuk marketer, dengan detail teknis bila diperlukan.

Cara kerja

Platform iklan mengoptimalkan campaign berdasarkan konversi yang mereka terima. Pixel browser kehilangan banyak konversi karena ad-blocker, proteksi tracking Safari, dan batas cookie. EdgeConversions mengirim event yang sama dari server, sehingga jauh lebih sedikit yang hilang.

Website Anda

script atau server Anda

EdgeConversions

rapikan, hash, coba ulang

Meta · GA4

→ Google Ads via GA4

Mulai cepat

  1. Tambah website — Workspace → “Tambah website”: nama dan domain utama.
  2. Hubungkan destinasi — Tab Destinasi: Dataset ID + access token Meta dan/atau Measurement ID + API secret GA4.
  3. Kirim event uji — Tekan “Kirim event uji”. Jika test code Meta diisi, event muncul di Events Manager → Test events.
  4. Hubungkan subdomain (disarankan) — lihat di bawah.
  5. Pasang script — salin snippet dari tab Pemasangan ke <head> website.

Pasang script

Tempel snippet ke <head> setiap halaman (di Shopify, WordPress, atau Google Tag Manager, pakai blok “custom HTML”). Snippet asli dengan alamat Anda ada di tab Pemasangan website.

<script>window.abp=window.abp||function(){(abp.q=abp.q||[]).push(arguments)};</script>
<script async src="https://t.yourstore.com/r/main.js"></script>

PageView terkirim otomatis. Panggil abp('track', …) untuk konversi:

// 1. Optional: tell us who the visitor is (hashed before sending)
abp('identify', { email: '[email protected]', phone: '08123456789' });

// 2. Track a conversion
abp('track', 'Purchase',
  { value: 250000, currency: 'IDR', transaction_id: 'order-1001' },
  { event_id: 'order-1001' });

// Turn off the automatic PageView:
// <script async src="..." data-pageview="off"></script>

Sudah memakai Meta Pixel? Kirim event_id yang sama ke keduanya. Meta lalu menghitung konversi sekali, bukan dua kali (deduplikasi).

Event & parameter

Gunakan nama standar Meta; kami terjemahkan untuk GA4. Nama sendiri (mis. BookDemo) boleh dan menjadi snake_case di GA4 (book_demo).

Anda kirim (Meta) GA4 menerima
PageViewpage_view
ViewContentview_item
Searchsearch
AddToCartadd_to_cart
AddToWishlistadd_to_wishlist
InitiateCheckoutbegin_checkout
AddPaymentInfoadd_payment_info
Purchasepurchase
Leadgenerate_lead
CompleteRegistrationsign_up
Subscribesubscribe
StartTrialstart_trial
Contactcontact

Data event (argumen ke-3)

  • value, currency — nilai order, mis. 250000 dan "IDR"
  • transaction_id — nomor order Anda
  • items — daftar gaya GA4; otomatis diubah ke contents Meta

Data pelanggan (identify / user)

email, phone, first_name, last_name, city, state, zip, country, external_id. Semua di-hash (SHA-256) di server kami. Nomor Indonesia seperti 0812… dinormalisasi menjadi 62812….

Subdomain sendiri

Melayani script dari subdomain toko Anda (mis. t.tokoanda.com) membuat request menjadi first-party: jarang diblokir ad-blocker dan cookie dari server bertahan hingga 400 hari, bukan 7 hari seperti di Safari.

  1. Tab Pemasangan → isi subdomain → Hubungkan.
  2. Di penyedia DNS tambahkan: CNAME t → t.edgeconversions.com
  3. Pengguna Cloudflare: set record ke “DNS only” (awan abu-abu).
  4. Tunggu 1–5 menit hingga DNS dan HTTPS sama-sama Aktif, lalu salin snippet yang baru.

API server

Kirim konversi yang terjadi di luar browser — order lunas, webhook pembayaran, perubahan tahap CRM. Autentikasi dengan secret key website (tab API). Jangan pernah menaruh secret key di kode browser.

POST https://edgeconversions.com/api/v1/events
Authorization: Bearer sk_your_secret_key
Content-Type: application/json

{
  "events": [{
    "event_name": "Purchase",
    "event_id": "order-1001",
    "event_time": 1767225600,
    "url": "https://yourstore.com/thanks",
    "ip": "203.0.113.10",
    "user_agent": "Mozilla/5.0 ...",
    "user": { "email": "[email protected]", "phone": "08123456789" },
    "data": { "value": 250000, "currency": "IDR", "transaction_id": "order-1001" }
  }]
}
HTTP/1.1 202 Accepted
{ "accepted": 1, "dropped": 0, "errors": [] }
KolomKeterangan
event_name Wajib. Huruf, angka, _ (maks. 64).
event_id Disarankan. Id sama = dihitung sekali oleh Meta.
event_time Detik Unix; maks. 7 hari ke belakang. Default: sekarang.
ip, user_agent Milik pelanggan, bukan server Anda — meningkatkan pencocokan.
action_source website · app · email · phone_call · chat · physical_store · system_generated · other

Batas: 100 event per request. Respons: 202 diterima · 400 body tidak valid · 401 key salah · 429 kuota bulanan habis (event yang diterima tetap diproses).

Aplikasi mobile (iOS & Android)

Belum ada SDK native. Aplikasi mobile bisa mengirim event bisnis (Purchase, Lead, pendaftaran) lewat API server. Jangan menanam secret key di aplikasi: aplikasi memanggil backend Anda sendiri, lalu backend yang memanggil API server.

  1. Backend Anda menerima event dari aplikasi dan menambahkan email, telepon, dan ID user Anda sebagai user.external_id.
  2. Kirim ke /api/v1/events dengan action_source diisi app (lihat payload di bawah).
{
  "events": [{
    "event_name": "Purchase",
    "event_id": "order-1001",
    "action_source": "app",
    "user": { "external_id": "user-42", "email": "[email protected]", "phone": "08123456789" },
    "data": { "value": 250000, "currency": "IDR", "transaction_id": "order-1001" }
  }]
}
// Swift — call YOUR backend, which forwards to the Server API
var req = URLRequest(url: URL(string: "https://api.yourapp.com/track")!)
req.httpMethod = "POST"
req.setValue("application/json", forHTTPHeaderField: "Content-Type")
req.httpBody = try? JSONSerialization.data(withJSONObject: [
  "event_name": "Purchase",
  "event_id": "order-1001",
  "value": 250000,
  "currency": "IDR"
])
URLSession.shared.dataTask(with: req).resume()
// Kotlin — call YOUR backend, which forwards to the Server API
val body = JSONObject()
  .put("event_name", "Purchase")
  .put("event_id", "order-1001")
  .put("value", 250000)
  .put("currency", "IDR")
  .toString()
  .toRequestBody("application/json".toMediaType())
val req = Request.Builder().url("https://api.yourapp.com/track").post(body).build()
OkHttpClient().newCall(req).enqueue(object : Callback {
  override fun onFailure(call: Call, e: IOException) {}
  override fun onResponse(call: Call, response: Response) { response.close() }
})

Batasan saat ini. Pencocokan mengandalkan email, telepon, dan external_id yang di-hash. Device identifier (IDFA / GAID), SKAdNetwork, dan attribution install aplikasi belum didukung; untuk itu pakai SDK platform iklan atau mobile measurement partner (AppsFlyer, Adjust). Meta mungkin mewajibkan field khusus app untuk action_source app, dan stream app GA4 (Firebase) belum didukung, jadi cek Test events sebelum mengandalkannya.

TikTok, Google Ads & toko online

Setiap event yang Anda kirim diteruskan ke semua destinasi yang terhubung. Hubungkan di tab Destinasi website Anda.

  • TikTok Events API — pixel code + access token dari TikTok Events Manager. Hanya konversi; page view tetap lewat pixel TikTok. Lead dikirim sebagai SubmitForm.
  • Google Ads — hubungkan dengan Google, isi customer ID, lalu petakan nama event ke ID conversion action (tipe: impor dari klik). Kami mengunggah lewat Data Manager API Google dengan gclid dan email/telepon yang di-hash (enhanced conversions), jadi konversi tetap cocok walau tanpa click ID.
  • WordPress & WooCommerce — pasang plugin dari tab Developer. Plugin memasang tag, melacak lihat produk, tambah ke keranjang, dan checkout, lalu mengirim setiap order lunas secara server-side tepat sekali — beserta click ID yang ditangkap saat checkout.
  • Shopify — tambahkan custom pixel (Settings → Customer events) untuk event browsing dan webhook “Order payment” untuk Purchase. Pixel menautkan setiap checkout ke pengunjung, jadi Purchase dari webhook membawa fbc, ttclid, dan gclid mereka. Purchase tidak pernah terkirim dua kali.

Consent, bot & cookie

Consent Mode v2. Di Pengaturan pilih Basic (tidak ada yang dikirim sebelum pengunjung memilih) atau Advanced (event dikirim beserta status persetujuan dan disalurkan per destinasi). Kami membaca gtag('consent', …) dari cookie banner Anda secara otomatis, atau panggil:

abp('consent', { ad_storage: 'granted', analytics_storage: 'granted', ad_user_data: 'granted', ad_personalization: 'granted' });

Meta, TikTok, dan Google Ads butuh izin iklan; GA4 butuh izin analitik.

Bot & trafik internal. Crawler, monitor uptime, dan headless browser dibuang sebelum dihitung ke kuota. Tambahkan IP kantor atau agency (atau rentang CIDR) ke IP yang diblokir.

Cookie Keeper. Safari dan ad-blocker menghapus cookie lebih cepat. Kami mengingat click ID (fbclid, gclid, ttclid) dan cookie iklan setiap pengunjung di server, lalu memulihkannya di kunjungan berikutnya — selama cookie first-party atau storage browser masih ada — dalam masa atribusi tiap platform.

Kualitas pencocokan. Setiap pengiriman ke platform iklan mendapat skor perkiraan 0–10 berdasarkan data pelanggan yang dibawanya (email, telepon, click ID, …). Ini perkiraan kami, bukan Event Match Quality resmi dari Meta.

Membaca dashboard

Event vs pengiriman
Event adalah satu aksi (sebuah Purchase). Pengiriman adalah event itu dikirim ke satu destinasi. Jika Meta dan GA4 terhubung, 1 event = 2 pengiriman. Kuota menghitung event.
Status
Terkirim diterima platform. Dicoba ulang masalah sementara; dicoba ulang hingga 5 kali (30 dtk → 4 mnt). Gagal ditolak; kolom Respons menjelaskan alasannya.
Tingkat sukses & kesehatan
Terkirim ÷ (terkirim + gagal). Sehat ≥ 95%, perlu dicek ≥ 80%, bermasalah di bawah 80%.
Riwayat
Log pengiriman disimpan 7 hari. Waktu ditampilkan dalam UTC.

Pemecahan masalah

GejalaYang perlu dilakukan
Meta: “Invalid OAuth access token” Buat token baru di Events Manager lalu simpan di tab Destinasi.
Log event kosong Pastikan snippet ada di <head> dan domain halaman tercantum di Pengaturan → Origin yang diizinkan.
Event uji tidak muncul di Meta Isi Test event code; event uji hanya tampil di Test events.
HTTPS tetap “Menunggu” Matikan proxy Cloudflare (DNS only) dan tunggu beberapa menit.
Konversi terhitung dua kali Kirim event_id yang sama dari Pixel dan EdgeConversions.

Istilah

CAPI
Meta Conversions API — cara Meta menerima event dari server.
First-party
Dilayani dari domain Anda sendiri, sehingga browser menganggapnya bagian dari website.
Event Match Quality
Skor Meta seberapa baik event dikaitkan ke seseorang. Lebih banyak data pelanggan (di-hash) = skor lebih tinggi.
Deduplikasi
Menghitung event sekali saat datang dari browser dan server, dicocokkan lewat event_id.

Masih bingung? Hubungi kami — kami siap membantu setup.