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 AndaEdgeConversions
rapikan, hash, coba ulangMeta · GA4
→ Google Ads via GA4Mulai cepat
- Tambah website — Workspace → “Tambah website”: nama dan domain utama.
- Hubungkan destinasi — Tab Destinasi: Dataset ID + access token Meta dan/atau Measurement ID + API secret GA4.
- Kirim event uji — Tekan “Kirim event uji”. Jika test code Meta diisi, event muncul di Events Manager → Test events.
- Hubungkan subdomain (disarankan) — lihat di bawah.
- 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 |
|---|---|
PageView | page_view |
ViewContent | view_item |
Search | search |
AddToCart | add_to_cart |
AddToWishlist | add_to_wishlist |
InitiateCheckout | begin_checkout |
AddPaymentInfo | add_payment_info |
Purchase | purchase |
Lead | generate_lead |
CompleteRegistration | sign_up |
Subscribe | subscribe |
StartTrial | start_trial |
Contact | contact |
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.
- Tab Pemasangan → isi subdomain → Hubungkan.
-
Di penyedia DNS tambahkan:
CNAME t → t.edgeconversions.com - Pengguna Cloudflare: set record ke “DNS only” (awan abu-abu).
- 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": [] }
| Kolom | Keterangan |
|---|---|
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.
- Backend Anda menerima event dari aplikasi dan menambahkan email, telepon, dan ID user Anda sebagai user.external_id.
- 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
| Gejala | Yang 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.