Ketahui Iklan Mana yang Memulai Setiap Chat WhatsApp
Saat seseorang mengetuk iklan Click-to-WhatsApp atau postingan yang dipromosikan, pesan pertamanya membawa data iklan tersebut. StartMessaging menyimpannya di kontak baru, menampilkannya di CRM, dan mengirimkannya ke sistem Anda lewat webhook, sehingga lead dari iklan tidak pernah datang tanpa identitas.
✦ Uji coba gratis 14 hari · Nomor WhatsApp Business Anda sendiri · Meta menagih pesan secara langsung
Data Iklan Ikut dalam Pesan Pertama
Anda membuat dan membayar iklan di Meta Ads Manager. Saat pelanggan mengetuk iklan dan mengirim pesan pertama, WhatsApp melampirkan data rujukan: jenis sumber, ID iklan atau postingan, tautannya, judul, teks iklan, dan ID klik (ctwaClid). StartMessaging membacanya begitu pesan masuk ke kotak masuk tim Anda.
- Berlaku untuk iklan Click-to-WhatsApp dan postingan yang dipromosikan
- Judul, teks iklan, ID dan tautan iklan atau postingan tersimpan
- ID klik (ctwaClid) disimpan untuk pelaporan konversi Anda
- Label “Jendela iklan gratis berakhir…” selama jendela gratis 72 jam dari Meta terbuka
Setiap Lead Iklan Masuk ke CRM Beserta Iklannya
Kontak yang dibuat dari klik iklan mendapat sumber "Iklan Click-to-WhatsApp" dan data iklan sebagai kolom kustom: ctwa_source_type, ctwa_source_id, ctwa_source_url, ctwa_headline, ctwa_body, dan ctwa_clid. Buka kontaknya dan kartu "Dari iklan Click-to-WhatsApp" menampilkan iklan yang diketuk. Kolom ini diisi satu kali, oleh pesan pertama tersebut. Kontak yang sudah ada tetap memakai sumber dan kolom aslinya, dan data rujukan tetap dikirim lewat webhook message.received.
- Sumber lead tercatat sebagai "Iklan Click-to-WhatsApp"
- Detail iklan disimpan sebagai kolom kustom, diisi satu kali
- Ditampilkan di halaman kontak bersama tag dan catatan
Dari Ketukan Iklan hingga Lead Berkualitas
1. Jalankan iklan di Meta Ads Manager
Buat iklan Click-to-WhatsApp, atau promosikan postingan dengan tombol WhatsApp, yang membuka chat ke nomor yang Anda hubungkan ke StartMessaging.
2. Pelanggan mengetuk dan menulis
Pesan pertamanya masuk ke kotak masuk tim dengan data rujukan iklan terlampir.
3. Kontak dibuat beserta iklannya
Kontak baru mendapat sumber ctwa_ad dan kolom kustom ctwa_*. Sistem Anda menerima data rujukan di message.received dan sumbernya di contact.created.
4. Arahkan lead
Alur chatbot dengan pemicu pesan pertama menyapa setiap chat baru, termasuk dari klik iklan: ajukan pertanyaan kualifikasi, tambahkan tag, pindahkan kontak ke tahap pipeline, dan tugaskan agen.
5. Laporkan konversi sendiri
Saat lead membeli, sistem Anda sendiri mengirim ctwaClid yang tersimpan ke Conversions API Meta; StartMessaging tidak mengirim konversi ke Meta untuk Anda. Untuk mengkreditkan penjualan ke kampanye StartMessaging, laporkan dengan POST /api/v1/conversions di paket Business.
Satu Rujukan, Tiga Tempat untuk Memakainya
Kolom rujukan mana pun bisa kosong jika Meta tidak menyertakannya.
| Data iklan | Di kontak (CRM) | Webhook message.received | REST API |
|---|---|---|---|
| Jenis sumber, ID iklan atau postingan, tautan | ctwa_source_type, ctwa_source_id, ctwa_source_url | referral.sourceType, sourceId, sourceUrl | Atribut kontak di GET /api/v1/contacts |
| Judul dan teks iklan | ctwa_headline, ctwa_body (dipotong pada 500 karakter) | referral.headline, referral.body | Atribut kontak |
| ID klik | ctwa_clid | referral.ctwaClid | Atribut kontak |
| Sumber lead | "Iklan Click-to-WhatsApp" | source "ctwa_ad" di contact.created | source: "ctwa_ad" |
| Kontak lama mengeklik iklan | Sumber dan kolomnya tetap | ✓ Data rujukan tetap dikirim | Tidak berubah |
| Jendela titik masuk gratis (72 jam) | Label “Jendela iklan gratis berakhir…” di obrolan | freeEntryPointExpiresAt pada percakapan |
Baca data iklan dari pesan pertama
Verifikasi header X-SM-Signature, lalu simpan referral.ctwaClid bersama lead.
{
"id": "evt_01JCA4M8ZP",
"type": "message.received",
"createdAt": "2026-10-07T09:15:04.000Z",
"workspaceId": "ws_9f2c",
"data": {
"message": {
"id": "msg_51c0",
"conversationId": "conv_8e21",
"contactId": "ct_4a7d",
"from": "+919812345678",
"type": "text",
"text": "Hi, is the festive offer still on?",
"media": null,
"reply": null,
"context": null,
"form": null,
"referral": {
"sourceType": "ad",
"sourceId": "120210000000000000",
"sourceUrl": "https://fb.me/abc123",
"headline": "Festive sale on silk sarees",
"body": "Tap to chat with us on WhatsApp",
"ctwaClid": "ARAkLkA8rmlFeiCktEJQ-QTwRiyYHAFDLMNDBH0CD3qpjd0HR4irJ6LEkR7JwFF4XvnO2E4Nx0-eM-GABDLOPaOdRMv-_zfUQ2a"
},
"timestamp": "2026-10-07T09:15:02.000Z"
},
"contact": {
"id": "ct_4a7d",
"phone": "+919812345678",
"name": "Asha"
}
}
} import express from 'express';
import { createHmac, timingSafeEqual } from 'node:crypto';
const app = express();
const SECRET = process.env.SM_WEBHOOK_SECRET; // the whole whsec_… string
function verify(rawBody, headers) {
const ts = headers['x-sm-timestamp'];
const sigs = headers['x-sm-signature'];
if (!/^\d+$/.test(ts ?? '') || typeof sigs !== 'string') return false;
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const expected = createHmac('sha256', SECRET).update(`${ts}.`).update(rawBody).digest();
return sigs.split(',').some((part) => {
const m = /^v1=([0-9a-f]{64})$/.exec(part.trim());
return m !== null && timingSafeEqual(Buffer.from(m[1], 'hex'), expected);
});
}
app.post('/webhooks/startmessaging', express.raw({ type: 'application/json' }), async (req, res) => {
if (!verify(req.body, req.headers)) return res.sendStatus(401);
res.sendStatus(200); // answer within 5 seconds, then do the work
const event = JSON.parse(req.body);
if (event.type !== 'message.received') return;
const { referral, from } = event.data.message;
if (!referral) return; // not the first message from an ad
// Any referral field can be null when Meta leaves it out.
await saveAdLead({
eventId: event.id, // delivered at least once: deduplicate on this
phone: from,
adId: referral.sourceId,
headline: referral.headline,
ctwaClid: referral.ctwaClid, // keep it for Meta's Conversions API
});
// When this lead converts, your own server sends ctwaClid to Meta's
// Conversions API. StartMessaging does not send conversions to Meta.
}); import hmac, hashlib, json, os, time
from flask import Flask, request
app = Flask(__name__)
SECRET = os.environ['SM_WEBHOOK_SECRET'].encode() # the whole whsec_… string
def verify(raw_body, ts, sigs):
if not ts or not ts.isdigit() or not sigs:
return False
if abs(time.time() - int(ts)) > 300:
return False
expected = hmac.new(SECRET, f'{ts}.'.encode() + raw_body, hashlib.sha256).hexdigest()
return any(
hmac.compare_digest(part.strip()[3:], expected)
for part in sigs.split(',') if part.strip().startswith('v1=')
)
@app.post('/webhooks/startmessaging')
def startmessaging_webhook():
raw = request.get_data()
if not verify(raw, request.headers.get('X-SM-Timestamp'), request.headers.get('X-SM-Signature')):
return '', 401
event = json.loads(raw)
if event['type'] == 'message.received':
message = event['data']['message']
referral = message.get('referral')
if referral: # first message from a Click-to-WhatsApp ad
save_ad_lead(
event_id=event['id'], # deduplicate on this
phone=message['from'],
ad_id=referral.get('sourceId'),
headline=referral.get('headline'),
ctwa_clid=referral.get('ctwaClid'), # for Meta's Conversions API
)
return '', 200 Iklan Click-to-WhatsApp — FAQ
Apakah saya membuat iklan di StartMessaging?
Tidak. Anda membuat, menargetkan, dan membayar iklan Click-to-WhatsApp di Meta Ads Manager, atau mempromosikan postingan dari Halaman Facebook atau akun Instagram Anda. Arahkan iklan ke nomor WhatsApp yang terhubung ke StartMessaging, dan StartMessaging membaca data iklan dari setiap chat baru yang dimulainya.
Apa yang diambil StartMessaging dari iklan?
Apa pun yang dikirim Meta dalam data rujukan pada pesan pertama: jenis sumber, ID iklan atau postingan, tautannya, judul, teks iklan, dan ID klik (ctwaClid). Masing-masing bisa kosong jika Meta tidak menyertakannya. Kontak baru menyimpannya sebagai kolom kustom ctwa_source_type, ctwa_source_id, ctwa_source_url, ctwa_headline, ctwa_body (dipotong pada 500 karakter), dan ctwa_clid.
Apa yang terjadi jika kontak lama mengeklik iklan?
Kontak tetap memakai sumber dan kolom kustom aslinya; keduanya hanya diisi sekali, oleh pesan yang membuat kontak tersebut. Data rujukan tetap dikirim lewat webhook message.received, sehingga sistem Anda bisa mencatat klik iklan yang baru.
Apakah StartMessaging mengirim konversi ke Conversions API Meta?
Tidak. StartMessaging menyimpan ID klik (ctwaClid) di kontak dan di webhook. Saat lead berkonversi, server Anda sendiri, atau alat otomasi yang Anda kelola, mengirim ctwaClid ke Conversions API Meta. Untuk mengkreditkan penjualan ke kampanye StartMessaging, paket Business menyediakan POST /api/v1/conversions: laporkan penjualan dengan nomor telepon pelanggan, dan kampanye terakhir yang terkirim kepadanya dalam jendela konversi Anda mendapat kreditnya.
Apakah Meta menagih pesan di obrolan dari iklan?
Tidak, selama jendela titik masuk gratis. Saat pelanggan menulis dari iklan Click-to-WhatsApp dan Anda membalas tepat waktu, Meta membuka jendela titik masuk gratis 72 jam yang selama itu Meta tidak menagih pesan di obrolan tersebut, termasuk template. Kotak masuk menampilkan label “Jendela iklan gratis berakhir…” hingga saat itu, dan API mengembalikan waktu berakhirnya sebagai freeEntryPointExpiresAt pada percakapan. Jendela ini tidak menggantikan aturan 24 jam: setelah 24 jam pelanggan lewat, Anda tetap memerlukan template yang disetujui. Setelah jendela berakhir, tarif normal Meta berlaku.
Bisakah saya membalas lead iklan secara otomatis?
Ya. Alur chatbot dengan pemicu pesan pertama berjalan pada pesan pertama kontak di chat tersebut, sehingga menyapa setiap chat baru, termasuk dari klik iklan. Alur ini bisa mengajukan pertanyaan, menambahkan tag, memindahkan kontak ke tahap pipeline, dan menyerahkan chat ke agen. Balasan otomatis berdasarkan kata kunci juga bisa dipakai. Karena pelanggan menulis lebih dulu, jendela 24 jam terbuka dan Anda bisa membalas dengan pesan bebas. Alur chatbot tersedia di paket Business dan uji coba gratis 14 hari; balasan otomatis kata kunci tersedia di Team dan Business.
Bisakah saya mengirim lead iklan ke CRM atau spreadsheet saya sendiri?
Ya. Berlangganan message.received (membawa data rujukan) dan contact.created (membawa source "ctwa_ad"), atau sinkronkan dengan GET /api/v1/contacts dan updatedSince, yang mengembalikan sumber dan atribut ctwa_* tiap kontak. Zapier, Make, dan Pabbly Connect bisa dipakai lewat modul webhook dan HTTP generik mereka; belum ada aplikasi resmi StartMessaging di marketplace tersebut.
Halaman Terkait
Ubah Klik Iklan Menjadi Lead yang Terlacak
Uji coba gratis 14 hari. Hubungkan nomor WhatsApp Business Anda sendiri dan lihat iklan di balik setiap chat baru.