Szablony marketingowe WhatsApp
Szablon marketingowy zawiera treści promocyjne, takie jak oferta, ogłoszenie produktowe lub kupon. Przed wysyłką przygotuj zatwierdzoną treść, zgodę odbiorcy oraz jasny sposób obsługi odpowiedzi i rezygnacji.
Zanim wyślesz
Zarządzany katalog Bird nie zawiera żadnego szablonu marketingowego, więc wysyłka marketingowa zawsze korzysta z szablonu utworzonego w Twoim obszarze roboczym, na własnym koncie WhatsApp Business Account:
- Połącz własne konto WhatsApp Business Account i własny numer. Zobacz Konfiguracja numeru telefonu.
- Utwórz szablon z kategorią
marketingi prześlij go do recenzji. Zobacz Wytyczne dotyczące szablonów, aby dowiedzieć się, co przechodzi weryfikację. - Wysyłaj z numeru na tym samym koncie WhatsApp Business Account co szablon.
fromjest wymagany przy wysyłce marketingowej, a nadawca z innego konta zostanie odrzucony422E15023WhatsAppSenderWABAMismatchzanim cokolwiek zostanie naliczone.
Wysyłanie szablonu marketingowego
POST /v1/whatsapp/messages z ustawionym from i obiektem template wskazującym Twój własny slug:
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"
}
]
}
]
}
}'- Parametry body są nazwane, tak samo jak w szablonach utility. Każdy parametr zawiera
name, a kolejność w tablicy nie ma znaczenia. - Kod przycisku kuponowego to zwykły parametr
text, taki jak ten na przycisku powyżej. Nie istnieje osobny typ parametru dla kodu kuponu. - Nagłówek
gifprzyjmuje parametrgif, a nievideoaniimage. Marketing to jedyna kategoria akceptująca nagłówek z animowanym GIF-em. - Wartości karuzeli trafiają do
cards, a nieparameters, a wysyłka musi zawierać dokładnie tyle kart, z iloma szablon został zatwierdzony.
Bird automatycznie kieruje każdą wysyłkę marketingową do Marketing Messages API od Meta; nie musisz tego włączać i nie ma przełącznika per wysyłka. Status onboardingu konta biznesowego w tym API warunkuje optymalizacje Meta, a nie samą dostarczalność, z jednym wyjątkiem: nagłówek gif wymaga konta po onboardingu, w przeciwnym razie wysyłka kończy się błędem na etapie WhatsApp. Zobacz Szablony marketingowe, aby poznać stan konta, co odblokowuje onboarding i gdzie marketing jest ograniczony według kraju.
Rezygnacje
Gdy Bird otrzyma od Meta prawidłowe zdarzenie zatrzymania marketingu, zapisuje preferencję odbiorcy dla danego konta biznesowego. Ta preferencja jest niezależna od blokady wszystkich wiadomości. Przed wysyłką sprawdź oba rekordy. Błąd doręczenia może pojawić się przed pasującym zdarzeniem preferencji; zachowaj wybór odbiorcy i zbadaj tę historię zamiast ponawiać wysyłkę. Zobacz Preferencje, aby dowiedzieć się, jak zapisywać i odczytywać te rekordy.
Koszt
Zastosuj opublikowaną stawkę marketingową dla danego kierunku i waluty. Bird pobiera opłatę za wysyłkę przed przekazaniem wiadomości; rozliczane zdarzenie doręczenia lub odczytu może doliczyć opłatę Meta. Zobacz Koszty i rozliczenia oraz cennik WhatsApp.
Na co uważać
- Meta przekategoryzowuje do marketingu, nigdy z niego, a to zmiana ceny. Szablon, który Meta uzna za promocyjny w treści, staje się
marketingniezależnie od przesłanej kategorii, a wysyłka nadal wychodzi po nowej, wyższej cenie. Nie ma możliwości rezygnacji ani edycji kategorii z powrotem; jedynym rozwiązaniem jest nowy szablon. 131049to wstrzymanie dostarczania, a nie skonfigurowany przez Ciebie limit, i ponowne próby pogarszają sytuację. Meta zgłasza131049zarówno dla ogólnego wstrzymania w USA, jak i dla limitu marketingowego na użytkownika, a zalecenie Meta to odczekanie mniej więcej doby przed ponowną wysyłką. Wcześniejsza ponowna wysyłka może sprawić, że konto będzie niedostępne dla tego odbiorcy na dłużej i zaburza Twoją dostarczalność. Bird zgłasza ten błąd jakorate_limited.131050oznacza, że odbiorca wyłączył "Offers and announcements", i nigdy nie należy ponawiać takiej wysyłki. Meta przyjmuje wiadomość, a następnie odmawia jej doręczenia. Prawidłową odpowiedzią jest ścieżka preferencji wiadomości, nie ponowna wysyłka: sam zablokuj odbiorcę albo poczekaj, aż ponownie włączy doręczanie. Bird dowiaduje się o tym przez ten sam mechanizm preferencji, który zgłosił zatrzymanie. Zobacz Preferencje.132015i132016to wstrzymanie szablonu, a nie problem z odbiorcą.132015to wstrzymanie z powodu niskiej jakości;132016to trwałe wyłączenie po wielokrotnych wstrzymaniach, a jedynym rozwiązaniem jest nowy szablon z inną treścią. Sprawdzaj status samego języka, a nie szablonu, ponieważ wstrzymany język natychmiast blokuje wysyłkę.- Nadawca na niewłaściwym koncie WhatsApp Business Account zostaje odrzucony przed naliczeniem opłaty.
frommusi znajdować się na tym samym koncie co szablon, w przeciwnym razie wysyłka kończy się błędem422E15023WhatsAppSenderWABAMismatch.
Następne kroki
- Szablony WhatsApp: przeglądanie katalogu i wspólny kontrakt wysyłki przez szablon
- Szablony marketingowe: Marketing Messages API, status onboardingu i gdzie marketing jest ograniczony
- Preferencje: zapisywanie i odczytywanie oświadczeń odbiorców
- Szablony utility: aktualizacje zamówień, przypomnienia o wizytach i powiadomienia o koncie
Powiązane zasoby
Przejdź do dokumentacji, przewodników i przykładów dotyczących tego tematu.