Onboarding and Sending Messages

This documentation aims to guide partners on how to onboard clients in the Beta version of Meta’s MM Lite API.

Onboard a Business to MM Lite

Before You Start

In MM Lite, we call onboarding the process where the client reviews and accepts the MM Lite API Terms of Service. Onboarding is always performed by the client at a WABA level. There are currently two ways to onboard:

The client clicks a new onboarding link, logs into their Facebook account, selects the BM, and accepts the Terms of Service.

The client receives a notification in their Business Manager under Settings > Requests to accept the terms. Can be used to onboard multiple BMs at once.

Pre-Onboarding Checklist

Before sharing the onboarding link or requesting the Intent API onboarding, make sure the client meets all the following requirements:

Important Notes

  • MM Lite onboarding happens at the Business Manager level, meaning onboarding must be done by each client.

  • Only clients can complete the onboarding process. As a partner, you cannot onboard on their behalf.

  • The link will only work for users with Admin access to the client’s BM.

Using Embedded Signup (ES)

Clients can onboard their business to the MM Lite API using the Alpha-Beta-Onboarding service.

2

Log in and click “Add a new number”

3

When prompted, select the following options:

4

Start the Embedded Signup (ES) process

5

When asked, select the correct Business Portfolio to continue

6

Accept the Terms of Service

7

Click "Finish"

The onboarding takes up to 10 minutes after completing the ES process.

🎥 Need help? Watch this step-by-step tutorial to guide your client through the process.

How to onboard on MM Lite Beta

Using Intent API

If your client prefers not to use Embedded Signup, they can onboard via Bulk Onboarding.

Here’s how it works:

1

The partner sends an email to [email protected]

2

In the email, include the list of BM IDs for which the onboarding requests should be sent

The request will be sent to the clients' Business Manager

3

Our team will reply back confirming once the requests have been sent

What the client needs to do:

Once the requests are sent, the client (with Admin permissions in the Business Manager) should:

2

Find the MM Lite onboarding request

3

Click to view and accept the Terms of Service

Once accepted, MM Lite is active for that Business Manager, meaning:

Onboarding Confirmation

After the MM Lite Terms of Service are successfully signed by the client, you will receive an account_update webhook event for each eligible WhatsApp Business Account (WABA) with the MM_LITE_TERMS_SIGNED event.

This webhook is the recommended way to track onboarding and eligibility status. Once received, you can safely assume that the WABA is enabled to send messages through the MM Lite API.

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "<BUSINESS_ID>",
      "time": "<WEBHOOK_TIMESTAMP>",
      "changes": [
        {
          "field": "account_update",
          "value": {
            "event": "MM_LITE_TERMS_SIGNED",
            "waba_info": {
              "owner_business_id": "<BUSINESS_PORTFOLIO_ID>",
              "waba_id": "<WABA_ID>"
            }
          }
        }
      ]
    }
  ]
}

Notes:


Sending Messages with MM Lite

To send a template message you will need to use a POST request:

POSThttps://waba-v2.360dialog.io/marketing_messages

Headers

Name
Value
Description

Content-Type

application/json

D360-API-KEY

Bearer <token>

D360-API-KEY received after approval to participate in this program

Body

Field
Required
Description

messaging_product

Yes

"whatsapp"

recipient_type

Yes

"individual"

to

Yes

Recipient phone number in international format. Example: "441234567890"

type

Yes

"template"

template.name

Yes

"marketing_text_no_param"

template.language.code

Yes

"en"

template.language.policy

Yes

"deterministic"

message_activity_sharing

Optional

Set to true to enable activity sharing (can be removed if not needed)

cURL

# MM Lite (new)
curl --location 'https://https://waba-v2.360dialog.io/marketing_messages' \
--header 'Content-Type: application/json' \
--header 'D360-API-KEY: <token>' \
--data '{
    "messaging_product": "whatsapp",
    "recipient_type": "individual",
    "to": "<<RECIPIENT_PHONE_NUMBER>>",
    "type": "template",
    "template": {
        "name": "marketing_text_no_param",
        "language": {
            "policy": "deterministic",
            "code": "en"
        }
    },
    "message_activity_sharing":true
}'

Response

An usual Cloud API response is expected after a successful message sent using MM Lite API.

{
    "messaging_product": "whatsapp",
    "contacts": [
        {
            "input": "<phone number>",
            "wa_id": "<<waba id>"
        }
    ],
    "messages": [
        {
            "id": "wamid.HBgLNTk4OTQ3MTQ0NjMVAgARGBJDNjM1NUM2OEEyMDU4REZERTgA"
        }
    ]
}

Sending a Marketing Template Message with TTL using MM Lite API

MM Lite API provides additional features that are not available to Marketing templates on Cloud API.

This means you can include and set the value of the message_send_ttl_seconds in the payload of your Marketing Message Template to test this feature.

What is Time-To-Live (TTL) for Marketing template messages?

If Meta is unable to deliver a message to a WhatsApp user, they will continue attempting to deliver the message for a period of time known as a time-to-live (TTL), or 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 Marketing Messages Lite API.

See our documentation on How to set a TTLs for Marketing template messages.

Handling Webhooks

With MM Lite, you don’t need to change your webhook setup. You will keep receiving the usual events (sent → delivered → read) the same way as with the Cloud API.

The only difference: when you send via /marketing_messages with "message_activity_sharing": true, you also get a click event whenever a user taps the CTA link in your template.

This makes it easier to track performance and optimize campaigns without changing your current logic.

Webhook events received:

This event 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"
}]}]}

Last updated

Was this helpful?