Menu

Real time personalization in email: what is live when the reader opens

Phone lying in the dark with its lock screen clock glowing
Photo: Noah Erickson, Pexels

Real time personalization in email means some part of the message is decided when the reader opens it, not when you send it. In practice only the image can do that, because it is fetched at open. What it can work out by itself is the time: a countdown, or a rule that switches content at a set hour. Anything else is either fixed at send or needs a live feed.

That distinction is the whole of image personalization for email seen through a clock. The rest of this page separates the three cases, shows what each looks like in a real send, and says plainly which side of the line EmailTimer.app is on. If the question is how far per-recipient values go without any live data, read hyper personalization in email first.

What is real time personalization?

The definitions that rank are written for websites and apps. Braze calls it “the ability to tailor content, messages, and experiences based on streaming data”. Shopify says it “instantly adapts your online store’s content to deliver each customer a unique shopping journey”. On a web page that is literal: the page is built while the visitor waits.

Email breaks that. A message is assembled and sent, and then it sits in an inbox for minutes or days. The examples on those pages that involve email are really about the trigger. Braze’s case studies sync attributes “at the time of send”, and Shopify’s are abandoned cart reminders and sign-up codes. That is fast, event-driven sending, and it is worth doing, but the body of the email is frozen the moment it leaves.

So “real time” in email covers two different jobs:

  • Real-time triggering. The email goes out seconds after an event, with values that were current at that moment. Your email platform does this.
  • Open time personalization. Part of the email is drawn when the reader opens it, so it can differ between Monday’s open and Thursday’s. Only a remotely loaded image can do this.
Real time personalization in one email image, from send to open. 1, at send: values are fixed, such as name, code, price and the stock count your platform held. 2, at delivery: Apple Mail may fetch the image in the background, before anyone reads it. 3, at open: time left is worked out, and rules on the time of opening pick what to show. 4, never, here: outside data fetched at open, such as live stock, prices or weather.
Four moments in the life of one email image, and what each can decide.

The delivery step is the one people forget. Apple says “Protect Mail Activity downloads remote content in the background by default”, so for those readers the image may be fetched when the message arrives, not when it is read. An open-time decision for an Apple Mail reader can therefore be a delivery-time decision. Apple Mail Privacy Protection and timers has the detail.

Real time email personalization: send time, open time, live feed

Real time email personalization: send time, open time, live feed
Moment What can change Example On EmailTimer.app
At send Every per-recipient value Name, single-use code, points, the price computed for them, today’s stock count Yes, from a recipient list or the API
At open, from the clock Time left, and anything a rule ties to the open time A countdown; a headline that changes when early access opens Yes
At open, from a feed Values that moved after the send The stock count right now, today’s weather where they are No. No outside data is fetched at render

The middle row is where real open time personalization happens without any feed, and it covers more than a countdown. A rule can read the time of opening and then show or hide a layer, change its text, swap an image or a color, or switch to a named variant. Here are patterns you can copy:

Real time email personalization: send time, open time, live feed
Open time pattern The rule Where it is covered
A sale that ends mid-campaign Before the deadline, show the countdown; after it, swap to “This sale has ended” Recurring countdown timer for cut-offs that repeat
An advent calendar From each morning, swap the headline to that day’s offer Advent calendar email
A webinar Before the start, “starts in”; during, “live now”; after, the replay Interactive vs dynamic email
A personal deadline Count to the instant held for that recipient, then show the ended state Evergreen countdown timer

Each of those changes because the clock moved, not because a feed answered. That is why they hold up: there is nothing to be slow or down at the moment an inbox asks for the picture.

What the enterprise vendors actually sell

Three vendors name their modules publicly, and those lists set the expectation people arrive with.

Liveclicker, now part of Zeta Global, publishes fifteen named modules. LiveForecast is described as “Help customers stay dry with live local weather data”. LiveTracker is “Provide live shipping updates and delivery progress”. LiveSocial is “Display live feeds from virtually any social channel”. LiveMap, LivePoll, LiveScrape, LiveCalendar, LiveVideo and LiveTimer each address a separate job. Their framing for the whole product is open-time data “adapting in real time based on factors like device, location, time of day, and any available customer data”.

Zembula lists ten modules including Weather, Polls, Add to Calendar, Countdown Timers and Product Recommendations. Its weather copy suggests using a ten-day forecast “to make sure your product arrives in time for the upcoming weather”. Its pricing page, read on 17 September 2026, is headed “BUILT FOR THE ENTERPRISE” and quotes “$0.07 per 1,000 emails sent annually (paid annually)”, gated on “Sending 1+ billion emails annually”.

Movable Ink is the vaguest of the three in public. Its Studio page describes generating “unique composite images at the moment of engagement”. It names five example blocks with the data source beside each: live pricing from your own ecommerce platform, live ratings and reviews from the Tripadvisor API, a property image from “Your API + Movable Ink”. It publishes no module list and no pricing. The pricing path returns a 404, and every call to action is a demo request or a contact form.

NiftyImages sits between the enterprise tier and the self-serve one. Its features page names Live Local Weather, Live Polls, Geo-Targeted Maps and Social Signals. Its data sources page offers both hosted Data Stores and External Web APIs, with response caching described as “Configurable: none to ~24 hours, or polling schedule”.

Where EmailTimer.app stands today

There is no external fetch at render time. An image layer’s source comes from your uploaded assets or from a recipient set field, and the renderer does not call arbitrary URLs. That is a deliberate security position rather than an unfinished feature, and it rules out the weather, maps, social and scraping modules above.

So the honest version of “live data” here is narrower: put the number your ESP already knows into the image.

That covers more ground than it sounds like. Your platform already holds the stock level it wrote into the campaign and the price it computed for that segment. It holds the loyalty points on the profile, the delivery date the fulfillment system returned, and the cart total from the abandonment event. Every one of those can be a merge value, drawn into the pixels, styled like any other element in the composition.

The one thing the renderer does know by itself is the time. That is why the countdown is genuinely live and the rest is not, and it is a distinction worth keeping straight when you are comparing quotes.

The matrix

The matrix
Capability Sold as a module by What EmailTimer.app does today
Countdown to a deadline Liveclicker LiveTimer, Zembula Countdown Timers, NiftyImages Computed at fetch, in every timer mode, including per-recipient, evergreen and recurring
A number from your own systems All four, as a data feed or API connector A merge value fixed at publish, or one per recipient from a signed address or a recipient set
Product image chosen per person Movable Ink, Liveclicker LiveImage, NiftyImages An image layer that picks one of your uploads by a value or a rule, as on personalized product images
Price or discount per segment Movable Ink Live Pricing, fed from your ecommerce platform A merge value, formatted by the currency transform
Stock level or units left NiftyImages, via a data source A merge value your ESP supplies, plus a rule that hides the layer below a threshold
Loyalty points or tier Liveclicker LiveRender, Zembula A merge value, a progress bar layer, or a color swapped by rule
Weather at the reader’s location Liveclicker LiveForecast, Zembula Weather, NiftyImages Not available. There is no weather source in the product
Map to the nearest store Liveclicker LiveMap, NiftyImages Not available
Live social feeds or counters Liveclicker LiveSocial, NiftyImages Social Signals Not available
In-email polls with live results Liveclicker LivePoll, Zembula Polls, NiftyImages Not available
Shipment tracking status Liveclicker LiveTracker, and Zembula as a separate product rather than an email module Not available as a feed. A delivery date your system supplies is a merge value like any other
Scraping a web page at open Liveclicker LiveScrape Not available, and not planned, because it is an arbitrary outbound fetch

Six rows say no. Publishing that list is more useful than a page that implies otherwise and disappoints someone after they have built a campaign.

How far a value your ESP already knows will get you

Take a low-stock email. The enterprise version calls your inventory service when the message is opened, so a reader on Thursday sees Thursday’s count. The version here passes the count your platform held when the flow ran, so the reader sees the count as of the trigger. For a flow that fires within minutes of the event, those two answers are usually the same number.

Where they diverge is a broadcast opened days later, and the fix for that is a rule rather than a feed. Set a conditional rule so the layer hides when the value falls below a threshold, and write the copy so a slightly stale number still reads as true. “Fewer than 20 left” survives a day. “17 left” does not.

Your size is nearly gone: fewer than 20 left in size M
Rounded copy drawn from a value the platform already held when the flow ran. Fewer than 20 left stays true for a day, where an exact count would not.

The same reasoning applies to price, points and delivery dates. Match the precision of what you draw to the freshness of the data behind it, and the image stays honest without an open-time API call.

Fitness class doing lunges on pink mats in a wood-panelled studio
A class with a few places left is the same case as low stock. Draw a few places left from the value the platform held at send time, not an exact count that will be wrong by the next open. Photo: Pavel Danilyuk, Pexels

How to set it up

  1. Decide which value the picture needs and confirm your platform holds it at send time.
  2. Build the template and add a text layer, a progress bar or a star rating for that value.
  3. Declare the variable with its type and a fallback behaviour, so a missing value hides the layer rather than leaving a gap.
  4. Add a transform if the raw value needs formatting: currency, number, date or title case.
  5. Add a conditional rule for any threshold, so the layer disappears when the number stops being useful.
  6. Publish and read the readiness checks.
  7. For a value that differs per recipient, upload a recipient set or call POST /urls/batch, then set the image src to the contact field holding the signed address. Both are on Growth or Agency.

The per-platform syntax is in the merge tag guide, the parameter reference is in the merge tags documentation, and the batch endpoint is in the API reference. Plans are on pricing and the render guarantees are on features.

Questions and answers

What is open time personalization?

Content in an email that is decided when the image is fetched rather than when the message is sent. Without a data feed, that means anything driven by the clock: a countdown, or a rule that changes the picture at a set time. For Apple Mail readers the fetch can happen at delivery.

Can I show live weather in an email image here?

No. There is no weather data source in the product, and no external fetch happens at render time. Liveclicker, Zembula and NiftyImages all sell a weather module, and their pages are linked in the sources.

Is an open-time API call safer or riskier than a merge value?

It is fresher and it is more fragile. A feed adds a dependency that can be slow or down at the exact moment an inbox is waiting for a picture, which is why response caching appears in every vendor’s documentation for these modules. How this image service handles a large send without one is covered in personalization at scale.

How stale can a merge value be before it misleads?

That depends on how precise the copy is, not on the value. Round the number and add a threshold rule, and a figure from yesterday still tells the reader something true.

What about a live stock counter for a back-in-stock email?

Use the count your platform already has and hide the layer below a threshold. The pattern is covered on the back-in-stock page.

Will external data sources be added?

They are not in the product today and this page will say so until they are. Anything else would be selling a roadmap as a feature, which is the thing this category does too much of.

Sources

Related

Put a countdown in the campaign you are writing now

The free plan covers 5,000 opens a month with no card. Starter is $19 a month for 250,000.