Waitlist overview

.md

Collect email addresses before you launch, and hand out a discount code for signing up early.

The waitlist is for the people who want to hear the moment you open. They leave an email address on your marketing site, and what happens next is entirely your call: nothing, a confirmation email, or a confirmation email carrying a discount code they can use on their first purchase.

The flow

  1. Your website posts an email address to create a signup.
  2. If you configured a reward, we mint or look up the code and put it in the response, so you can show it on the page straight away.
  3. We email them the confirmation, unless you switched that off.
  4. When they register with the same address after you launch, the signup flips to converted and their personal code is locked to their account.

What the code can be

You pick this in your dashboard under Waitlist -> Settings, and the API follows whatever is set there. There is nothing to send per request.

ModeWhat everyone gets
No codeOnly the confirmation that they are on the list
One shared codeThe same coupon code for everybody, picked from your coupons
A personal codeTheir own single-use coupon, minted at signup

A personal code is an ordinary coupon: it shows up under Coupons, it is redeemed at checkout like any other, and it counts against the same reporting.

An incomplete setup still accepts signups

If the reward is switched on but not finished, for example unique without a discount value, the signup still succeeds and reward_code comes back null. Someone who left their email address should not be turned away over a half-filled settings screen.

Before you start

The waitlist is closed by default. Open it under Waitlist -> Settings, where you also choose the confirmation email and the reward. While it is closed, create returns waitlist_disabled.

Endpoints

CreatePOST /v1/waitlist/signups
ListGET /v1/waitlist/signups
RetrieveGET /v1/waitlist/signups/{id}
ResendPOST /v1/waitlist/signups/{id}/resend
UnsubscribeDELETE /v1/waitlist/signups/{id}

The object

{
    "id": "wl_7hqm4tzvbc82nkxrdp9sfjwe",
    "object": "waitlist_signup",
    "email": "[email protected]",
    "name": "Jamie",
    "status": "pending",
    "reward_code": "LAUNCH-K4M9XR2P",
    "source": "api",
    "metadata": { "utm_source": "launch-page" },
    "created_at": "2026-08-03T17:44:13+00:00",
    "notified_at": null,
    "converted_at": null,
    "unsubscribed_at": null,
    "last_sent_at": "2026-08-03T17:44:13+00:00"
}
FieldDescription
idUse this in every other endpoint
statuspending, notified, converted or unsubscribed
reward_codeThe discount code they were given, or null
sourceapi or admin
metadataWhatever you sent, returned unchanged
converted_atSet when someone registers with this address

Unlike an affiliate claim code, reward_code is returned on every response. It is a discount, not a credential: it is already in their inbox, it is worth one purchase, and a marketing page has to be able to show it again.