Skip to main content

Sending messages

Updated: Dec 3, 2025 Marketing Messages API for WhatsApp (formerly known as Marketing Messages Lite API) is now generally available. Marketing Messages for WhatsApp allows you to send Marketing template messages only. For sending other message types, and for receiving messages, you can use Cloud API in parallel with Marketing Messages for WhatsApp on the same business phone number. If you use a partner’s UI portals or APIs to configure and send marketing messages, you can continue to do so, and do not need to use any of the below capabilities - your partner will take care of integrating with MM API for WhatsApp’s message sending functions on your behalf.

Create marketing templates

Marketing templates can be created in several ways: Via WhatsApp Business Manager UI Via the Business Management API “Message Templates” endpoint If you work with a partner, your partner may offer their own API or UIs for template creation, which leverage the “Message Templates” endpoint See documentation on how to Create and Manage Templates here. When a new Marketing template is created, it will take up to 10 minutes to sync with corresponding Ad account, allowing messages to be optimized and click and downstream conversions to be measured. Templates which have been inactive for longer than 7 days will also require 10 minutes to sync after the first new use. Please wait 10 minutes after creating new Marketing Templates (or 10 minutes after sending the first marketing message on a dormant Template) before sending marketing traffic. Marketing Messages for WhatsApp supports all Marketing templates. In addition, MM API for WhatsApp provides the following additional features that are not available to Marketing templates on Cloud API: Time-To-Live (TTL) for Marketing template messages: If we are unable to deliver a message to a WhatsApp user, we will retry the delivery for a period of time known as a time-to-live, TTL, or the message validity period. TTL is available for Authentication and Utility template messages on Cloud API, but TTL for Marketing template messages is exclusively available on MM API for WhatsApp. See documentation on how to Create and Manage Templates via API or How to set a custom message validity period via UI for details on how to set TTLs for Marketing template messages.

Automatic Creative Optimizations

Automatic Creative Optimizations are currently only available to businesses participating in early access. It will be made available to all businesses on a future date. Automatic Creative Optimizations enhance the visual appeal and engagement of Marketing template messages. This feature is not predictable, meaning the output may vary between messages even with the same input. This capability tests minor variations of your existing image header with different crop orientations or color filters, and automatically selects the variant which is getting the highest click-through rate over time with no input needed from you. These creative enhancements are designed to help improve performance and visual appeal of marketing messages, while maintaining the fidelity of the message. These optimizations are similar to Advantage+ creative.

Image cropping

For some campaigns, we will automatically crop header images to an optimal dimension, ensuring your visuals are always perfectly framed without cutting off image text:

Image filtering

For some campaigns, we will automatically apply the most effective filters to header images in order to enhance the images’ quality and appeal: Automatic Creative Optimizations run silently for all image headers sent via MM API for WhatsApp, working to select the header image with the most visual appeal and click-through. They can be disabled using the Message template API, providing businesses flexibility and control over how creative enhancements are applied. See API request call below for more details.

Text overlays

For some campaigns, we will automatically add a text overlay onto your image using your message content:

Image animation

For some campaigns, we will automatically transform your header image into an animated GIF:

Image background generation

For some campaigns, we will automatically generate a new image background:

Headline extraction

For some campaigns, we’ll extract keywords or phrases from your message to create a headline for your body text to highlight key information.

Tap-target title extraction

For some campaigns, we’ll extract keywords or phrases from your message to create a title for the tap-target area to highlight key information.

Product extensions

We will enhance single-image creatives by appending a set of additional catalog products users are likely to engage or convert with, creating more personalized and relevant experiences.

Text formatting

For some campaigns, we update the formatting of text (e.g. remove unnecessary spaces, bold phrases) to increase performance. No text content is changed - format only.

Configure Automatic Creative Optimizations (Template-level)

All optimization features are enabled by default, but you can use the creative_features_spec object to specify which optimizations you want to enable (“opt-in”) or disable (“opt-out”) on a given template. To do this, set each optimization’s enroll_status property to either OPT_IN or OPT_OUT upon template creation, or when editing an existing template. For example:
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates
\{
  "name": "<TEMPLATE_NAME>",
  "language": "<TEMPLATE_LANGUAGE_AND_LOCALE_CODE>",
  "components": [<TEMPLATE_COMPONENTS>],
  "degrees_of_freedom_spec": {
    "creative_features_spec": {
      "image_brightness_and_contrast": {
        "enroll_status": "OPT_OUT"
      },
      "image_touchups": {
        "enroll_status": "OPT_IN"
      },
      "add_text_overlay": {
        "enroll_status": "OPT_OUT"
      },
      "image_animation": {
        "enroll_status": "OPT_IN"
      },
      "image_background_gen": {
        "enroll_status": "OPT_IN"
      },
     "text_extraction_for_headline": {
       "enroll_status": "OPT_IN"
     },
     "text_extraction_for_tap_target": {
       "enroll_status": "OPT_IN"
     },
      "product_extensions": {
        "enroll_status": "OPT_OUT"
      },
      "text_formatting_optimization": {
        "enroll_status": "OPT_OUT"
      }
    }
  }
}

Configure Automatic Creative Optimizations (Whatsapp business account-level)

All optimization features are enabled by default, but you can use the creative_features_spec object to specify which optimizations you want to enable (“opt-in”) or disable (“opt-out”) for the entire Whatsapp business account. To do this, set each optimization’s enroll_status property that you wish to modify to either OPT_IN or OPT_OUT. For example:
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>
\{
  "degrees_of_freedom_spec": {
    "creative_features_spec": {
      "image_touchups": {
        "enroll_status": "OPT_IN"
      },
      "image_animation": {
        "enroll_status": "OPT_IN"
      },
      "image_brightness_and_contrast": {
        "enroll_status": "OPT_IN"
      },
      "add_text_overlay": {
        "enroll_status": "OPT_IN"
      },
      "image_background_gen": {
        "enroll_status": "OPT_IN"
      },
      "text_extraction_for_headline": {
        "enroll_status": "OPT_IN"
      },
      "product_extensions": {
        "enroll_status": "OPT_IN"
      },
      "text_extraction_for_tap_target": {
        "enroll_status": "OPT_IN"
      },
      "text_formatting_optimization": {
        "enroll_status": "OPT_OUT"
      }
    }
  }
}

Send marketing template messages

Marketing Messages for WhatsApp is not supported for MSC businesses. /marketing_messages requests will either be routed via Cloud API or rejected if the product_policy filed is set to strict. Sending messages follows the same API payload syntax as Sending Messages on Cloud API, and requires the same permissions. The /marketing_messages endpoint supports only marketing template messages for MM API for WhatsApp and Cloud API. All other message types (freeform, Authentication, Service, Utility) are not supported, and will produce an error. Marketing messages will only be sent via MM API for WhatsApp when the business customer has met all onboarding requirements. If onboarding requirements are not met, the marketing messages will still be routed via Cloud API. You may disable the ability to route to Cloud API by setting the optional field product_policy to strict. Note: You may still use the /messages endpoint to send marketing messages through the Cloud API.
EndpointAuthentication
/PHONE_NUMBER_ID/marketing_messagesDevelopers can authenticate their API calls with the access token generated in the App Dashboard > WhatsApp > API Setup.
Business messaging partners must authenticate themselves with an access token with the whatsapp_business_messaging permission.

Request Syntax

POST /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID>/marketing_messages
\{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "<WHATSAPP_USER_PHONE_NUMBER>",
  "type": "<MESSAGE_TYPE>",
  "<MESSAGE_TYPE>": {
    <MESSAGE_CONTENTS>
  },
  <!-- Optional -->
  "product_policy": "&lt;PRODUCT_POLICY&gt;",
  "message_activity_sharing": <SHARE_MESSAGING_ACTIVITY?>
}
MM API for WhatsApp provides the following additional features that are not available to Marketing template messages on Cloud API: Product fallback policy: Set product_policy to CLOUD_API_FALLBACK to have the API send the outgoing message via Cloud API, if onboarding requirements have not been met. Set to STRICT if you do not want the API to fallback to sending the message via Cloud API. Message activity sharing:message_activity_sharing is an optional parameter at the message level that toggles on / off sharing message activities (e.g. message read) for that specific marketing message to Meta to help optimize marketing messages. If this parameter is not provided, the default WABA-level setting will be applied. You can always edit your default setting in Business Settings (see Changelog for a screenshot of this). For details on message types, reference the Cloud API Message Types documentation, as MM API for WhatsApp uses the same message send formatting.

Receiving message status webhooks

MM API for WhatsApp triggers status messages webhooks (sent, delivered, read). In addition, status messages webhooks that describe a message sent via MM API for WhatsApp, and that include pricing information, will have pricing.category and conversation.type set to marketing_lite. If the message is routed via Cloud API, pricing.category will be set to marketing.
\{
  "conversation": {
    "id": "&lt;CONVERSATION_ID&gt;",
    "origin": {
      "type": "marketing_lite"
    }
  },
  "pricing": {
    "billable": true,
    "pricing_model": "PMP",
    "category": "marketing_lite"
  }
}
It is recommended that you maintain logs of each outgoing message ID, and whether that ID was sent via Cloud API or MM API for WhatsApp, in order to use the unique message ID returned in message status webhooks to identify the origin of the sent message.

Receiving incoming messages

MM API for WhatsApp is a send-only API. It does not receive incoming messages from consumers. To receive incoming messages on a business phone number, use Cloud API in parallel with MM API for WhatsApp on the same phone number. Did you find this page helpful? Thumbs up icon Thumbs down icon ON THIS PAGE Create marketing templates Automatic Creative Optimizations Image cropping Image filtering Text overlays Image animation Image background generation Headline extraction Tap-target title extraction Product extensions Text formatting Configure Automatic Creative Optimizations (Template-level) Configure Automatic Creative Optimizations (Whatsapp business account-level) Send marketing template messages Request Syntax Receiving message status webhooks Receiving incoming messages