Personalized images are straightforward for one brand running one campaign. The difficulty starts at eleven clients in seven industries, each with their own brand rules, their own email platform, and data of wildly varying quality.
The failure mode is not technical. It is that the work multiplies faster than the process does, and by month four nobody can find the template that produced last quarter's campaign.
Here is how agencies that do this well tend to structure it.
The multiplication is the problem
Count the actual surface area. Twelve clients, three or four campaigns a quarter each, two or three image variants per campaign. That is somewhere north of a hundred distinct assets a quarter, each belonging to a specific brand, built on specific data, and needing to be findable months later when the client asks for "the one we did in spring."
The instinct is to solve this with folders. Folders help, but they do not address the actual risk, which is subtler and worse: a design built for one client being reused for another. It usually happens under time pressure, by duplicating something that was close enough, and it is the kind of mistake that ends relationships.
So the first structural decision is not about organization. It is about isolation.
Separate the template, the brand, and the data
Most of the mess comes from these three being fused into one object. Pull them apart and the whole thing gets more manageable.
The template is the layout - where the personalized element sits, how the composition works, what happens when the value is long. This is the part with genuine reusable craft in it, and it is not client-specific. A "name on a certificate" layout or a "first name over a hero image" layout works for anyone.
The brand is the styling - colors, fonts, logo, tone. This is entirely client-specific and it is the thing that must never leak between accounts.
The data is the input - which field goes where, what happens when it is missing, where it comes from.
Once these are separate, a new client campaign becomes: take a proven layout, apply their brand, point it at their data. That is a different job from designing something from nothing, and it is the difference between an agency that scales this and one that doesn't.
Isolate client work properly
Folders with client names are the minimum. What actually prevents the cross-contamination problem is structural separation - each client's assets in their own space, so reaching into another client's material requires a deliberate act rather than an autocomplete.
If your tooling supports per-client projects or workspaces, use them from day one rather than retrofitting when it hurts. If it doesn't, an enforced naming convention is the fallback, and it needs to be genuinely enforced.
A convention that survives contact with reality:
CLIENT_CAMPAIGN_ASSET_VERSION
ACME_Q3Renewal_HeroBanner_v2
Client first, because that is how you will search. Version explicit, because "final_final" is not a version. Date optional but useful for anything seasonal.
The test of a naming scheme is not whether it looks tidy. It is whether someone who did not build the asset can find it in eight months when the client asks.
Expect a different email platform for every client
This is the part that catches agencies out. One client is on Klaviyo, one is on Mailchimp, two are on HubSpot, and one is on something a previous agency chose in 2019.
This is why URL-based image personalization suits agency work particularly well. An image that is just a URL with parameters works anywhere that sends HTML email, because every platform can put an image tag in a template and substitute a merge field. You are not integrating with five different systems - you are producing a URL and letting each platform do what it already does.
The only thing that changes per client is merge tag syntax:
| Platform | Merge tag |
|---|---|
| Klaviyo | {{ first_name\|default:'there' }} |
| Mailchimp | *\|FNAME:there\|* |
| ActiveCampaign | %FIRSTNAME% |
| HubSpot | {{ contact.firstname }} |
Worth keeping a one-page reference for the platforms you actually work with, because getting this wrong produces an image with a literal merge tag printed on it, sent to a client's entire list. It is a five-second check and a very bad mistake.
Assume the data quality varies enormously
Some clients maintain their lists carefully. Others will hand you a CSV with names in block capitals, email addresses in the name field, and 300 blank rows.
You cannot fix this at the client level, so build the defense into the template.
Set a fallback for every personalized field. Not "there" as a universal answer - something appropriate to the design. A greeting can fall back gracefully; a certificate cannot, and should probably fail loudly instead so somebody notices.
Design for the longest plausible value, not the average one. The longest name on a five-thousand-row list is the one that breaks the layout, and it is guaranteed to belong to someone important.
Do a data pass before every send, not just the first one. Lists degrade between campaigns.
Agree with the client whose job this is. In writing, ideally. "Client supplies clean data" and "agency cleans data" are very different scopes and the difference is billable.
Build review in, but not editing
Clients want to see the work. Very few of them should be able to change it.
The pattern that works is a preview with real data - three or four genuine records including the awkward ones - shown for approval before the send. What you are avoiding is the client having edit access to a live template, because a well-meaning tweak to a shared design at 6pm on a Thursday will propagate somewhere nobody expected.
Two practical details:
Show them real records, not "John Smith". The client knows their data. If something looks wrong they will spot it immediately, and that is the entire value of the review.
Get approval on the template, not on every image. At volume, approving individual outputs is not possible and asking for it creates a bottleneck that will be blamed on you.
Standardize what you can, vary what you must
The agencies that handle this well are strict about a small number of things and relaxed about everything else.
Worth standardizing: naming conventions, the pre-send checklist, fallback behavior, the approval step, where assets live, and which layouts you reuse. These have no upside from variation and a lot of downside.
Worth letting vary: anything genuinely brand-specific, and anything driven by the client's own systems. Trying to force twelve clients onto one visual approach produces work that looks like your agency rather than like their brand, which is not what they are buying.
A useful signal: if you find yourself building a bespoke process for a client, ask whether that is a fee conversation. Sometimes it should be. Bespoke process is real cost that gets absorbed silently.
Know which requests to push back on
Two come up repeatedly and both are worth handling early.
"Can we personalize on something we don't have data for?" The answer is no, and the useful follow-up is what data they do have. Clients often ask for the thing they imagine rather than the thing available, and a five-minute conversation about their actual fields usually produces a better idea than the original request.
"Can we make it more personalized?" Usually this means "more fields," which tends to make things worse - a cluttered image with four data points performs less well than a clear one with one that matters. The honest answer is that relevance beats quantity, and that testing which single element matters is a better use of the budget. Our guide to A/B testing personalized images covers how to settle that with evidence rather than opinion.
Frequently asked questions
How do agencies manage personalized images across multiple clients? By separating the template layout from the client's branding from the data source, keeping each client's assets structurally isolated, and standardizing process rather than design. Reusable layouts get re-branded per client rather than each campaign starting from scratch.
How do you stop one client's branding appearing in another's campaign? Per-client projects or workspaces, so reaching into another account's assets is a deliberate act. Where tooling doesn't support that, an enforced client-first naming convention is the fallback - but it depends on discipline rather than structure.
What if every client uses a different email platform? Use image personalization that works by URL rather than by platform integration. Any system that sends HTML email can render an image URL with a merge field substituted, so the only per-client difference is merge tag syntax.
Who is responsible for data quality, the agency or the client? Whoever you agreed in writing. It is a meaningful scope difference and worth settling before the first campaign rather than during the third.
Should clients be able to edit templates? Generally no. Review and approval, yes - editing a live shared template invites changes that propagate unpredictably. Show them a preview built from real records instead.
How many image variants should a campaign have? Fewer than clients usually ask for. One well-chosen personalized element normally outperforms four competing ones, and testing which element matters is a better investment than adding more.
How do you keep track of what was produced months later? A naming convention that puts the client first and states the version explicitly, applied without exceptions. The test is whether someone who didn't build it can find it later.
Where the tooling fits
None of the above depends on a particular product - it is process, and the agencies that do this well would do it well with most tools.
Where tooling matters is the two structural points: whether client work can genuinely be kept separate, and whether the images work across every platform your clients happen to use. OKZest generates images from a URL, which makes it platform-agnostic by design - the same asset works in Klaviyo, Mailchimp, HubSpot or anything else that sends HTML email, with only the merge tag changing.
Create a free account, no credit card required, or book a call if you want to talk through a multi-client setup before committing to anything.
Related reading: personalized image software for agencies, A/B testing personalized images, explaining the value of personalized images to a client.