Nachrichten

/v1/messages

Nutze den messages-Node, um Text, Medien, Kontakte, Standorte und interaktive Nachrichten und Nachrichtenvorlagen an deine Kund*innen zu senden.

In den folgenden Leitfäden findest du Informationen zu den spezifischen Arten von Nachrichten, die du versenden kannst: Textnachrichten, Mediennachrichten, Kontakt- und Standortnachrichten, Interaktive Nachrichten, Nachrichtenvorlagen, Vorlagen für Mediennachrichten und Vorlagen für interaktive Nachrichten.

Bevor du beginnst

Voraussetzungen:

  • Nachdem du dich authentifiziert hast, erhältst du ein Authentifizierungstoken, mit dem du auf den Service zugreifen kannst. Weitere Informationen dazu findest du in der Dokumentation zu Anmeldung und Authentifizierung.
  • Bestätige das WhatsApp-Konto, an das du eine Nachricht senden möchtest, und rufe dessen WhatsApp-Nutzer*innen-ID ab. Weitere Informationen dazu findest du in unserer Dokumentation zu Kontakten.
  • Die Nachricht muss den Anforderungen für Cut-off-Dienste entsprechen.

Ab Version 2.39 musst du den Kontakt-Node nicht mehr aufrufen, bevor du eine Nachricht sendest.

Einschränkungen

  • Die folgenden Nachrichtentypen werden unterstützt: Text, Nachrichtenvorlagen, Bilder, Dokumente und Audio.
  • Eine Textnachricht kann max. 4.096 Zeichen lang sein.

Erstellen

Du sendest Nachrichten unabhängig vom Nachrichtentyp, indem du einen POST-Aufruf an den /messages-Node sendest. Der Inhalt des JSON-Nachrichtentexts ist bei jedem Nachrichtentyp anders (SMS, Bild usw.).

Parameter

Dies sind die Hauptparameter, die in /messages-POST-Anforderungen verwendet werden:

NameBeschreibung (Klicke für unterstützte Optionen auf den Pfeil in der linken Spalte.)

audio

Objekt

Erforderlich, wenn type=audio ist.

Ein media-Objekt, das Audio enthält.

biz_opaque_callback_data

String

Optional.

Ein beliebiger String für das Tracking.


Du kannst beispielsweise die Nachrichtenvorlagen-ID in diesem Feld übergeben, um den Verlauf deines*deiner Kund*in ab der ersten von dir gesendeten Nachricht zu tracken. Anschließend kannst du den ROI verschiedener Nachrichtenvorlagentypen tracken, um den effektivsten Typ zu ermitteln.


Jede App, die das Webhook-Feld messages im WhatsApp-Unternehmenskonto abonniert hat, kann diesen String abrufen, da er im Objekt statuses in den Webhook-Payloads enthalten ist.


Die Cloud API verarbeitet dieses Feld nicht, sondern gibt es nur als Teil der Webhooks für gesendete/zugestellte/gelesene Nachrichten zurück.


Maximal 512 Zeichen.


Nur Cloud API.

contacts

Objekt

Erforderlich, wenn type=contacts ist.

Ein contacts-Objekt .

context

Objekt

Erforderlich, wenn auf eine Nachricht in der Unterhaltung geantwortet wird.

Ein Objekt, das die ID einer vorherigen Nachricht enthält, auf die du antwortest. Beispiel:


{"message_id":"MESSAGE_ID"}


Nur Cloud API.

document

Objekt

Erforderlich, wenn type=document ist.

Das media-Objekt, das ein Dokument enthält.

hsm

Objekt

Enthält ein hsm-Objekt. Diese Option wurde in Version v2.39 der On-Premises API eingestellt. Verwende stattdessen das template-Objekt.


Nur On-Premises API.

image

Objekt

Erforderlich, wenn type=image ist.

Ein media-Objekt, das ein Bild enthält.

interactive

Objekt

Erforderlich, wenn type=interactive ist.

Ein interactive-Objekt. Die Komponenten jedes interactive-Objekts folgen im Allgemeinen einem einheitlichen Muster: header, body, footer und action.

location

Objekt

Erforderlich, wenn type=location ist.

Ein location-Objekt.

messaging_product

String

Erforderlich

Messaging-Dienst, der für die Anfrage verwendet wird. Verwende "whatsapp".


Nur Cloud API.

preview_url

Boolescher Wert

Erforderlich, wenn type=text ist.

Ermöglicht eine URL-Vorschau in SMS-Nachrichten – weitere Informationen unter URLs in SMS-Nachrichten senden. Dieses Feld ist optional, wenn du keine URL in deine Nachricht einfügst. Werte:false (Standard), true.


Nur On-Premises API. Cloud API-Benutzer*innen können dieselbe Funktionalität mit dem preview_url-Feld innerhalb eines „text“-Objekts verwenden.

recipient_type

String

Optional.

Derzeit kannst du nur Nachrichten an Einzelpersonen senden. Lege hierfür individual fest.


Standard: individual

status

String

Der Status einer Nachricht. Mit diesem Feld kannst du eine Nachricht als read markieren. Weitere Informationen findest du in den folgenden Leitfäden:


sticker

Objekt

Erforderlich, wenn type=sticker ist.

Ein media-Objekt, das ein Sticker enthält.


Cloud API: Zusätzlich zu allen Typen von eingehenden Stickern werden statische und animierte ausgehende Sticker von Drittanbietern unterstützt. Ein statischer Sticker muss 512 x 512 Pixel groß sein und darf 100 KB nicht überschreiten. Ein animierter Sticker muss 512 x 512 Pixel groß sein und darf 500 KB nicht überschreiten.


On-Premises API: Zusätzlich zu allen Typen eingehender Stickern werden nur statische ausgehende Sticker von Drittanbietern unterstützt. Ein statischer Sticker muss 512 x 512 Pixel groß sein und darf 100 KB nicht überschreiten. Animierte Sticker werden nicht unterstützt.

template

Objekt

Erforderlich, wenn type=template ist.

Ein template-Objekt.

text

Objekt

Erforderlich für SMS.

Ein text-Objekt.

to

String

Erforderlich.

Die WhatsApp-ID oder Telefonnummer des*der Kund*in, an den/die du die Nachricht senden möchtest. Siehe Formate von Telefonnummern.


Bei Bedarf können On-Premises-API-Benutzer*innen diese Nummer abrufen, indem sie den contacts-Endpunkt aufrufen.

type

String

Optional.

Der Typ der Nachricht, die du senden möchtest. Wenn nicht angegeben, ist der Standardwert text.

Objekt „text“

NameBeschreibung

body

Erforderlich.

Enthält den Text der Nachricht, der URLs und Formatierung enthalten kann.

Objekt „media“

Die Medienobjekt-ID für die On-Premises-API wird zurückgegeben, wenn die Medien erfolgreich über den media-Endpunkt in den WhatsApp Business On-Premises-/Referenz-Client hochgeladen wurden.

NameDescription

id

string

Required when type is audio, document, image, sticker, or video and you are not using a link.


The media object ID. Do not use this field when message type is set to text.

link

string

Required when type is audio, document, image, sticker, or video and you are not using an uploaded media ID (i.e. you are hosting the media asset on your public server).

The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs.


Do not use this field when message type is set to text.


Cloud API users only:


  • See Media HTTP Caching if you would like us to cache the media asset for future messages.
  • When we request the media asset from your server you must indicate the media's MIME type by including the Content-Type HTTP header. For example: Content-Type: video/mp4. See Supported Media Types for a list of supported media and their MIME types.

caption

string

Optional.


Media asset caption. Do not use with audio or sticker media.


On-Premises API users:

  • For v2.41.2 or newer, this field is is limited to 1024 characters.
  • Captions are currently not supported for document media.

filename

string

Optional.


Describes the filename for the specific document. Use only with document media.


The extension of the filename will specify what format the document is displayed as in WhatsApp.

provider

string

Optional. On-Premises API only.

This path is optionally used with a link when the HTTP/HTTPS link is not directly accessible and requires additional configurations like a bearer token. For information on configuring providers, see the Media Providers documentation.

Objekt „contacts“

Innerhalb von contacts kannst du folgende Objekte verschachteln: addresses, emails, name, org, phone und urls. Pluralisierte Objekte müssen wie unten dargestellt in einem Array eingeschlossen werden.

NameDescription

addresses

object

Optional.

Full contact address(es) formatted as an addresses object. The object can contain the following fields:

streetstringOptional. Street number and name.

citystringOptional. City name.

statestringOptional. State abbreviation.

zipstringOptional. ZIP code.

countrystringOptional. Full country name.

country_codestringOptional. Two-letter country abbreviation.

typestringOptional. Standard values are HOME and WORK.

birthday

Optional.

YYYY-MM-DD formatted string.

emails

object

Optional.

Contact email address(es) formatted as an emails object. The object can contain the following fields:

emailstringOptional. Email address.

typestringOptional. Standard values are HOME and WORK.

name

object

Required.

Full contact name formatted as a name object. The object can contain the following fields:

formatted_namestringRequired. Full name, as it normally appears.

first_namestringOptional*. First name.

last_namestringOptional*. Last name.

middle_namestringOptional*. Middle name.

suffixstringOptional*. Name suffix.

prefixstringOptional*. Name prefix.


*At least one of the optional parameters needs to be included along with the formatted_name parameter.

org

object

Optional.

Contact organization information formatted as an org object. The object can contain the following fields:

companystringOptional. Name of the contact's company.

departmentstringOptional. Name of the contact's department.

titlestringOptional. Contact's business title.

phones

object

Optional.

Contact phone number(s) formatted as a phone object. The object can contain the following fields:

phonestringOptional. Automatically populated with the `wa_id` value as a formatted phone number.

typestringOptional. Standard Values are CELL, MAIN, IPHONE, HOME, and WORK.

wa_idstringOptional. WhatsApp ID.

urls

object

Optional.

Contact URL(s) formatted as a urls object. The object can contain the following fields:

urlstringOptional. URL.

typestringOptional. Standard values are HOME and WORK.

Beispiel eines contacts-Objekts mit eingeschlossenen pluralisierten Objekten:

"contacts": [
    {
        "addresses": [
            {
                "city": "city name",
                "country": "country name",
                "country_code": "code",
                "state": "Contact's State",
                "street": "Contact's Street",
                "type": "Contact's Address Type",
                "zip": "Contact's Zip Code"
            }
        ],
        "birthday": "birthday",
        "emails": [
            {
                "email": "email",
                "type": "HOME"
            },
            {
                "email": "email",
                "type": "WORK"
            }
        ],
        "name": {
            "first_name": "first name value",
            "formatted_name": "formatted name value",
            "last_name": "last name value",
            "suffix": "suffix value"
        },
        "org": {
            "company": "company name",
            "department": "dep name",
            "title": "title"
        },
        "phones": [
            {
                "phone": "Phone number",
                "wa-id": "WA-ID value",
                "type": "MAIN"
            },
            {
                "phone": "Phone number",
                "type": "HOME"
            },
            {
                "phone": "Phone number",
                "type": "WORK"
            }
        ],
        "urls": [{
            "url": "some url",
            "type": "WORK"
        }]
    }
]

Objekt „location“

NameDescription

latitude

Required.

Location latitude in decimal degrees.

longitude

Required.

Location longitude in decimal degrees.

name

Required.

Name of the location.

address

Required.

Address of the location.

Objekt „template“

Innerhalb von template kannst du die Objekte components und language verschachteln.

Ab Version v2.27.8 muss der namespace einer Vorlage dem Namespace entsprechen, der mit dem WABA verknüpft ist, welcher Eigentümer der Telefonnummer im aktuellen lokalen WhatsApp Business Client ist. Ist dies nicht der Fall, kann die Nachricht nicht gesendet werden.

Außerdem ist ab Version v2.41 das Feld namespace optional.

NameBeschreibung

namespace

Erforderlich.

Namespace der Vorlage


Ab v2.27.8 muss dies der mit dem WhatsApp-Unternehmenskonto verknüpfte Namespace sein, dem die mit dem aktuellen WhatsApp Business API-Client verknüpfte Telefonnummer zugewiesen ist.

name

Erforderlich.

Name der Vorlage

language

Erforderlich.

Gibt die Sprache an, in der die Vorlage dargestellt werden kann Nur die Sprachrichtlinie deterministic kann mit Medienvorlagennachrichten verwendet werden. Weitere Informationen findest du im Abschnitt Sprache.

components

Optional.

Array, das die Parameter der Nachricht enthält

Objekt „components“

Innerhalb von components kannst du das Objekt parameters verschachteln. Zusätzlich kannst du als typebutton festlegen.

NameBeschreibung

type

Erforderlich.

Beschreibt den component-Typ
Werte:header, body, footer

parameters

Optional.

Array, das den Inhalt der Nachricht enthält

Parameterobjekt

NameBeschreibung

type

Erforderlich.

Beschreibt den parameter-Typ
Werte:text, currency, date_time, image, document, video


Die Medientypen (image, document und video) verwenden dasselbe Format wie bei Standard-Mediennachrichten. Weitere Informationen findest du in der Dokumentation zu Medien. Derzeit werden nur PDF-Dokumente für Vorlagen für Mediennachrichten verwendet.


Weitere Informationen zu currency und date_time findest du im Abschnitt Lokalisierbare Parameter. Die Parameter currency und date_time für template-Nachrichten verwenden fallback_value anstelle von default. Ein Beispiel findest du oben unter Anfrage.

Typ „button“

Innerhalb des components-Objekts kannst du für typebutton festlegen. Die Button-Parameter sehen wie folgt aus:

NameBeschreibung

sub_type

Erforderlich.

Art des erstellten Buttons.
Werte:quick_reply, url, copy_code (available from 2.49 and onwards)

index

Erforderlich.

Positionsindex für den Button. Du kannst mit den Indexwerten 0-2 bis zu zehn Buttons erstellen.

parameters

Erforderlich.

Die Parameter für den Button, die zum Zeitpunkt der Erstellung im Business Manager festgelegt werden. Schließe die folgenden Parameter ein:

  • type (Erforderlich): Gibt den Parametertyp für den Button an. Unterstützte Werte sind payload, text und coupon_code.
  • payload (Erforderlich für quick_reply-Buttons): Von der*der Entwickler*in definierte Payload, die zusammen mit dem Anzeigetext auf dem Button zurückgegeben wird, wenn der Button angeklickt wird.
  • text (Erforderlich für url-Buttons): Von dem*der Entwickler*in bereitgestelltes Suffix, das an einen zuvor erstellten dynamischen URL-Button angehängt wird.
  • coupon_code (Erforderlich für copy_code-Buttons) (verfügbar ab 2.49): Von dem*der Entwickler*in bereitgestellter Gutscheincode, der durch Klicken auf den Button „Code kopieren“ kopiert wird.

Beispiel eines button-Typs mit dem sub_type quick_reply:

 {
    "type": "button",
    "sub_type": "quick_reply",
    "index": 0,
    "parameters": 
     [{
    	"type": "payload",
    	"payload": "Yes-Button-Payload"
     }]
 } 

Beispiel eines button-Typs mit dem sub_type copy_code

    
 { 
    "type": "button", 
    "sub_type": "copy_code", 
    "index": 0, 
    "parameters": 
    [{ 
     "type": "coupon_code", 
     "coupon_code": "DISCOUNT20" 
    }] 
 }

Objekt „hsm“

Das Objekt hsm wird mit v2.39 des WhatsApp Business On-Premises-/Referenz-Clients eingestellt. Verwende stattdessen das template-Objekt.

Name Beschreibung

namespace

Erforderlich.

Der zu verwendende Namespace. Ab v2.2.7 muss der Namespace mit dem element_name übereinstimmen. Andernfalls wird die Nachricht nicht gesendet.

element_name

Erforderlich.

Der Elementname, der angibt, welche Vorlage innerhalb des Namespace verwendet werden soll. Ab v2.2.7 muss element_name mit dem Namespace übereinstimmen. Andernfalls wird die Nachricht nicht gesendet.

language

Erforderlich.

Ermöglicht die Angabe einer deterministischen Sprache. Weitere Informationen findest du im Abschnitt Sprache.


Dieses Feld ermöglichte in früheren Versionen eine fallback-Option, wurde aber ab v2.27.8 eingestellt.

localizable_params

Erforderlich.

Dieses Feld ist ein Array von Werten, die auf Variablen in der Vorlage angewendet werden. Weitere Informationen findest du im Abschnitt Lokalisierbare Parameter.

Objekt „interactive“

The interactive object generally contains 4 main components: header, body, footer, and action. Additionally, some of those components can contain one or more different objects:

  • Inside header, you can nest media objects.
  • Inside action, you can nest section and button objects.
NameDescription

type

string

Required.

The type of interactive message you want to send. Supported values:

  • list: Use it for List Messages.
  • button: Use it for Reply Buttons.
  • product: Use it for Single-Product Messages.
  • product_list: Use it for Multi-Product Messages.
  • catalog_message: Use it for Catalog Messages.
  • flow: Use it for Flows Messages.

header

object

Required for type product_list. Optional for other types.

Header content displayed on top of a message. You cannot set a header if your interactive object is of product type.


The header object contains the following fields:

documentobjectRequired if type is set to document. Contains the media object with the document.

imageobjectRequired if type is set to image. Contains the media object with the image.

videoobjectRequired if type is set to video. Contains the media object with the video.

textstringRequired if type is set to text. Text for the header. Formatting allows emojis, but not markdown. Maximum length: 60 characters.

typestringRequired. The header type you would like to use. Supported values are:

text – for List Messages, Reply Buttons, and Multi-Product Messages.

video – for Reply Buttons.

image – for Reply Buttons.

document – for Reply Buttons.

body

object

Optional for type product. Required for other message types.

An object with the body of the message.


The body object contains the following field:

textstringRequired if body is present. The content of the message. Emojis and markdown are supported. Maximum length: 1024 characters.

footer

object

Optional.

An object with the footer of the message.


The footer object contains the following field:

textstringRequired if footer is present. The footer content. Emojis, markdown, and links are supported. Maximum length: 60 characters.

action

object

Required.

An action object with what you want the user to perform after reading the message. See action object for full information.

Objekt „action“

NameDescription

button

string

Required for List Messages.

Button content. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.

buttons

object

Required for Reply Button Messages.

A button object. The object can contain the following parameters:

type – The only supported option is reply for Reply Button Messages.

title – Button title. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.

id – Unique identifier for your button. This ID is returned in the webhook when the button is clicked by the user. Maximum length: 256 characters.


Wenn du die ID festlegst, darf sie nicht mit einem Leerzeichen beginnen oder enden.

sections

array of objects

Required for List Messages and Multi-Product Messages.

Array of section objects. There is a minimum of 1 and maximum of 10. See section object.

catalog_id

string

Required for Single-Product Messages and Multi-Product Messages.

Unique identifier of the Facebook catalog linked to your WhatsApp Business Account. This ID can be retrieved via Commerce Manager.

product_retailer_id

string

Required for Single-Product Messages and Multi-Product Messages.

Unique identifier of the product in a catalog. Maximum 100 characters for both Single-Product and Multi-Product messages.


To get this ID, go to Commerce Manager, select your Facebook Business account, and you will see a list of shops connected to your account. Click the shop you want to use. On the left-side panel, click Catalog > Items, and find the item you want to mention. The ID for that item is displayed under the item's name.

mode

string

Optional for Flows Messages.

The current mode of the Flow, either draft or published.


Default: published

flow_message_version

string

Required for Flows Messages.

Must be 3.

flow_token

string

Required for Flows Messages.

A token that is generated by the business to serve as an identifier.

flow_id

string

Required for Flows Messages.

Unique identifier of the Flow provided by WhatsApp.

flow_cta

string

Required for Flows Messages.

Text on the CTA button, eg. "Signup".


Maximum length: 20 characters (no emoji).

flow_action

string

Optional for Flows Messages.

navigate or data_exchange. Use navigate to predefine the first screen as part of the message. Use data_exchange for advanced use-cases where the first screen is provided by your endpoint.


Default: navigate

flow_action_payload

object

Optional for Flows Messages.

Required only if flow_action is navigate. The object can contain the following parameters:

screenstringRequired. The id of the first screen of the Flow.

dataobjectOptional. The input data for the first screen of the Flow. Must be a non-empty object.

Section Object

NameDescription

title

string

Required if the message has more than one section.

Title of the section. Maximum length: 24 characters.

rows

array of objects

Required for List Messages.

Contains a list of row objects. Limited to 10 rows across all sections.


Each row object contains the following fields:

titlestringRequired. Maximum length: 24 characters.

IDstringRequired. Maximum length: 200 characters.

descriptionstringOptional. Maximum length: 72 characters.

product_items

array of objects

Required for Multi-Product Messages.

Array of product objects. There is a minimum of 1 product per section and a maximum of 30 products across all sections.


Each product object contains the following field:

product_retailer_idstringRequired for Multi-Product Messages. Unique identifier of the product in a catalog. To get this ID, go to Commerce Manager, select your account and the shop you want to use. Then, click Catalog > Items, and find the item you want to mention. The ID for that item is displayed under the item's name.

Beispiele

Audionachrichten:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "audio",
  "audio": {
      "id": "your-media-id",
  }
}

Dokumentnachrichten mit filename:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "document",
  "document": {
      "id": "your-media-id",
      "filename": "your-document-filename"
  }
}

Dokumentnachrichten mit link:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "document",
  "document": {
      "link": "http(s)://the-url"
      "provider": {
          "name" : "provider-name"
      }     
    }
}

Videonachrichten mit link:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "video",  
  "video": {
      "link": "http(s)://the-url"
      "provider": {
          "name" : "provider-name"
      }
    }
  }
}

Textnachrichten:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "text",
  "text": {
      "body": "your-message-content"
  }
}

Interaktive Nachrichten (Listen):

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "interactive",
  "interactive":{
    "type": "list",
    "header": {
      "type": "text",
      "text": "your-header-content-here"
    },
    "body": {
      "text": "your-text-message-content-here"
    },
    "footer": {
      "text": "your-footer-content-here"
    },
    "action": {
      "button": "cta-button-content-here",
      "sections":[
        {
          "title":"your-section-title-content-here",
          "rows": [
            {
              "id":"unique-row-identifier-here",
              "title": "row-title-content-here",
              "description": "row-description-content-here",           
            }
          ]
        },
        {
          "title":"your-section-title-content-here",
          "rows": [
            {
              "id":"unique-row-identifier-here",
              "title": "row-title-content-here",
              "description": "row-description-content-here",           
            }
          ]
        },
        ...
      ]
    }
  }

}

Interaktive Nachrichten (Antwort-Buttons):

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "interactive",
  "interactive": {
    "type": "button",
    "header": { # optional
      "type": "text" | "image" | "video" | "document",
      "text": "your text"
      # OR
      "document": {
        "id": "your-media-id",
        "filename": "some-file-name"
      }
      # OR
      "document": {
        "link": "the-provider-name/protocol://the-url",
        "provider": {
          "name": "provider-name",
        },
        "filename": "some-file-name"
      },
      # OR
      "video": {
        "id": "your-media-id"
      }
      # OR
      "video": {
        "link": "the-provider-name/protocol://the-url",
        "provider": {
          "name": "provider-name"
        }
      }
      # OR
      "image": {
        "id": "your-media-id"
      }
      # OR
      "image": {
        "link": "http(s)://the-url",
        "provider": {
          "name": "provider-name"
        }
      }
    }, # end header
    "body": {
      "text": "your-text-body-content"
    },
    "footer": { # optional
      "text": "your-text-footer-content"
    },
    "action": {
      "buttons": [
        {
          "type": "reply",
          "reply": {
            "id": "unique-postback-id",
            "title": "First Button’s Title" 
          }
        },
        {
          "type": "reply",
          "reply": {
            "id": "unique-postback-id",
            "title": "Second Button’s Title" 
          }
        }
      ] 
    } # end action   
  } # end interactive

}

Interaktive Nachrichten (Nachrichten für einzelne und mehrere Produkte):

{ 
  "recipient_type": "individual",
  "to" : "{{Recipient-WA-ID}}",
  "type": "interactive",
  "interactive": {
    "type": "product",
    "body": {
      "text": "body text"
    },
    "footer": {
      "text": "footer text"
    },
    "action": {
      "
      
      _id": "catalog-ID",
      "product_retailer_id": "product-ID"
    }
  }
}

Interaktive Nachrichten (Nachrichten für mehrere Produkte):

{ 
  "recipient_type": "individual",
  "to" : "whatsapp-id",
  "type": "interactive",
  "interactive": 
    {
    "type": "product_list",
    "Header":{
       "type": "text",
        "text": "text-header-content"
     },
     "body":{
        "text": "text-body-content"
      },
     "footer":{
        "text":"text-footer-content"
     },
     "action":{
        "catalog_id":"catalog-id",
        "sections": [
             {
             "title": "section-title",             
             "product_items": [
                  { "product_retailer_id": "product-SKU-in-catalog" },
                  { "product_retailer_id": "product-SKU-in-catalog" },
                            ...
              ]},
              {
              "title": "the-section-title",
              "product_items": [
                 { "product_retailer_id": "product-SKU-in-catalog" }
                           ...
              ]},
               ...
       ]
     },  
    }
}

Interaktive Nachrichten (Katalognachrichten):

{ 
  "recipient_type": "individual",
  "to" : "whatsapp-id",
  "type": "interactive",
  "interactive": 
    {
    "type": "catalog_message",
     "body":{
        "text": "text-body-content"
      },
     "footer":{
        "text":"text-footer-content"
     },
     "action":{
        "name": "catalog_message",
      	"parameters":{ 
      	  "thumbnail_product_retailer_id": "product-SKU-in-catalog"
      	}
     },  
    }
}

Interaktive Nachrichten (Flows):

{
  "recipient_type": "individual",
  "to": "{{Recipient-WA-ID}}",
  "type": "interactive",
  "interactive": {
    "type": "flow",
    "header": {
      "type": "text",
      "text": "Flow message header"
    },
    "body": {
      "text": "Flow message body"
    },
    "footer": {
      "text": "Flow message footer"
    },
    "action": {
      "name": "flow",
      "parameters": {
        "flow_message_version": "3",
        "flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s",
        "flow_id": "<FLOW_ID>",
        "flow_cta": "Book!",
        "flow_action": "navigate",
        "flow_action_payload": {
          "screen": "<SCREEN_ID>",
          "data": { # optional
            "user_name": "name",
            "user_age": 25
          }
        }
      }
    }
  }
}

Im Folgenden findest du ein Beispiel für payload in einer Antwort. Die Meta- und Fehlerobjekte wurden der Kürze halber weggelassen.

{
  "messages": [{ 
    "id": "message-id" 
  }]    
}

Bei erfolgreicher Anfrage erhältst du eine Antwort mit einer Nachrichten-ID. Wenn die Anfrage einen errors-Abschnitt zurückgibt, prüfe die Ursprungsnachricht und korrigiere die Fehler, bevor du die Anfrage erneut sendest. Weitere Informationen zu Fehlern findest du unter Fehlercodes des WhatsApp Business On-Premises-/Referenz-Clients und HTTP-Statuscodes.

Gilt ab dem 12. September 2023 für Unternehmen in Brasilien, Kolumbien und Singapur. Gilt ab dem 12. Oktober 2023 für alle Unternehmen.

Wenn die Anfrage aufgrund der Qualitätsbewertung zurückgehalten wird, enthält die Antwort die message_status-Eigenschaft mit einer Nachricht, die angibt, dass die Nachricht nicht direkt gesendet wurde und nach der Überprüfung der Qualität gesendet oder verworfen wird. Diese Eigenschaft ist nur vorhanden, wenn die Nachricht zurückgehalten wird.

    {
      "messages": [{ 
        "id": "message-id",
        "message_status": "Message has been held because quality assessment is pending",
      }]    
    }
    

Formatierung in Textnachrichten

WhatsApp unterstützt einige Formatierungen in Nachrichten. Mit diesen Symbolen kannst du eine komplette Nachricht oder bestimmte Nachrichteninhalte formatieren:

FormatierungSymbolBeispiel

Fett

Sternchen (*)

Gesamtsumme: *10,50 €*.

Kursiv

Unterstrich (_)

Willkommen bei _WhatsApp_!

Durchgestrichen

Tilde (~)

Das ist ~besser~ am besten!

Code

Drei Backticks (```)

```print 'Hello World';```

Performance

In diesem Zusammenhang steht Performance für die Anzahl der Nachrichten, die in einer Sekunde mit dem WhatsApp Business On-Premises-/Referenz-Client gesendet werden können. Die maximal erreichbare Performance hängt von verschiedenen Faktoren ab. Die wichtigsten Faktoren sind dein Client-Setup und die Frage, ob eine Nachricht an eine*n neue*n oder eine*n vorhandene*n Nutzer*in gesendet werden soll. Die Einrichtung von Verschlüsselungssitzungen dauert etwas länger, wenn Nachrichten an eine*n neue*n Nutzer*in gesendet werden.

Client-EinrichtungUnterstützte Textnachrichten pro Sekunde

Einzelne Shard

70

Mehrere Shards (32 Shards)

250

FAQ

Hinweis: Bitte sende eine Nachricht nicht mehrmals über die WhatsApp Business API an denselben*dieselbe Empfänger*in.

Es kann mehrere Ursachen haben, wenn die Auslieferungsrate nicht 100 % beträgt. Beispielsweise kann es sein, dass Benutzer*innen nur sporadisch Zugriff auf das Netzwerk haben, für einen längeren Zeitraum nicht aktiv sind oder dass ein hochwertiges Nutzungserlebnis gewährleistet werden soll.

Nachrichten, die mit WhatsApp ausgeliefert werden können, haben eine sehr hohe Auslieferungsrate. Es gibt jedoch viele Gründe, warum eine Nachricht nicht ausgeliefert wird. Durch Verfolgen deiner Rückrufe hast du Zugriff auf den genauen Status einer Nachricht. Darin liegt beispielsweise der Unterschied zum Senden von Nachrichten per SMS, wo du keinen Zugriff auf den endgültigen Auslieferungsstatus hast und durch erneutes Senden der Nachricht möglicherweise tatsächlich ein anderes Ergebnis entsteht.

Nachrichten gelten womöglich weiterhin als „nicht ausgeliefert“, weil das Telefon eines*einer Benutzer*in außer Betrieb ist, der Akku leer ist oder der*die Benutzer*in es verloren hat, sich daraufhin ein neues Telefon gekauft und die SIM-Karte deaktiviert hat. Denkbar ist auch, dass der Unternehmenskunde beim Herstellen der Verbindung mit dem Netzwerk Fehlermeldungen erhalten hat. Es ist außerdem möglich, dass Rückrufe (Webhooks) nicht ausgeliefert werden. Diese Fälle kannst du mit dem Node health überwachen. Durch Aktivieren von Server-Empfangsrückrufen hast du die Gewissheit, dass die Nachricht in der WhatsApp-Server-Cloud angekommen ist.

Wenn ein*e Benutzer*in erneut eine Verbindung mit dem Netzwerk herstellt, werden alle von dir gesendeten Nachrichten ausgeliefert. Bei dem*der Benutzer*in kommt es nicht gut an, wenn er mehrere Nachrichten mit demselben Inhalt erhält. Die Wahrscheinlichkeit steigt, dass der*die Benutzer*in dich blockiert oder sich über dich beschwert. Auch eine Sperrung wird wahrscheinlicher.

Wenn du eine Nachricht sendest und von der API eine Nachrichten-ID erhältst, hast du alles Nötige getan, um diese Nachricht zu senden. Du solltest denselben Inhalt nicht erneut an denselben Empfänger senden.

Wenn die Auslieferungsrate über einen längeren Zeitraum niedrig ist, öffne ein Support-Ticket beim Direct Support.

Wenn du eine Nachricht sendest und eine Nachrichten-ID erhältst, bedeutet das, dass die Nachrichtenanforderung in der Datenbank gespeichert wurde. Der WhatsApp Business API-Client versucht weiterhin, diese Nachricht zu senden, bis der Vorgang vom WhatsApp-Server bestätigt wird. Dieser Prozess ist nicht zeitlich begrenzt. Der WhatsApp-Server versucht dann, diese Nachricht an das Telefon des Nutzers zu übermitteln. Wenn das Telefon des Benutzers nicht online ist, wird die Nachricht 30 Tage lang gespeichert, bevor sie vom WhatsApp-Server entfernt wird.

Ja. Mit WhatsApp kannst du ausgewählten Text in deinen Nachrichten mit Fett, Kursiv, Durchgestrichen und Monospace formatieren.

Es gibt derzeit keine Möglichkeit zu sehen, wie viele oder welche Benutzer dein Unternehmen blockieren. Eine gute Möglichkeit, dies herauszufinden, ist, auf Status-Rückrufe zu warten. Wenn du den Status delivered nicht erhältst, hat der Nutzer dein Unternehmen entweder blockiert oder er hat keine Verbindung zum Netzwerk. Weitere Informationen findest du in der Dokumentation zu Webhooks.

Wenn ein Nutzer dein Unternehmen gesperrt hat, wird diese Telefonnummer von der Kontakte-API weiterhin als ein gültiger WhatsApp-Nutzer zurückgegeben. Wenn du die Nachricht sendest, wird sie allerdings niemals zugestellt. Handelt es sich dabei um eine bezahlte Nachricht, fallen keine Kosten an.

Nein. Es wird nicht garantiert, dass Nachrichten in der Reihenfolge ankommen, in der sie gesendet wurden. Wenn die richtige Reihenfolge für deinen Anwendungsfall wichtig ist, schlagen wir vor, den „Zugestellt“-Rückruf abzuwarten, bevor du die zweite Nachricht sendest.

Bei Verwendung des messages-Node musst du den Content-Type-Header auf application/json festlegen, damit der Nachrichtentext von WhatsApp Business API-Client richtig geparst wird. Es gibt auch einen Authorization-Header, der festgelegt werden und einen nicht abgelaufenen Zugriffsschlüssel enthalten muss. Informationen dazu, wie du den Zugriffsschlüssel abrufen kannst und wann er abläuft, findest du in der Dokumentation zu Anmeldung und Authentifizierung

Es kann sein, dass du mehr Zeit benötigst, um eine Kundenanfrage zu bearbeiten, und du daher erst später als nach 24 Stunden antworten kannst. Wir empfehlen, Nachrichtenvorlagen zu erstellen, um:

  • das Ergebnis an den Nutzer auszuliefern oder
  • den Nutzer zu einer Antwort aufzufordern, damit das Kundenservice-Fenster aktiviert wird.

In beiden Fällen solltest du der Nachrichtenvorlage möglichst viel Kontext hinzufügen. Beispiel:

  • „Hallo {{1}}, hinsichtlich des kürzlich gemeldeten Problems müssen wir dir leider mitteilen, dass {{2}}. Wir entschuldigen uns für etwaige Unannehmlichkeiten.“
  • „Es gibt Neuigkeiten zu deinem Ticket. Bitte antworte auf diese Nachricht, wenn du weiterhin Support wünschst.“