WhatsApp-Marketing-Templates
Ein Marketing-Template enthält werbliche Inhalte wie ein Angebot, eine Produktankündigung oder einen Gutschein. Bereiten Sie vor dem Versand genehmigte Inhalte, die Einwilligung der Empfänger und einen klaren Umgang mit Antworten und Opt-outs vor.
Bevor Sie senden
Der verwaltete Katalog von Bird enthält kein einziges Marketing-Template. Ein Marketing-Versand verwendet daher immer ein Template, das Ihr Workspace erstellt hat, auf einem eigenen WhatsApp Business Account:
- Verbinden Sie ein WhatsApp Business Account und eine eigene Nummer. Siehe Einrichtung der Telefonnummer.
- Erstellen Sie ein Template mit der Kategorie
marketingund reichen Sie es zur Prüfung ein. Siehe Template-Richtlinien für die Freigabekriterien. - Senden Sie von einer Nummer auf demselben WhatsApp Business Account wie das Template.
fromist bei einem Marketing-Versand erforderlich, und ein Absender auf einem anderen Account wird422E15023WhatsAppSenderWABAMismatchabgelehnt, bevor etwas berechnet wird.
Ein Marketing-Template senden
POST /v1/whatsapp/messages mit gesetztem from und einem template-Objekt, das Ihren eigenen Slug benennt:
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"
}
]
}
]
}
}'- Body-Parameter sind benannt, genau wie bei Utility. Jeder Parameter trägt einen
name, und die Reihenfolge im Array hat keine Bedeutung. - Der Code eines Gutschein-Buttons ist ein gewöhnlicher
text-Parameter, wie der auf dem Button oben. Es gibt keinen separaten Parametertyp für Gutscheincodes. - Ein
gif-Header erwartet einengif-Parameter, nichtvideooderimage. Marketing ist die einzige Kategorie, die einen animierten GIF-Header akzeptiert. - Carousel-Werte gehören auf
cards, nicht aufparameters, und ein Versand muss exakt die Anzahl an Karten liefern, mit der das Template genehmigt wurde.
Bird leitet jeden Marketing-Versand automatisch an Metas Marketing Messages API weiter; Sie müssen sich nicht anmelden, und es gibt keinen Schalter pro Versand. Der Onboarding-Status des Business-Accounts bei diesem API steuert Metas Optimierungen, nicht die Zustellung selbst, mit einer Ausnahme: Ein gif-Header erfordert einen Account mit abgeschlossenem Onboarding, sonst schlägt der Versand bei WhatsApp fehl. Siehe Marketing-Templates für den Account-Status, was Onboarding freischaltet und wo Marketing länderspezifisch eingeschränkt ist.
Opt-outs
Wenn Bird ein gültiges Marketing-Stopp-Ereignis von Meta empfängt, speichert es eine Empfängerpräferenz für dieses Geschäftskonto. Diese Präferenz ist getrennt von einer vollständigen Nachrichtensperre. Prüfen Sie beide Einträge vor dem Senden. Ein Zustellfehler kann vor dem zugehörigen Präferenzereignis eintreffen; bewahren Sie die Entscheidung des Empfängers und untersuchen Sie den Verlauf, anstatt es erneut zu versuchen. Siehe Präferenzen zum Erfassen und Abfragen dieser Einträge.
Kosten
Verwenden Sie den veröffentlichten Marketing-Tarif für das Zielland und die Währung. Bird berechnet die eigene Versandgebühr vor der Übermittlung; ein abrechenbares Zustell- oder Leseergebnis kann Metas Gebühr hinzufügen. Siehe Kosten und Abrechnung und WhatsApp-Preise.
Worauf Sie achten sollten
- Meta kategorisiert in Marketing um, nie heraus, und das ist eine Preisänderung. Ein Template, das Meta inhaltlich als werblich einstuft, wird zu
marketing, egal welche Kategorie Sie eingereicht haben, und der Versand erfolgt weiterhin zum neuen, höheren Preis. Es gibt kein Opt-out und keine Möglichkeit, die Kategorie zurückzusetzen; die Lösung ist ein neues Template. 131049ist eine Zustellpause, keine von Ihnen konfigurierte Begrenzung der Anfragerate, und erneutes Senden verschlimmert es. Meta meldet131049sowohl bei seiner generellen US-Pause als auch bei einem benutzerbezogenen Marketing-Limit, und Metas eigene Empfehlung ist, etwa einen Tag mit dem erneuten Senden zu warten. Früheres erneutes Senden kann den Account für diesen Empfänger länger unerreichbar machen und verfälscht Ihre eigene Zustellrate. Bird meldet den Fehler alsrate_limited.131050bedeutet, dass der Empfänger "Offers and announcements" deaktiviert hat, und der Versand darf niemals erneut versucht werden. Meta nimmt den Versand an und lehnt dann die Zustellung ab. Die richtige Reaktion ist der Messaging-Präferenzen-Pfad, kein erneuter Versand: Unterdrücken Sie den Empfänger selbst, oder warten Sie, bis er die Zustellung wieder aktiviert, worüber Bird über denselben Präferenzmechanismus informiert wird, der den Stopp gemeldet hat. Siehe Präferenzen.132015und132016bedeuten Template-Pausierung, kein Empfängerproblem.132015ist eine Pause wegen niedriger Qualität;132016ist eine dauerhafte Deaktivierung nach wiederholten Pausen, und die einzige Lösung ist ein neues Template mit anderem Inhalt. Prüfen Sie den Status der jeweiligen Sprache statt den des Templates, da eine pausierte Sprache den Versand sofort stoppt.- Ein Absender auf dem falschen WhatsApp Business Account wird vor jeder Berechnung abgelehnt.
frommuss auf demselben Account wie das Template liegen, sonst schlägt der Versand fehl422E15023WhatsAppSenderWABAMismatch.
Nächste Schritte
- WhatsApp-Templates: Katalog durchsuchen und der gemeinsame Vertrag für den Template-Versand
- Marketing-Templates: die Marketing Messages API, Onboarding-Status und wo Marketing eingeschränkt ist
- Präferenzen: Empfängeraussagen erfassen und abfragen
- Utility-Templates: Bestellupdates, Terminbenachrichtigungen und Kontohinweise
Verwandte Ressourcen
Weiter mit der Dokumentation, Anleitungen und Beispielen zu diesem Thema.