Skip to main content
Templates are reusable blueprints for push notifications, emails, and SMS messages. They ensure consistent messaging and centralize performance metrics across sends. Templates are especially useful for frequently sent, event-driven, or transactional messages.

Template analytics

Review delivery statistics, engagement metrics, and per-recipient activity for each template.

Create templates

Templates can be created in multiple ways:

Dashboard

Go to Messages > Templates and click New Template.

API

Create templates programmatically using the Create Template API.

Email template forwarding

Migrate email templates from another email platform.

Copy between apps

Copy templates between OneSignal apps (one-time copy, not a live sync).

Design guidelines

Templates support Liquid syntax for advanced personalization, letting you insert dynamic, user-specific content. For channel-specific best practices, see:

Push notification design

Push notification design, features, and platform options.

SMS messaging

SMS design, features, and compliance requirements.

Email HTML design

Build emails with full HTML and CSS control.

Email drag-and-drop design

Build emails visually with the drag-and-drop editor.

Send messages using templates

You can send a template in multiple ways:
  • From the Compose Screen: When creating a new message in the Dashboard, choose to start from a template.
  • From the Templates Page: Go to Messages > Templates, select Options (3 dots) > New Message.
  • API: Include the template_id in your send request.

Template ID

Each template has a unique OneSignal-generated template_id (UUID v4). You can find it:
  • Using the View Templates API
  • In the OneSignal Dashboard under Messages > Templates > Options > Copy Template ID
Copy Template ID in OneSignal Dashboard

Track performance

The Templates page shows aggregate lifetime performance across all sends using the template.
ColumnDescription
NameThe template’s name.
LabelsLabels used to group and filter templates.
TypePush, Email, or SMS.
Last SentDate and time the template was last used in a sent message.
DeliveredTotal successful deliveries (to push servers, recipient inboxes, or SMS carriers, depending on channel).
OpenedTotal email opens (including repeat opens). Not applicable for push or SMS.
ClickedTotal clicks on the notification or links within the email/SMS.
CTR(Clicked ÷ Delivered) × 100%.
For per-send delivery stats, engagement breakdowns, and audience activity:

Template analytics

Detailed per-template reports with channel-specific metrics and exportable audience data.

Update templates

You can update templates via: Updating a template does not reset its performance stats. New links are tracked and aggregated alongside existing data. Template fields can be overridden per message. You can use a template as a starting point and update content before sending. For example, if your push template has a set message and you use the Create push API with new content, it will override the template message.

Delete templates

You can delete templates via:
Once the template is deleted, all data associated with it is deleted and cannot be recovered.You cannot delete templates used within a Journey. Either delete the Journey or remove the template from the Journey.

FAQ

How long is template data stored?

Template content is stored for the lifetime of the template — until you delete it. Aggregate analytics on the Templates page are also lifetime. Individual send-level analytics follow your plan’s retention policy. See Template analytics for details.

Can I duplicate templates across apps?

Yes. Use the Copy Template to Another App API for any template type. For email specifically, you can also use Email Template Forwarding.

Does updating a template affect past messages?

No. Past messages retain the content they were sent with. Only future sends use the updated template. Performance stats are not reset.

Can I use the same template for multiple channels?

No. Each template is tied to a single channel — push, email, or SMS. Create separate templates for each channel.

Can I override template content when sending via API?

Yes. Include fields like contents, headings, or email_body in your Create message request alongside the template_id. The API fields override the corresponding template fields for that send only.

Message personalization

Personalize templates with tags, Liquid syntax, and custom event properties.

Liquid syntax

Full reference for Liquid templating in OneSignal messages.

Journeys

Use templates in automated multichannel messaging flows.

Labels

Organize and filter templates with custom labels.