> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Uitgaande berichten en templates

## Overzicht

Een agent kan alleen vrije WhatsApp-berichten versturen binnen een actief gesprek. Om als eerste contact op te nemen met een gebruiker — voor meldingen, heractivatie of geplande gesprekken — stuur je een door Meta goedgekeurde **berichttemplate**. Op deze pagina lees je hoe je templates maakt, uitgaande berichten en gesprekken verstuurt en dit op grote schaal uitvoert.

## Templates maken in WhatsApp Manager

Templates worden gemaakt en goedgekeurd in [WhatsApp Manager](https://business.facebook.com/latest/whatsapp_manager/message_templates), niet in ElevenLabs.

Bij het maken van een template:

* Kies een categorie: **Utility** voor transactionele berichten, **Marketing** voor promotieberichten of **Authentication** voor verificatiecodes. Meta hanteert verschillende prijzen en rate limits voor elke categorie — zie [WhatsApp-prijzen](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing).
* Kies een parameterindeling: positioneel (`{{1}}`, `{{2}}`) of benoemd (`{{customer_name}}`). Bij benoemde parameters moet elke waarde die je verstuurt een `parameter_name` hebben.
* Dien de template ter goedkeuring in. Goedkeuring duurt meestal enkele minuten tot uren. Een template die in behandeling is of is afgewezen, kan niet worden verstuurd — de API accepteert de request, maar Meta bezorgt het bericht nooit.

> **Note**
>
> Meta beperkt hoeveel [marketing- templates](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/marketing-templates/per-user-limits)
> één gebruiker binnen een bepaalde periode kan ontvangen. Als een marketingtemplate stilzwijgend niet wordt bezorgd,
> is deze limiet een veelvoorkomende oorzaak (Meta-fout 131049).

## Een uitgaand bericht versturen

Door een templatebericht te versturen, start je een nieuw gesprek. De agent blijft stil totdat de gebruiker antwoordt — de template is zelf het eerste bericht en er starten geen gesprekstimers voordat de gebruiker reageert.

#### Dashboard

Ga naar de [WhatsApp-pagina](https://elevenlabs.io/app/agents/whatsapp), selecteer je account en klik op de knop ***Uitgaand -> Bericht***. Selecteer een agent, voer een WhatsApp-gebruikers-ID in en kies de berichttemplate en bijbehorende parameters:

![Dialoogvenster voor uitgaand WhatsApp-bericht](/docs/_fern-img/13913c2ccc1d92cb59e7332b6fdb4a8c8c64760a334d1a311fa2007831eeb986.webp)

#### Python

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.whatsapp.outbound_message(
    whatsapp_phone_number_id="524029457612345",
    whatsapp_user_id="12213231492",
    template_name="welcome",
    template_language_code="en",
    template_params=[
        {
            "type": "body",
            "parameters": [
                {
                    "type": "text",
                    "parameter_name": "name",
                    "text": "Daniele",
                }
            ],
        }
    ],
    agent_id="agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
    conversation_initiation_client_data={
        "dynamic_variables": {"customer_name": "Daniele"},
    },
)
```

#### TypeScript

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.whatsapp.outboundMessage({
  whatsappPhoneNumberId: "524029457612345",
  whatsappUserId: "12213231492",
  templateName: "welcome",
  templateLanguageCode: "en",
  templateParams: [
    {
      type: "body",
      parameters: [
        {
          type: "text",
          parameterName: "name",
          text: "Daniele",
        },
      ],
    },
  ],
  agentId: "agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
  conversationInitiationClientData: {
    dynamicVariables: { customer_name: "Daniele" },
  },
});
```

#### cURL

```bash
curl -X POST https://api.elevenlabs.io/v1/convai/whatsapp/outbound-message \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "whatsapp_phone_number_id": "524029457612345",
    "whatsapp_user_id": "12213231492",
    "template_name": "welcome",
    "template_language_code": "en",
    "template_params": [
      {
        "type": "body",
        "parameters": [
          {"type": "text", "parameter_name": "name", "text": "Daniele"}
        ]
      }
    ],
    "agent_id": "agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
    "conversation_initiation_client_data": {
      "dynamic_variables": {"customer_name": "Daniele"}
    }
  }'
```

Zie de [API-referentie](/docs/nl/api-reference/whats-app/outbound-message) voor het volledige requestschema.

> **Tip**
>
> Een AI-assistent kan deze voorbeelden aanpassen aan je template. Wijs de assistent naar de
> [llms.txt](/docs/nl/llms.txt) van de ElevenLabs-documentatie (of de uitgebreidere [llms-full.txt](/docs/nl/llms-full.txt)), plak je
> templatedefinitie uit WhatsApp Manager en vraag om de request — de assistent maakt een cURL-
> command of SDK-aanroep met de juiste `template_params` voor je template.

### Templateparameters

`template_params` is een lijst met **component**-objecten, één voor elk templateonderdeel met parameters:

* `{"type": "body", "parameters": [...]}` voor placeholders in de body
* `{"type": "header", "parameters": [...]}` voor een header met parameters (tekst, afbeelding, document of locatie)
* `{"type": "button", "sub_type": ..., "index": ..., "parameters": [...]}` voor knopparameters

Elk item in `parameters` is een waardeobject, zoals `{"type": "text", "text": "Daniele"}`. Voeg bij templates met benoemde parameters `parameter_name` toe aan elke waarde. Als je de componentwrapper weglaat — bijvoorbeeld door `{"type": "text", ...}` rechtstreeks in `template_params` door te geven — wordt dit afgewezen.

### Indeling van het nummer van de ontvanger

`whatsapp_user_id` mag alleen cijfers bevatten: de landcode gevolgd door het nummer, zonder `+`, spaties of streepjes. Bijvoorbeeld `14155552671`, niet `+1 (415) 555-2671`.

> **Warning**
>
> In sommige landen verschilt de ID die WhatsApp voor een persoon gebruikt van het gekozen nummer — zo hebben
> Mexicaanse nummers een extra `1` na de landcode (`521...`), en Braziliaanse
> nummers kunnen een negende cijfer bevatten of weglaten. Als de gebruiker je eerder een bericht heeft gestuurd, gebruik dan bij voorkeur de
> `whatsapp_user_id` uit dat eerdere gesprek, die je kunt kopiëren uit de gespreksgeschiedenis.

### Dynamische variabelen, branches en omgevingen

Met het veld `conversation_initiation_client_data` kun je [dynamische variabelen](/docs/nl/eleven-agents/customization/personalization/dynamic-variables) voor het gesprek instellen en het vastzetten op een specifieke [agentbranch](/docs/nl/eleven-agents/operate/versioning) en [omgeving](/docs/nl/eleven-agents/integrate/environment-variables):

```json
{
  "dynamic_variables": { "customer_name": "Daniele" },
  "branch_id": "agtbrch_8721kwarbs83e233mg1fzkaf9pg0",
  "environment": "staging"
}
```

Deze instellingen blijven voor het gesprek behouden: wanneer de gebruiker antwoordt, wordt de agent hervat op de aangevraagde branch en omgeving. De branch en omgeving worden eerst gevalideerd — als een van beide niet bestaat, mislukt de request met een fout en wordt er geen bericht verstuurd.

Via dit requestveld ontvangen uitgaande gesprekken dynamische variabelen; inkomende gesprekken ontvangen deze in plaats daarvan via een webhook voor gespreksinitiatie — zie [initialisatiecontext](/docs/nl/eleven-agents/whatsapp#initialization-context).

> **Note**
>
> Templateparameters vullen alleen de tekst van de template in — ze zijn niet beschikbaar voor de agent. Als de
> agent een waarde uit de template nodig heeft (zoals de naam van de klant), geef deze dan nogmaals door in
> `dynamic_variables`.

### Na het versturen

Een geslaagde request retourneert een `conversation_id` en het gesprek verschijnt in je geschiedenis met de ingevulde template als eerste bericht. De agent wordt pas uitgevoerd nadat de gebruiker antwoordt. Door de template te versturen, start je noch de timer voor de maximale duur, noch de inactiviteitstimer; beide beginnen zodra het gesprek wordt hervat. Een `200`-response betekent dat ElevenLabs de request heeft geaccepteerd — Meta kan de bezorging daarna nog steeds weigeren. Als het bericht nooit aankomt, zie [Probleemoplossing](/docs/nl/eleven-agents/whatsapp/troubleshooting).

## Een uitgaand gesprek plannen

Voor uitgaande WhatsApp-gesprekken is toestemming van de gebruiker nodig — zie [toestemmingen voor gesprekken van gebruikers](https://developers.facebook.com/documentation/business-messaging/whatsapp/calling/user-call-permissions). Maak in [WhatsApp Manager](https://business.facebook.com/latest/whatsapp_manager/message_templates) een berichttemplate met een component voor een **verzoek om toestemming voor een gesprek**. Wanneer je een gesprek plant, controleert ElevenLabs de toestemmingsstatus:

* Toestemming al verleend: het gesprek wordt onmiddellijk gestart.
* Toestemming nog niet gevraagd: de template voor het toestemmingsverzoek wordt verstuurd en het gesprek start zodra de gebruiker toestemming geeft.
* Toestemming geweigerd: het gesprek wordt als mislukt geregistreerd met de reden `User declined the call permission request.`

#### Dashboard

Ga naar de [WhatsApp-pagina](https://elevenlabs.io/app/agents/whatsapp), selecteer je account en klik op de knop ***Uitgaand -> Gesprek***. Selecteer een agent, voer een WhatsApp-gebruikers-ID in en kies de template voor het verzoek om toestemming voor een gesprek:

![Dialoogvenster voor uitgaand WhatsApp-gesprek](/docs/_fern-img/1fcf7968f1651ce8e9474e770aad4dce4e702c69b4522f5bcc65efcd8bf8a3e4.webp)

#### Python

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.whatsapp.outbound_call(
    whatsapp_phone_number_id="524029457612345",
    whatsapp_user_id="12213231492",
    whatsapp_call_permission_request_template_name="call_permission",
    whatsapp_call_permission_request_template_language_code="en",
    agent_id="agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
    conversation_initiation_client_data={
        "dynamic_variables": {"customer_name": "Daniele"},
    },
)
```

#### TypeScript

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.whatsapp.outboundCall({
  whatsappPhoneNumberId: "524029457612345",
  whatsappUserId: "12213231492",
  whatsappCallPermissionRequestTemplateName: "call_permission",
  whatsappCallPermissionRequestTemplateLanguageCode: "en",
  agentId: "agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
  conversationInitiationClientData: {
    dynamicVariables: { customer_name: "Daniele" },
  },
});
```

#### cURL

```bash
curl -X POST https://api.elevenlabs.io/v1/convai/whatsapp/outbound-call \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "whatsapp_phone_number_id": "524029457612345",
    "whatsapp_user_id": "12213231492",
    "whatsapp_call_permission_request_template_name": "call_permission",
    "whatsapp_call_permission_request_template_language_code": "en",
    "agent_id": "agent_9201kwcrbq9qfxaa2t8nnnkqf2w9",
    "conversation_initiation_client_data": {
      "dynamic_variables": {"customer_name": "Daniele"}
    }
  }'
```

Zie de [API-referentie](/docs/nl/api-reference/whats-app/outbound-call) voor het volledige requestschema. Net als bij uitgaande berichten stelt `conversation_initiation_client_data` dynamische variabelen in en zet het het gesprek vast op een branch en omgeving; een onbekende branch of omgeving wordt afgewezen voordat het gesprek wordt gepland.

> **Note**
>
> Meta brengt kosten in rekening voor uitgaande gesprekken en voor verzoeken om toestemming voor een gesprek die buiten een [Customer Service Window](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/send-messages#customer-service-windows) worden verstuurd.
> Voeg in WhatsApp Manager een betaalmethode toe voordat je gesprekken plant.

## Campagnes en batches

Gebruik [batchgesprekken](/docs/nl/eleven-agents/phone-numbers/batch-calls) met `whatsapp_params` om veel gebruikers te bellen: geef de telefoonnummer-ID en de template voor het verzoek om toestemming voor een gesprek één keer op, en een `whatsapp_user_id` per ontvanger.

Er is nog geen native batchendpoint voor uitgaande berichten. Roep voor templatecampagnes het [endpoint voor uitgaande berichten](/docs/nl/api-reference/whats-app/outbound-message) één keer per ontvanger aan en blijf binnen Meta's berichtlimieten voor je nummer — zie [berichtlimieten](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/messaging-limits).