Real time events
Your real-time data is live. Now put it to work.
Your events are streaming in. Here is what you can build with them — campaigns, enriched customer data, and creative that adapts to what just happened.
Create any type of campaign, from scheduled communications to real-time triggered response, and enhance them with offer decisioning, send-time optimization, and more.
4 stories
Create new attributes from incoming events to enrich customer profiles and enable smarter targeting.
1 story
Build a creative once, then let live event data adapt the copy, offer, and image for each channel and each customer: personalized to what just happened.
1 story
Campaigns · 01
Day 0 Streams — respond at registration
The first moments after registration or KYC are the most critical for conversion. Day 0 Streams enter customers instantly on a trigger and carry them into day 1 and beyond in one journey.
Campaigns · 02
Real-time triggered campaigns
Any streamed event can launch a campaign the moment it lands — no batch cycle, no waiting for the next scheduled run.
Campaigns · 03
Complex scenarios with Live Formulas
Live Formulas turn recent behavior into a running calculation, so a campaign can fire when a customer deposits more than $1,000 within a 12-hour window.
Campaigns · 04
Scheduled campaigns on web & app activity
Segment on what customers did on your site or in your app, and combine it with real-time attributes to keep scheduled campaigns accurate at send time.
Creative · 01
Event-based creative in every channel
Liquid personalization pulls straight from the triggering event, so the same template speaks to each customer with what just happened.
Enrich data · 01
Real-time attributes — accumulated
Fields on the customer profile that update throughout the day. Rather than waiting for the daily process, you see a customer's actions aggregated as they happen — at a maximum frequency of every minute.
Campaigns · 01
Day 0 Streams — respond at registration
The first moments after registration or KYC are the most critical for conversion. Day 0 Streams enter customers instantly on a trigger and carry them into day 1 and beyond in one journey.
1Set entry to trigger-based
Under Entry Criteria, choose "All customers who activate the entry trigger" — real-time entry, no segmentation at entry.
2Define the entry trigger
Add a Trigger Split as the first step: registration, KYC completion, first deposit, or any custom behavioral event.
3Attach the first triggered campaign
Engage while intent is highest, straight off the trigger split path.
4Follow up with Wait for Event splits
Wait minutes or hours for an action; Optimove builds the Yes/No branches for you.
5Transition with Wait Until Day
From day 1 onward, you can add segmentation and scheduled campaigns in the same Stream.
6Measure it
Set the Stream objective to KPI Based — for a welcome or deposit journey, typically Number of Deposits.
Next story 1 of 6
A basic Day 0 Stream — trigger entry, first campaign, then a transition into Day 1
Conversion-based branching — wait a set window for the action, then follow the Yes or No path
Rapid follow-ups — repeated short waits with a campaign on each unconverted path
Campaigns · 02
Real-time triggered campaigns
Any streamed event can launch a campaign the moment it lands — no batch cycle, no waiting for the next scheduled run.
1Pick the event
Registration, deposit, purchase, page visit, or any custom event you Stream in.
2Filter on event attributes
Apply conditions on the event parameters to control exactly who qualifies.
3Attach the campaign
Fire email, push, SMS, WhatsApp, or web the instant the trigger evaluates true.
4Personalize from the trigger
Day 0 personalization uses the attributes carried on the trigger event — always set fallback values.
Trigger split — the event that launches the campaign, with the campaign attached to its path
Wait for Event split — hold the customer for a set window, then branch on whether they converted
Campaigns · 03
Complex scenarios with Live Formulas
Live Formulas turn recent behavior into a running calculation, so a campaign can fire when a customer deposits more than $1,000 within a 12-hour window.
1Define the formula
Data Studio → Live Formulas. Event: Deposit, Parameter: Amount, Aggregation: sum, Time window: last 12 hours.
2Create the formula-based event
Data Studio → Formula-based Events. It fires right after the original event and carries every formula value as a parameter.
3Set up the trigger
Realtime Triggers → Create New Trigger. Select the formula-based event and set total_deposits_12_hours > $1000.
4Know the limits
Up to 20 live formulas; each uses the most recent 1,000 events. Currently in closed beta — talk to your CSM.
Live Formulas in Data Studio — where running calculations on recent behavior are defined
Formula setup — pick the event, the parameter, how to aggregate it, and over what time window
The trigger condition — compare the formula value against a threshold to launch the campaign
Campaigns · 04
Scheduled campaigns on web & app activity
Segment on what customers did on your site or in your app, and combine it with real-time attributes to keep scheduled campaigns accurate at send time.
1Segment on activity
Web and App Activity criteria: type of history, activity type, condition, and time frame — page visits, product viewed, deposit page visited, app screen viewed.
2Or on the absence of it
Select customers "with no activity" — no visits to a category, or no activity at all, in a given period.
3Keep the group fresh
Activity data updates hourly, so use Re-evaluate or Run anyway. Real-time attributes in a group turn Re-evaluate on by default.
4Use it for
High-intent targeting, abandoned cart recovery, and re-engaging app users who have gone quiet.
Customers with activity — attribute, condition, and time frame
Customers with no specific activity
Customers with no activity at all
Creative · 01
Event-based creative in every channel
Liquid personalization pulls straight from the triggering event, so the same template speaks to each customer with what just happened.
1Output tags
{{ user.First_Name }} for profile data, {{ event.Amount }} for trigger data — double braces output, {% %} controls logic.
2Use the Personalization Picker
In the visual editor, click Personalization; in the HTML editor, right-click → Personalizations. Each row shows the exact Liquid before you insert it.
3Event data category
A dedicated chip in the Picker exposes parameters from the event that triggered the campaign — triggered campaigns only.
4Reusable content blocks
Inserted as references, not copies — update the block in Content Studio and every template follows.
5Preview before you ship
Liquid is processed at send. Preview with a test customer, and always set fallbacks for data that may be missing.
The Personalization Tags tab, filtered by category chips
Content Blocks — inserted as a reference
Inserting a tag from the editor toolbar
Enrich data · 01
Real-time attributes — accumulated
Fields on the customer profile that update throughout the day. Rather than waiting for the daily process, you see a customer's actions aggregated as they happen — at a maximum frequency of every minute.
1Built on events, for existing customers
Attributes listen for incoming events such as page_visit or order_placed and update a value on the profile. They can only update existing customers, never create new ones, and are completely separate from the daily process.
2Pick a calculation type: Lifetime
Aggregates over the customer's entire history — Lifetime Total Spend, Total Logins.
3Or Sliding window
Aggregates over a recent period only — 1, 2, or 7 days. Ideal for short-term campaigns, such as pages viewed in the last 24 hours.
4Automatic attribute sets
Choose a mathematical calculation on a Lifetime attribute, and the Min, Max, Count, and Sum variants are created alongside it automatically. Latest Value is the exception — it generates nothing extra.
5Name and format it
Name: 30 characters or less, starting with a letter. Format: Number, Currency, or String — the format decides which aggregations are available.
6Define what to calculate
Calculate (the function), Of Event (the event to track), Return the value (the event parameter) and, for sliding windows, the timeframe.
7Filter with a condition
Optional — the attribute only updates when the event matches. Count order_placed, but only where coupon_code = SALE25.
8Six aggregation functions
Latest Value, Sum, Count, Average, Minimum, and Maximum. Number and Currency support all six; String supports Latest Value and Count only.
Previous 6 of 6
Where to find them — the Real-Time Attributes screen, and the entry point for a new one
A Lifetime attribute — Latest Value on an event parameter, filtered by a condition
A Sliding window attribute — sum of an event parameter over the latest 48 hours