Skip to content
WeZend

CPaaS / SMS-API

Slik bytter du fra Twilio

Et kodebytte, ikke en datamigrering: sendekallets diff, avsender-ID-er omregistrert, opt-outs flyttet med og status-callbacks remappet — med en trinnvis utrulling så ingenting kritisk knekker.

En halv dags kodeendringer; avsender-ID-registrering setter kalenderen (dager til uker per land)

TwilioWeZend
Messages API (POST /Messages)POST /v1/messages/send
Account SID + Auth TokenX-API-Key-header
Messaging Services / sender poolAutomatisk ruting + registrerte avsendere
Status callbacksLeverings-webhooks (signerte)
Advanced Opt-Out listsSperreliste + STOP-håndtering
Inbound webhooks (MO)Innkommende webhook + innboks
Twilio Verify (OTP)Transaksjonelle utsendelser + voice-fallback-journey
Programmable Voice (TTS)Voice-kanalen

Hva slags migrering dette er

Twilio sitter på svært lite av dataene deres — det er infrastruktur koden deres kaller. Denne migreringen er derfor 90% et kontrollert kodebytte og 10% regulatorisk logistikk (avsenderregistrering). Den gylne regelen: rut med feature flag, ikke big bang, slik at dere kan flytte trafikken gradvis og rulle tilbake øyeblikkelig.

Steg 1 — Start den trege klokka: avsender-ID-er

Registreringstiden er det eneste dere ikke kan komprimere, så gjør det først. List opp hver avsender dere bruker (alfanumeriske navn, numeriske avsendere) og hvert mottakerland, og registrer dem under Innstillinger → Avsendere (POST /v1/senders). Sjekk kravene per land programmatisk:

curl "https://api.wezend.com/v1/sender/rules?country=DK" -H "X-API-Key: $WEZEND_API_KEY"

Land med operatørregistrering tar dager til uker — start nå, kod senere.

Steg 2 — Ta med opt-outene

Bruker dere Twilios Advanced Opt-Out (eller sporer STOP selv), eksporter de numrene og importer dem som sperringer. WeZend fanger opp STOP/START-nøkkelord automatisk framover, men historikken må bli med — en mottaker som sa STOP hos Twilio, skal forbli stoppet hos WeZend.

Steg 3 — Kodediffen

Twilio (Node):

const twilio = require("twilio")(ACCOUNT_SID, AUTH_TOKEN);
await twilio.messages.create({
  to: "+4512345678",
  messagingServiceSid: "MG…",
  body: "Koden din er 493202",
  statusCallback: "https://api.yourapp.com/sms-status",
});

WeZend — ren HTTP, ingen SDK nødvendig:

await fetch("https://api.wezend.com/v1/messages/send", {
  method: "POST",
  headers: { "X-API-Key": process.env.WEZEND_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    to: "+4512345678",
    channel: "sms",
    sender: "Acme",
    message: "Koden din er 493202",
    category: "transactional",
    webhook_url: "https://api.yourapp.com/sms-status",
  }),
});

Forskjellene som betyr noe:

  • Autentisering er én header (X-API-Key), ingen SID/token-par. Nøkler roteres med et 24-timers nådevindu.
  • messagingServiceSid forsvinner — ruting til beste leverandør per destinasjon er plattformens jobb, med automatisk failover når en rute degraderes.
  • category: "transactional" merker engangskoder og kvitteringer slik at de går utenom markedsføringstak og stilletimer.
  • Status-callbacks kommer til webhook_url med en X-WeZend-Signature-HMAC — verifiser den. Mapp statusene: Twilios queued/sent/delivered/undelivered/failed tilsvarer queued/sent/delivered/failed (undelivered og failed kommer begge som failed, med årsaken vedlagt).

Steg 4 — Innkommende og toveis

Pek svarhåndteringen deres mot WeZend: sett den innkommende webhook-URL-en, så POSTes innkommende meldinger til endepunktet deres akkurat som Twilios MO-webhooks gjorde — i tillegg lander de trådet i innboksen, som supportteamet får med på kjøpet.

Steg 5 — Trinnvis utrulling

Legg leverandørvalget bak et flagg og flytt trafikken etappevis: 5% → verifiser leveringsratene mot Twilios baseline → 50% → 100%. Hold Twilio-kontoen i live (den koster nesten ingenting i ro) til hver webhook-konsument er migrert og en hel faktureringsperiode har gått. Feiler noe underveis, viser Delivery Inspector operatørårsaken i klartekst — slutt på å tyde feil 30008.

Hva med Verify, Voice og numre?

  • OTP-flyter: send med category: "transactional"; legg til fallbacken "ingen levering på N sekunder → taleanrop" som en totrinns journey.
  • Voice/TTS: voice-kanalen dekker automatiserte TTS-anrop og varsler.
  • Dedikerte long codes/short codes: nummerportering håndteres fra sak til sak — kontakt oss med numrene og destinasjonene deres før dere planlegger cutover.

Go-live-sjekkliste

  • Alle avsender-ID-er registrert per mottakerland (start umiddelbart — lengst ledetid)
  • Twilio-opt-out-lister eksportert og importert som sperringer
  • Sendekall byttet bak et feature flag; category satt på transaksjonell trafikk
  • Webhook-konsumenten verifiserer X-WeZend-Signature og mapper statuser
  • Innkommende webhook-URL satt; svar verifisert hele veien
  • Trafikken flyttet 5% → 50% → 100% med leveringsrater sammenlignet i hvert steg
  • Twilio-kontoen holdt i live til en hel faktureringsperiode har gått feilfritt

Ofte stilte spørsmål om byttet fra Twilio

Finnes det et SDK, eller kaller vi REST-API-et direkte?

API-et er ren JSON over HTTPS, laget for å kalles direkte — eksemplene over er komplette. Det betyr også at en AI-assistent kan skrive integrasjonen for dere: hele API-et vårt er maskinlesbart på /llms-full.txt, og Bygg-med-AI-guiden viser arbeidsflyten.

Twilio fakturerer per segment — hvordan priser WeZend SMS?

Også per segment, per destinasjon — slik fakturerer operatørene, og å late som noe annet skjuler kostnader. Forskjellen er åpenheten: GET /v1/account/pricing returnerer de eksakte prisene deres, dashbordet viser antall segmenter og pris før dere sender, og samme forhåndsbetalte saldo dekker alle kanaler.

Hva vinner vi utover et rett-fram API-bytte?

Alt rundt selve utsendelsen: automatisk leverandør-failover, Delivery Inspector med feilårsaker i klartekst, en delt innboks for svar, og — når dere er klare — CDP, journeys og e-post/WhatsApp/push på samme API og saldo. Dere migrerer en SMS-leverandør; dere ender opp med en plattform.

Kom i gang gratis på minutter

  • Intet kredittkort
  • EU-datalagring
  • 6 kanaler, ett API
  • GDPR innebygd

Én plattform. Hver kundeinteraksjon.

Erstatt lappeteppet av meldings-API-er, CDP og automatiseringsverktøy med én engasjementsplattform bygget for skala.

Ingen kredittkort · EU-datalagring · 99,99 % oppetids-SLA