WhatsApp

WhatsApp is a globally popular messaging platform that enables secure, reliable communication between individuals and businesses.

WhatsApp Business API provides organizations with powerful capabilities to:

  • Engage customers: Send personalized messages, notifications, and updates directly to customers' preferred messaging app
  • Automate conversations: Create interactive chatbots and automated response systems for common inquiries
  • Enhance support: Provide real-time customer service through a familiar interface with rich media support
  • Drive conversions: Facilitate transactions and follow-ups with customers in a secure, compliant environment

In Sim, the WhatsApp integration enables your agents to leverage these messaging capabilities as part of their workflows. This creates opportunities for sophisticated customer engagement scenarios like appointment reminders, verification codes, alerts, and interactive conversations. The integration bridges the gap between your AI workflows and customer communication channels, allowing your agents to deliver timely, relevant information directly to users' mobile devices. By connecting Sim with WhatsApp, you can build intelligent agents that engage customers through their preferred messaging platform, enhancing user experience while automating routine messaging tasks.

Usage Instructions

Integrate WhatsApp into the workflow. Send text, template, media, and interactive messages, react to messages, and mark messages as read through the WhatsApp Cloud API. Free-form messages only reach a recipient within 24 hours of their last message to you — outside that window WhatsApp requires a pre-approved template.

Actions

whatsapp_send_message

Send a free-form text message through the WhatsApp Cloud API. Only works inside the 24-hour customer service window — use Send Template to start a conversation.

Input

ParameterTypeRequiredDescription
phoneNumberstringYesRecipient phone number with country code (e.g., +14155552671)
messagestringYesPlain text message content to send (max 4096 characters)
phoneNumberIdstringYesWhatsApp Business Phone Number ID (from Meta Business Suite)
previewUrlbooleanNoWhether WhatsApp should try to render a link preview for the first URL in the message

Output

ParameterTypeDescription
successbooleanSend success status
messageIdstringWhatsApp message identifier
messageStatusstringPacing status from the send API: accepted, held_for_quality_assessment, or paused. Acceptance is not delivery — use the webhook trigger for delivery status.
messagingProductstringMessaging product returned by the send API
inputPhoneNumberstringRecipient phone number echoed by the send API
whatsappUserIdstringResolved WhatsApp user ID for the recipient
contactsarrayRecipient contacts returned by the send API (each item includes input and wa_id)
mediaIdstringMedia asset ID from Upload Media, or the ID downloaded by Download Media
filefileMedia downloaded by Download Media, stored as a workflow file
fileNamestringName of the file uploaded by Upload Media
mimeTypestringMIME type of the uploaded or downloaded media
sizenumberSize in bytes of the file uploaded by Upload Media
fileSizenumberSize in bytes of the downloaded media
sha256stringSHA-256 hash WhatsApp reported for the downloaded media
eventTypestringWebhook classification such as incoming_message, message_status, or mixed
fromstringSender phone number from the first incoming message
recipientIdstringRecipient phone number from the first status update in the batch
phoneNumberIdstringBusiness phone number ID from the first message or status item in the batch
displayPhoneNumberstringBusiness display phone number from the first message or status item in the batch
textstringText body from the first incoming text message
timestampstringTimestamp from the first message or status item in the batch
messageTypestringType of the first incoming message in the batch, such as text, image, or system
mediaMimeTypestringMIME type of the first incoming media message in the webhook batch
captionstringCaption on the first incoming image, video, or document message
statusstringFirst outgoing message status in the batch, such as sent, delivered, or read
contactjsonFirst sender contact in the webhook batch (wa_id, profile.name)
messagesjsonAll incoming message objects from the webhook batch, flattened across entries/changes
statusesjsonAll message status objects from the webhook batch, flattened across entries/changes
webhookContactsjsonAll sender contact profiles from the webhook batch
conversationjsonConversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type)
pricingjsonPricing metadata from the first status update in the batch (billable, pricing_model, category)
rawjsonFull structured WhatsApp webhook payload
errorstringError information if sending fails

whatsapp_send_template

Send a pre-approved WhatsApp template message. Required to start a conversation or to message a user outside the 24-hour customer service window.

Input

ParameterTypeRequiredDescription
phoneNumberstringYesRecipient phone number with country code (e.g., +14155552671)
templateNamestringYesName of the approved message template
languageCodestringYesTemplate language/locale code (e.g., en_US)
componentsjsonNoTemplate components array with parameters for header/body/button variables, per the WhatsApp template message schema
phoneNumberIdstringYesWhatsApp Business Phone Number ID (from Meta Business Suite)

Output

ParameterTypeDescription
successbooleanSend success status
messageIdstringWhatsApp message identifier
messageStatusstringPacing status from the send API: accepted, held_for_quality_assessment, or paused. Acceptance is not delivery — use the webhook trigger for delivery status.
messagingProductstringMessaging product returned by the send API
inputPhoneNumberstringRecipient phone number echoed by the send API
whatsappUserIdstringResolved WhatsApp user ID for the recipient
contactsarrayRecipient contacts returned by the send API (each item includes input and wa_id)
mediaIdstringMedia asset ID from Upload Media, or the ID downloaded by Download Media
filefileMedia downloaded by Download Media, stored as a workflow file
fileNamestringName of the file uploaded by Upload Media
mimeTypestringMIME type of the uploaded or downloaded media
sizenumberSize in bytes of the file uploaded by Upload Media
fileSizenumberSize in bytes of the downloaded media
sha256stringSHA-256 hash WhatsApp reported for the downloaded media
eventTypestringWebhook classification such as incoming_message, message_status, or mixed
fromstringSender phone number from the first incoming message
recipientIdstringRecipient phone number from the first status update in the batch
phoneNumberIdstringBusiness phone number ID from the first message or status item in the batch
displayPhoneNumberstringBusiness display phone number from the first message or status item in the batch
textstringText body from the first incoming text message
timestampstringTimestamp from the first message or status item in the batch
messageTypestringType of the first incoming message in the batch, such as text, image, or system
mediaMimeTypestringMIME type of the first incoming media message in the webhook batch
captionstringCaption on the first incoming image, video, or document message
statusstringFirst outgoing message status in the batch, such as sent, delivered, or read
contactjsonFirst sender contact in the webhook batch (wa_id, profile.name)
messagesjsonAll incoming message objects from the webhook batch, flattened across entries/changes
statusesjsonAll message status objects from the webhook batch, flattened across entries/changes
webhookContactsjsonAll sender contact profiles from the webhook batch
conversationjsonConversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type)
pricingjsonPricing metadata from the first status update in the batch (billable, pricing_model, category)
rawjsonFull structured WhatsApp webhook payload
errorstringError information if sending fails

whatsapp_send_media

Send an image, document, video, audio, or sticker message. Accepts an uploaded file, a media ID, or a public link.

Input

ParameterTypeRequiredDescription
phoneNumberstringYesRecipient phone number with country code (e.g., +14155552671)
mediaTypestringYesType of media to send: image, document, video, audio, or sticker
filefileNoFile to send. Uploaded to WhatsApp first, then sent. Use Upload Media instead when sending the same file repeatedly.
mediaIdstringNoID of media previously uploaded to WhatsApp. Alternative to file or mediaLink.
mediaLinkstringNoPublic HTTPS URL of the media. Alternative to file or mediaId.
captionstringNoOptional caption for image, video, or document media (max 1024 characters). Ignored for audio and sticker.
filenamestringNoOptional file name shown to the recipient for document media
phoneNumberIdstringYesWhatsApp Business Phone Number ID (from Meta Business Suite)

Output

ParameterTypeDescription
successbooleanSend success status
messageIdstringWhatsApp message identifier
messageStatusstringPacing status from the send API: accepted, held_for_quality_assessment, or paused. Acceptance is not delivery — use the webhook trigger for delivery status.
messagingProductstringMessaging product returned by the send API
inputPhoneNumberstringRecipient phone number echoed by the send API
whatsappUserIdstringResolved WhatsApp user ID for the recipient
contactsarrayRecipient contacts returned by the send API (each item includes input and wa_id)
mediaIdstringMedia asset ID from Upload Media, or the ID downloaded by Download Media
filefileMedia downloaded by Download Media, stored as a workflow file
fileNamestringName of the file uploaded by Upload Media
mimeTypestringMIME type of the uploaded or downloaded media
sizenumberSize in bytes of the file uploaded by Upload Media
fileSizenumberSize in bytes of the downloaded media
sha256stringSHA-256 hash WhatsApp reported for the downloaded media
eventTypestringWebhook classification such as incoming_message, message_status, or mixed
fromstringSender phone number from the first incoming message
recipientIdstringRecipient phone number from the first status update in the batch
phoneNumberIdstringBusiness phone number ID from the first message or status item in the batch
displayPhoneNumberstringBusiness display phone number from the first message or status item in the batch
textstringText body from the first incoming text message
timestampstringTimestamp from the first message or status item in the batch
messageTypestringType of the first incoming message in the batch, such as text, image, or system
mediaMimeTypestringMIME type of the first incoming media message in the webhook batch
captionstringCaption on the first incoming image, video, or document message
statusstringFirst outgoing message status in the batch, such as sent, delivered, or read
contactjsonFirst sender contact in the webhook batch (wa_id, profile.name)
messagesjsonAll incoming message objects from the webhook batch, flattened across entries/changes
statusesjsonAll message status objects from the webhook batch, flattened across entries/changes
webhookContactsjsonAll sender contact profiles from the webhook batch
conversationjsonConversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type)
pricingjsonPricing metadata from the first status update in the batch (billable, pricing_model, category)
rawjsonFull structured WhatsApp webhook payload
errorstringError information if sending fails

whatsapp_send_interactive

Send an interactive WhatsApp message with reply buttons or a selectable list.

Input

ParameterTypeRequiredDescription
phoneNumberstringYesRecipient phone number with country code (e.g., +14155552671)
bodyTextstringYesMain body text of the interactive message (max 1024 characters with buttons, 4096 with a list)
headerTextstringNoOptional plain-text header shown above the body (max 60 characters)
footerTextstringNoOptional footer text shown below the body (max 60 characters)
buttonsjsonNoReply buttons array (max 3), each item: { "type": "reply", "reply": { "id": "...", "title": "..." } }. Button title max 20 characters, id max 256. Provide buttons or sections.
listButtonTextstringNoLabel for the menu button that opens the list, max 20 characters (required when sending a list)
sectionsjsonNoList sections array (max 10 sections, 10 rows total), each item: { "title": "...", "rows": [{ "id": "...", "title": "...", "description": "..." }] }. Section and row titles max 24 characters, row description max 72. Provide sections or buttons.
phoneNumberIdstringYesWhatsApp Business Phone Number ID (from Meta Business Suite)

Output

ParameterTypeDescription
successbooleanSend success status
messageIdstringWhatsApp message identifier
messageStatusstringPacing status from the send API: accepted, held_for_quality_assessment, or paused. Acceptance is not delivery — use the webhook trigger for delivery status.
messagingProductstringMessaging product returned by the send API
inputPhoneNumberstringRecipient phone number echoed by the send API
whatsappUserIdstringResolved WhatsApp user ID for the recipient
contactsarrayRecipient contacts returned by the send API (each item includes input and wa_id)
mediaIdstringMedia asset ID from Upload Media, or the ID downloaded by Download Media
filefileMedia downloaded by Download Media, stored as a workflow file
fileNamestringName of the file uploaded by Upload Media
mimeTypestringMIME type of the uploaded or downloaded media
sizenumberSize in bytes of the file uploaded by Upload Media
fileSizenumberSize in bytes of the downloaded media
sha256stringSHA-256 hash WhatsApp reported for the downloaded media
eventTypestringWebhook classification such as incoming_message, message_status, or mixed
fromstringSender phone number from the first incoming message
recipientIdstringRecipient phone number from the first status update in the batch
phoneNumberIdstringBusiness phone number ID from the first message or status item in the batch
displayPhoneNumberstringBusiness display phone number from the first message or status item in the batch
textstringText body from the first incoming text message
timestampstringTimestamp from the first message or status item in the batch
messageTypestringType of the first incoming message in the batch, such as text, image, or system
mediaMimeTypestringMIME type of the first incoming media message in the webhook batch
captionstringCaption on the first incoming image, video, or document message
statusstringFirst outgoing message status in the batch, such as sent, delivered, or read
contactjsonFirst sender contact in the webhook batch (wa_id, profile.name)
messagesjsonAll incoming message objects from the webhook batch, flattened across entries/changes
statusesjsonAll message status objects from the webhook batch, flattened across entries/changes
webhookContactsjsonAll sender contact profiles from the webhook batch
conversationjsonConversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type)
pricingjsonPricing metadata from the first status update in the batch (billable, pricing_model, category)
rawjsonFull structured WhatsApp webhook payload
errorstringError information if sending fails

whatsapp_send_reaction

React to a WhatsApp message with an emoji. Send an empty emoji to remove an existing reaction.

Input

ParameterTypeRequiredDescription
phoneNumberstringYesRecipient phone number with country code (e.g., +14155552671)
messageIdstringYesID (wamid) of the message to react to. Not delivered if the message is over 30 days old, deleted, not in this chat thread, or itself a reaction.
emojistringNoEmoji to react with. Leave empty to remove an existing reaction.
phoneNumberIdstringYesWhatsApp Business Phone Number ID (from Meta Business Suite)

Output

ParameterTypeDescription
successbooleanSend success status
messageIdstringWhatsApp message identifier
messageStatusstringPacing status from the send API: accepted, held_for_quality_assessment, or paused. Acceptance is not delivery — use the webhook trigger for delivery status.
messagingProductstringMessaging product returned by the send API
inputPhoneNumberstringRecipient phone number echoed by the send API
whatsappUserIdstringResolved WhatsApp user ID for the recipient
contactsarrayRecipient contacts returned by the send API (each item includes input and wa_id)
mediaIdstringMedia asset ID from Upload Media, or the ID downloaded by Download Media
filefileMedia downloaded by Download Media, stored as a workflow file
fileNamestringName of the file uploaded by Upload Media
mimeTypestringMIME type of the uploaded or downloaded media
sizenumberSize in bytes of the file uploaded by Upload Media
fileSizenumberSize in bytes of the downloaded media
sha256stringSHA-256 hash WhatsApp reported for the downloaded media
eventTypestringWebhook classification such as incoming_message, message_status, or mixed
fromstringSender phone number from the first incoming message
recipientIdstringRecipient phone number from the first status update in the batch
phoneNumberIdstringBusiness phone number ID from the first message or status item in the batch
displayPhoneNumberstringBusiness display phone number from the first message or status item in the batch
textstringText body from the first incoming text message
timestampstringTimestamp from the first message or status item in the batch
messageTypestringType of the first incoming message in the batch, such as text, image, or system
mediaMimeTypestringMIME type of the first incoming media message in the webhook batch
captionstringCaption on the first incoming image, video, or document message
statusstringFirst outgoing message status in the batch, such as sent, delivered, or read
contactjsonFirst sender contact in the webhook batch (wa_id, profile.name)
messagesjsonAll incoming message objects from the webhook batch, flattened across entries/changes
statusesjsonAll message status objects from the webhook batch, flattened across entries/changes
webhookContactsjsonAll sender contact profiles from the webhook batch
conversationjsonConversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type)
pricingjsonPricing metadata from the first status update in the batch (billable, pricing_model, category)
rawjsonFull structured WhatsApp webhook payload
errorstringError information if sending fails

whatsapp_mark_read

Mark a received WhatsApp message as read so the sender sees blue checkmarks, optionally showing a typing indicator.

Input

ParameterTypeRequiredDescription
messageIdstringYesID (wamid) of the incoming message to mark as read
showTypingIndicatorbooleanNoShow a typing indicator to the sender while a reply is composed. Dismissed once you respond or after 25 seconds, whichever comes first.
phoneNumberIdstringYesWhatsApp Business Phone Number ID (from Meta Business Suite)

Output

ParameterTypeDescription
successbooleanWhether the message was successfully marked as read

whatsapp_upload_media

Upload a file to WhatsApp and get a media ID for sending. Uploaded media is retained for 30 days and can back many sends.

Input

ParameterTypeRequiredDescription
filefileYesFile to upload. WhatsApp limits: images 5 MB, video and audio 16 MB, documents 100 MB, stickers 500 KB.
phoneNumberIdstringYesWhatsApp Business Phone Number ID (from Meta Business Suite)

Output

ParameterTypeDescription
mediaIdstringWhatsApp media ID. Pass this to Send Media to attach the uploaded file.
fileNamestringName of the uploaded file
mimeTypestringMIME type WhatsApp received the file as
sizenumberSize of the uploaded file in bytes

whatsapp_get_media

Download media a customer sent you. Takes the media ID from an incoming WhatsApp message and stores the file in the workflow.

Input

ParameterTypeRequiredDescription
mediaIdstringYesMedia asset ID from an incoming message, e.g. <whatsapp.messages[0].mediaId>. This is not the message ID (wamid).
phoneNumberIdstringYesWhatsApp Business Phone Number ID (from Meta Business Suite)

Output

ParameterTypeDescription
filefileDownloaded media stored as a workflow file
mediaIdstringWhatsApp media ID that was downloaded
mimeTypestringMIME type reported by WhatsApp
fileSizenumberSize of the downloaded media in bytes
sha256stringSHA-256 hash WhatsApp reported for the media, for integrity checks

Triggers

A Trigger is a block that starts a workflow when an event happens in this service.

WhatsApp Webhook

Trigger workflow from WhatsApp incoming messages and message status webhooks

Configuration

ParameterTypeRequiredDescription
verificationTokenstringYesEnter any secure token here. You
appSecretstringYesRequired for WhatsApp POST signature verification. Sim uses it to validate the X-Hub-Signature-256 header on every webhook delivery.

Output

ParameterTypeDescription
eventTypestringWebhook classification such as incoming_message, message_status, or mixed
messageIdstringFirst WhatsApp message identifier (wamid) found in the webhook batch
fromstringSender phone number from the first incoming message in the batch
recipientIdstringRecipient phone number from the first status update in the batch
phoneNumberIdstringBusiness phone number ID from the first message or status item in the batch
displayPhoneNumberstringBusiness display phone number from the first message or status item in the batch
textstringText body from the first incoming text message in the batch
timestampstringTimestamp from the first message or status item in the batch
messageTypestringType of the first incoming message in the batch (text, image, system, etc.)
mediaIdstringMedia asset ID from the first incoming media message. Pass to the Download Media operation to fetch the file. Expires after 7 days.
mediaMimeTypestringMIME type of the first incoming media message
captionstringCaption on the first incoming image, video, or document message
statusstringFirst outgoing message status in the batch, such as sent, delivered, read, or failed
contactjsonFirst sender contact in the batch (wa_id, profile.name)
webhookContactsjsonAll sender contact profiles from the webhook batch
messagesjsonAll incoming message objects from the webhook batch, flattened across entries/changes
statusesjsonAll message status objects from the webhook batch, flattened across entries/changes
conversationjsonConversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type)
pricingjsonPricing metadata from the first status update in the batch (billable, pricing_model, category)
rawjsonComplete structured webhook payload from WhatsApp

On this page