Consegna avvisi sugli ordini, promemoria e notifiche via SMS.
Raggiungi i clienti sul telefono con aggiornamenti sulle spedizioni, promemoria per le prenotazioni e avvisi sull'account, da un numero di telefono registrato o da un mittente con il nome del brand. Bird restituisce la codifica dei caratteri e il numero di segmenti quando accetta il messaggio, evita testi duplicati quando la tua app ripete una richiesta scaduta e invia al tuo webhook gli aggiornamenti di consegna degli operatori.
Il tuo ordine n. 4821 è pronto per il ritiro.
Messaggio
Dettagli
La consegna è una ricevuta dell'operatore. Non dimostra che qualcuno abbia letto il messaggio.
Il tuo ordine n. 4821 è pronto per il ritiro.
Messaggio
Dettagli
La consegna è una ricevuta dell'operatore. Non dimostra che qualcuno abbia letto il messaggio.
Il tuo ordine n. 4821 è pronto per il ritiro.
Messaggio
Dettagli
La consegna è una ricevuta dell'operatore. Non dimostra che qualcuno abbia letto il messaggio.
Invia il tuo primo messaggio in pochi minuti.
Esegui test in sicurezza prima di scrivere ai clienti reali.
Con la API SMS di Bird, una sola chiamata dal tuo backend invia una conferma d'ordine, un aggiornamento sulla consegna o un avviso per un appuntamento. Prima di scrivere ai clienti reali, indirizza gli invii di test al numero sandbox statunitense +15005550006 da un mittente statunitense attivo: così verifichi l'integrazione e la gestione dei webhook senza consegnare messaggi a un telefono reale.
// Install the SDK
// npm install @messagebird/sdk
const msg = await bird.sms.send({
from: "+15557654321",
to: "+14155550100",
text: "Your verification code is 123456.",
category: "authentication",
});
console.log(msg.id, msg.status);Devi verificare un utente all'accesso o al checkout? Invece di generare e salvare tu stesso i codici di verifica monouso, usa Bird Verify per emettere, far scadere e controllare automaticamente i codici di verifica.
Mantieni prevedibile la consegna degli SMS in produzione.
Evita addebiti imprevisti per segmenti, testi duplicati dovuti ai nuovi tentativi di rete ed errori silenziosi degli operatori.
- 01
Il numero di segmenti è direttamente nella risposta.
Ogni invio accettato restituisce la codifica dei caratteri applicata e il numero di segmenti. Prima di pubblicare un nuovo modello, puoi verificare la bozza con il calcolatore di segmenti.
- 02
Gestisci GSM-7 e Unicode senza tirare a indovinare.
Un messaggio GSM-7 standard contiene 160 caratteri in un solo segmento, mentre i testi con emoji o alfabeti non latini passano automaticamente a Unicode da 70 unità. I messaggi più lunghi vengono divisi correttamente e ricomposti in un unico testo sul telefono del cliente.
- 03
Invia fino a 100 messaggi personalizzati con una sola chiamata.
Invia una coda di promemoria per appuntamenti o avvisi sui turni in un'unica richiesta batch. Bird convalida il batch in anticipo, così gli input non validi falliscono subito, poi traccia la consegna dell'operatore separatamente per ogni destinatario.
- 04
Riprova le richieste scadute senza inviare due volte lo stesso messaggio.
Aggiungi una chiave di idempotenza quando il tuo worker invia un messaggio. Se un timeout di rete provoca un nuovo tentativo con la stessa chiave e lo stesso payload, Bird restituisce di nuovo la risposta originale invece di accodare un messaggio duplicato.
- 05
Sappi quando l'operatore consegna o rifiuta un messaggio.
Ricevi webhook firmati mentre il messaggio passa da accettato a inviato, consegnato o non riuscito, così la tua app può aggiornare lo stato dell'ordine o passare a un altro canale quando un numero non è raggiungibile.
Migra da Twilio con poche righe di codice.
Collega a Bird i numeri mittente, i campi dei destinatari e i gestori di webhook che già usi, senza riprogettare il tuo servizio di notifiche. Sincronizza la tua lista di disiscrizioni e verifica la consegna con il numero sandbox prima di spostare il traffico reale.
import twilio from "twilio";
const client = twilio(accountSid, authToken);
await client.messages.create({
from: "+14155550172",
to: "+15005550006",
body: "Your code is 123456.",
});import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
await bird.sms.send({
from: "+14155550172",
to: "+15005550006",
text: "Your code is 123456.",
category: "authentication",
});Individua i messaggi multisegmento prima che facciano lievitare la bolletta.
Basta una virgoletta curva, un'emoji o un carattere accentato nel nome di un cliente per far passare un messaggio dalla codifica GSM-7 da 160 caratteri a Unicode da 70 unità, dividendo un testo in più segmenti fatturabili. Bird restituisce nella risposta di invio il numero di caratteri, la codifica e il totale dei segmenti, così il tuo team individua presto i modelli costosi.
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+31612345678",
text: "Your code is 123456.",
category: "authentication",
}).safe();
if (error) throw error;
console.log(data.segments);
// → { characters: 20, count: 1, encoding: "GSM_7BIT" }
Invia fino a 100 promemoria personalizzati in una sola richiesta.
Quando un job pianificato invia i promemoria per gli appuntamenti di domani o gli aggiornamenti sulle fasce di consegna, raggruppa fino a 100 messaggi in una sola chiamata API invece di inviare le richieste una alla volta. Ogni destinatario riceve il proprio messaggio personalizzato con uno stato di consegna indipendente, e la convalida preventiva blocca gli input non validi prima che il batch venga accodato.
const { data: batch, error } = await bird.sms
.sendBatch(
users.map((u) => ({
from: "Bird",
to: u.phone,
text: `Hi ${u.name}, your appointment is tomorrow at ${u.time}.`,
})),
)
.safe();
if (error) throw error;
console.log(`queued ${batch.data.length} messages`);Traccia la consegna degli operatori e gestisci i messaggi non riusciti in tempo reale.
Il passaggio all'operatore avviene in modo asincrono dopo che la chiamata di invio è riuscita, quindi Bird invia eventi webhook firmati man mano che il messaggio avanza. Aggiorna il database quando un messaggio raggiunge il telefono, oppure attiva un'email di riserva e segnala i numeri non validi quando la consegna non riesce.
import { bird } from "@/lib/bird";
export async function POST(req: Request) {
const event = bird.webhooks.unwrap(
await req.text(),
Object.fromEntries(req.headers),
);
switch (event.type) {
case "sms.delivered":
await markDelivered(event.data.sms_id);
break;
case "sms.failed":
await flag(event.data.to, event.data.error?.description);
break;
}
return new Response(null, { status: 204 });
}Ogni evento di errore include il motivo specifico, così puoi distinguere i problemi temporanei del telefono dai numeri non validi. Le risposte di disiscrizione come STOP sopprimono automaticamente i futuri invii di marketing, mentre i normali errori di consegna lasciano invariato il consenso del destinatario.
sms.acceptedBird ha accettato la richiesta e ha messo in coda il messaggio per l'instradamento verso l'operatore.sms.sentBird ha passato il messaggio all'operatore mobile di destinazione.sms.deliveredL'operatore di destinazione ha confermato la consegna al telefono del destinatario.sms.failedIl messaggio non è stato consegnato. L'evento include il motivo dell'errore, così la tua app può avvisare il supporto o provare un altro canale.
Approfondisci nelle guide per sviluppatori.
Verifica i webhook firmati, proteggi i tuoi worker di invio dai messaggi duplicati con le chiavi di idempotenza e usa il riferimento degli errori per gestire automaticamente numeri non validi o destinazioni disattivate.
Domande prima di iniziare
Scelgo io il mittente?
Come evitano i tentativi ripetuti un messaggio duplicato?
Accettato significa consegnato?
Un batch è la stessa cosa di un broadcast?
Il resto della piattaforma SMS
Attiva numeri mittente, ricevi le risposte dei clienti e monitora la consegna degli operatori dallo stesso spazio di lavoro.
Scala senza perdere il controllo.
Separate production and sandbox traffic into dedicated workspaces, scope API keys to the exact channels each service or agent needs, and track permission changes in the audit log.