Loyalty points and tiers
Each member's tier, points and number, with a bar to the next tier. A rule draws each tier in its own color.
Loyalty program emailsEach subscriber's name, code, points or deadline, drawn into the picture at the moment the email opens.
Free for 5,000 opens a month. Pictures drawn for each recipient come with Growth and Agency.
Anything you hold per subscriber can be set into the pixels, in your fonts and colors, and look the same in every mail app. These are real renders from the engine, one template each, and every one has its own guide.
Each member's tier, points and number, with a bar to the next tier. A rule draws each tier in its own color.
Loyalty program emails
One single-use code per subscriber, a QR code of it for the till, and the clock to its own end date.
Unique coupon codes
Each attendee's ticket number as text and as a QR code, ready to scan at the door.
QR codes in email
Lessons done, a goal raised or a profile completed, drawn as a bar from each person's own number.
Progress bars in email
Each referrer's own code and how many friends have joined, with the reward still to come.
Referral emails
A named certificate of completion for every attendee, with a credential ID and a QR code to check it.
Certificates by email
Each customer's own orders, favorite category and points for the year, in one picture.
Year in review emails
One row per guest becomes one pass, with the name, company, seat and a code, the way a mail merge would.
Image mail merge
The balance, the clock to the day it lapses, and how far they are from the next reward.
Hyper personalization
The product, its price and the time the hold has left, set into one picture.
Personalized product recommendations
Their name in the artwork, set in your typeface, with a fallback for the rows that have none.
Birthday email templates
A low-stock line for the size or variant each person looked at, from the value on their row.
Real time personalizationNothing about the person travels in the image address. The values stay in EmailTimer.app, and the picture is drawn from them when the mail app asks for it.
Add text, image, QR code, progress bar and timer layers, and declare a variable for each value that changes, with its fallback.
Upload a recipient list of up to 500,000 rows, or send the values through the API. Each row is checked, and a bad date is reported by its line.
Each row gets its own signed image address, carrying an opaque token rather than a name. Add it to a contact field in Klaviyo, Braze or whichever platform sends.
Lifecycle teams send millions of personalized pictures a month. The limits and the failure modes are written down, so you can plan a send rather than discover them during one.
By Danish Mohammed. , updated 7 min read
Image personalization in email means each picture is generated at the moment a recipient’s mail client asks for it, with that person’s own values drawn into the pixels rather than laid over the top in HTML. EmailTimer.app renders these on the same engine that renders its countdown timers, so a name, a voucher code and a live deadline can arrive as one picture on one plan. The free plan covers 5,000 opens a month and carries no watermark.
Nothing is baked at send time. The email carries an image address, the recipient’s client requests that address when the message is displayed, and the renderer composes the picture in that request.
Drawing at the request is what makes a countdown possible at all, and it is the same mechanism that lets an image reflect a value you uploaded minutes before the send. It also means the picture is subject to whatever the mailbox does between the send and the read. Apple’s privacy page states that “Protect Mail Activity downloads remote content in the background by default”, regardless of engagement, so for those recipients the fetch happens at delivery. Google Workspace documents that “Gmail uses Google’s secure proxy servers to serve images”. Neither of those changes a name or a price, which do not move. They matter for a clock, and the email client table covers what each one does.

| What you want to change | How it is done | Example |
|---|---|---|
| Text in the picture | A text layer bound to a variable | A greeting with the subscriber’s first name |
| Which picture appears | An image layer whose source is chosen from your uploaded assets | A product shot that matches the category they browsed |
| A colour | A rule that swaps a colour by value | A loyalty tier drawn in its own brand colour |
| Whether a layer appears at all | A rule that shows or hides a layer | An early-access pass that only VIPs see |
| A whole layer set | A named variant, selected by rule or by a parameter | A different composition per market |
| A scannable code | A QR layer whose payload comes from a variable | A per-person claim link |
| A measured value | A progress bar or a star rating driven by a number | Points to the next reward, or an average review score |
| A live deadline | A timer layer | Hours left in the offer |
Rules are an ordered list, each reading IF <variable, country, device or date> <is, is not, greater than, less than, contains, empty or not empty> <value> and then acting. Values pass through transforms before they are drawn: date and number formatting, currency, upper, lower and title case, truncation with an ellipsis, simple arithmetic, and string concatenation.
Every variable is declared with a type and a fallback behaviour, so a missing value can draw a default, hide its layer, or hide the whole personalization group it belongs to. That declaration is the difference between a template that degrades and one that ships a gap where a name should be.
Country and device conditions are marked best-effort in the editor. An image proxy sits between you and the reader on several major clients, so the signal is not reliable. The editor says so on the screen where you set the rule, rather than in a footnote.
A personalized image needs the recipient’s values at request time, and the obvious way to supply them is to put them in the address. That means an email address or a name sitting in plain text in a URL, in a message, in a proxy log, and in whatever forwards it.
The alternative here is a recipient set. Upload a CSV of up to 500,000 rows, and the job parses and validates it with a per-row error report, so a file with three bad dates in 40,000 lines tells you which three. Each row gets an opaque token. The address then carries r=tok_… and nothing else about the person, and the renderer looks the values up server-side.
Tokens are available on every plan that includes recipient sets from the first day, and the documentation states the trade-off plainly rather than burying it. The full parameter reference is in the merge tags documentation.
This category has historically sold the clock and the picture as two subscriptions. A marketer who wants a flash sale deadline and the subscriber’s first name and a voucher code in the same image was paying twice for one idea.
Here the prices are published in US dollars, with no sales call. Free covers 5,000 opens a month. Starter is $24 for 250,000. Growth is $54 for 1,000,000 and adds the API and per-recipient addresses. Agency is $164 for 5,000,000 and adds white-label image domains. Going over does not break a campaign: warnings arrive at 80 and 100 percent of the allowance, and past 110 percent new renders carry a small corner watermark. The current figures are on pricing.
For context on what the rest of the market publishes. NiftyImages, read on 23 September 2026, prices Starter, Growth and Scale against a slider of opens a month: Starter is $59 monthly for 25,000 opens a month, or $564 a year, rising to $549 monthly at 500,000. Its developer API sits on an Enterprise tier priced as a custom annual quote with no published number. The rest of this paragraph was checked on 17 September 2026. Zembula’s pricing page 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 publishes no pricing at all; its pricing path returns a 404, and every call to action on the product pages is a demo request or a contact form. Each of the three has a page of its own here: NiftyImages, Zembula and Movable Ink.
Those are three different businesses, and two of them are aimed at buyers this product is not aimed at. The comparable number is the one at the bottom of the range, which is where the gap sits.
Personalized images here are composed from values you supply and assets you have uploaded. There is no arbitrary external fetch at render time, which is a deliberate security position rather than a roadmap gap. Live values come from places you set up: a data store or your own web endpoint, the weather, a map and a live counter. The live data page says exactly what the honest version of that looks like.
There is also no SOC 2 report and no ISO 27001 certificate, and the security page lists what the product actually does instead, in enough detail to be checked.
Try a timer without an account in the countdown timer generator. The per-platform syntax is in the merge tag guide, and the batch endpoint is in the API reference.
A merge tag in body text is plain text styled by HTML and CSS, which mail clients render inconsistently and which cannot sit inside a designed composition. A value drawn into an image is pixels, so it looks identical in every client and it can be positioned, styled and masked like any other element.
Yes, and that is the reason this product exists as one product. A template with a timer layer and text layers renders as an animated GIF carrying both.
The digits and the fixed artwork of a timer are drawn once and reused, so an open copies those pieces into the frames rather than drawing every letter again. There is no render time measured in production to quote yet, so this page does not quote one. The image service also answers every request with a valid picture rather than an error, so a slow dependency degrades to a fallback rather than to a broken image icon.
Not for a whole-send image or for a CSV-driven one, both of which are editor and upload work. You need code only if you want to mint addresses from your own systems, which is what the API is for.
The variable’s fallback decides: a default value, a hidden layer, or a hidden group. Set it while you are building rather than after somebody reports a gap.
Drawing a recipient name, a code or a balance into the pixels, and what survives a proxy cache.
7 min read
A bulk certificate generator turns one design and a list of names into one certificate each. How the methods compare and how to email each attendee theirs.
10 min read
Hyper personalization in email, without the slideware: what can differ per recipient in one send, what needs live data, and a template to copy.
8 min read
Loyalty program email examples from welcome to anniversary: when each is sent, the member data it needs, and one image showing each member their points.
8 min read
Image mail merge in Word with IncludePicture, step by step, and the email version: a recipient list where each row gets its own image address.
8 min read
A progress bar GIF for email that drains with a live clock, or a bar drawn from each reader's own number at open. What each one shows, with examples.
9 min read
A QR code in email works for tickets, check-in and in-store offers. How to size it, how people scan it, and how to give every recipient their own code.
7 min read
Referral email templates for the invite, the progress update, the reminder and the reward, with each referrer's code and count drawn into the image.
6 min read
A unique coupon code is a single-use code issued to one customer. Where codes come from, how to put one in each email, and what to do when they run out.
7 min read
What variable data printing is, how a VDP job is built from a data file and a template, and how to run the email half of a mailing from the same file.
8 min read
How to build a year in review email that shows each customer their own orders, favorite and points in one image, with a template and send timing.
10 min read
Real time personalization in email: what is decided at send, what is worked out at open, what needs a live feed, and examples you can copy.
7 min read
The merge tag syntax for ten email platforms in one table, plus the signing rule that decides where a merge tag can and cannot go in an image address.
9 min read
Four birthday email templates to copy, with subject lines, preheaders and body copy, plus an image that draws each subscriber's name and gift deadline.
10 min read
Personalized product recommendations in email: your platform picks the product, and one image draws its picture, name and price for each shopper.
Every hub on this site is listed on guides and articles.
The free plan covers 5,000 opens a month with no card. Starter is $24 a month for 250,000.