How to put a live waitlist ticket in Kit emails
Published September 28, 2026 · Kit steps checked against its help center and developer docs on September 28, 2026
A waitlist email that says “you’re #784, 2 of 5 friends joined” gives people a reason to share their link. Lineup keeps each subscriber’s spot and referral count from your waitlist tool’s webhook, and draws them as a two-image ticket. In Kit, a custom field holds each subscriber’s lineup_id and one HTML block carries the ticket, so every email you send later is current without rewriting it.

What you’ll build
- A ticket of two images side by side: the subscriber’s spot in line, such as #784, and how many friends joined with their link, out of a goal such as 5.
- Optionally, a referral leaderboard image for updates and newsletters, with the reader’s own row highlighted when they’re in the top eight.
DynaMail draws both images each time an inbox loads them, from the numbers Lineup keeps. You paste the ticket into your emails once; nothing in the email changes after that.
What you need
- A free DynaMail account. Lineup is free, and its ticket images are ordinary DynaMail widgets you can restyle in the editor.
- A waitlist tool that sends webhooks: LaunchList on the Grow plan or higher, Waitlister on the Growth plan or higher, or anything that can post JSON to a URL, such as Tally, Zapier or your own backend.
- A Kit account where your waitlist subscribers are already subscribers, with the same email addresses, and permission to create a V4 API key.
Set it up, step by step
Create your waitlist ticket
In the DynaMail dashboard, open Lineup and start a new waitlist ticket. Under Your ticket, enter your product’s name, how many spots a referral moves someone up (250 by default), the referral goal (5 by default) and the reward for reaching it, such as “Early access”. Lineup creates three widgets from this: the spot, the friends bar and the leaderboard.
Subscribers’ names on the leaderboard stay off unless you turn them on.
Connect your waitlist tool
Under Connect your waitlist tool, pick your tool and copy the webhook URL Lineup shows you. It’s private to this waitlist; if it leaks, you can rotate it in the waitlist’s settings.
LaunchList (Grow plan or higher): click Plugins in the sidebar, then Create a webhook, and add the URL. LaunchList sends a
new_userevent for each signup and anemail_verifyevent when someone confirms their address.Waitlister (Growth plan or higher): go to Integrations in the sidebar, click Manage on the Webhooks card, enter the URL, and select new sign-ups, referrals completed and subscriber unsubscribed.
Anything else: have it post each signup as JSON to the URL, with the subscriber’s ID or email and the referral code or referrer they came with. Lineup’s field map tells it where those are in your payload.
Then tell Lineup whether your tool confirms email addresses. If it does, a referral counts once the friend confirms; if not, it counts at signup. Click Send test signup to see a test referral land, and use Import existing signups (CSV) if people joined before you connected Lineup.
Paste your Kit V4 API key
In Kit, open the Developer tab in your account settings, click Add a new key, give it a name such as “Lineup”, and copy it. Kit shows the key only once.
In Lineup, under Put the ticket in your emails, open the Kit tab and paste the key. Lineup checks it, then creates a custom field labelled
lineup_id, or uses the one that already exists. Kit derives a field’s key from its label, lowercased with underscores, and the key is what personalization tags use.From then on, Lineup fills
lineup_idfor each new signup it can find in Kit by email address, at most 100 requests a minute. It never adds people to Kit: someone who isn’t in Kit yet is looked up again over the next day or so, then left for you to handle with the CSV join.Paste the ticket into an HTML block
In the Kit email editor, select HTML Block from the content block menu, click Edit, paste the ticket and click Save. Lineup’s setup page gives you this snippet with your three widget IDs and your goal filled in. Here,
YOUR-SPOT-WIDGET-ID,YOUR-FRIENDS-WIDGET-IDandYOUR-LEADERBOARD-WIDGET-IDstand for them, and 5 is an example goal.Ticket (Kit)
<table role="presentation" width="600" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;"> <tr> <td width="372" style="padding:0;"><img src="https://img.dynamail.io/widgets/YOUR-SPOT-WIDGET-ID/render.png?recipient={{ subscriber.lineup_id }}" width="372" height="236" alt="Your spot on the YOUR-PRODUCT waitlist" style="display:block;border:0;" /></td> <td width="228" style="padding:0;"><img src="https://img.dynamail.io/widgets/YOUR-FRIENDS-WIDGET-ID/render.png?recipient={{ subscriber.lineup_id }}&target=5" width="228" height="236" alt="Friends who joined with your link" style="display:block;border:0;" /></td> </tr> </table>{{ subscriber.lineup_id }}is Kit’s tag for the custom field, so each subscriber’s own lineup_id lands in both image URLs when Kit sends. The goal stays in the friends image’s URL astarget. For an email with a dark background, add&scheme=darkto both URLs to get DynaMail’s night palette.For an update or newsletter, the leaderboard goes in a second HTML block:
Leaderboard
<img src="https://img.dynamail.io/widgets/YOUR-LEADERBOARD-WIDGET-ID/render.png?recipient={{ subscriber.lineup_id }}" width="600" height="528" alt="YOUR-PRODUCT referral leaders" style="display:block;border:0;max-width:100%;height:auto;" />Check it before you send
Kit doesn’t fill personalization tags in preview emails; it shows a placeholder instead. The ticket in a preview therefore has no number, which is the right result for a reader without a lineup_id. To see a real ticket, send the email to yourself as a subscriber.
In Lineup, Check the merge tag takes a value, such as a lineup_id from your subscriber list, and shows the images that reader will get. Paste an unfilled tag there too, to see the ticket a reader gets when the tag fails: it has no number.
What subscribers will see
Their spot and friends as of the moment their inbox loaded the images. Apple Mail can load images when the email arrives and Gmail keeps its own copy, so reopening last week’s email may still show last week’s spot. 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.
Limits and privacy
- Image URLs carry the random lineup_id, never an email address. Lineup keeps a salted hash of each address to match referrals and Kit subscribers.
- Your Kit API key is stored encrypted and is never shown again after you paste it. Remove it in Lineup, or reset it in Kit, to cut Lineup off.
- Spots move as soon as a referral lands; the whole line is re-ranked once a night, so two people can briefly share a spot in between.
Sources
Every Kit step above comes from these pages, read on September 28, 2026. Apps rename menus often; if a step no longer matches what you see, the source page is the place to check.
- LaunchList: Webhook (opens in a new tab)
- LaunchList: Pricing (opens in a new tab)
- Waitlister: Webhooks (opens in a new tab)
- Waitlister: Pricing (opens in a new tab)
- Kit developers: API authentication (opens in a new tab)
- Kit developers: Create a custom field (opens in a new tab)
- Kit: Basic email personalization with Liquid + FAQs (opens in a new tab)
- Kit: The email editor: adding media (opens in a new tab)
Frequently asked questions
Is this an official Kit integration?
No. Lineup uses a Kit V4 API key that you create for your own account. Kit’s developer docs say it doesn’t offer official support for apps that rely on API keys, so if Kit changes its API, Lineup’s sync is what we fix, not Kit.
Does Lineup add people to my Kit account?
No. Lineup only fills the lineup_id field on subscribers who are already in Kit, found by email address. People join Kit through your own form or tool, with the consent you collect there.
Why does the ticket show no number in my Kit preview?
Kit doesn’t fill personalization tags in preview emails; it shows a placeholder instead. The ticket treats that as a reader without a lineup_id and hides the number. Send to yourself as a real subscriber to see your own ticket.
Does the spot update when someone reopens an old email?
Sometimes. Apple Mail can load images when the email arrives and Gmail’s proxy can reuse its 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.