Bezorg orderupdates, herinneringen en meldingen via SMS.
Bereik klanten op hun telefoon met verzendupdates, boekingsherinneringen en accountmeldingen vanaf een geregistreerd telefoonnummer of merkafzender. Bird geeft bij acceptatie de tekencodering en het aantal segmenten terug, voorkomt dubbele berichten als je app een verlopen verzoek opnieuw probeert en stuurt bezorgupdates van de provider live naar je webhook.
Je bestelling #4821 ligt klaar om op te halen.
Bericht
Details
Aflevering is een ontvangstbevestiging van de provider. Het bewijst niet dat iemand het bericht heeft gelezen.
Je bestelling #4821 ligt klaar om op te halen.
Bericht
Details
Aflevering is een ontvangstbevestiging van de provider. Het bewijst niet dat iemand het bericht heeft gelezen.
Je bestelling #4821 ligt klaar om op te halen.
Bericht
Details
Aflevering is een ontvangstbevestiging van de provider. Het bewijst niet dat iemand het bericht heeft gelezen.
Verstuur je eerste bericht binnen enkele minuten.
Test veilig voordat je echte klanten berichten stuurt.
Met de Bird SMS API verstuur je met één aanroep vanuit je backend een orderbevestiging, bezorgupdate of afspraakmelding. Stuur testberichten vanaf een actieve Amerikaanse afzender naar het Amerikaanse sandboxnummer +15005550006 voordat je live klanten berichten stuurt. Zo controleer je je integratie en webhookverwerking zonder een bericht op een echt toestel te bezorgen.
// 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);Moet je een gebruiker verifiëren bij het inloggen of afrekenen? Genereer en bewaar eenmalige verificatiecodes niet zelf, maar gebruik Bird Verify om verificatiecodes automatisch uit te geven, te laten verlopen en te controleren.
Houd SMS-bezorging voorspelbaar in productie.
Voorkom onverwachte segmentkosten, dubbele berichten bij nieuwe pogingen na netwerkfouten en stille fouten bij de provider.
- 01
Zie het aantal segmenten direct in het antwoord.
Elke geaccepteerde verzending geeft de toegepaste tekencodering en het aantal segmenten terug. Conceptteksten kun je door de segmentcalculator halen voordat je een nieuwe template live zet.
- 02
Werk met GSM-7 en Unicode zonder giswerk.
Een standaard GSM-7-bericht past met 160 tekens in één segment. Berichten met emoji of niet-Latijnse schriften schakelen automatisch over naar Unicode met 70 eenheden. Langere berichten worden netjes opgesplitst en op de telefoon van de klant weer samengevoegd tot één bericht.
- 03
Verstuur tot 100 gepersonaliseerde berichten in één aanroep.
Verstuur een wachtrij met afspraakherinneringen of dienstmeldingen in één batchverzoek. Bird valideert de batch vooraf, zodat ongeldige invoer direct faalt, en volgt daarna de bezorging door de provider per ontvanger afzonderlijk.
- 04
Probeer verlopen verzoeken opnieuw zonder dubbele berichten.
Voeg een idempotentiesleutel toe wanneer je worker een bericht verstuurt. Leidt een netwerktime-out tot een nieuwe poging met dezelfde sleutel en payload, dan geeft Bird het oorspronkelijke antwoord opnieuw terug in plaats van een dubbel bericht in de wachtrij te zetten.
- 05
Weet wanneer de provider een bericht bezorgt of weigert.
Ontvang ondertekende webhooks terwijl een bericht van geaccepteerd naar verzonden, bezorgd of mislukt gaat. Zo kan je app de orderstatus bijwerken of overschakelen naar een ander kanaal als een nummer onbereikbaar is.
Migreer van Twilio met een paar regels code.
Koppel je bestaande afzendernummers, ontvangervelden en webhookhandlers aan Bird zonder je meldingsservice opnieuw te ontwerpen. Synchroniseer je afmeldlijst en controleer de bezorging met het sandboxnummer voordat je live verkeer overzet.
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",
});Ontdek berichten met meerdere segmenten voordat ze je factuur opdrijven.
Eén krul-aanhalingsteken, emoji of letter met accent in de naam van een klant kan een bericht laten overschakelen van GSM-7-codering met 160 tekens naar Unicode met 70 eenheden. Eén bericht wordt dan opgesplitst in meerdere betaalde segmenten. Bird geeft het aantal tekens, de codering en het totaal aantal segmenten terug in het verzendantwoord, zodat je team dure templates vroeg herkent.
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" }
Verstuur tot 100 gepersonaliseerde herinneringen in één verzoek.
Wanneer een geplande taak de afspraakherinneringen of updates over bezorgvensters voor morgen verstuurt, bundel je tot 100 berichten in één API-aanroep in plaats van losse verzoeken in een lus. Elke ontvanger krijgt een eigen gepersonaliseerd bericht en een eigen bezorgstatus. Validatie vooraf vangt ongeldige invoer af voordat de batch in de wachtrij komt.
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`);Volg de bezorging door de provider en verwerk mislukte berichten in realtime.
De overdracht aan de provider gebeurt asynchroon nadat je verzendaanroep is geslaagd. Daarom stuurt Bird ondertekende webhookevents terwijl het bericht vordert. Werk je database bij wanneer een bericht het toestel bereikt, of start een terugval via e-mail en markeer ongeldige nummers als de bezorging mislukt.
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 });
}Elk failed-event bevat de specifieke reden van de fout, zodat je tijdelijke problemen met een toestel kunt onderscheiden van ongeldige nummers. Afmeldreacties zoals STOP onderdrukken automatisch toekomstige marketingberichten, terwijl gewone bezorgfouten de opt-instatus van de ontvanger ongewijzigd laten.
sms.acceptedBird heeft je verzoek geaccepteerd en het bericht in de wachtrij gezet voor routering naar de provider.sms.sentBird heeft het bericht overgedragen aan de mobiele provider van de bestemming.sms.deliveredDe provider van de bestemming heeft de bezorging op het toestel van de ontvanger bevestigd.sms.failedHet bericht kon niet worden bezorgd. De foutreden wordt meegestuurd, zodat je app support kan waarschuwen of een ander kanaal kan proberen.
Ga verder in de ontwikkelaarsgidsen.
Verifieer ondertekende webhooks, bescherm je verzendworkers tegen dubbele berichten met idempotentiesleutels en gebruik de foutreferentie om ongeldige nummers of uitgeschakelde bestemmingen automatisch af te handelen.
Vragen voordat je bouwt
Kies ik de afzender?
Hoe voorkomen nieuwe pogingen een dubbel bericht?
Betekent geaccepteerd ook afgeleverd?
Is een batch hetzelfde als een broadcast?
De rest van het SMS-platform
Richt afzendernummers in, ontvang reacties van klanten en volg de bezorging door providers vanuit dezelfde werkruimte.
Schaal zonder controle te verliezen.
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.