Template email

In anteprima

Template con logica, renderizzati al momento dell'invio.

Salvate oggetto e corpo una sola volta, pubblicateli come versione immutabile, quindi inviate tramite slug. Condizionali, cicli e filtri Liquid vengono eseguiti quando il messaggio viene generato, così la logica di personalizzazione risiede nel template anziché essere dispersa nel codice. Createlo nel builder della dashboard, dalla bird CLI, oppure lasciate che un agente lo faccia tramite MCP.

welcome.tsx
200 · 1.2s
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const { data, error } = await bird.email.send({
  from:    "Bird <hello@bird.com>",
  to:      ["ada@example.com"],
  subject: "Your invite is ready",
  html:    await render(<WelcomeEmail name="Ada" />),
}).safe();

if (error) throw error;
console.log(data.id);
// → "em_2bX91Yk8h..."

Memorizza un template. Personalizza all'invio.

Il markup è già in Bird.

I template fanno parte della Bird Email API. Salvate layout e logica una sola volta; ogni invio indica il template tramite slug o id e passa i valori richiesti dai suoi token. Il messaggio finale viene renderizzato lato nostro, così lo stesso template supporta una singola ricevuta, un batch di cento o un broadcast verso un intero pubblico.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

// No subject and no html: the template's published version supplies both.
const { data, error } = await bird.email
  .send({
    from:     "orders@acme.com",
    to:       ["delivered@messagebird.dev"],
    category: "transactional",
    template: {
      slug:       "order-confirmation",
      parameters: {
        first_name: "Ada",
        order:      { number: "A-1043", total: "$42.00" },
      },
    },
  })
  .safe();

Più di un trova-e-sostituisci.

Liquid, risolto lato Bird quando il messaggio viene generato.

  1. 01

    Condizionali.

    Un blocco if Liquid viene mostrato solo quando il suo valore è applicabile, come una nota riservata ai membri o un banner di spedizione gratuita: un unico template copre entrambi i casi.

  2. 02

    Loop.

    Un ciclo for ripete una riga per ogni elemento di un array, così un unico template di conferma ordine elenca ogni articolo effettivamente acquistato dal cliente. Un limite da conoscere in anticipo: un broadcast trasporta un singolo valore per proprietà del contatto e non ha nulla da iterare, quindi un template con cicli viene inviato tramite l'API messages anziché tramite broadcast.

  3. 03

    Filtri.

    Passate un valore attraverso un filtro Liquid prima del rendering. Il filtro default intercetta un nome mancante prima che venga inviato come saluto vuoto.

  4. 04

    Dati annidati.

    I token con notazione a punti accedono a oggetti strutturati, così potete passare un intero oggetto ordine e riferirvi al suo numero e totale direttamente dal markup, senza doverlo appiattire prima.

  5. 05

    Niente da dichiarare.

    L'elenco dei token viene letto dal markup e combinato tra tutte le lingue: non c'è uno schema variabili separato da mantenere allineato con il corpo. I valori possono essere qualsiasi JSON: stringhe, numeri, booleani, array, oggetti.

Crealo nel modo in cui già lavori.

Tre modi per accedere, tutti verso lo stesso template. Il builder della dashboard è quello visuale. La bird CLI gestisce l'intero ciclo di vita da uno script o uno step di deploy, e un agente accede alle stesse operazioni tramite MCP. Avete già componenti React Email? Renderizzateli in HTML e salvate il risultato, lasciando i token di Bird come testo letterale nel JSX, così sopravvivono al rendering invece di essere sostituiti con un valore quando React viene eseguito.

publish-receipt.sh
bird CLI
# Render React Email to HTML, then publish it as a template version.
node scripts/render-receipt.mjs > receipt.json

bird email templates create receipt --category transactional --source html
bird email templates versions languages set "$TEMPLATE" "$DRAFT" en \
  --body-file receipt.json --yes

# --validate-only reports every problem across every language, freezing nothing.
bird email templates versions submit "$TEMPLATE" "$DRAFT" --validate-only --yes
bird email templates versions submit "$TEMPLATE" "$DRAFT" --yes

Versionati, come il resto del tuo codice.

Le modifiche avvengono su una bozza e non toccano mai ciò che è live, perché un invio risolve sempre la versione pubblicata corrente e le bozze non vengono mai inviate. La pubblicazione congela una versione immutabile e numerata e la rende live; se una modifica va storta, si torna a una versione precedente. I salvataggi portano con sé la revisione letta per ultima, così se nel frattempo un collega ha modificato quella lingua, il salvataggio viene rifiutato come conflitto anziché sovrascrivere il suo lavoro. Le statistiche di consegna e coinvolgimento sono suddivise per template, così potete vedere quale sta effettivamente funzionando.

Un template, fino a 25 lingue.

Un template contiene contenuti in fino a 25 lingue, ciascuna con il proprio oggetto e corpo, identificata da un tag BCP-47 come en o pt-BR. Un invio indica la lingua desiderata, oppure la omette e ottiene quella predefinita del template. Quando un invio richiede una lingua non presente nel template, on_missing_language decide cosa succede: fallback serve la corrispondenza più vicina, così una richiesta per pt-BR ottiene risposta da un pt disponibile, e fail rifiuta l'invio del tutto, per contenuti dove la lingua sbagliata è peggio di nessun invio.

Visualizza in anteprima esattamente ciò che verrà inviato.

Compilate un template con valori di esempio e ottenete l'oggetto, il corpo HTML e il corpo testuale che un invio consegnerebbe. L'anteprima renderizza la bozza, utile per verificare una modifica prima della pubblicazione, oppure una versione pubblicata quando volete vedere cosa sta partendo in quel momento. Non viene inviato nulla. Esegue anche gli stessi controlli di personalizzazione della pubblicazione, così un costrutto che verrebbe rifiutato emerge prima qui.

Dove sono diretti i template.

Il builder visuale e una libreria iniziale di quaranta template integrati sono già disponibili: potete copiarne uno nel vostro workspace e modificarlo da lì. Prossimamente: descrivete un template in un prompt e ottenete una bozza da perfezionare, una superficie di composizione più snella per gli agenti e i brand kit, che conterranno colori, tipografia e tono di voce a livello di workspace e stilizzeranno un template a partire da essi. Ognuno di questi estende lo stesso modello versionato, quindi ciò che integrate oggi è la base su cui costruiranno.

Approfondisci nei docs.

La guida ai template copre bozze, versioni pubblicate, contenuti multilingua e le regole Liquid. La guida all'invio contiene il contratto lato invio, e eventi email e webhook vi permette di ricevere aperture e clic.

I template sono integrati con la piattaforma che li circonda.

Memorizza, versiona e personalizza i template sulla stessa Email API che gestisce invio, deliverability, soppressione e analisi. Un unico set di chiavi.

Inizia con un canale.
Aggiungi gli altri quando sei pronto.

Una chiave API di test è subito tua. La produzione si sblocca quando aggiungi un metodo di pagamento e verifichi un mittente.

Usi Claude Code, Cursor o Codex? Copia un prompt di configurazione e il tuo agente installerà la CLI e le skill di Bird per te. Scegli il tuo:

Cursor