> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# LATAM channels onboarding: WhatsApp, SMS, and voice

> Step-by-step onboarding playbook for Latin America — pick the right channel per country, ready WhatsApp and SMS senders, send template and template-free messages, handle the carrier errors you will actually see, and meet LATAM compliance expectations.

# LATAM channels onboarding: WhatsApp, SMS, and voice

This guide walks you end to end through the Latin America region — Brazil, Mexico, Argentina, Colombia, Chile, and the rest — from first sender ready through send, inbound webhook, and the carrier errors you will actually see. It is the LATAM counterpart to the [APAC channels onboarding guide](/guides/asia-channels-onboarding), which covers LINE, WeChat, KakaoTalk, and Zalo.

The guide complements the per-channel references ([WhatsApp](/channels/whatsapp), [SMS](/channels/sms), [RCS](/channels/rcs), [Voice](/channels/voice)) — those document the API shapes; this guide is the ordered playbook you follow the first time.

## Pick the right channel per country

Do not activate every channel at once. Pick one default per country, then add a fallback:

| Country                                              | Primary channel                       | Fallback                              | Notes                                                                                      |
| ---------------------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------ |
| Brazil                                               | **WhatsApp**                          | SMS / RCS                             | WhatsApp is the default messaging app. RCS agent support is growing on Brazilian carriers. |
| Mexico                                               | **WhatsApp**                          | SMS / voice                           | WhatsApp has dominant share; SMS carriers enforce sender-id rules.                         |
| Argentina                                            | **WhatsApp**                          | SMS                                   | Mixed carrier behaviour; test per carrier before bulk.                                     |
| Colombia                                             | **WhatsApp**                          | SMS                                   | WhatsApp share is high; A2P SMS requires a registered sender on most routes.               |
| Chile, Peru, rest of LATAM                           | **SMS**                               | WhatsApp for inbound-engaged contacts | SMS is still the reliable default where A2P messaging registration exists.                 |
| Any country where A2P SMS is blocked or unregistered | **Voice** (operational notifications) | —                                     | Use voice notifications where your SMS sender cannot be registered.                        |

If you are unsure, start with **WhatsApp** in Brazil and Mexico, **SMS** elsewhere. The [WhatsApp quickstart](/guides/whatsapp/getting-started), [SMS channel page](/channels/sms), and [RCS channel page](/channels/rcs) cover per-channel setup; this guide covers the ordering and the regional behaviour you need to know.

## 1. Sender readiness — WhatsApp WABA

For Brazil and Mexico, WhatsApp is the right default — which means you must register a **WhatsApp Business Account (WABA)** first. Sender identity on WhatsApp is bound to the connected WABA; you never pass it per send.

1. Complete the [WABA setup guide](/guides/whatsapp/waba-setup). Your WABA number must be a number you control (not a shared pool number) and your business must be verified in Meta Business Suite.
2. For Brazil: verify display name quality. WhatsApp rate-limits sends when display-name quality is low. Keep display names in the local language and avoid superlative-heavy names that trip Meta's moderation.
3. For Mexico: the same WABA setup applies. Mexican inbound WhatsApp numbers route to the same tenant webhook URL.
4. RCS in Brazil: confirm your [RCS agent](/guides/rcs-onboarding) is verified before you lean on it as fallback. RCS agent verification is per-country.

The [country-capabilities page](/numbers/country-capabilities) lists which sender types are available in each LATAM market; the [toll-free verification guide](/guides/toll-free-verification) covers the case where you choose a toll-free number for a given market (not all LATAM markets support toll-free SMS, but some do toll-free voice).

## 2. Sender readiness — SMS sender id and short code

SMS sender identity differs per country:

* **Brazil** — short codes dominate A2P SMS. Short-code registration leads time is 4–8 weeks on the three dominant carriers (Claro, Vivo, TIM). Long numbers and unmanaged sender ids are heavily filtered. Budget lead time accordingly.
* **Mexico** — most carriers accept alphanumeric sender ids, but they must be pre-registered with the operator. Unregistered alphanumeric senders are stripped to a gateway-long-number at the carrier edge.
* **Argentina, Colombia, Chile, Peru** — alphanumeric sender ids burn through on some carriers and get stripped on others. Test with a single low-volume send first, then verify final sender delivery via the delivery-status webhook before bulk.

The [number lifecycle](/numbers/lifecycle) page covers the numbers purchase flow per country; [country capabilities](/numbers/country-capabilities) states which sender types are offered where. The rule of thumb: **never assume a sender id carries over between countries**.

## 3. Sample send flows per channel

### WhatsApp template send (Brazil and Mexico default)

WhatsApp requires an approved template for business-initiated sends. Template name and language code must match the approval exactly. For Brazil and Mexico, submit your templates in `pt_BR` and `es_MX` respectively — Meta does not fall back across language codes.

```bash theme={null}
curl -X POST https://api.orbit.devotel.io/api/v1/messages/whatsapp \
  -H "X-API-Key: dv_live_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+5511987654321",
    "type": "template",
    "template": {
      "name": "order_shipped",
      "language": { "code": "pt_BR" },
      "components": [
        {
          "type": "body",
          "parameters": [
            { "type": "text", "text": "PED-10293" }
          ]
        }
      ]
    }
  }'
```

```typescript Node.js theme={null}
import { Devotel } from '@devotel-orbit/node';

const orbit = new Devotel({ apiKey: process.env.ORBIT_API_KEY });

const message = await orbit.messages.send({
  channel: 'whatsapp',
  to: '+5511987654321',
  type: 'template',
  template: {
    name: 'order_shipped',
    language: { code: 'pt_BR' },
    components: [
      { type: 'body', parameters: [{ type: 'text', text: 'PED-10293' }] },
    ],
  },
});

console.log(message.data.id);      // msg_a1b2…
console.log(message.data.status);  // 'queued'
```

`202 Accepted` means queued; the terminal `delivered` / `failed` arrives on the delivery-status webhook. When the recipient replies, the 24-hour session window opens and you may send free-form text directly — see [Send a Session Message](/channels/whatsapp#send-a-session-message).

### SMS send (no template)

SMS on Orbit is template-free — you send a plain `body` and the sender id goes in `from` (or you use the tenant default).

```bash theme={null}
curl -X POST https://api.orbit.devotel.io/api/v1/messages/sms \
  -H "X-API-Key: dv_live_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+5491122345678",
    "from": "ACME",
    "body": "Tu pedido ya salio. Seguilo en acme.example/p/PED-10293"
  }'
```

```typescript Node.js theme={null}
import { Devotel } from '@devotel-orbit/node';

const orbit = new Devotel({ apiKey: process.env.ORBIT_API_KEY });

const message = await orbit.messages.send({
  channel: 'sms',
  to: '+5491122345678',
  from: 'ACME',
  body: 'Tu pedido ya salio.',
});
```

For bulk sends, submit a [campaign](/api-reference/endpoints/campaigns) with `channel: "sms"` rather than looping the single-send endpoint. Watch the carrier rules below before you start high-volume.

### RCS in Brazil (optional channel)

RCS is useful in Brazil where Samsung Messages and Google Messages have good penetration. Template-first — you register messages with your RCS agent before sending. The send shape matches the [RCS channel page](/channels/rcs); the [RCS onboarding guide](/guides/rcs-onboarding) walks agent verification.

## 4. Carrier errors you will actually see

Carrier error codes differ per per-country carrier, but the shapes below cover what you will actually see in live traffic:

| Code                               | HTTP | Cause                                                                                                                        | Fix                                                                                                                                 |
| ---------------------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `TEMPLATE_REJECTED`                | 422  | WhatsApp template not approved, or approved in a different language than the request.                                        | Use the exact approved name and language code; resubmit via [templates-create-approve](/guides/whatsapp/templates-create-approve).  |
| `CARRIER_UNREACHABLE`              | 502  | The carrier endpoint is unreachable or actively rejecting traffic.                                                           | Check the delivery-status webhook for the carrier's error. For SMS, retry with a different sender id or drop to RCS/voice fallback. |
| `SENDER_ID_REJECTED`               | 422  | The `from` value is not registered for this country (LA-specific: alphanumeric sender not pre-registered with the operator). | Register the sender id in [numbers](/numbers/lifecycle); fall back to the tenant default sender until approved.                     |
| `WINDOW_EXPIRED`                   | 422  | WhatsApp free-form send attempted outside the 24-hour window.                                                                | Send with `type: "template"` or wait for an inbound reply to open the window.                                                       |
| `DLT_REQUIRED` (template registry) | 422  | A country-specific sender registry (the LATAM analog of India's DLT) has not recognised this sender.                         | Confirm the sender registration in the country-capabilities table; file the operator registration before sending.                   |
| `RATE_LIMITED`                     | 429  | Per-tenant send rate exceeded.                                                                                               | Honour `Retry-After`; stage bulk sends through [campaigns](/api-reference/endpoints/campaigns).                                     |

These per-carrier shapes are documented carrier-by-carrier on the per-channel references — the table above is the shape you will see on the error webhook, not the carrier's internal code.

## 5. Compliance posture per country

Compliance in LATAM is **tenant-owned**. Orbit ships the controls; you configure them per country. The platform's one platform-global hard guard is the **US TCPA federal voice dialing window** — it is not LATAM-relevant, and it does not apply there. There is no per-LATAM platform-imposed regulatory gate.

What you own per country:

* **Brazil (LGPD)** — data-protection law. Suppression lists, the right to be forgotten, and consent records fall to you. Orbit supplies the controls; see [consent management](/compliance/consent-management) and [suppression list export](/compliance/consent-suppression-export).
* **Mexico (LFPDPPP)** — opt-out must be honoured on every sender. Configure your opt-out handling in [opt-out lists](/guides/opt-out-lists) before any bulk send.
* **Argentina, Colombia (Ley 1581), Chile** — general data-protection laws apply. Map which lawful basis (consent, legitimate interest, contract) applies per use case before you enable the channel.
* **Country requirements reference** — the [country-requirements page](/compliance/country-requirements) is the per-country map of what Orbit knows you need to configure; check it per market.
* **Quiet hours / campaign limits** — see [quiet-hours configuration](/guides/quiet-hours-configuration) and [campaign limits and quiet hours](/guides/campaign-limits-quiet-hours) for the tenant-configurable throttles Orbit ships.

For a thorough regional posture, skim the [CASL Canada anti-spam page](/compliance/casl-canada-anti-spam) as a model — the same consent-first framing applies to LATAM markets, with the specifics (regulator names, penalty sizes) covered per country in [country requirements](/compliance/country-requirements).

## 6. Time-to-live expectations per channel

What "delivered" timing means per channel — so you can set SLA, retry, and fallback rules:

| Channel             | Typical delivery latency       | Typical TTL for a `delivered` event                                                           | Notes                                                                                |
| ------------------- | ------------------------------ | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| WhatsApp (template) | Sub-second to a few seconds    | Meta-dispatch terminal or retry DLR arrives within minutes; session-reply window is 24 hours  | Watch the 24-hour window; template re-sends expire.                                  |
| SMS                 | A few seconds to a few minutes | Most LATAM carriers report terminal DLR within minutes; some report delayed up to a few hours | `delivered` confirms handset; `sent` confirms network handoff.                       |
| RCS                 | Comparable to SMS              | Terminal DLR typically within minutes                                                         | RCS requires the recipient's client support the channel; SMS fallback usually ships. |
| Voice               | Immediate                      | Call flow reports `answered` / `busy` / `no-answer` in real time                              | For operational notifications where SMS is blocked; voice calls are terminal.        |

These are expectations you set, not guarantees Orbit makes. Measure on your traffic before you set an SLA; the [delivery log guide](/guides/delivery-log) walks you through reading terminal statuses and delivery latency per channel + country.

## Where to go next

* [Connect your first channel](/guides/connect-first-channel) — the cross-channel connect flow.
* [Send and receive messages](/guides/send-receive-messages) — the cross-channel send pattern.
* [Fallback chains](/guides/fallback-chains) — WhatsApp → SMS → voice failover.
* [APAC channels onboarding](/guides/asia-channels-onboarding) — the parallel guide for LINE/WeChat/Kakao/Zalo.
* [Best practices](/guides/best-practices) — platform-wide sending hygiene.
* [WhatsApp channel page](/channels/whatsapp) · [SMS channel page](/channels/sms) · [RCS channel page](/channels/rcs) — per-channel API references.
