📡 Services & Messaging Reference

This guide is the complete, 100% technical reference for all services provided by the WhatsApp integration.

All services can be called via whatsapp.<service_name>.

Messaging

whatsapp.send_message

Sends a plain text message to a WhatsApp user or group. This is the most basic messaging action. Use it for notifications, alerts, or any text-based communication from your automations. Supports emoji, line breaks (\n), and basic formatting (bold, italic).

service: whatsapp.send_message
data:
  account: "49171234567"
  target: "49171234567"
  message: |
      🏠 *Home Assistant Alert*
      
      The front door was opened at .
  quote: "3EB0B8A7C2E4F6789ABCDE"
  reply_to: "3EB0B8A7C2E4F6789ABCDE"
  expiration: 86400

whatsapp.edit_message

Edits the text content of a previously sent message. The message will show “(edited)” indicator. Useful for correcting typos or updating information in a sent message. Only works for text messages, not media.

service: whatsapp.edit_message
data:
  account: "49171234567"
  target: "49171234567"
  message_id: "3EB0B8A7C2E4F6789ABCDE"
  message: "Updated: The meeting is now at 3 PM instead of 2 PM."

whatsapp.revoke_message

Deletes a previously sent message for everyone in the chat. Works like “Delete for Everyone” in WhatsApp. The message is replaced with “This message was deleted”. Must be called within the WhatsApp time limit (usually ~1 hour for groups, longer for individual chats).

service: whatsapp.revoke_message
data:
  account: "49171234567"
  target: "49171234567"
  message_id: "3EB0B8A7C2E4F6789ABCDE"

whatsapp.send_reaction

Adds an emoji reaction to a specific message. Just like tapping and holding a message in WhatsApp to react. Requires the message_id which you receive from webhook events or from the response of a send action.

service: whatsapp.send_reaction
data:
  account: "49171234567"
  target: "49171234567"
  message_id: "3EB0B8A7C2E4F6789ABCDE"
  reaction: "👍"

whatsapp.forward_message

Forwards an existing message to another chat target.

service: whatsapp.forward_message
data:
  account: "..."
  target: "..."
  message_id: "..."
  destination: "..."

whatsapp.star_message

Stars a specific message in a chat.

service: whatsapp.star_message
data:
  account: "..."
  target: "..."
  message_id: "..."

whatsapp.unstar_message

Unstars a specific message in a chat.

service: whatsapp.unstar_message
data:
  account: "..."
  target: "..."
  message_id: "..."

whatsapp.pin_message

Pins a message in a chat.

service: whatsapp.pin_message
data:
  account: "..."
  target: "..."
  message_id: "..."
  duration: "..."

whatsapp.unpin_message

Unpins a message in a chat.

service: whatsapp.unpin_message
data:
  account: "..."
  target: "..."
  message_id: "..."

Polls/Buttons

whatsapp.send_poll

Sends an interactive poll/survey to a WhatsApp user or group. Recipients can vote on the options. Perfect for household decisions, dinner choices, or gathering feedback from family members. Note: Poll results are received via webhook events.

service: whatsapp.send_poll
data:
  account: "49171234567"
  target: "49171234567"
  question: "What should we have for dinner tonight?"
  options: ['Pizza 🍕', 'Sushi 🍣', 'Pasta 🍝', 'Order something else']
  allow_multiple_responses: true
  quote: "3EB0B8A7C2E4F6789ABCDE"
  reply_to: "3EB0B8A7C2E4F6789ABCDE"
  expiration: 86400

whatsapp.send_buttons

Sends a message with interactive buttons that the recipient can tap. Note: WhatsApp/Meta has deprecated legacy interactive buttons on standard Multi-Device (Web) accounts, which may cause modern WhatsApp clients to display only text without clickable buttons. For reliable 1-click interactions, use ‘whatsapp.send_poll’ instead. See Buttons Guide for details.

service: whatsapp.send_buttons
data:
  account: "49171234567"
  target: "49171234567"
  message: |
      🚨 *Security Alert*
      
      Motion detected at the front door. What would you like to do?
  buttons: [{'id': 'arm_alarm', 'displayText': '🔒 Arm Alarm'}, {'id': 'view_camera', 'displayText': '📷 View Camera'}, {'id': 'ignore', 'displayText': '✓ Dismiss'}]
  footer: "Tap a button to respond"
  quote: "3EB0B8A7C2E4F6789ABCDE"
  reply_to: "3EB0B8A7C2E4F6789ABCDE"
  expiration: 86400

whatsapp.send_list

Sends an interactive list/menu that expands when the user taps a button. Contains sections with selectable rows. When a row is selected, its ID is sent back via webhook. Ideal for complex menus, settings selection, or multi-option responses.

service: whatsapp.send_list
data:
  account: "49171234567"
  target: "49171234567"
  title: "🏠 Smart Home Control"
  text: "Select an action from the menu below to control your home."
  button_text: "Open Menu"
  sections: [{'title': 'Lighting', 'rows': [{'id': 'lights_on', 'title': '💡 All Lights On', 'description': 'Turn on all lights in the house'}, {'id': 'lights_off', 'title': '🌙 All Lights Off', 'description': 'Turn off all lights'}]}, {'title': 'Climate', 'rows': [{'id': 'heating_boost', 'title': '🔥 Heating Boost', 'description': 'Boost heating for 1 hour'}, {'id': 'ac_on', 'title': '❄️ AC On', 'description': 'Turn on air conditioning'}]}]

Media & Location

whatsapp.send_image

Sends an image with an optional caption to a WhatsApp user or group. The image must be accessible via a public URL (HTTPS recommended). Ideal for sending camera snapshots, graphs, or notifications with visuals. Supported formats: JPEG, PNG, WebP. Max size: 16MB.

service: whatsapp.send_image
data:
  account: "49171234567"
  target: "49171234567"
  url: "https://my-home.duckdns.org/local/camera_snapshots/front_door.jpg"
  caption: "📷 Front door camera snapshot at "
  quote: "3EB0B8A7C2E4F6789ABCDE"
  reply_to: "3EB0B8A7C2E4F6789ABCDE"
  expiration: 86400

whatsapp.send_document

Sends a document/file to a WhatsApp user or group. Supports PDF, Word, Excel, ZIP, and many other file types. Perfect for sending reports, invoices, backups, or log files. The file must be accessible via a public URL. Max size: 100MB.

service: whatsapp.send_document
data:
  account: "49171234567"
  target: "49171234567"
  url: "https://my-home.duckdns.org/local/reports/energy_report.pdf"
  file_name: "Energy_Report_January_2024.pdf"
  mimetype: "audio/mpeg"
  message: "📊 Here's your monthly energy consumption report."
  quote: "3EB0B8A7C2E4F6789ABCDE"
  reply_to: "3EB0B8A7C2E4F6789ABCDE"
  expiration: 86400

whatsapp.send_video

Sends a video file to a WhatsApp user or group. Useful for sending security camera clips, doorbell recordings, or any video content. Supported formats: MP4, 3GP, MOV. Max size: 16MB for standard, 64MB for WhatsApp Web.

service: whatsapp.send_video
data:
  account: "49171234567"
  target: "49171234567"
  url: "https://my-home.duckdns.org/local/clips/doorbell_motion.mp4"
  message: "🚪 Motion detected at front door - "
  quote: "3EB0B8A7C2E4F6789ABCDE"
  reply_to: "3EB0B8A7C2E4F6789ABCDE"
  expiration: 86400
  seconds: 33

whatsapp.send_audio

Sends an audio file or voice note to a WhatsApp user or group. Can send as a regular audio file (shows as playable file) or as a voice note/PTT (shows with waveform, like a recorded message). Supported formats: MP3, OGG, WAV, AAC. Max size: 16MB.

service: whatsapp.send_audio
data:
  account: "49171234567"
  target: "49171234567"
  url: "https://my-home.duckdns.org/local/audio/doorbell_chime.mp3"
  ptt: true
  quote: "3EB0B8A7C2E4F6789ABCDE"
  reply_to: "3EB0B8A7C2E4F6789ABCDE"
  expiration: 86400
  seconds: 33

whatsapp.send_location

Sends a location pin to a WhatsApp user or group. The recipient sees an interactive map preview they can tap to open in their maps app. Perfect for sharing addresses, meeting points, or your home location for deliveries.

service: whatsapp.send_location
data:
  account: "49171234567"
  target: "49171234567"
  latitude: 48.137154
  longitude: 11.576124
  name: "Home"
  address: "Marienplatz 1, 80331 München, Germany"
  quote: "3EB0B8A7C2E4F6789ABCDE"
  reply_to: "3EB0B8A7C2E4F6789ABCDE"
  expiration: 86400

whatsapp.send_contact

Sends a contact card (vCard) to a WhatsApp user or group. The recipient can save the contact directly to their phone. Useful for sharing business contacts, emergency numbers, or service provider details.

service: whatsapp.send_contact
data:
  account: "49171234567"
  target: "49171234567"
  name: "Dr. Max Mustermann"
  contact_number: "+49 89 12345678"

whatsapp.send_event

Sends an interactive WhatsApp Group Event message to a chat or group. Group members can RSVP directly inside WhatsApp.

service: whatsapp.send_event
data:
  account: "49171234567"
  target: "123456789@g.us"
  name: "Squash - Tuesday evening"
  description: "Court 1 booked from 20:00 to 21:00"
  date: "2026-07-22T20:00:00"
  location: "SquashCity Amsterdam"
  join_link: "https://call.whatsapp.com/video/example"
  is_canceled: false
  expiration: 86400

Status/Stories

whatsapp.send_status

Posts a text or image/media status (story) to status@broadcast.

service: whatsapp.send_status
data:
  account: "..."
  message: "..."
  url: "..."
  caption: "..."

Group Management

whatsapp.create_group

Creates a new WhatsApp group with subject and initial participants.

service: whatsapp.create_group
data:
  account: "..."
  subject: "..."
  participants: "..."

whatsapp.add_group_participant

Adds participants to an existing WhatsApp group.

service: whatsapp.add_group_participant
data:
  account: "..."
  target: "..."
  participants: "..."

whatsapp.remove_group_participant

Removes participants from a WhatsApp group.

service: whatsapp.remove_group_participant
data:
  account: "..."
  target: "..."
  participants: "..."

whatsapp.promote_group_participant

Promotes participants to group admin.

service: whatsapp.promote_group_participant
data:
  account: "..."
  target: "..."
  participants: "..."

whatsapp.demote_group_participant

Demotes group admins to regular participants.

service: whatsapp.demote_group_participant
data:
  account: "..."
  target: "..."
  participants: "..."

whatsapp.leave_group

Leaves a WhatsApp group.

service: whatsapp.leave_group
data:
  account: "..."
  target: "..."

whatsapp.update_group_subject

Changes the title / subject of a WhatsApp group.

service: whatsapp.update_group_subject
data:
  account: "..."
  target: "..."
  subject: "..."

whatsapp.update_group_description

Changes the description of a WhatsApp group.

service: whatsapp.update_group_description
data:
  account: "..."
  target: "..."
  description: "..."

whatsapp.update_group_settings

Configures group announcement mode and info restriction mode.

service: whatsapp.update_group_settings
data:
  account: "..."
  target: "..."
  announce: "..."
  locked: "..."

whatsapp.join_group

Joins a group using an invite link or code.

service: whatsapp.join_group
data:
  account: "..."
  code: "..."

whatsapp.search_groups

Finds WhatsApp Group IDs by searching for group names. ⚠️ IMPORTANT: Results appear as a PERSISTENT NOTIFICATION in Home Assistant! After running this service, click the bell icon (🔔) in the sidebar to see results. The notification shows a table with Group Name, Group ID, and participant count. Copy the Group ID (format: 120363012345678901@g.us) to use in other services.

service: whatsapp.search_groups
data:
  account: "49171234567"
  name_filter: "Family"

Chat Management

whatsapp.mark_as_read

Marks messages as read in a chat (blue double-check ✓✓). Works for both individual chats AND group chats. • With message_id: Marks that specific message as read • Without message_id: Marks ALL unread messages in the chat as read

service: whatsapp.mark_as_read
data:
  account: "49171234567"
  target: "49171234567"
  message_id: "3EB0B8A7C2E4F6789ABCDE"

whatsapp.mark_as_unread

Marks a specific chat as unread. Works for both individual chats AND group chats.

service: whatsapp.mark_as_unread
data:
  account: "49171234567"
  target: "49171234567"

whatsapp.archive_chat

Archives a chat.

service: whatsapp.archive_chat
data:
  account: "..."
  target: "..."

whatsapp.unarchive_chat

Unarchives a chat.

service: whatsapp.unarchive_chat
data:
  account: "..."
  target: "..."

whatsapp.mute_chat

Mutes notifications for a chat.

service: whatsapp.mute_chat
data:
  account: "..."
  target: "..."
  duration_ms: "..."

whatsapp.unmute_chat

Unmutes notifications for a chat.

service: whatsapp.unmute_chat
data:
  account: "..."
  target: "..."

whatsapp.clear_chat

Clears all messages in a chat history.

service: whatsapp.clear_chat
data:
  account: "..."
  target: "..."

whatsapp.delete_chat

Deletes a chat from WhatsApp.

service: whatsapp.delete_chat
data:
  account: "..."
  target: "..."

whatsapp.get_chat_messages

Fetches recent stored messages for a chat.

service: whatsapp.get_chat_messages
data:
  account: "..."
  target: "..."
  limit: "..."

Contacts & Profile

whatsapp.get_contacts

Retrieves the list of contacts cached from your paired phone. Returns response data with contact details (id/JID, name from phonebook, notify/pushName, verified_name). Note: ‘notify’ is populated when contacts send a message, ‘verified_name’ is for Business accounts only.

service: whatsapp.get_contacts
data:
  account: "49171234567"

whatsapp.check_number

Checks if a phone number exists on WhatsApp and whether it is saved in your paired phone’s contacts. Returns response data with ‘exists’, ‘in_contacts’, ‘name’, ‘notify’, and ‘jid’.

service: whatsapp.check_number
data:
  account: "49171234567"
  number: "49171234567"

whatsapp.get_profile_picture

Fetches profile picture / avatar URL of contact or group.

service: whatsapp.get_profile_picture
data:
  account: "..."
  target: "..."

whatsapp.get_contact_info

Fetches contact status/about message.

service: whatsapp.get_contact_info
data:
  account: "..."
  target: "..."

whatsapp.block_contact

Blocks a contact number.

service: whatsapp.block_contact
data:
  account: "..."
  target: "..."

whatsapp.unblock_contact

Unblocks a contact number.

service: whatsapp.unblock_contact
data:
  account: "..."
  target: "..."

whatsapp.update_presence

Updates your online presence status in a specific chat. Shows typing indicator, recording indicator, or online/offline status. Use “composing” before sending a message to show “typing…”, or “recording” to show “recording audio…”.

service: whatsapp.update_presence
data:
  account: "49171234567"
  target: "49171234567"
  presence: "composing"

Channel/Newsletter

whatsapp.get_channel_info

Fetches metadata for a WhatsApp Channel (Newsletter) via JID or invite code.

service: whatsapp.get_channel_info
data:
  account: "..."
  target: "..."
  code: "..."

whatsapp.follow_channel

Follows a WhatsApp Channel (Newsletter).

service: whatsapp.follow_channel
data:
  account: "..."
  target: "..."

whatsapp.unfollow_channel

Unfollows a WhatsApp Channel (Newsletter).

service: whatsapp.unfollow_channel
data:
  account: "..."
  target: "..."

whatsapp.mute_channel

Mutes notifications for a WhatsApp Channel.

service: whatsapp.mute_channel
data:
  account: "..."
  target: "..."

whatsapp.unmute_channel

Unmutes notifications for a WhatsApp Channel.

service: whatsapp.unmute_channel
data:
  account: "..."
  target: "..."

Business Labels

whatsapp.add_chat_label

Adds a WhatsApp Business label to a chat.

service: whatsapp.add_chat_label
data:
  account: "..."
  target: "..."
  label_id: "..."

whatsapp.remove_chat_label

Removes a WhatsApp Business label from a chat.

service: whatsapp.remove_chat_label
data:
  account: "..."
  target: "..."
  label_id: "..."

Moderation

whatsapp.enable_moderation

Enables group moderation engine for a target WhatsApp group.

service: whatsapp.enable_moderation
data:
  account: "..."
  target: "..."

whatsapp.disable_moderation

Disables group moderation engine for a target WhatsApp group.

service: whatsapp.disable_moderation
data:
  account: "..."
  target: "..."

whatsapp.warn_user

Issues a warning to a group user and enforces penalty upon reaching maximum warnings.

service: whatsapp.warn_user
data:
  account: "..."
  target: "..."
  user_id: "..."
  reason: "..."

whatsapp.clear_warnings

Clears all active warnings for a group member.

service: whatsapp.clear_warnings
data:
  account: "..."
  target: "..."
  user_id: "..."

whatsapp.import_moderation_config

Imports JSON moderation configuration for a group.

service: whatsapp.import_moderation_config
data:
  account: "..."
  target: "..."
  config: "..."

Telegram Bridge

whatsapp.configure_telegram_bot

Configures or updates Telegram Bot token and active state for the native bridge.

service: whatsapp.configure_telegram_bot
data:
  account: "..."
  bot_token: "..."
  enabled: "..."

whatsapp.add_telegram_mapping

Creates or updates a chat bridging mapping between WhatsApp and Telegram.

service: whatsapp.add_telegram_mapping
data:
  account: "..."
  bot_id: "..."
  mapping_name: "..."
  wa_jid: "..."
  tg_chat_id: "..."
  sync_mode: "..."
  sync_self_messages: "..."
  tg_thread_id: "..."
  convert_formatting: "..."
  anonymize_phone_numbers: "..."
  ignore_command_prefixes: "..."
  is_direct_chat_mirror: "..."

whatsapp.remove_telegram_mapping

Deletes an existing Telegram chat mapping by ID.

service: whatsapp.remove_telegram_mapping
data:
  account: "..."
  mapping_id: "..."

Auto Responder

whatsapp.set_auto_responder

Configures and activates/deactivates the automated away / vacation auto-responder.

service: whatsapp.set_auto_responder
data:
  account: "49171234567"
  enabled: true
  start_time: "2026-08-20T08:00"
  end_time: "2026-08-30T18:00"
  direct_only: true
  once_per_contact: true
  message_template: "Hello {sender_name}!\n\nI am on vacation{end_time_text}.\n{once_notice}"

whatsapp.reset_auto_responder_seen

Clears the cache of contacts who have already received an automated response during the active period.

service: whatsapp.reset_auto_responder_seen
data:
  account: "49171234567"

Other

whatsapp.configure_webhook

Configures the webhook URL where the WhatsApp Home Assistant App sends incoming message events. This is how Home Assistant receives incoming messages, button clicks, poll votes, and read receipts. Usually set during initial configuration, but can be updated dynamically.

service: whatsapp.configure_webhook
data:
  account: "49171234567"
  url: "https://my-home.duckdns.org/api/webhook/whatsapp_incoming"
  enabled: true
  token: "my_secret_token_12345"

Maintained by FaserF. This project is not affiliated with WhatsApp Inc.

This site uses Just the Docs, a documentation theme for Jekyll.