Migration guide

How to migrate from GMS to Vonage

A developer-focused guide to migrating SMS and messaging traffic from GMS to Vonage, covering channel, compliance, auth and request-format differences.

GMS is an enterprise CPaaS and A2P messaging provider that exposes SMS, WhatsApp, Viber, RCS and email through a single REST API. Vonage (part of Ericsson) offers communications APIs spanning SMS, MMS, RCS, messaging channels and voice. On the messaging.dev Score, GMS rates 36/100 and Vonage 89/100 — a gap driven largely by self-onboarding, developer tooling, compliance breadth and pricing transparency. This guide covers what actually changes when you re-point your sending code.

What you gain and lose

Both providers cover SMS, RCS, WhatsApp and Viber, so those channels carry over unchanged. Moving to Vonage adds MMS, Facebook Messenger and voice. The one channel you lose is email: GMS supports it, Vonage does not, so if you send transactional email through GMS today you will need a separate provider for that traffic. Neither offers Telegram or Apple Messages for Business.

On compliance, both are GDPR- and ISO 27001-aligned; Vonage additionally holds SOC 2 and HIPAA. Data residency broadens too: GMS runs EU servers only with no region choice, while Vonage offers EU and US servers plus APAC and Australia, with a data-residency choice.

Operationally, Vonage is self-service with €2 free trial credit and a sandbox, versus GMS’s sales-activated onboarding, no free credit and no sandbox. Pricing shifts from GMS’s custom enterprise quotes (no public price list) to Vonage’s public pay-as-you-go rates with volume discounts (about $0.0072 per US SMS segment, plus carrier fees). Docs move from medium to high quality. SDK coverage changes shape: GMS ships mobile SDKs only (iOS/Swift, Android/Kotlin), while Vonage ships server-side languages (Node.js, Python, PHP, Java, C#, Ruby) plus Kotlin. Both are REST-based. See the full side-by-side comparison.

How the request format differs

GMS quickstart:

curl -X POST 'https://api-v2.hyber.im/{client_id}' \
  -u 'CLIENT_ID:API_PASSWORD' \
  -H 'Content-Type: application/json' \
  -d '{
    "phone": "380631010100",
    "channels": ["sms"],
    "sms": {
      "sender": "MyBrand",
      "text": "Hello from GMS",
      "ttl": 300
    }
  }'

Vonage quickstart:

curl -X POST 'https://rest.nexmo.com/sms/json' \
  -d 'api_key=YOUR_API_KEY' \
  -d 'api_secret=YOUR_API_SECRET' \
  -d 'from=Vonage' \
  -d 'to=15551234567' \
  -d 'text=Hello from Vonage'

Three things change. First, the endpoint: https://api-v2.hyber.im/{client_id} becomes https://rest.nexmo.com/sms/json (legacy SMS API) or https://api.nexmo.com/v1/messages (Messages API). Second, authentication: GMS uses HTTP Basic with client credentials (-u CLIENT_ID:API_PASSWORD); Vonage’s SMS API instead takes api_key + api_secret as request parameters, while the Messages API uses JWT auth. Third, the payload: GMS posts a JSON body with a top-level phone, a channels array and a nested per-channel sms object; Vonage’s legacy SMS API takes flat, form-encoded fields. The field mapping is phoneto, sms.senderfrom, and sms.texttext. GMS’s channels array and ttl have no direct equivalent in the flat SMS call.

Migration checklist

  1. Create a Vonage account (self-service, €2 trial credit) and generate your API key and secret.
  2. Map the request fields: phoneto, sms.senderfrom, sms.texttext.
  3. Re-point your sending code to the new base URL and switch auth from HTTP Basic to key/secret (or JWT for the Messages API).
  4. Re-test against Vonage’s sandbox before touching live traffic.
  5. Update your webhooks and delivery/status callbacks to Vonage’s format and register the new callback URLs.
  6. Run both providers in parallel, comparing delivery receipts on real traffic.
  7. Cut over once volumes and delivery rates match, then decommission GMS. Follow the how to start with Vonage guide for the full setup.

Watch out for

  • Email disappears. GMS carries email; Vonage does not. Keep or add a separate email provider.
  • No official iOS SDK. GMS ships an iOS (Swift) SDK; Vonage’s list has Kotlin for Android but no Swift/iOS SDK, so native iOS integrations become direct REST calls.
  • Credentials in the request. The legacy SMS API passes api_secret as a POST parameter; prefer the JWT-authenticated Messages API where you can.
  • Two APIs, two auth models. Decide early between the legacy SMS API (key/secret) and the Messages API (JWT) so you standardise one.
  • SLA figure. Vonage publishes a 99.95% uptime SLA; confirm it meets your requirements.