Template marketing WhatsApp
Un template di marketing veicola contenuti promozionali, come un'offerta, l'annuncio di un prodotto o un coupon. Prima di inviare, prepara contenuti approvati, il consenso del destinatario e un modo chiaro per gestire le risposte e le revoche del consenso.
Prima di inviare
Il catalogo gestito di Bird non contiene alcun template marketing, quindi un invio marketing usa sempre un template creato dal tuo spazio di lavoro, su un WhatsApp Business Account di tua proprietà:
- Collega un WhatsApp Business Account e un numero tuo. Vedi Configurazione del numero di telefono.
- Crea un template con categoria
marketinge invialo per la revisione. Vedi Linee guida per i template per i criteri di approvazione. - Invia da un numero sullo stesso WhatsApp Business Account del template.
fromè obbligatorio per un invio marketing, e un mittente su un account diverso viene rifiutato422E15023WhatsAppSenderWABAMismatchprima di qualsiasi addebito.
Invio di un template marketing
POST /v1/whatsapp/messages con from impostato e un oggetto template che indica il tuo 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"
}
]
}
]
}
}'- I parametri del body sono nominati, come per utility. Ogni parametro porta un
name, e l'ordine nell'array non ha alcun significato. - Il codice di un pulsante coupon è un normale parametro
text, come quello sul pulsante qui sopra. Non esiste un tipo di parametro separato per i codici coupon. - Un header
gifrichiede un parametrogif, nonvideooimage. Marketing è l'unica categoria che accetta un header con GIF animata. - I valori di un carosello vanno su
cards, non suparameters, e l'invio deve fornire esattamente il numero di card con cui il template è stato approvato.
Bird instrada automaticamente ogni invio marketing verso l'API Marketing Messages di Meta; non devi attivarlo e non esiste un'opzione per singolo invio. Lo stato di onboarding dell'account business con quell'API condiziona le ottimizzazioni di Meta, non la consegna in sé, con un'eccezione: un header gif richiede un account che ha completato l'onboarding, altrimenti l'invio fallisce a WhatsApp. Vedi Template marketing per lo stato dell'account, cosa sblocca l'onboarding e dove il marketing è limitato per paese.
Rinunce
Quando Bird riceve da Meta un evento valido di interruzione marketing, registra una preferenza del destinatario per quel business account. Questa preferenza è separata da una soppressione di tutti i messaggi. Verifica entrambi i record prima di inviare. Un errore di consegna può arrivare prima dell'evento di preferenza corrispondente: conserva la scelta del destinatario e indaga sulla cronologia anziché riprovare. Consulta Preferenze per la registrazione e la lettura di questi record.
Costi
Usa la tariffa di marketing pubblicata per la destinazione e la valuta. Bird addebita la propria commissione in uscita prima dell'invio; un esito di consegna o lettura fatturabile può aggiungere la commissione di Meta. Consulta Costi e fatturazione e Tariffe WhatsApp.
Aspetti da tenere d'occhio
- Meta ricategorizza verso marketing, mai da marketing ad altre categorie, e questo comporta un cambio di prezzo. Un template che Meta ritiene promozionale nella sostanza diventa
marketingqualunque categoria tu abbia indicato, e l'invio continua a uscire al nuovo prezzo, più alto. Non c'è possibilità di rinuncia né modo di ripristinare la categoria; l'unico rimedio è un nuovo template. 131049è una pausa nella consegna, non una limitazione di frequenza configurata da te, e riprovare peggiora la situazione. Meta segnala131049sia per la sua pausa generale negli USA sia per un limite marketing per utente, e la sua stessa indicazione è di attendere circa un giorno prima di reinviare. Reinviare prima può rendere l'account non disponibile per quel destinatario più a lungo e altera il tuo tasso di consegna. Bird segnala l'errore comerate_limited.131050significa che il destinatario ha disattivato "Offers and announcements" e non deve mai essere riprovato. Meta accetta l'invio e poi rifiuta di consegnarlo. La risposta corretta è il percorso delle preferenze di messaggistica, non un reinvio: sopprimi tu stesso il destinatario oppure attendi che riattivi la consegna, cosa che Bird apprende tramite lo stesso meccanismo di preferenze che ha segnalato l'interruzione. Consulta Preferenze.132015e132016indicano la sospensione del template, non un problema del destinatario.132015è una pausa per bassa qualità;132016è la disabilitazione permanente dopo sospensioni ripetute, e l'unico rimedio è un nuovo template con contenuto diverso. Controlla lo stato della singola lingua anziché quello del template, poiché una lingua sospesa blocca immediatamente l'invio.- Un mittente sul WhatsApp Business Account sbagliato viene rifiutato prima di qualsiasi addebito.
fromdeve trovarsi sullo stesso account del template, altrimenti l'invio fallisce422E15023WhatsAppSenderWABAMismatch.
Passi successivi
- Template WhatsApp: consultare il catalogo e il contratto condiviso di invio tramite template
- Template marketing: l'API Marketing Messages, lo stato di onboarding e dove il marketing è limitato
- Preferenze: registrazione e lettura delle dichiarazioni dei destinatari
- Template utility: aggiornamenti sugli ordini, promemoria per appuntamenti e notifiche sull'account
Risorse correlate
Continua con la documentazione, le guide e gli esempi per questo argomento.