Types
A communication type is a category of message with a distinct audience and purpose — customer updates, internal leadership updates, support-team briefings. Types are the organizing principle for the whole module. Both recipient groups and templates belong to a type, which is what connects an audience to the messages it can receive.string
required
What this category of communication is. Name it for the audience and purpose together — “Customer status updates” rather than “External”.
color
required
A visual marker so responders can tell types apart at a glance when choosing a template mid-incident.
A type that has groups or templates attached cannot be deleted. Detach or remove them first — which is deliberate, since deleting a type in use would orphan both an audience and the messages meant for it.
Stages
A stage is a phase of an incident that you communicate at. Stages are defined once for the organization and shared across every type, so “Resolved” means the same thing everywhere. Typical stages map to how an incident actually unfolds:
Stages are your own — name them to match how your organization already talks about incidents rather than adopting a standard set that nobody recognizes.
Templates
A template holds the prepared content for one type, with separate text for each stage and each channel.1
Create the template and pick its type
The type determines which audiences can receive it.
2
Write content for each stage
Within the template, each stage gets its own message. A template without content for a stage cannot be used at that stage.
3
Write each channel separately
Email subject and body, SMS text, and Slack message are authored independently, because they are read very differently.
4
Insert Liquid variables for anything factual
Title, summary, severity, affected services, and timestamps should come from the incident record.
Writing for Each Channel
The same update needs three different shapes:- Email carries the full message — context, impact, what is being done, when the next update comes. Subject lines can be long, but the useful part belongs at the front, since that is all a phone preview shows.
- SMS is capped near 160 characters. Treat it as a pointer, not a summary: what is wrong, who is affected, where to read more. Longer messages split into multiple segments.
- Slack sits between the two, and can carry links comfortably.
Email subject, header, and footer have generous limits — thousands of characters — so the practical constraint is what a reader will tolerate, not what the field accepts. SMS is the one channel where the limit genuinely bites.
Liquid Variables
Liquid is what makes a prepared template specific to the incident it is sent from. Instead of typing the severity into the message, the template references it and Rootly fills it in at send time. Use variables for anything that exists on the incident record — title, summary, severity, status, affected services and functionalities, timestamps, and links. Incident variables lists everything available.Keeping Templates Usable
- Fewer, better templates. One well-written template per type covering every stage beats a dozen situational ones nobody can choose between under pressure.
- Write for the reader, not the responder. Customer-facing templates should avoid internal service names, severity numbers, and team names.
- Say what is being done, not how. “We have identified the cause and are deploying a fix” ages better than implementation detail that may turn out wrong.
- Review templates after real incidents. The retrospective is the moment to notice a template that read badly, while the discomfort is fresh.
- Manage them as code if your configuration is stable. Types, stages, and templates all have Terraform resources.
Troubleshooting
A stage is missing when creating a communication
A stage is missing when creating a communication
The template has no content for that stage. Add content for it, or pick a stage the template covers.
Variables show as raw text instead of incident details
Variables show as raw text instead of incident details
The variable name does not match an available one, or the syntax is malformed. Check it against incident variables.
Part of the message is blank when sent
Part of the message is blank when sent
A variable resolved to nothing because that field is empty on the incident — most often the summary. Fill it on the incident, then recreate the communication.
A type cannot be deleted
A type cannot be deleted
Groups or templates still reference it. Remove or reassign those first.
The SMS arrived split into several messages
The SMS arrived split into several messages
It exceeded a single segment. Rewrite the SMS content as a pointer with a link rather than a condensed version of the email.
Related Resources
Recipient Groups
The audiences a type’s templates reach.
Liquid Variables
Every incident value a template can reference.