How to show each subscriber their live waitlist spot in Mailchimp
Published September 26, 2026 · Mailchimp steps checked against its help center on September 26, 2026
A waitlist email that says “you’re #1,284 in line, 2 of 5 friends joined” gives people a reason to share their link. A merge tag can print that number, but only as it stood when the email went out. With DynaMail each subscriber gets two images, their spot and their referral progress, drawn from values you update each time someone joins through their link.

What you’ll build
- A Stat Counter showing the subscriber’s spot, such as #1,284.
- A progress bar showing how many friends joined with their link, out of a goal such as 5.
Each image URL carries the subscriber’s email address, and DynaMail draws the number stored for that address. You store the numbers once, then change them as referrals come in. Nothing in the Mailchimp template changes after that.
What you need
- A free DynaMail account. Per-subscriber values belong to a saved widget, so the free generators, which need no account, cannot do this.
- A waitlist tool, form or database that knows each subscriber’s spot and who referred whom, and can start a Zapier, Make or n8n workflow or send a webhook.
- The same subscribers in a Mailchimp audience, with the same email addresses.
Set it up, step by step
Create the two widgets
In the DynaMail dashboard, start a Stat Counter from the Weekly Signups template. Change its label to something like “Your spot in line”, and in the counter’s Value settings set Prefix to
#and leave Thousand Separator on. Set Target Value to 0 too: a subscriber without a stored spot then shows #0 rather than a believable number, which is easy to catch in a preview.Then start a progress bar from the Loyalty Points template and change “points” to “friends”. Save both. Each saved widget’s page has an Automation card with its endpoint and an Import CSV button.
Load every subscriber's spot
Export your waitlist as a CSV with two columns, email address and spot, and use Import CSV on the Stat Counter’s Automation card. A header row is optional, and the file is read in your browser.
Spots CSV
email,spot maya@example.com,1284 sam+waitlist@example.com,1285If some people already have referrals, import a second file of email address and friend count on the progress bar. Otherwise skip it: a subscriber’s friend count starts at 0 the first time you add to it.
Importing again replaces the stored values, including changes made by referrals since. Pick one way to keep the numbers current and stick to it: either the referral updates in the next step, or a regular re-import of your waitlist tool’s export. Mixing them can count a referral twice, because an import doesn’t record which signups it already included.
Update the numbers when someone joins
Build one workflow in Zapier, Make or n8n that starts when someone joins your waitlist. Every request needs an API key created with the Automation preset under API keys in your dashboard, sent in the
X-API-Keyheader.Request headers
X-API-Key: dm_sk_your_key_here Content-Type: application/jsonGive the new subscriber a spot. Set it on the Stat Counter with the spot your waitlist tool assigned:
PUT https://api.dynamail.io/widgets/WIDGET_ID/live-valueSet a spot
{ "recipient": "maya@example.com", "value": 1286, "sourceVersion": 1790415000000 }Use the time of the change in milliseconds as
sourceVersion. A CSV import and every increment stamp the value with the current time, and DynaMail ignores a set whose version is older than the value it already has. The version must also be new: a set that repeats the stored version with a different value gets a 409, so if one arrives, send it again with a fresh timestamp.Credit the referrer. When the new subscriber came through someone’s link, send two increments for the referrer, one to each widget: add 1 to the progress bar, and subtract your jump per friend (10 here) from the Stat Counter.
POST https://api.dynamail.io/widgets/WIDGET_ID/live-value/incrementProgress bar: one more friend
{ "recipient": "maya@example.com", "delta": 1, "eventId": "signup-8842" }Stat Counter: up 10 spots
{ "recipient": "maya@example.com", "delta": -10, "eventId": "signup-8842" }Map the new subscriber’s signup ID from your trigger to
eventId. Webhooks and workflow tools retry, and the same ID on the same widget counts once within 7 days: a repeat returns"reason": "duplicate"and changes nothing. Reusing an ID with a different recipient or amount on the same widget is rejected with a409. Event IDs are tracked per widget, so one signup ID covers both requests.In Make and n8n, send each request with an HTTP request module or node. In Zapier, use API by Zapier, which the Integrations page sets up step by step; it is a beta premium app and needs a paid Zapier plan.
If your waitlist tool reports the referrer’s new spot itself, set that number instead of subtracting. Either way, only the referrer’s number changes: people they moved past keep their old spot until your next set or import.
Paste both images into a Mailchimp Code block
In the new builder, click a Code block or drag one into your layout, and paste both tags in the Code menu. In the legacy builder, drag in the Code block, paste, and click Save & Close. The Image block will not do: in the new builder it only uploads or browses the content studio.
Spot (Stat Counter)
<img src="https://img.dynamail.io/widgets/YOUR-WIDGET-ID/render.png?recipient=*|URL:EMAIL|*" alt="Your spot on the waitlist" width="340" height="184" style="display:block;border:0;" />Friends who joined (progress bar)
<img src="https://img.dynamail.io/widgets/YOUR-WIDGET-ID/render.png?target=5&recipient=*|URL:EMAIL|*" alt="Friends who joined with your link" width="340" height="184" style="display:block;border:0;" />Replace
YOUR-WIDGET-IDin each tag with that widget’s own ID.*|URL:EMAIL|*is Mailchimp’s URL-encoding form of the email merge tag, so an address with a+still matches. Leavevalueandcurrentout of the URLs: a number in the URL always wins over the stored one. The goal stays in the bar’s URL astarget.Test with a real subscriber
Mailchimp does not fill contact merge tags in test emails, so a test send shows the widgets’ own numbers. Open Preview, turn on Enable live merge tag info, and pick a subscriber you imported; both images should show their numbers. Mailchimp also suggests sending a live email to a small test segment.
Then send one increment for that subscriber with a new
eventIdand reload the preview: the number moves. Send the same request again and the response saysduplicate.
If your waitlist tool uses its own IDs
The recipient only has to be the same in the request and in the image URL. If your referral webhook names the referrer by an ID or referral code rather than an email address, store that ID in a Mailchimp audience field. Mailchimp’s merge tag guide explains that each field has a tag you can rename; with a field tagged WAITID, use *|URL:WAITID|* in the image URLs and send the same ID as recipient.
What subscribers will see
Their spot as of the moment their email client fetched the image. Apple Mail can fetch images when a message arrives and Gmail keeps its own copy, so reopening last week’s email may still show last week’s spot; our Apple Mail Privacy Protection explainer covers why. Each new email asks DynaMail for the images when it’s opened, and DynaMail draws the current spot and friend count and marks the images not to be cached, with no new numbers to merge. Inboxes that keep an earlier copy, such as Gmail’s image proxy, can still make the number lag.
Limits and privacy
- 10,000 recipients per widget on the free plan; more on paid plans when they launch. Past the limit, a value for a new subscriber is not stored and the response says
limit. - Values expire 90 days after the last write. A re-import resets the clock for everyone in the file.
- A subscriber without a value sees the widget’s own number unless you change Readers without a value on the widget’s Automation card, which can hide the number or show a short text instead.
- Every request counts toward your account’s hourly API allowance, and a referral is two requests. The developer docs list the limits and the full request format.
- Email addresses are matched without regard to letter case. DynaMail stores a salted hash of each one, never the address itself, and sends recipient images with
private, no-storecaching headers.
Sources
Every Mailchimp step above comes from these pages, read on September 26, 2026. Apps rename menus often; if a step no longer matches what you see, the source page is the place to check.
- Mailchimp: Use Code content blocks in the new builder (opens in a new tab)
- Mailchimp: Use Code content blocks (legacy builder) (opens in a new tab)
- Mailchimp: Use Image content blocks in the new builder (opens in a new tab)
- Mailchimp: All the merge tags cheat sheet (opens in a new tab)
- Mailchimp: Getting started with merge tags (opens in a new tab)
- Mailchimp: Preview and test your email campaign (opens in a new tab)
Frequently asked questions
Does the spot update when someone reopens an old email?
Sometimes. Apple Mail can fetch images when the email arrives and Gmail keeps its own copy, so a reopened email may show the spot from its first load. Each new email asks DynaMail for the ticket when it’s opened, and DynaMail draws the current spot and marks the image not to be cached. Some inboxes, such as Gmail’s image proxy and Apple Mail Privacy Protection, can keep showing a copy they fetched earlier, so the number can lag.
What does a subscriber without a value see?
By default, the widget’s shared number instead of theirs: the Stat Counter’s saved number, and 0 on the progress bar unless you pushed a value without a recipient. To stop that, set “Readers without a value” on each widget’s Automation card to hide the number or show a short text instead. It covers a missing, unfilled or unknown recipient in the URL.
Does DynaMail store my subscribers’ email addresses?
No. DynaMail stores a salted hash of each recipient identifier, never the identifier itself, and serves recipient images with private, no-store caching headers. Values expire 90 days after the last write.
Can a spot go past #1?
Yes. An increment adds or subtracts exactly what you send, and DynaMail does not stop at 1, so a busy referrer can reach #0 or below. Keep the jump per friend small, or set the spot your waitlist tool reports instead of subtracting.