Create native in-app messages
Native in-apps use ready-made layouts that the Pushwoosh SDK renders directly on the device, instead of the HTML page a custom in-app loads. This makes them load faster and animate more smoothly, and you don’t need design or development skills to build one.
Reach for a native in-app when you want to launch a promotion, reminder, or feature announcement quickly and a fully custom layout isn’t necessary. If you need full control over the design, build an HTML-based in-app instead.
Prerequisites
Anchor link toBefore you create a native in-app template, make sure:
- The Pushwoosh SDK is integrated in your app so in-app messages can appear. Learn more
- Your app runs iOS SDK 7.2.0+ or Android SDK 6.10.0+ for modal, fullscreen, and stories. Sheet, carousel, and banner need iOS SDK 7.2.1+ or Android SDK 6.10.1+.
Create a native in-app template
Anchor link to- Go to Content → In-apps.
- Click Create in-app.
- Enter a template name.
- Select Create native rich media.
- In DISPLAY TYPE, pick a display type: modal, fullscreen, stories, sheet, carousel, or banner.
- Click Create in-app.

The editor opens with a live mobile preview on the right and the template fields on the left, grouped into Content, Config, and Actions. What you see in each group depends on the display type you picked.
Configure the display type
Anchor link toModal
Anchor link toA centered card, optionally shown over a dimmed background.
- Under Content, add a title and message, each with its own text color, plus an optional image.
- Under Config, set the card background color. This fills the card behind your text and image.
- Turn Close button on if you want a ✕ control so users can dismiss the in-app without tapping a button.
- Turn Dim background on to darken the screen behind the card and keep focus on your message.
- Under Actions, add one or more buttons. See Configure buttons.

Fullscreen
Anchor link toAn edge-to-edge cover image with text and buttons on top. Fill in these fields on the left panel:
- Under Content, add a cover image, plus a title and message, each with its own text color.
- Under Config, set the cover color. It shows while the cover image loads, or on its own if you leave the image empty.
- Turn Close button on if you want a ✕ control so users can dismiss the in-app without tapping a button.
- Under Actions, add one or more buttons. See Configure buttons.

Stories
Anchor link toA sequence of full-screen slides with progress bars at the top, similar to social media stories. Each slide is its own Stories entry under Content.
- Fill in the first slide’s Image, Title, and Message (each with its own text color).
- Set Seconds to how long the slide stays on screen before advancing. The default is 5. Enter a value from 1 to 30. Values outside this range block Save with a validation error.
- Optionally, click Add inside the slide to give it its own CTA button. See Configure buttons.

- Click Add below the last slide to add another slide, then repeat steps 1-3 for it.
- Under Config, turn Loop on if you want the story to start again from the first slide after the last one finishes.
- Turn Close button on if you want a ✕ control so users can exit before all slides play through.

Example of how the finished story looks for the user
Anchor link toSheet
Anchor link toA bottom sheet that slides up from the lower edge of the screen. A handle at the top lets users drag it down to dismiss.
Fill in these fields on the left panel:
- Under Content, add a title and message, each with its own text color, plus an optional image.
- Under Config, set the sheet background color. This fills the panel behind your text and image.
- Turn Close button on if you want a ✕ control so users can dismiss the sheet without tapping a button.
- Under Actions, add one or more buttons. See Configure buttons.

Carousel
Anchor link toA full-screen message with several cards users swipe through. Dots at the bottom show which card is active. Under Content, each card is a separate Cards entry.
- Fill in the first card’s Image, Title, and Message (each with its own text color).
- Set Action for the card. Choose close to dismiss the in-app when the user taps the card, or url to open a link (same options as Configure buttons).
- Click Add below the last card to add another one, then repeat steps 1-2 for it.
- Turn Close button on if you want a ✕ control so users can leave the carousel without tapping a card.

Banner
Anchor link toA compact bar pinned to the top or bottom edge of the screen, for messages that shouldn’t block the whole UI.
- Under Content, add a title and message, each with its own text color, plus an optional small image.
- Under Config, set Position to top or bottom to pin the banner at the screen edge you want.
- Set Auto-dismiss, sec to close the banner automatically after that many seconds. Leave it empty to keep the banner until the user dismisses it.
- Set the background color for the bar.
- Turn Close button on if you want a ✕ control on the banner.
- Under Actions, set Action to close or url. Banners don’t have separate buttons. Tapping anywhere on the banner runs this action. See Configure buttons for close and url behavior.

Configure text fields
Anchor link toText fields don’t support multi-line text. If you press Enter, the editor may show a line break, but Pushwoosh saves a space instead. On the device, the text appears as one line.
To add an emoji, click Emoji next to the field toolbar. Emojis are supported in the same text fields as plain text. Check the live preview to see how they look on the layout.
Add dynamic content
Anchor link toEvery text field supports personalization with tags and User ID.
- Click Personalization next to the field toolbar.
- Under Tag, choose a tag or User ID.
- Choose a format modifier (for example, CapitalizeFirst or regular).
- Optionally, enter a Default Tag Value.
- Click Insert.

The inserted tag shows as a chip in the field. You can change the tag, modifier, and default before you click Insert. Personalization uses the same tags, modifiers, and defaults as Dynamic content.
When you click Save, Pushwoosh checks the dynamic content and Liquid in every text field. If a field doesn’t parse (for example, an unclosed {% if %} tag), Save is blocked and a Dynamic content contains errors toast names the broken field and language. Fix it there, then click Save again.
Configure buttons
Anchor link toModal, fullscreen, each stories slide, and sheet use the same button fields:
- Button text and its color.
- Background, Border color, and Border radius.
- Action: choose what happens when the user taps the button:
- close: dismisses the in-app.
- url: opens the link you enter in the field that appears. Use a web address (for example,
https://example.com) or a deep link into your app (for example,myapp://product/123).

Click Add to add another button, or the × on a button to remove it.
Add localizations
Anchor link toBy default, a native in-app has one language. To add more:
- Click + next to the language selector in the top bar.
- Select the languages to add and click Apply.

- Use the language selector in the top bar to switch between languages and fill in the text fields for each one.
Save the template
Anchor link toClick Save in the top right to persist your changes.
The template then appears in Content → In-apps alongside your other in-app templates.
Use it in a campaign
Anchor link toA native in-app template appears in the template picker together with your other in-app templates.
You can use it to:
- Send an instant in-app
- Add an in-app step to a Customer Journey
- Open an in-app when the user taps a push