Skip to main content

Send Message

Send Message sends a WhatsApp message through the Cloud API: free text (within 24 hours of the user's last message), an approved template (business-initiated), media by id or public link, interactive buttons or lists, a location, contacts or a reaction.

It calls POST https://graph.facebook.com/v25.0/{phoneNumberId}/messages.

Pick Message Type on the Configuration tab and fill the matching object on the Input tab. messaging_product (whatsapp) and recipient_type are sent automatically.

The activity has four tabs: Configuration, Auth, Input and Output.

Configuration​

FieldRequiredDescription
NameOptionalName of the step, should be unique within this workflow.
DescriptionOptionalDescribe the purpose or function of this step.
Phone Number IDOptionalThe business phone number id that sends the message (WhatsApp Manager → API Setup), not the phone number itself. Sent as the phoneNumberId path parameter.
ToOptionalRecipient phone number with country code, digits only (for example 918720800616). When Recipient Type is group, the WhatsApp group id. Sent as body.to.
Message TypeOptionalOne of text, template, image, video, document, audio, sticker, interactive, location, contacts, reaction. Defaults to text. Fill the matching object (for example body.template) on the Input tab. Sent as body.type.
Recipient TypeOptionalindividual (default): To is a phone number. group: To is a WhatsApp group id. Sent as body.recipient_type.

The form doesn't enforce Phone Number ID or To, but Meta rejects a message without them. Every field except Name and Description accepts a fixed value, a global variable, or a value mapped from an earlier step.

Auth​

FieldRequiredDescription
Auth TypeOptionalOAuth 2, the only option. WhatsApp uses the Meta OAuth connection.
WhatsApp ConnectionOptionalThe WhatsApp resource, which needs the whatsapp_business_messaging scope.

Input​

This activity is built on the REST Client. The Input tab is the HTTP request; the message goes under body.

FieldRequiredData TypeDescription
TargetRequiredObjectThe HTTP request. Map the message object under body.

Fill the object that matches Message Type:

Message TypeObjectKey fields
textbody.textbody (up to 4096 characters), preview_url to show a preview of the first URL
templatebody.templatename, language.code (must match a language the template was approved in), components with the parameter values
image, video, document, audio, stickerbody.image and so onid (uploaded media) or link (public HTTPS URL). caption for image, video and document; filename for document
interactivebody.interactivetype (button, list, cta_url, flow, product, product_list, …), header, body.text, footer, action
locationbody.locationlatitude, longitude, name, address
contactsbody.contactsOne or more contact cards; name.formatted_name is required for each
reactionbody.reactionmessage_id of the message reacted to, emoji (an empty string removes the reaction)

To send the message as a reply, add body.context.message_id with the id of the earlier message.

Size limits for media: image (JPEG, PNG) 5 MB; video (MP4, 3GP) 16 MB; audio 16 MB; document 100 MB; sticker (WebP) 100 KB static or 500 KB animated.

For template parameters, each entry in template.components has a type (header, body or button) and parameters. A parameter has a type (text, currency, date_time, image, document, video, location, payload, coupon_code or action) and the matching value field. Add parameter_name for templates with named placeholders ({{first_name}}); leave it out for positional ones ({{1}}), where order matters.

Output​

The activity returns an httpResponse object.

FieldData TypeDescription
status.codeIntegerNumeric HTTP status code.
status.messageStringShort message associated with the HTTP status.
headersObjectHTTP response headers.
bodyObjectParsed body of the response.

On success, the response body carries:

FieldData TypeDescription
messaging_productStringAlways whatsapp.
contacts[].inputStringThe value you sent in To.
contacts[].wa_idStringThe recipient's WhatsApp id.
messages[].idStringMessage id (wamid). Use it for replies (context.message_id) and reactions.
messages[].message_statusStringPacing status for template messages, for example accepted or held_for_quality_assessment.