> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Templates

> Create, send, and track reusable templates for push notifications, email, and SMS in OneSignal with Liquid personalization and aggregate performance metrics.

Use templates to send consistent push notifications, emails, and SMS/RCS messages. Templates are reusable blueprints that centralize performance metrics across sends. They are especially useful for **frequently sent**, **event-driven**, or **transactional** messages.

***

## Create templates

Templates can be created in multiple ways:

<Columns cols={2}>
  <Card title="Dashboard" icon="browser">
    Go to **Messages > Templates** and click **New Template**.
  </Card>

  <Card title="Email template forwarding" icon="envelope" href="./email-template-forwarding">
    No-code way to forward a copy of an email template from another platform or OneSignal app.
  </Card>

  <Card title="Create Template API" icon="code" href="/reference/create-template">
    Create templates programmatically using the Create Template API.
  </Card>

  <Card title="Copy between apps API" icon="copy" href="/reference/copy-template-to-another-app">
    Copy templates between OneSignal apps (one-time copy, not a live sync).
  </Card>
</Columns>

### Design guidelines

Templates support [Liquid syntax](./using-liquid-syntax) for [advanced personalization](./message-personalization), letting you insert dynamic, user-specific content.

For channel-specific best practices, see:

<Columns cols={2}>
  <Card title="Push notification design" icon="bell" href="./push">
    Push notification design, features, and platform options.
  </Card>

  <Card title="SMS/RCS messaging" icon="comment-sms" href="./sms-composing-messages">
    SMS/RCS design, features, and compliance requirements.
  </Card>

  <Card title="Email HTML design" icon="code" href="./design-emails-with-html">
    Build emails with full HTML and CSS control.
  </Card>

  <Card title="Email drag-and-drop design" icon="pen-ruler" href="./design-emails-with-drag-and-drop">
    Build emails visually with the drag-and-drop editor.
  </Card>
</Columns>

***

## Send messages using templates

You can send a template in multiple ways:

* **New Message flow:** When composing in the dashboard, choose to start from a template.
* **Templates page:** Go to **Messages > Templates**, then select **Options (3-dot menu) > New Message**.
* **API:** Include the `template_id` in a [Create message](/reference/create-message) request.

<Note>
  For SMS/RCS templates, the editor shown depends on the sender you select: the RCS editor for senders with an RCS resource, the SMS editor otherwise. Selecting a sender with an approved RCS resource also makes OneSignal prefer RCS for existing automations using that sender. See [Upgrading existing automations to RCS](./sms-composing-messages#upgrading-existing-automations-to-rcs) for how SMS content maps to RCS.
</Note>

### Template ID

Each template has a unique OneSignal-generated `template_id` (UUID v4). You can find it:

* Using the [View Templates API](/reference/view-templates)
* In the OneSignal Dashboard under **Messages > Templates > Options > Copy Template ID**

<Frame caption="Copy Template ID">
  <img src="https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/templates/copy-template-id.png?fit=max&auto=format&n=ciRrThfP6xMpI7GY&q=85&s=b1b94df3f7ad6cdc5dc985e5c2f7ffeb" alt="Copy Template ID in OneSignal Dashboard" width="2208" height="1038" data-path="images/dashboard/templates/copy-template-id.png" />
</Frame>

***

## Track performance

The **Templates** page shows aggregate lifetime performance across all sends using the template.

| Column        | Description                                                                                              |
| ------------- | -------------------------------------------------------------------------------------------------------- |
| **Name**      | The template's name.                                                                                     |
| **Labels**    | [Labels](./labels) used to group and filter templates.                                                   |
| **Type**      | Push, Email, or SMS.                                                                                     |
| **Last Sent** | Date and time the template was last used in a sent message.                                              |
| **Delivered** | Total successful deliveries (to push servers, recipient inboxes, or SMS carriers, depending on channel). |
| **Opened**    | Total email opens (including repeat opens). Not applicable for push or SMS.                              |
| **Clicked**   | Total clicks on the notification or links within the email/SMS.                                          |
| **CTR**       | (Clicked ÷ Delivered) × 100%.                                                                            |

For per-send delivery stats, engagement breakdowns, and audience activity:

<Card title="Template analytics" icon="chart-bar" href="./template-analytics">
  Detailed per-template reports with channel-specific metrics and exportable audience data.
</Card>

***

## Update templates

You can update templates via:

* **Dashboard:** Go to **Messages > Templates > Options > Edit**.
* **API:** Use the [Update Template API](/reference/update-template).

Updating a template does not reset its performance metrics. Engagement on the updated content accumulates into the same lifetime totals.

Template fields can be overridden per message. Use a template as a starting point and update content before sending.

***

## Delete templates

You can delete templates via:

* **Dashboard:** Go to **Messages > Templates > Options > Delete**.
* **API:** Use the [Delete Template API](/reference/delete-template).

<Warning>
  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.
</Warning>

***

## 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](./template-analytics) for details.

### Can I duplicate templates across apps?

Yes. Use the [Copy Template to Another App API](/reference/copy-template-to-another-app) for any template type. For email specifically, you can also use [Email Template Forwarding](./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 metrics 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](/reference/create-message) request alongside the `template_id`. The API fields override the corresponding template fields for that send only.

***

## Related pages

<Columns cols={2}>
  <Card title="Message personalization" icon="user-pen" href="./message-personalization">
    Personalize templates with tags, Liquid syntax, and custom event properties.
  </Card>

  <Card title="Liquid syntax" icon="code" href="./using-liquid-syntax">
    Full reference for Liquid templating in OneSignal messages.
  </Card>

  <Card title="Journeys" icon="route" href="./journeys-overview">
    Use templates in automated multichannel messaging flows.
  </Card>

  <Card title="Labels" icon="tag" href="./labels">
    Organize and filter templates with custom labels.
  </Card>
</Columns>
