← Blog

outboundSeptember 23, 2026

How to put a custom image in every cold email

Turn a prospect's public website into a relevant visual, with a fit check, a generation budget and a review step before sending.

To put a custom image in a cold email, turn a verified fact about the prospect into a small visual proposal, generate it within a budget, then review the image alongside the message before sending. A useful image shows what you want to discuss: a restaurant's proposed catering page, a roofer's inspection explainer, or a cleaner's booking flow. Putting somebody's name on a generic picture adds less context.

The workflow needs a lead row, a website check, a creative brief, a generation call and a reviewed message. Use the plan below to run a pilot; the examples are proposed concepts, with no campaign results claimed.

Start with evidence from the business

Give each row an account ID, company name, official domain, offer, source URL and suppression status. Fetch the relevant service page rather than collecting the whole website. Firecrawl's scrape API supports Markdown and structured output, so an agent can extract the service description and retain the page that supports it.

For a restaurant, “offers catering” is a useful fact if the catering page says so. “Struggles to fill weekday tables” is an inference that needs evidence. Keep those fields separate. Also distinguish a page used for research from an image you have permission to reuse; a public photo is not automatically a campaign asset.

Run a fit check before buying a render. In a Jev-led workflow, make its output explicit: render, skip or review, followed by the source fact and the reason the proposed image fits your offer. This is a suggested decision contract, not a claim about a built-in Jev feature. Missing source material should produce a skip or a request for review. The AI SDR spending-policy guide shows how to enforce these decisions in code and audit the accounts the agent skips.

Write the brief before choosing the model

Suppose your agency builds booking pages for local services. A plumbing prospect with a documented emergency-call service could receive a concept showing a short mobile booking journey. Avoid fabricated customer reviews, certifications and claims about response times.

Use a prompt like this for a fictional example:

Create a mobile booking-page concept for a plumbing business.
Use only the supplied service description and approved brand colors.
Show a simple path from selecting a service to requesting a callback.
Leave clear space for headings that we will add as real text.
Do not invent prices, reviews, certifications or promises.
Label the final composite "Concept for discussion".

Keep business names, prices and the call to action in a normal text layer where you can check every character. If you supply an existing photograph to an editing model, compare the output against the original. Reject changed products, invented premises or altered safety equipment even if the composition looks good. For a landing-page version of the same offer, use the account-specific creative workflow.

Put a limit on the whole lead

Ask Vaaya's consult for the currently available image endpoint and quote, then execute the returned call with an explicit max_cost_cents. The MCP tool reference documents that per-call ceiling. Your campaign runner should separately track research, generation and retries against a cumulative allowance.

For illustration, suppose you choose a $1 ceiling per lead and a $10 campaign ceiling. These are hypothetical policy choices, not current provider prices. Before starting a job, reserve its permitted cost against both allowances. If several images render concurrently, a balance check without reservations can let every job spend the same remaining budget.

Allow a retry only for a specific defect, such as unreadable signage. Save the rejected output and reason. Preserve job IDs and poll existing work; submitting the prompt again starts another attempt. Record the quote, ceiling, actual reported charge and final status separately.

Put the idea in the message too

Write the email so it still makes sense with images disabled: “I sketched a shorter way for customers to request an emergency callback. Would this fit how your team handles those calls?” Add descriptive alt text and a link to a stable preview.

Test the final email in the clients your audience uses. Gmail can withhold images for suspicious messages or when the recipient requests it. Google explains its image controls here. An image load is also weak evidence of attention: Apple's Mail Privacy Protection prevents senders from learning whether protected messages were opened.

The same asset can become an iMessage attachment for an existing, appropriate conversation. Review its crop and accompanying text in that channel; email rendering checks do not verify a messaging integration. Generation permission should never silently become permission to contact a prospect.

Inspect a small batch before expanding

Start with 20 researched accounts across restaurants, roofing, cleaning and plumbing, then select three or four suitable examples for the first renders. That is a proposed pilot, not a completed result. Put the source fact, prompt, image, rejection reason and cost beside each other in one review grid. A wrong business detail is easier to spot there than in a folder of attractive pictures.

For authorized outreach, record delivered messages, qualified replies, opt-outs and follow-up outcomes. Preserve a comparable group without the image if you want to estimate its effect. Three attractive samples can establish that the workflow produces usable material. A reply-rate claim needs evidence from the comparison group. Approve the sample messages and the remaining budget before expanding the batch.

Questions

Does a personalized image increase email opens?

This workflow does not establish an increase in opens or replies. Images can be blocked, and privacy features affect open tracking. Compare qualified replies against an equivalent group without the image before claiming a benefit.

Should an agent generate an image for every lead?

Only after checking that the account fits the offer and that the visual makes the offer clearer. Skip leads with insufficient evidence, unsuitable source material or no relevant visual idea.

How do I cap personalized-image spending?

Set a ceiling for each paid call, keep a cumulative budget for each lead and the campaign, and count pending jobs against that budget. A per-call ceiling alone does not limit repeated generations.

Try Vaaya with your agent.

Connect your agent, choose a service, and try your first call with Vaaya.

npx @vaaya/mcp install