How to Add Personalized Images to Klaviyo and Mailchimp Campaigns Without a Developer

Email marketers running campaigns in Klaviyo, Mailchimp or both for different clients often hit the same wall: they want the image in the email to show the recipient’s name, company, offer or location, but every path seems to require a developer, a native plugin that only works in one ESP, or hours of manual Canva edits.

The practical alternative is open-time image personalization. You build one template, get a standard image URL that contains merge tags, drop that URL into the email as a normal <img> tag, and the ESP substitutes the recipient’s data when the email is sent. The image is generated the moment the recipient’s email client requests it (usually on open). This works the same way in Klaviyo and Mailchimp, and it needs no custom integration or developer for ordinary campaign work.

This guide walks through the exact steps for both platforms, what to watch for with data quality and fallbacks, and how the approach compares with tools that are more locked to one ESP.

Why open-time URLs beat platform-specific plugins for multi-client work

Klaviyo and Mailchimp both support custom image URLs and their own merge-tag syntax. When you put a URL like this in an email:

<img src="https://media.okzest.com/img?c=ABC123&i=XYZ456&name={{ first_name }}&company={{ organization }}">

the ESP replaces {{ first_name }} (or the Mailchimp equivalent) with the real value before the message leaves their system. The image server receives the completed URL and renders the personalized graphic on the fly.

This is ESP-agnostic by design. The same template and URL pattern works in Klaviyo, Mailchimp, ActiveCampaign, HubSpot, Brevo and most other platforms that let you use merge tags inside an image source. You do not maintain separate designs or upload batches of pre-rendered files. You also do not need a developer to “connect the API” for standard campaign sends—the no-code editor produces the URL, and the ESP does the rest.

Tools that rely on a native app or plugin inside one ESP force agencies and multi-brand teams either to standardize every client on the same platform or to keep parallel workflows. Open-time URLs avoid that.

Step-by-step: personalized image in a Klaviyo campaign or flow

  1. In the OKZest editor, create or open your image template. Add dynamic text layers for the fields you want (first name, company, offer code, city, etc.). Set fallback values so the image still looks correct if a field is blank.

  2. Copy the generated image URL. It will contain placeholders that match common merge-tag styles. For Klaviyo, replace the placeholders with Klaviyo’s syntax, for example {{ first_name }} or {{ person.organization }}.

  3. In Klaviyo, open the email template (campaign or flow). Insert an image block and switch to the source or dynamic image option. Paste the full URL into the image source field.

  4. Preview with real profile data. Klaviyo’s preview should show the merge tags resolving. Send a test to yourself or a colleague whose profile has the fields populated.

  5. For flows, the same URL works inside any email step. Because the image is generated at open time, you can update the template later (new offer, new background, fixed typo) and people who reopen the email will see the current version.

Klaviyo also supports dynamic images via its own “Dynamic Image” block that can pull from a property. The open-time URL approach is usually simpler when you want full control over the visual design and multiple text overlays.

Step-by-step: the same approach in Mailchimp

Mailchimp uses its own merge-tag format (*|FNAME|*, *|COMPANY|*, etc.).

  1. Build the template in the OKZest editor exactly as above.

  2. When you copy the image URL, replace the placeholders with Mailchimp tags: *|FNAME|*, *|LNAME|*, *|COMPANY|*, or any custom merge field you have defined.

  3. In the Mailchimp email builder, add an image block, choose “Insert image via URL”, and paste the completed URL.

  4. Use Mailchimp’s preview with a real contact or the test-data option to confirm the tags resolve.

  5. The same URL pattern works in classic campaigns, automations and customer journeys. Open-time generation means late changes to the template appear for anyone who has not yet opened (or who reopens) the email.

Mailchimp’s merge tags are case-sensitive and must match the exact field names in your audience. Test with a contact that has empty fields to confirm your fallbacks look acceptable.

Data quality, fallbacks and bulk updates from a spreadsheet

The most common reason personalized images fail is missing or dirty data. Always set a sensible fallback in the template (“there”, “your team”, a generic offer, etc.) so the image never shows raw merge-tag syntax or a blank space.

For one-off campaigns or when you need to personalize from a list that is not already in the ESP, you can export a spreadsheet, map columns to the merge fields, and either:

  • Upload the cleaned list into Klaviyo or Mailchimp as a new audience/segment, or
  • Use the OKZest API or a Zapier/Make flow to generate image URLs in bulk and push them into a custom property that the email then references.

The no-code URL method is sufficient for most day-to-day campaign work. The API (available on every OKZest plan) and MCP integration become useful when you want an AI assistant or an automation to create or update image URLs at scale.

Pricing that matches open rates instead of sends

Because the image is only generated when it is requested, you are charged for images served, not for every email sent. If you send 10,000 emails and 3,500 people open them, you typically pay for roughly 3,500 images (Apple Mail pre-fetches can make the count slightly higher than reported opens).

OKZest’s free plan includes 2,500 watermarked images per month with no credit card required, which is enough to test the full workflow in a live Klaviyo or Mailchimp campaign. Paid plans remove the watermark and scale by image volume; the Micro plan starts at $12 per month for 500 images. All plans include the visual editor, multiple merge tags, dynamic images, website screenshots, the API, and team roles.

This is different from credit-based or seat-based systems that charge regardless of whether anyone opens the email, and from tools that require a large monthly minimum before you can test with real client data.

What this does not replace

Open-time personalization is excellent for names, offers, locations, product images and simple data-driven overlays. It is not a full design system or a video editor. If you need complex multi-frame video, advanced approval workflows across dozens of stakeholders, or deep integration with a warehouse-native CDP, you may still combine it with other tools. For the common case of “make the hero image in this Klaviyo or Mailchimp email show the person’s name and company,” the URL-plus-merge-tag method is usually the fastest path that does not involve a developer.

Next step

Create a free OKZest account (2,500 watermarked images per month, no credit card), build a simple name-and-company template, and drop the URL into a test campaign in Klaviyo or Mailchimp. You can see real opens and the rendered image within minutes, then decide whether to remove the watermark for a live client send.

The same template can later be reused for ActiveCampaign, HubSpot or any other ESP that supports custom image URLs and merge tags—keeping your agency or multi-brand workflow in one place.