Utility Messages

Transactional Updates via WhatsApp

Order confirmations, shipping tracking, appointment reminders, and payment receipts — delivered through WhatsApp, where industry reports put open rates near 98%.

✦ 14-day free trial · Your own WhatsApp Business number · Meta bills messages directly

Timely Transactional Updates

Make sure customers get critical updates when they need them. Send order tracking notifications, digital receipts and appointment reminders as Meta-approved Utility templates from your own system through one API call, and get delivery and read status back by webhook.

  • Delivery and read status for every message, by webhook
  • Rich media attachments including PDFs and interactive buttons
  • Sent on Meta's official WhatsApp Business Platform from your own number
WhatsApp Transactional Message Preview
Use Cases

Keep Your Customers Informed

  • Order Updates

    Send order confirmations, processing status, and delivery notifications automatically.

  • Shipping Alerts

    Real-time shipping tracking updates with live location links and estimated delivery times.

  • Appointment Reminders

    Reduce no-shows with automated appointment reminders including confirm/reschedule buttons.

  • Payment Receipts

    Send instant payment confirmations and digital receipts with transaction details.

Transactional Comparison

WhatsApp Utility vs. SMS Transactions vs. Email Updates

Compare the delivery success and formatting capabilities for critical transactional messages.

Capability WhatsApp Utility SMS Transactions Email Updates
Delivery & Read Status ✓ (Delivered and read, by webhook) Delivery reports only Opens via tracking pixel (often blocked)
Document Attachments ✓ (PDF invoices, QR code tickets) ✗ (Text links only) ✓ (File attachments)
Interactive Buttons ✓ (Quick-reply / Track order) ✗ (Static copy) ✓ (HTML layout tags)
Message Cost Meta's utility rate on every delivered message, billed to your WABA — including inside an open 24-hour window Charged per SMS segment Varies by database size
Messages API

Send order and shipping updates from your system

curl -X POST https://waba-api.startmessaging.com/api/v1/messages \
  -H "Authorization: Bearer sm_live_your_api_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1042-shipped" \
  -d '{
    "to": "+919812345678",
    "type": "template",
    "template": {
      "name": "shipping_update",
      "language": "en_US",
      "parameters": [
        {
          "text": "Asha"
        },
        {
          "text": "#1042"
        },
        {
          "text": "Friday"
        }
      ],
      "buttonParameters": [
        {
          "index": 0,
          "subType": "url",
          "text": "ORD-1042"
        }
      ]
    },
    "clientReference": "order-1042"
  }'
const res = await fetch('https://waba-api.startmessaging.com/api/v1/messages', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ' + process.env.SM_API_KEY,
    'Content-Type': 'application/json',
    'Idempotency-Key': 'order-1042-shipped',
  },
  body: JSON.stringify({
    "to": "+919812345678",
    "type": "template",
    "template": {
      "name": "shipping_update",
      "language": "en_US",
      "parameters": [
        {
          "text": "Asha"
        },
        {
          "text": "#1042"
        },
        {
          "text": "Friday"
        }
      ],
      "buttonParameters": [
        {
          "index": 0,
          "subType": "url",
          "text": "ORD-1042"
        }
      ]
    },
    "clientReference": "order-1042"
  }),
});

const { data } = await res.json();
console.log(data.id, data.status);
import os, requests

res = requests.post(
    'https://waba-api.startmessaging.com/api/v1/messages',
    headers={
        'Authorization': f"Bearer {os.environ['SM_API_KEY']}",
        'Idempotency-Key': 'order-1042-shipped',
    },
    json={
      "to": "+919812345678",
      "type": "template",
      "template": {
        "name": "shipping_update",
        "language": "en_US",
        "parameters": [
          {
            "text": "Asha"
          },
          {
            "text": "#1042"
          },
          {
            "text": "Friday"
          }
        ],
        "buttonParameters": [
          {
            "index": 0,
            "subType": "url",
            "text": "ORD-1042"
          }
        ]
      },
      "clientReference": "order-1042"
    },
)

data = res.json()['data']
print(data['id'], data['status'])
<?php
$body = <<<'JSON'
{
  "to": "+919812345678",
  "type": "template",
  "template": {
    "name": "shipping_update",
    "language": "en_US",
    "parameters": [
      {
        "text": "Asha"
      },
      {
        "text": "#1042"
      },
      {
        "text": "Friday"
      }
    ],
    "buttonParameters": [
      {
        "index": 0,
        "subType": "url",
        "text": "ORD-1042"
      }
    ]
  },
  "clientReference": "order-1042"
}
JSON;

$ch = curl_init('https://waba-api.startmessaging.com/api/v1/messages');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . getenv('SM_API_KEY'),
        'Content-Type: application/json',
        'Idempotency-Key: order-1042-shipped',
    ],
    CURLOPT_POSTFIELDS => $body,
]);
$data = json_decode(curl_exec($ch), true)['data'];
echo $data['id'] . ' ' . $data['status'];
FAQs

Utility Messages — FAQ

What qualifies as a utility message on WhatsApp?

Utility messages are transactional notifications directly related to an existing customer action or request. Examples include order confirmations, shipping updates, appointment reminders, payment receipts, account alerts, and booking confirmations. These messages must be sent using pre-approved templates.

How are utility message costs calculated?

Meta charges for every delivered utility template, billed directly to your own WhatsApp Business Account. Since 1 October 2026 that includes utility templates sent inside an open 24-hour window, which used to be free. Free-form service replies to a customer who wrote to you are free up to a monthly allowance per number, then charged. StartMessaging charges a flat CRM subscription only — no per-message markup, no wallet. Utility rates are set by Meta and vary by the recipient's country.

Can utility messages include file attachments?

Yes. You can attach PDFs (like invoices or receipts), images (like QR codes or tickets), and other document formats to your utility template messages. These files must be hosted online and passed as media parameters via our API or dashboard.

How long does template approval take for utility messages?

Meta reviews templates; most decisions arrive quickly, but timing is set by Meta. Once a template is approved, you can use it straight away from the dashboard or the API.

What is the difference between a utility and service message?

Utility messages are business-initiated notifications templates used for transactional updates. Service messages are user-initiated conversations, where a customer messages your business first, starting a 24-hour window where you can reply with free-form messages without templates. Meta charges every delivered utility template, even inside that window; service replies are free up to a monthly allowance per number.

WhatsApp API

Automate Your Transactional Updates

14-day free trial. Connect your own WhatsApp Business number in minutes.