Skip to content

Glossary drawing · Templates

Highly Structured Message(HSM)

Also called: HSM message · HSM template · WhatsApp HSM · Notification message

Note 1 —HSM (Highly Structured Message) is the original name for WhatsApp message templates, still seen in old docs and dashboards; today it just means a template.

Term
Highly Structured Message
Abbreviation
HSM
Category
Templates
Level
Foundation
Reviewed
Sheet no.
GLO-TEM-992
Drawn by
InfiQ Glossary

Drawing 1 · Interactive

How the HSM became today's template

8 / 8

Oct 2026NowEvent 8 of 8

HSM is a legacy label

The term survives in old contracts, dashboards and docs, and always means a message template.

From the 2018 launch to the On-Premises sunset: scrub through the changes in naming, payloads and pricing that turned the HSM into the category-priced template sent through the Cloud API.

Event 8 of 8: Oct 2026 — HSM is a legacy label (now). The term survives in old contracts, dashboards and docs, and always means a message template.

What is an HSM?

HSM stands for Highly Structured Message, the name WhatsApp used for pre-approved business message formats when the WhatsApp Business API launched in 2018. An HSM was a message whose wording was registered and approved in advance, with placeholders filled in at send time — exactly what is now called a message template. Because HSMs were the only messages a business could send to start a conversation or reach someone after the 24-hour customer service window, early providers often called them "notifications" and priced them per message.

The name came from the old On-Premises API's request shape. A send used type: "hsm" with an hsm object holding a namespace (an identifier for the business's set of templates), an element_name (the template name), a language object with a policy of deterministic or fallback, and localizable_params, each with a default value. Meta later deprecated the hsm object in favour of type: "template" with header, body and button components, and the Cloud API dropped the namespace altogether: a template is now identified by its name and language code alone.

Today HSM is terminology, not a separate message type. Any document, invoice, rate card or provider dashboard that says "HSM" means a template message: a marketing, utility or authentication template, billed per delivered message by category. The infrastructure that spoke the old hsm format is gone too — the On-Premises API was sunset on 23 October 2025, so every business now sends templates through the Cloud API.

Key takeaways

  • HSM, or Highly Structured Message, is the original name for WhatsApp message templates; today it simply means a template.
  • Old On-Premises sends used type: "hsm" with a namespace and element_name; the Cloud API uses type: "template" with a name and language code.
  • The On-Premises API was sunset on 23 October 2025, so code that still builds hsm payloads cannot send anything.
  • An "HSM" on a quote or invoice is a template message, charged per delivered message by its category.

Specifications

An HSM: key facts and limits

Stands for
Highly Structured Message
Means today
A message template
Old payload type
type: "hsm" (On-Premises API)
Current payload type
type: "template" (Cloud API)
Namespace
Ignored by the Cloud API
On-Premises API sunset
23 October 2025

Design intent

Why does an HSM matter?

The term still turns up in old contracts, legacy integrations, migration tickets and vendor quotes, and it causes real confusion: teams wonder whether an "HSM" is a different, older product they need to support, or whether "HSM pricing" is separate from template pricing. Knowing that HSM simply means template — and that the old payload shape and namespace are obsolete — saves time when reading legacy code or comparing quotes.

Operating sequence

How does an HSM work?

  1. Read HSM as "template"

    Wherever a document says HSM, substitute "message template". The rules are the same: pre-approved, needed to start a conversation or message outside the 24-hour window.

  2. Map the old fields to the new ones

    element_name became template.name; language.code stayed; localizable_params became parameters inside body, header and button components; namespace is ignored by the Cloud API.

  3. Map the old pricing to the new

    Per-HSM "notification" pricing gave way to conversation-based pricing in February 2022 and then to per-message pricing by template category on 1 July 2025.

  4. Retire legacy code paths

    Any integration still building type: "hsm" payloads was written for the On-Premises API, which no longer sends messages. Rebuild the call against /{PHONE_NUMBER_ID}/messages on the Cloud API.

Implementation

An HSM in code

{
"to": "919812345678",
"type": "hsm",
"hsm": {
"namespace": "c8ae5f90_307a_ca4c_b8f6_d1e2a2573574",
"element_name": "policy_renewal",
"language": { "policy": "deterministic", "code": "en" },
"localizable_params": [
{ "default": "Kavya" },
{ "default": "30 November" }
]
}
}

On-Premises API shape. Shown for reading old code only; it cannot be sent today.

Example: Reading a 2019 contract in 2026

A Chennai insurance broker audits an old messaging contract that quotes "HSM notifications" at a per-message rate and "session messages" separately. The operations lead maps the terms: HSMs are today's templates, now split into utility (policy renewal notices), marketing (new-plan offers) and authentication (login codes), each charged per delivered message by category; session messages are service replies inside the 24-hour window. The integration code, still sending type: "hsm" to an On-Premises client, is replaced with Cloud API template sends during the same review.

Failure modes

Common mistakes with an HSM

  • Treating HSM as a separate product

    There is no HSM message type to support alongside templates. If a vendor quotes HSM and template prices separately, ask what the difference is — it should be none.

  • Copying old payloads into new code

    Examples with hsm, element_name, localizable_params or a language policy come from the On-Premises era. Build sends from current Cloud API template documentation instead.

  • Applying old pricing logic

    Older guides describe HSMs as notifications billed per message with free session replies, or as conversation openers. Today every delivered template is charged by its category, and service replies in India have been charged since 1 October 2026.

HSM FAQs

Is an HSM the same as a WhatsApp template?+
Yes. HSM was the original name for what is now called a message template: a pre-approved message with variables, used to start conversations or message customers outside the 24-hour window.
Do I still need a template namespace?+
No. The namespace identified a business's templates in On-Premises API calls. The Cloud API ignores it and finds templates by name and language code.
Why do some dashboards still say HSM?+
Many tools and contracts were built when HSM was the official term and never renamed the field. The meaning has not changed: it is a template message.
Is HSM pricing different from template pricing?+
No. There is no separate HSM rate today. Meta charges each delivered template by its category (marketing, utility or authentication), so a quote that prices "HSMs" is pricing template messages and should match the template rates.

Recommended practice

Best practices for an HSM

  • When reading legacy docs, search for hsm, namespace and element_name to find code that needs migrating.
  • Use "message template" in new documentation; keep "HSM" only as a search alias.
  • Keep template names stable during a migration so analytics and reporting carry over.

See InfiQ pricing

Put HSM to work

InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.