ScreenshotNeo

BlogHow-to

How to Add Personalized Images to Mailchimp Emails

Add a different image for each Mailchimp contact with an image audience field and merge tag, or show image blocks by recipient conditions with Dynamic Content.

By the ScreenshotNeo team4 October 20266 min read

To show a different image to each Mailchimp contact, create an image-type audience field, store that contact’s image URL in the field, and insert the field’s merge tag into the campaign. Mailchimp replaces the tag with the image when the email is sent. If you need to show one of a few image blocks according to recipient data, use Dynamic Content instead. Mailchimp’s personalized-files instructions and Dynamic Content guide describe these approaches.

Choose the right personalization method

Need Use What varies
A unique image for each contact, such as an individual coupon Image audience field and merge tag The image URL stored for each contact
A few alternate image blocks for defined recipient groups or conditions Dynamic Content Whether a block is shown for a contact meeting its conditions

Dynamic Content can be applied to image blocks and can use audience fields, groups, and, in the new builder, tags. Mailchimp documents it as available on Standard or higher. An attached audience is needed to preview its live merge-tag information. Check Mailchimp’s current plan details if availability affects your setup.

Prepare the images and contact mapping

  1. Choose the image for each recipient and use descriptive or numbered filenames so you can match files to contacts.
  2. Upload the files to Mailchimp Content Studio and copy each file URL.
  3. Make a mapping sheet with at least the contact identifier used for your audience and the corresponding image URL. Check for duplicate identifiers and missing URLs before importing.
  4. Keep the image URLs associated with the right contacts when updating your audience. A mismatched row can send a valid image to the wrong person.

Mailchimp lists JPG, JPE, JPEG, GIF, PNG, and BMP as supported formats for personalized image files. Use an image audience field for this workflow so the campaign renders an image rather than a file link.

Create an image audience field

  1. Open the audience you plan to send to and add a new audience field with the image field type.
  2. Give it a clear label, such as “Personalized image,” and note the exact merge tag Mailchimp assigns. Merge tags are case-sensitive.
  3. Set a default value if that suits your audience and campaign. Do not assume a blank value will produce a useful fallback; preview contacts with blank or default values.
  4. Import or update the audience contacts so each record’s image field contains the intended Content Studio URL.

Before uploading, confirm that the identifiers in your mapping match the audience records you intend to update. If you use an import, review its field mapping so the URL column lands in the image field.

Insert the image merge tag in the campaign

  1. Open the campaign in the builder and select the intended audience.
  2. Add the image where it belongs in the email content.
  3. Insert the image field’s exact merge tag using the campaign editor’s merge-tag controls. Follow the editor’s instructions for an image-type field; do not use a text-link workflow if the goal is to render an image.
  4. Save the content and preview it for specific contacts before sending.

A merge tag may appear invalid if the campaign has no audience selected. Extra characters or formatting around a tag can also stop it from resolving, so copy the tag shown in audience settings rather than retyping it from memory.

Preview the result with real contact data

  1. Use Mailchimp’s Preview Mode and enable live merge tag info.
  2. Search for or select a contact whose image field is populated, then confirm the expected image appears.
  3. Repeat with several contacts, including one with a default value and one with a blank value if those cases exist.
  4. Check the email at desktop and mobile widths. Email clients can render HTML email differently.
  5. If the campaign is important, send to a small live test segment after previewing.

An ordinary test email does not populate contact-specific merge tags with recipient data. Use live recipient preview or a small live segment to validate personalization.

Use Dynamic Content for condition-based image blocks

Choose this route when the campaign has a limited set of image blocks and recipient rules decide which block appears. For example, a campaign might show different category imagery based on an audience field. Apply Dynamic Content to the relevant image block and configure its conditions against the data available in your audience.

  • Confirm that the condition uses the correct field, group, or supported tag.
  • Check that each intended recipient matches the expected condition and that unqualified contacts have an acceptable result.
  • Attach the intended audience and preview with live merge-tag data.
  • Remember that this controls block visibility; it does not populate a unique image URL for every contact.

Common problems and fixes

Symptom Likely cause Fix
The merge tag appears as text or is marked invalid No audience is attached, or the tag is mistyped, incorrectly cased, or altered by formatting Select the intended audience and copy the exact tag from audience settings. Remove unintended formatting around it.
The test email has no personalized image Ordinary test emails do not resolve contact-specific values Preview with live merge-tag information for a selected contact, or send to a small live test segment.
The wrong contact sees an image The import mapping or contact-to-URL sheet has a mismatched identifier or row Check the audience identifier, import field mapping, and several individual contact records before sending.
An image is missing for some recipients The image field is blank, its URL was not imported, or the selected record has no intended value Inspect that contact’s audience field and correct the mapping. Preview blank and default cases explicitly.
A conditional block does not show as expected The contact does not match the configured condition, or preview lacks live audience data Check the field value and condition, select the correct audience, and use live merge-tag preview.
Image presentation differs between clients or screen sizes Email clients render HTML differently and may lay out content differently on mobile Preview desktop and mobile layouts and validate the actual recipient-specific version.

Or skip the browser setup

If you need screenshots of campaign previews or web pages for documentation and review, ScreenshotNeo is a website screenshot API and MCP server for developers. A GET request returns an image or PDF. The call below captures a page directly; it does not insert personalized images into Mailchimp emails.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

See the ScreenshotNeo API documentation for request options and response details. Before a capture, it accepts cookie and consent banners like a visitor and removes 60+ known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks, blank pages, timeouts, and failed loads are never billed, and cache hits cost nothing. Responses identify the page verdict and billing status in headers. Its MCP server gives AI agents tools to take screenshots, inspect page information, and capture PDFs. One thousand screenshots per month are free with no card, and paid plans start at $5 for 3,000. Sign up for 1,000 free screenshots a month.

FAQ

Can a personalized image be different for every recipient?

Yes. Store the recipient’s image URL in an image-type audience field and use that field’s merge tag in the campaign.

Do I need Dynamic Content for one image URL per contact?

No. Dynamic Content is for showing or hiding content blocks based on conditions. Use an image field when each contact has their own image value.

Can I confirm personalization with a regular test message?

Not reliably. Ordinary test emails do not include contact-specific merge-tag data. Use live merge-tag preview or a small live segment.

What if some contacts have no image?

Decide on a suitable default or correct the missing audience data, then preview contacts with empty and default field values before sending.

Sources