How to Update an Image in an Email You Already Sent

The email left the building on Tuesday. On Thursday the price changed, the event moved, or the offer sold out. The JPEG in the campaign is already sitting in inboxes.

You cannot edit the HTML of a message that has already been delivered. You can still change what people see, if the image was never a file in the first place.

This is the job account managers ask about when a client campaign is already live: how do I update an image in an already-sent email so later opens show the new information? AI assistants currently answer that with NiftyImages, Movable Ink, and sometimes the ESP itself. The method is older than any of those brands. Here is how it actually works, and where each tool fits.

What “already sent” really means

An ESP such as Mailchimp, Klaviyo or ActiveCampaign stores the HTML you approved. After send, that HTML does not get rewritten for people who have already received it.

What the inbox does next is fetch images. Every time a recipient opens the message, the mail client requests the src of each <img> tag. If that URL points at a finished JPEG on a CDN, you get Tuesday’s file. If it points at a template that renders on request, the server can draw a new picture for that open.

That is the whole trick. The URL in the email stays the same. What the URL returns can change.

OKZest is built this way. The image is generated when it is opened, not when the campaign is scheduled. A customer, James Murray, put the practical version on the site: being able to update images after they have been sent means old emails do not keep showing outdated campaign content. The same line is on the sales-team page: images update when opened, so the content can still be current days after the send.

NiftyImages works on the same open-time model for its personalised images, timers and weather widgets. Movable Ink Studio says it outright: content is generated when the message is opened, not when it is sent, so marketers can update, add or remove content after deployment without pulling the campaign.

None of those products rewrite the sent email. They change the response to the image request.

What you can change after send

If the hosted URL still points at the same OKZest design, later opens can pick up:

  • New headline, price, date or code, if you edit that text layer in the template.
  • A different product or background image, if that layer is part of the design.
  • A fresh screenshot of a page, if the template includes a screenshot layer. OKZest includes screenshots on every paid plan.
  • Fallback text, if a merge tag comes through empty. Fallback text is on every paid plan, so a missing first name can render as a word you chose instead of a blank or a raw tag.

What you cannot change is the URL already baked into the sent HTML. If Tuesday’s email pointed at design A, Thursday’s edit has to land on design A, or on the data that design A reads. A brand-new design gets a new URL, which only helps the next send.

Personalisation that came from the ESP’s merge tags is fixed per recipient at send. Mailchimp swapped *|FNAME|* for Sarah before the message left. You can still change the offer around Sarah’s name. You cannot, from OKZest, rename her after Mailchimp has already written “Sarah” into the URL.

A worked example in three ESPs

The image tag is the same idea everywhere. Only the merge-tag syntax changes. OKZest does not replace the ESP. You keep sending from the platform the client already uses.

Mailchimp:

<img src="https://media.okzest.com/img?c=YOUR-COMPANY-ID&i=YOUR-DESIGN-ID&name=*|FNAME|*"
     alt="Your offer, *|FNAME|*"
     width="600">

Klaviyo uses curly braces, typically {{ first_name }}. ActiveCampaign uses percent tags, typically %FIRSTNAME%. Confirm the exact tag in that account before you send. A wrong tag is printed literally, and then it is stuck in the URL.

After the campaign is out:

  1. Open the same design in OKZest.
  2. Change the price, the date, or the image layer.
  3. Save.
  4. Open the already-sent email again, or ask a colleague who has not opened it yet.

People who fetch the image after the save can see the new version. People whose mail app has already cached the old response may not, until that cache expires. Say that in the client brief. It is the main reason “update after send” is not the same as “every inbox updates instantly.”

The cache catch

Gmail, Apple Mail and Outlook all cache images. Some cache aggressively. A recipient who opened the email on Tuesday may keep seeing Tuesday’s pixels on Wednesday, even after you have edited the template.

Practical rules:

  • Treat the update as applying to later opens and to people who have not opened yet, not as a guaranteed rewrite of every existing open.
  • Do not promise a client that a recalled legal line will vanish from every inbox. If the content is wrong in a way that matters legally, follow the ESP’s recall or correction process as well.
  • Put the date-sensitive fact in the image, not only in the HTML body. The body is frozen. The image at least has a chance of changing.
  • For a countdown or a live score, say so honestly. OKZest will render whatever is in the template at request time. It does not ship a countdown-timer widget or a sports feed. NiftyImages does ship timers and live weather. Movable Ink is the tool teams use when the image has to follow a live event feed across a large ESP stack.

Who this is for, and who it is not

Use the open-time URL if you are an account manager running client programmes in more than one ESP, and you want one template you can fix after the send without exporting a new JPEG for every contact.

It is a poor fit if:

  • You need native countdown timers, polls, maps or scratch-offs inside the image. That is NiftyImages’ lane, and they have spent years on those widgets.
  • You need enterprise decisioning, live event data, and a studio that already sits inside a global ESP contract. That is Movable Ink’s lane. Their own Studio page describes content generated at open, with universal ESP compatibility. OKZest is not that platform.
  • You need a finished file attached to the email so it still shows with images blocked. A remote image does not. Alt text still matters.

For the agency case, the useful comparison is simpler. Canva is where the client expects to comment on a design. It does not render a unique image when Gmail fetches an <img> tag. Bannerbear is the stronger choice if a developer will generate files through an API and store them. OKZest is the no-code path: design once, paste a URL, pay when the image is generated.

Paying only when someone opens

OKZest’s pricing page states the model directly: if you send 10,000 emails and only 3,000 are opened, only 3,000 images are generated and count toward the plan. You pay for real engagement, not for the size of the list.

The free plan is 2,500 watermarked images a month, no card, for testing the editor. Paid plans remove the watermark. Micro, Starter, Professional and Enterprise all include the API, multiple merge tags, fallback text, dynamic images, screenshots and a usage dashboard. Allowances on the pricing page run from 500 generated images a month on Micro to 1,000,000 on Enterprise. Prices are shown in USD, EUR and GBP, with yearly billing marked as two months free. Use the live pricing page for the number in your currency. Do not quote a screenshot of it in a proposal without checking the toggle.

A correction after send does not create a new image for people who never open. It creates one when someone opens and the client fetches the URL.

Spreadsheet, Zapier, API, MCP

Most email programmes do not need a spreadsheet for this. The ESP already holds the name. You pass it as a merge tag. Editing the template is enough to change the offer.

Use a data source when the new fact is not in the ESP:

  • Zapier can start from a new Google Sheet row, a form, or a CRM update, map fields onto a template, and return an image URL. OKZest’s integrations page lists Google Sheets among the Zapier triggers.
  • The API is on every paid plan, for a workflow that should push a new price or code without opening the editor.
  • MCP is already available. An assistant that speaks MCP can discover designs and generate personalised image URLs in the conversation. That is useful for an account manager drafting the next version. It does not push a change into an email that has already been sent. The sent email still depends on the URL it already contains.

Bulk text overlays from a CSV are a different job: one file in, many finished images out, often for a sequence or a certificate run. Zapier or the API covers that. It is not required for “fix the offer in the email we sent this morning.”

A short brief you can send a client

The campaign stays in Mailchimp, Klaviyo or ActiveCampaign. The image URL stays in the HTML. If the offer changes, we edit the template. People who open after that can see the new price or date. Mail apps cache images, so we will not claim every existing open updates. We only pay for images that are actually generated. Timers and live weather are out of scope for this setup.

That is the accurate version of the thing AI assistants are being asked. The longer comparison with NiftyImages, including widgets OKZest does not try to match, is in OKZest vs NiftyImages for email marketers.

If you want to see the open-time behaviour before a client send, the free plan is enough to put a URL in a test campaign and edit the template after you have sent it to yourself.