Overlay Messaging is Optimove's channel for delivering personalized pop-up messages across your website and mobile app from a single campaign. Unlike legacy pop-up channels tied to a single platform, Overlay Messaging treats web and mobile as one — a campaign you create once reaches your customer on whichever surface they're active on, without managing separate channels or duplicating your setup.
If you are currently using Webpage Pop-ups or In-App Messaging, Overlay Messaging is designed to be the unified successor to both channels. There is no set timeline for sunsetting Webpage Pop-ups or In-App Messaging, and no immediate action is required — but if you are interested in transitioning, speak to your CSM about what migration would look like for your setup.
Before marketers can use Overlay Messaging, your development team will need to integrate both the Optimove Web SDK and Mobile SDK, as Overlay Messaging is cross-platform and requires both to be active for full coverage. See the Overlay Messaging Developer Documentation for setup instructions.
Prerequisites
Overlay Messaging requires configuration before campaigns can go live. Contact your CSM or CSE to ensure the following are in place:
- Web SDK and Mobile SDK are both integrated: Overlay Messaging is a single cross-platform channel. If only one SDK is implemented, messages will only reach customers on that surface.
- Overlay Messaging is enabled on your tenant.
- Attribute webhooks are configured in your tenant for Overlay Messaging.
- Domain and brand mapping configured: Overlay Messaging requires your domains and brands to be correctly mapped to your tenant before messages can be delivered.
- Push permission (mobile, triggered campaigns only): for triggered Overlay Messaging on mobile, your customers must have granted push notification permission. Customers who have not granted this will not receive triggered overlays on mobile. This must be requested within your app's own permission flow; it is not handled automatically by the SDK.
How Overlay Messaging Works
Sessions
Overlay Messaging delivery is organized around sessions. A session persists for a configurable duration (default: 1 hour; minimum: 1 hour) and determines when a customer is eligible to receive a new scheduled (session) message.
A session can be reset programmatically by your developers — for example, when a customer logs out, which causes the SDK to fetch the next available session message. A session also restarts when the SDK is first initialized and has never been loaded before, or when the configured session duration expires.
Single scheduled message per session
For scheduled campaigns, Overlay Messaging delivers a single message to each customer per session. At any given moment, only the single most recent eligible scheduled message is shown. If multiple scheduled campaigns are eligible, they are prioritized by execution time, most recent first.
Triggered (immediate) campaigns are not subject to this limit. Multiple triggered messages may be delivered within a single session, based on customer behavior.
Cross-device deduplication
Message state is synchronized across devices. If a customer dismisses or interacts with a message on one device, that message is permanently deleted and will not appear on any of their other devices.
State synchronizes at the start of each overlay session and at least once per hour on mobile.
Message Types
Scheduled messages
Scheduled messages are sent as part of standard scheduled campaigns and retrieved by the SDK at the start of a session.
- Messages are shown in most-recent-first order, based on execution time.
- Messages are valid for 2 days (TTL = Time to live) after the campaign execution date and time. If the message is not fetched within 2 days from the execution date and time, it expires and is not shown.
- Expired messages are retained for a maximum of 14 days.
Scheduled message scenarios:
| Scenario | Result |
|---|---|
| Message scheduled 1 March, expires 3 March. Customer opens app 2 March. | Message shown. |
| Message scheduled 1 March, expires 3 March. Customer opens app 10 March. | Nothing shown — message expired. |
| Message A (1 March, expires 3 March), Message B (5 March, expires 7 March). Customer opens app 6 March. | Message B shown — most recent and within TTL. Message A expired and ignored. |
| Message A (1 March, expires 3 March), Message B (5 March, expires 7 March). Customer opens app 8 March. | Nothing shown — most recent message (B) expired. Message A not surfaced as fallback as also expired. |
Triggered messages
Triggered messages are sent in real-time in response to a customer action or event.
- Triggered messages have a TTL of 2 minutes. If the message is not fetched within 2 minutes of being sent, it expires and is not shown.
- Multiple triggered messages can be displayed within a session — if a customer performs multiple trigger actions (e.g., multiple deposits), each can generate a message shown in sequence. Each message has its own 2-minute TTL.
- On mobile, triggered Overlay Messaging requires push permission to have been granted by the user. Customers who have not granted this will not receive triggered overlays on mobile.
For guidance on setting up triggered campaigns, see Creating Event-Triggered Campaigns.
Setting up Triggers for Web and Mobile
Because Overlay Messaging is cross-platform, triggers must be configured to fire correctly across both web and mobile surfaces.
-
Web events are typically reported via the Web SDK using
reportEventcalls on your site. - Mobile events are reported via the Mobile SDK on iOS and Android.
To ensure a triggered Overlay Messaging campaign reaches a customer on whichever surface they're currently active on, the same trigger event must be reportable from both your web integration and your mobile SDK integration. If a trigger is only wired up on the web, mobile customers will not receive triggered overlays, and vice versa.
Work with your development team and CSE to confirm that all trigger events intended for use with Overlay Messaging are implemented on both surfaces before going live.
Campaign execution Options
Overlay Messaging supports the full standard suite of Optimove campaign execution capabilities.
| Capability | Supported |
|---|---|
| Conditional Execution | ✓ |
| Delayed Execution | ✓ |
| Uncompleted Sequence | ✓ |
| Server-side Events | ✓ |
| Frequency & Scheduling Settings | ✓ |
| Triggered Campaigns | ✓ |
| Scheduled Campaigns | ✓ |
| Mapped/Hashed IDs | ✓ |
Definitions:
- Conditional Execution — Adds a real-time eligibility check at the point of sending. Optimove coordinates with your internal systems via API to confirm whether each customer should receive the campaign at execution time. Useful for compliance checks, promotion activation, or any scenario where eligibility may change between campaign setup and send time.
- Delayed Execution — Sends the message after a defined delay from the point the campaign trigger fires. Available within the triggered campaign setup. See Creating Event-Triggered Campaigns.
- Uncompleted Sequence — Re-targets customers who entered a campaign flow but did not complete the intended action.
- Server-side Events — Triggers campaign delivery based on events reported server-side, rather than from the SDK.
- Frequency & Scheduling Settings — Controls how often a customer can receive messages and within what time windows campaigns are active.
Creating an Overlay Messaging campaign
Overlay Messaging campaigns are created in Optimove's Campaign Builder. The creation flow follows the same steps as for any other channel. The following articles cover the full process:
- Drafting a Campaign — saving a campaign in progress
- How to Create a Campaign — the core campaign creation walkthrough
- Creating Event-Triggered Campaigns — for real-time triggered delivery
- Using Conditional Campaign Execution — adding eligibility checks at execution time
When selecting the channel during campaign setup, select Overlay Messaging.
Multi-brand campaigns
If you are running a campaign across multiple brands, each brand must be added individually when setting up the campaign in Campaign Builder. A single campaign configuration does not automatically broadcast to all brands — you need to select and configure each brand during campaign setup.
Template Editor
Overlay Messaging templates are created using Optimove's visual editor (pop-up mode). An HTML editor option is also available for teams who prefer to work directly in code.
Templates are multi-brand and cross-tenant: a single template can be used across brands and tenants, reducing duplication for clients operating multiple properties.
Personalization with Liquid
You can personalize message content using Liquid, Optimove's templating language. Liquid is available in both the visual and HTML editors, allowing you to write personalization logic directly alongside your content without switching to a separate mode.
Liquid allows you to:
- Insert customer attributes (e.g., first name, loyalty tier, account balance)
- Apply conditional logic to show different content to different customers within a single template
- Use content functions such as upper/lower/title case formatting
For Liquid syntax and usage guidance, refer to the Personalization Tags and Conditional Language articles on Academy.
Data Connections
Data Connections allow you to pull in dynamic external data at the point of message delivery — for example, a live balance, an active promotion, or a personalized product recommendation. Data Connections are accessed from within the personalization modal in the template editor.
For an overview of compatibility and setup, see the Data Connections Overview and Channels & Data Connections Compatibility Overview.
Smart preview
Smart preview lets you see how a message will render for a specific customer record, so you can verify that personalization tags and conditional logic resolve as expected before sending.
Send test
You can send a test message from the template editor to preview how it appears on the device before going live. Send test supports multi-brand, allowing you to test the same template across different brand configurations in a single step.
Rendering
Web and mobile share a common renderer — what you see in the campaign editor preview accurately reflects how the message will appear on both platforms. On the web, the overlay uses Shadow DOM for CSS isolation, meaning your website's styles do not affect the message, and the message's styles do not affect your page.
Metrics
Overlay Messaging reports the following metrics, aggregated across web and mobile:
| Metric | Definition |
|---|---|
| Delivered | The message was fetched by a device. A single message may record multiple deliveries if fetched across more than one device before being dismissed. |
| Opened | The message was displayed to the customer. |
| Clicked | The customer clicked a CTA button within the message. |
| Closed | The customer dismissed the message using the close (×) button. |