Template marketing WhatsApp
Template marketing membawa konten promosi, seperti penawaran, pengumuman produk, atau kupon. Siapkan konten yang sudah disetujui, izin penerima, dan cara yang jelas untuk menangani balasan dan opt-out sebelum mengirim.
Sebelum Anda mengirim
Katalog terkelola Bird tidak menyimpan template marketing sama sekali, jadi pengiriman marketing selalu menggunakan template yang dibuat workspace Anda, pada WhatsApp Business Account milik Anda sendiri:
- Hubungkan WhatsApp Business Account dan nomor milik Anda sendiri. Lihat Penyiapan nomor telepon.
- Buat template dengan kategori
marketingdan ajukan untuk ditinjau. Lihat Panduan template untuk mengetahui apa yang lolos. - Kirim dari nomor pada WhatsApp Business Account yang sama dengan template.
fromwajib pada pengiriman marketing, dan pengirim dari akun berbeda ditolak422E15023WhatsAppSenderWABAMismatchsebelum ada biaya yang dikenakan.
Mengirim template marketing
POST /v1/whatsapp/messages dengan from disetel dan objek template yang menyebutkan slug Anda sendiri:
const msg = await bird.whatsapp.send({
to: "+16505551234",
from: "+13125550101",
template: {
slug: "summer_sale",
language: "en",
components: [
{
type: "header",
parameters: [{ type: "image", url: "https://cdn.example.com/banners/summer.png" }],
},
{ type: "body", parameters: [{ type: "text", name: "first_name", text: "Pablo" }] },
{ type: "button", parameters: [{ type: "text", text: "SUMMER25" }] },
],
},
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+16505551234",
from_="+13125550101",
template="summer_sale",
language="en",
components=[
{
"type": "header",
"parameters": [{"type": "image", "url": "https://cdn.example.com/banners/summer.png"}],
},
{"type": "body", "parameters": [{"type": "text", "name": "first_name", "text": "Pablo"}]},
{"type": "button", "parameters": [{"type": "text", "text": "SUMMER25"}]},
],
)
print(msg.id, msg.status)package main
import (
"context"
"fmt"
"log"
"os"
bird "github.com/messagebird/bird-sdk-go"
"github.com/messagebird/bird-sdk-go/option"
)
func main() {
client, err := bird.NewClient(option.WithAPIKey(os.Getenv("BIRD_API_KEY")))
if err != nil {
log.Fatal(err)
}
name := "Pablo"
nameKey := "first_name"
banner := "https://cdn.example.com/banners/summer.png"
coupon := "SUMMER25"
components := []bird.WhatsAppMessageTemplateComponent{
{Type: "header", Parameters: &[]bird.WhatsAppMessageTemplateComponentParameter{{Type: "image", Url: &banner}}},
{Type: "body", Parameters: &[]bird.WhatsAppMessageTemplateComponentParameter{{Type: "text", Name: &nameKey, Text: &name}}},
{Type: "button", Parameters: &[]bird.WhatsAppMessageTemplateComponentParameter{{Type: "text", Text: &coupon}}},
}
msg, err := client.Whatsapp.Send(context.Background(), bird.WhatsappSendParams{
To: "+16505551234",
From: "+13125550101",
Template: "summer_sale",
Language: "en",
Components: components,
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$components = [
(new WhatsAppMessageTemplateComponent())
->setType('header')
->setParameters([
(new WhatsAppMessageTemplateComponentParameter())->setType('image')->setUrl('https://cdn.example.com/banners/summer.png'),
]),
(new WhatsAppMessageTemplateComponent())
->setType('body')
->setParameters([
(new WhatsAppMessageTemplateComponentParameter())->setType('text')->setName('first_name')->setText('Pablo'),
]),
(new WhatsAppMessageTemplateComponent())
->setType('button')
->setParameters([
(new WhatsAppMessageTemplateComponentParameter())->setType('text')->setText('SUMMER25'),
]),
];
$message = $bird->whatsapp->send(
to: '+16505551234',
from: '+13125550101',
template: 'summer_sale',
language: 'en',
components: $components,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--from +13125550101 \
--components '[{"parameters":[{"type":"image","url":"https://cdn.example.com/banners/summer.png"}],"type":"header"},{"parameters":[{"name":"first_name","text":"Pablo","type":"text"}],"type":"body"},{"parameters":[{"text":"SUMMER25","type":"text"}],"type":"button"}]' \
--language en \
--template summer_sale \
--to +16505551234curl -X POST "https://us1.platform.bird.com/v1/whatsapp/messages" \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+16505551234",
"from": "+13125550101",
"template": {
"slug": "summer_sale",
"language": "en",
"components": [
{
"type": "header",
"parameters": [
{
"type": "image",
"url": "https://cdn.example.com/banners/summer.png"
}
]
},
{
"type": "body",
"parameters": [
{
"type": "text",
"name": "first_name",
"text": "Pablo"
}
]
},
{
"type": "button",
"parameters": [
{
"type": "text",
"text": "SUMMER25"
}
]
}
]
}
}'- Parameter body diberi nama, sama seperti utility. Setiap parameter membawa
name, dan urutan dalam array tidak bermakna. - Kode tombol kupon adalah parameter
textbiasa, seperti parameter pada tombol di atas. Tidak ada tipe parameter kode kupon terpisah. - Header
gifmenggunakan parametergif, bukanvideoatauimage. Marketing adalah satu-satunya kategori yang menerima header GIF animasi. - Nilai carousel ditempatkan pada
cards, bukanparameters, dan pengiriman harus menyertakan jumlah kartu yang persis sama dengan yang disetujui pada template.
Bird merutekan setiap pengiriman marketing ke Marketing Messages API Meta secara otomatis; Anda tidak perlu memilih ikut dan tidak ada pengaturan untuk memilihnya pada tiap pengiriman. Status onboarding akun bisnis dengan API tersebut menentukan optimisasi Meta, bukan pengiriman itu sendiri, dengan satu pengecualian: header gif memerlukan akun yang sudah di-onboard atau pengiriman gagal di WhatsApp. Lihat Template marketing untuk status akun, apa yang dibuka oleh onboarding, dan di mana marketing dibatasi berdasarkan negara.
Opt-out
Ketika Bird menerima event marketing-stop yang valid dari Meta, preferensi penerima untuk akun bisnis tersebut akan dicatat. Preferensi ini terpisah dari penekanan semua pesan. Periksa kedua catatan sebelum mengirim. Kegagalan pengiriman bisa tiba sebelum event preferensi yang sesuai; pertahankan pilihan penerima dan selidiki riwayat tersebut alih-alih mencoba lagi. Lihat Preferensi untuk mencatat dan membaca catatan ini.
Biaya
Gunakan tarif marketing yang dipublikasikan untuk tujuan dan mata uang yang berlaku. Bird mengenakan biaya keluar sebelum pesan diteruskan ke Meta; hasil pesan tersampaikan atau dibaca yang dapat ditagih dapat menambahkan biaya Meta. Lihat Biaya dan penagihan dan Harga WhatsApp.
Hal yang perlu diperhatikan
- Meta mengkategorikan ulang ke marketing, tidak pernah keluar dari marketing, dan itu berarti perubahan harga. Template yang Meta anggap bersifat promosi menjadi
marketingapa pun kategori yang Anda ajukan, dan kiriman tetap terkirim dengan harga baru yang lebih tinggi. Tidak ada opt-out dan tidak ada cara mengedit kembali kategorinya; solusinya adalah template baru. 131049adalah jeda pengiriman, bukan pembatasan laju permintaan yang Anda konfigurasi, dan mencoba lagi memperburuknya. Meta melaporkan131049baik untuk jeda menyeluruh di AS maupun untuk batas marketing per pengguna, dan panduan Meta sendiri adalah menunggu kurang lebih satu hari sebelum mengirim ulang. Mengirim ulang lebih cepat dapat membuat akun tidak tersedia bagi penerima tersebut lebih lama dan mengacaukan rasio pengiriman Anda. Bird melaporkan kegagalan ini sebagairate_limited.131050berarti penerima menonaktifkan "Offers and announcements", dan pengiriman tidak boleh dicoba lagi. Meta menerima pengiriman lalu menolak untuk mengirimkannya. Respons yang benar adalah jalur preferensi pesan, bukan mengirim ulang: tekan penerima sendiri, atau tunggu sampai mereka mengaktifkan kembali pengiriman, yang Bird ketahui melalui mekanisme preferensi yang sama yang melaporkan penghentian tersebut. Lihat Preferensi.132015dan132016adalah penangguhan template, bukan masalah penerima.132015adalah penangguhan karena kualitas rendah;132016adalah penonaktifan permanen setelah penangguhan berulang, dan satu-satunya solusinya adalah template baru dengan konten berbeda. Periksa status bahasa itu sendiri, bukan status template, karena bahasa yang ditangguhkan langsung berhenti mengirim.- Pengirim pada WhatsApp Business Account yang salah ditolak sebelum ada biaya.
fromharus berada pada akun yang sama dengan template, atau pengiriman gagal422E15023WhatsAppSenderWABAMismatch.
Langkah selanjutnya
- Template WhatsApp: menelusuri katalog dan ketentuan umum pengiriman menggunakan template
- Template marketing: Marketing Messages API, status onboarding, dan di mana marketing dibatasi
- Preferensi: mencatat dan membaca pernyataan penerima
- Template utility: pembaruan pesanan, pengingat janji temu, dan pemberitahuan akun
Sumber daya terkait
Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini.