Drawing 1 · Interactive
How the HSM became today's template
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.
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 usestype: "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?
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.
Map the old fields to the new ones
element_namebecametemplate.name;language.codestayed;localizable_paramsbecameparametersinsidebody,headerandbuttoncomponents;namespaceis ignored by the Cloud API.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.
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}/messageson 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_paramsor a languagepolicycome 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?+
Do I still need a template namespace?+
Why do some dashboards still say HSM?+
Is HSM pricing different from template pricing?+
Recommended practice
Best practices for an HSM
- When reading legacy docs, search for
hsm,namespaceandelement_nameto 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.