MM Lite versus Cloud API

Let’s see how sending a marketing message works with the Cloud API — and how easy it is to do the same with MM Lite

📑Main Difference: Just the Endpoint!

“You only need to update your endpoint to start using MM Lite.”

Product comparison

Feature
Cloud API
MM Lite

Delivery Optimization

Not supported

✅ Equal or better delivery rates

TTL for Marketing Messages

Not supported

✅ Supported (exclusive to MM Lite)

Risk of Delivery Restrictions

Same as current usage

✅ Lower risk of flagging

Best Use Cases

Basic or operational campaigns

✅ High-volume, performance-driven campaigns

Performance Insights

Basic delivery stats only

✅ Advanced performance metrics (see details)

Technical comparison

Feature
Cloud API
MM Lite

Base URL

https://waba-v2.360dialog.io

Identical

Endpoint to be used

/messages

/marketing_messages

Authentication

Same API Key

Same API Key

Payload Format

Identical

Identical

Webhook Behavior

Same structure

Same structure1

  1. Additional details related to the cost of MM Lite are included as an informative property.


🧪Try It Yourself

We recommend running your own tests by switching your endpoint and observing the results.

✅ No need to change payloads

✅ No need to change webhook logic

✅ Keep your existing token

MM Lite is designed to make your life easier. Start small: test one flow, and evaluate performance gains.


Sending a marketing message using the Cloud API

curl --location 'https://waba-v2.360dialog.io/messages' \
--header 'D360-API-KEY: <api_key>' \
--header 'Content-Type: application/json' \
--data '{
  "to": "<end_client_number>",
  "type": "template",
  "template": {
    "name": "<template_name>",
    "language": {
      "code": "<template_language_code>"
    },
    "components": []
  },
  "messaging_product": "whatsapp"
}'

☝️As you may know, we typically expect to receive three webhooks: sent, delivered, and read. However, when a user clicks the link inside a marketing template message sent via the Cloud API, no webhooks are triggered at all.

Webhook events received: sent
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "BUSINESS_DISPLAY_PHONE_NUMBER",
              "phone_number_id": "BUSINESS_PHONE_NUMBER_ID"
            },
            "statuses": [
              {
                "id": "<WHATSAPP_MESSAGE_ID>",
                "status": "sent",
                "timestamp": "TIMESTAMP",
                "recipient_id": "<CUSTOMER_PHONE_NUMBER>",
                "conversation": {
                  "id": "<conversation_id>",
                  "expiration_timestamp": "TIMESTAMP",
                  "origin": {
                    "type": "marketing"
                  }
                },
                "pricing": {
                  "billable": true,
                  "pricing_model": "CBP",
                  "category": "marketing"
                }
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}
Webhook events received: delivered
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "<WHATSAPP_BUSINESS_ACCOUNT_ID>",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "BUSINESS_DISPLAY_PHONE_NUMBER",
              "phone_number_id": "BUSINESS_PHONE_NUMBER_ID"
            },
            "statuses": [
              {
                "id": "<WHATSAPP_MESSAGE_ID>",
                "status": "delivered",
                "timestamp": "TIMESTAMP",
                "recipient_id": "<CUSTOMER_PHONE_NUMBER>",
                "conversation": {
                  "id": "<conversation_id>",
                  "origin": {
                    "type": "marketing"
                  }
                },
                "pricing": {
                  "billable": true,
                  "pricing_model": "CBP",
                  "category": "marketing"
                }
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}
Webhook events received: read
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "BUSINESS_DISPLAY_PHONE_NUMBER",
              "phone_number_id": "BUSINESS_PHONE_NUMBER_ID"
            },
            "statuses": [
              {
                "id": "WHATSAPP_MESSAGE_ID",
                "status": "read",
                "timestamp": "TIMESTAMP",
                "recipient_id": "CUSTOMER_PHONE_NUMBER"
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}

Now let´s see how it works when we send the same marketing template message using the MM Lite API:

Sending a marketing message using the MM Lite API

curl --location 'https://waba-v2.360dialog.io/marketing_messages' \
--header 'D360-API-KEY: <API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "messaging_product": "whatsapp",
    "recipient_type": "individual",
    "to": "<end_client_number>",
    "type": "template",
    "template": {
        "name": "<template_name>",
        "language": {
            "policy": "deterministic",
            "code": "<template_language_code>"
        }
    },
    "message_activity_sharing":true 
}'

⚠️If you see, we only need to use a different endpoint; nothing else is required. The same webhooks are returned, but with a big change: we collect the click event.

Webhook events received: sent

ℹ️It includes the value "marketing_lite" to indicate that it was sent using the MM Lite API:

{
"object": "whatsapp_business_account",
"entry": [
{
"id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
"changes": [
{
"value": {
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "BUSINESS_DISPLAY_PHONE_NUMBER",
"phone_number_id": "BUSINESS_PHONE_NUMBER_ID"
},
"statuses": [
{
"id": "<WHATSAPP_MESSAGE_ID>",
"status": "sent",
"timestamp": "TIMESTAMP",
"recipient_id": "<CUSTOMER_PHONE_NUMBER>",
"conversation": {
"id": "<conversation_id>",
"expiration_timestamp": "TIMESTAMP",
"origin": {
"type": "marketing_lite"
}
},
"pricing": {
"billable": true,
"pricing_model": "CBP",
"category": "marketing_lite"
}}]},
"field": "messages"
}]}]}
Webhook events received: delivered
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "BUSINESS_DISPLAY_PHONE_NUMBER",
              "phone_number_id": "BUSINESS_PHONE_NUMBER_ID"
            },
            "statuses": [
              {
                "id": "<WHATSAPP_MESSAGE_ID>",
                "status": "delivered",
                "timestamp": "TIMESTAMP",
                "recipient_id": "TIMESTAMP",
                "conversation": {
                  "id": "<conversation_id>",
                  "origin": {
                    "type": "marketing_lite"
                  }
                },
                "pricing": {
                  "billable": true,
                  "pricing_model": "CBP",
                  "category": "marketing_lite"
                }
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}
Webhook events received: read
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "BUSINESS_DISPLAY_PHONE_NUMBER",
              "phone_number_id": "BUSINESS_PHONE_NUMBER_ID"
            },
            "statuses": [
              {
                "id": "<WHATSAPP_MESSAGE_ID>",
                "status": "read",
                "timestamp": "TIMESTAMP",
                "recipient_id": "<CUSTOMER_PHONE_NUMBER>"
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}
Webhook events received: click event

It will show you a click_id and a tracking_token.

{
"object": "whatsapp_business_account",
"entry": [
{
"id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
"changes": [
{
"value": {
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "BUSINESS_DISPLAY_PHONE_NUMBER",
"phone_number_id": "BUSINESS_PHONE_NUMBER_ID"
},
"user_actions": [
{
"timestamp": "TIMESTAMP",
"action_type": "marketing_messages_link_click",
"marketing_messages_link_click_data": {
"tracking_token": "<TRACKING_TOKEN>",
"click_id": "<CLICK_ID>",
"click_component": "CTA"
}}]},
"field": "messages"
}]}]}

Last updated

Was this helpful?