Widgets

Email progress bars, live at every open.

Show fundraising totals, loyalty points, or goal progress as a bar that reflects the real number when each reader opens — not the number when you hit send. Design it in the dashboard, paste one image URL into your template, and let your email platform fill in per-recipient values.

Email progress bar widget rendered by DynaMail: an orange bar at 450 of a 1,000-point goal

A real render produced by DynaMail’s image pipeline.

Create a free account

Free while in beta · No credit card required

How it works

Every DynaMail widget is a plain image URL. Design it in the dashboard, then paste the URL into an <img> tag — or your email editor’s image block — like this:

Example embed snippet

<img src="https://img.dynamail.io/widgets/YOUR-WIDGET-ID/render.png?current=450&target=1000" width="600" height="100" alt="" />

YOUR-WIDGET-ID is a placeholder — every widget you create gets its own id. The file extension requests the output format — gif, apng, webp, or png. Depending on the design, an animated widget may be served in an animated format even when a static extension is requested.

Because the image is rendered when the email is opened — not when it’s sent — each open shows the current state (renders are cached for at most a minute). No script, no custom HTML, nothing for your email platform to strip out.

What it’s for

  • Fundraising campaigns — the thermometer updates itself between sends
  • Loyalty programs — each member sees their own points toward the next tier
  • Onboarding and profile completion — nudge users with how close they are
  • Team or community goals — signups, pledges, or milestones toward a target

Personalize it in the URL

The data behind the widget — its values, chart points, and text placeholders — can come from the URL. Append query parameters, or your email platform’s merge tags, and each recipient’s open renders from their own data.

?current=…The value the bar shows (required) — drop in your platform's merge tag
?target=…The goal the bar fills toward (required)
?v_name=…Override any {v_name} text placeholder in your design

Frequently asked questions

How do I add a progress bar to an email?

Design the bar in DynaMail's dashboard, then paste its image URL into an <img> tag in your template. Any email tool that can display an image can display the bar — no script or custom HTML involved.

How does the bar stay up to date?

The image is rendered when the email is opened, not when it's sent. The bar's numbers come from the URL: pass ?current= and ?target= — fixed values or your platform's merge tags — and every open renders from whatever they say at that moment.

Can each recipient see their own progress?

Yes. Add your email platform's merge tags to the URL query string — for example ?current={{points}} — and each recipient's open renders an image from their own data.

Does it work in Outlook and Gmail?

Yes — the widget is a standard image, so it displays wherever images do. The URL extension requests the format (render.gif, render.png, render.webp, render.apng); depending on the design, an animated widget may be served in a compatible animated format even when a static extension is requested. A few clients, like classic Outlook for Windows, freeze animated images on their first frame — for those audiences, use a design without an animated fill so every reader sees the final value.