Creating Effective Push Notification Templates in Braze

Top-down view of a tailor's workbench with a paper pattern piece, measuring tape, chalk and fabric swatches, a hand pinning the green swatch in place, showing the changing part of a reusable push template.

Braze push notification templates are a working practice built from documented parts: Content Blocks for shared copy, Canvas templates for journeys, Copy from Variant for similar variants, and default values for missing data. This guide shows what to fix in a template, what to leave open, and how to check copy before launch.

‍

Key Takeaways

  • Reusable push content in Braze comes from Content Blocks, Canvas templates and Copy from Variant, with default values covering missing data.
  • Fix the format, fallbacks, length, image address and language order in the template, and leave the offer and final wording open.
  • Braze recommends approximately 30-40 characters per line of title or body text on iOS, and body text shortens by about 10 characters per line when an image is present.
  • iOS titles display on a single line, so Liquid titles pass through strip_newlines, and Android messages need a title.
  • Content Blocks inserted via Liquid stay linked to the original, so check the inclusion list before editing and choose names with care, because they cannot be changed.
  • Run the same six-point review on every push built from a template.

‍

What counts as a push notification template in Braze?

The Templates section of the Braze documentation describes email templates, webhook templates, link templates, Content Blocks and Canvas templates. It says they exist "to maintain consistency and save time across your campaigns". Push copy gets the same benefit through the parts that suit it.

Three documented mechanisms do the work. Content Blocks hold reusable, cross-channel content in one centralised location. Canvas templates save the shape of a journey, and Copy from Variant carries composed copy into further variants of a campaign.

CustomerIK treats these three as a single template system for push, and gives each part a named owner. Without that, a team ends up with reusable pieces and nobody responsible for them.

‍

What should a push template fix, and what should it leave open?

A good template fixes the parts that must not drift and leaves open the parts that change per campaign. The table below shows the split we use when we set up a push programme.

Part of the pushFix in the templateLeave open for the campaignDocumented basis
FormatTitle and body pattern, plain text onlyThe offer and the call to actionCreate a push message
Missing dataA default value on every attributeWhich attributes to useSet default values
LengthA line budget for title and bodyThe final wordingCreate rich push notifications for iOS
ImagesA secure image address patternThe asset itselfCreate a push message
LanguagesThe language list, chosen before copyThe translated textCreate a push message

‍

The "fix" column is where template reviews should spend their time. The "leave open" column is where campaign owners should have room to move.

‍

How long should template copy be on iOS?

Braze recommends keeping each line of text for both the optional title and message body to approximately 30-40 characters in a mobile push notification. The iOS documentation also shows that the title takes one line, while the body shows 2 lines when the device is active and up to 7 lines when the notification is expanded.

Two documented details change the budget. Body text is shortened by about 10 characters per line when an image is present, and longer words may wrap more abruptly than shorter ones. The same page says it cannot give a hard and fast rule, so treat the figures as guidance.

We recommend setting the template's body budget for the image variant, because that is the tightest case. A template that fits there will fit everywhere else without a second edit.

‍

How do default values keep a push template safe?

Braze documents a Liquid filter named default for any personalisation attribute. If a default value is not provided and the field is missing or not set on the user, the field will be blank in the message. A push that opens with a greeting and a gap reads as a mistake.

The documented pattern looks like this, adapted for a push body:

Hi {{ ${first_name} | default: 'valued user' }}, your order has shipped.

‍

The documentation adds a detail that catches teams out. The default value shows for empty values, but not for blank values. A first name that holds only a space counts as blank, so the default will not appear.

Our suggestion is to make attribute hygiene at the point of data capture part of the template review, not a separate data project. Ask the data owner whether blank strings can reach the profile before you rely on a default.

‍

What can go wrong with titles in a push template?

On iOS, push titles display as a single line. If Liquid output includes newline characters, users may only see the text before the first line break. Braze documents the fix: capture the output and apply the strip_newlines filter.

{% capture title_output %}
YOUR LIQUID HERE
{% endcapture %}
{{ title_output | strip_newlines }}

‍

Android has its own rule. The documentation states that you cannot send an Android push message without a title, and that a message containing only a single space is sent as a silent push notification.

Our reading is that any title built from conditional Liquid deserves a test where every branch resolves to nothing. That one test would show whether a template can fall into the silent-push case by accident.

‍

When do Content Blocks suit push copy?

Content Blocks suit the lines that repeat across many pushes, such as a delivery promise or a shared offer line. The documentation describes them as reusable, cross-channel content, and says Content Blocks inserted via Liquid stay linked to the original and reflect any changes. One edit then updates every message that uses the block.

That behaviour helps and needs care. The Content Blocks Library preview shows an inclusion count with a clickable list of messages that use the block, so check that list before you edit a shared line. A block also cannot be archived while any message uses it.

Names deserve more thought than they usually get. The documentation says a name cannot be changed after the block is saved and cannot be reused, even if archived, so we recommend putting the channel and a version in the name from the start. Something like push_delivery_line_v1 leaves room for a v2 without a rename.

Blocks can be nested, but only once. If you build push copy from fragments, keep the structure shallow. When a block is written with line breaks for readability, Braze notes that left-over breaks can add extraneous spaces, so use the documented capture tag with the strip filter.

‍

How do Canvas templates help with push journeys?

Canvas templates create a consistent framework that can be customised to fit specific goals across Canvases. The documentation also confirms that you can save Canvas builder settings within a template, which includes audience settings. A journey with a push step can therefore start with its structure already in place.

We suggest keeping the copy out of the Canvas template and in Content Blocks where the team can edit it. The template then carries structure, and the blocks carry words. That split lets a copywriter change a line without touching journey logic.

‍

What should a pre-launch review check?

Run the same short review on every push built from a template. It is short enough to run every time, and it catches problems that are expensive to fix after launch.

  1. Use Preview message as user for a random user and a multi-language user, as the documentation describes.
  2. Confirm every attribute has a default value.
  3. Confirm any iOS title built from Liquid passes through strip_newlines.
  4. Confirm image addresses built with Liquid or Connected Content are secure. The documentation says an insecure address will crash your app.
  5. Confirm Android titles exist and cannot resolve to a lone space.
  6. Open the inclusion list of every Content Block before you edit it.

‍

Our suggestion is to put this list in the template's description or your team's launch checklist, not in someone's head. A review that depends on memory gets skipped in the week it matters.

‍

What does a worked example look like?

This example is hypothetical. It contains no client data and no results. Imagine a retailer that wants a back-in-stock push for iOS and Android.

The team fixes the title and body pattern, the default for the first name, and a single Content Block holding the delivery line. They leave the product name and the call to action open for each campaign. They compose the iOS copy first, cut the body to fit the image variant, then use Copy from Variant to create the Android version.

At review, someone opens the delivery line's inclusion list and sees two other live campaigns using it. They decide the wording change belongs in a new v2 block, so the live campaigns are not edited by accident. That one decision, made at review rather than after launch, is the point of the template.

‍

How does this connect to the rest of the programme?

Templates sit underneath the rest of your push work. The Braze marketing automation templates guide covers reuse across channels, and personalising push notifications covers what goes into the attribute slots.

Template copy also has to survive real audiences and send times. Read push notification segmentation and optimising push timing next. For the Liquid itself, see personalisation with Liquid tags, and for tap behaviour see deep links for mobile engagement.

As a Braze implementation partner, CustomerIK recommends starting with one push template, one shared Content Block and one review checklist. Add more only when a second team needs them.

‍

Frequently Asked Questions
‍

1. Does Braze have a dedicated push template type?

The Templates index in the Braze documentation names email, webhook, link, Content Block and Canvas templates. Push teams build reuse from Content Blocks, Canvas templates and Copy from Variant. Features change, so check the current documentation before you plan around this.

2. Do edits to a Content Block change messages that are already live?

Content Blocks inserted via Liquid are linked to the original and reflect any changes to the template. Check the inclusion list before you edit.

3. Can I rename a Content Block after saving it?

No. The documentation says names cannot be changed after the block is saved, and a name cannot be reused even if archived.

4. How long should a push title be on iOS?

iOS shows the title on a single line. Braze recommends approximately 30-40 characters per line of title or body text, as guidance rather than a fixed rule.

5. What happens if a first name is missing from a profile?

Without a default value, the field is blank in the message. With a default, the fallback shows for empty values but not for blank values.

‍

Sources

‍

CustomerIK is a Braze implementation partner working across onboarding, technical integration, marketing operations and customer data management.

If you want a push template system and a launch checklist set up in your Braze workspace, let's talk.

‍

Preferences

Privacy is important to us, so you have the option of disabling certain types of storage that may not be necessary for the basic functioning of the website. Blocking categories may impact your experience on the website.

Accept all cookies
Accept all cookies

These items are required to enable basic website functionality.

Always active

These items are used to deliver advertising that is more relevant to you and your interests.

These items allow the website to remember choices you make (such as your user name, language, or the region you are in) and provide enhanced, more personal features.

These items help the website operator understand how its website performs, how visitors interact with the site, and whether there may be technical issues.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.