It is a per-environment switch, so a launch can be rehearsed in test while live
still holds the line. It only exists in hosted mode: in federated mode your
own backend decides who exists, and a gate of ours there would be a gate on a
door we do not own.
Turning it on
In the panel, under API keys → Identidade dos contatos, or over the API:GET /v1/config/{publishable_key} starts answering "waitlist": true, which is
what lets a sign-up screen change shape without a deploy.
Collecting
202, always — the same posture the rest of the hosted surface holds: this
endpoint never becomes the place somebody learns which addresses are on the
list. A confirmation goes to the inbox, carrying no link and no credential,
because there is nothing yet to click.
Signing up twice keeps the first place in line and the first answers. People
forget they already signed up, and that must not cost them their position.
Pass the
anonymous_id your page already has (@userkit/js does it for you)
and the entry inherits the visit: the UTM parameters and the referrer that
brought this person to the landing page are on the contact, and they are still
there the day they become a paying customer.With the SDK
<SignUp /> renders the waitlist form on its own while the mode is on — an
address, no password, no social buttons — because it reads the config rather
than taking it as a prop. A sign-up form you shipped months before launch
keeps working on launch day.
Or through the ordinary sign-up
POST /v1/contact-auth/signup joins the line too while the mode is on, and it
answers { "waitlist": true } so a custom form can say so. The password the
person chose parks on the entry and attaches when they are let in and their
address is proven — never before. A password on an address nobody confirmed is
not evidence of anything, which is the same reasoning that closes the
pre-created-account takeover.
The line actually holds
While somebody is waiting, no route mints a session for them: not the password, not a magic link, not an email code, and not “continue with Google”. Every one of them answers403 waitlisted.
That is enforced where sessions are minted rather than at each door, for the
same reason two-factor is. A line you can walk around by choosing another
button is a mailing list with extra steps.
Anonymous visitors are never held. The widget mints a visitor session on every
landing-page load, and a waitlist whose landing page cannot run the widget is a
waitlist with no attribution — which is most of the reason to keep the list
here.
Letting people in
1
The line stops holding them
Every sign-in route works for that person from this moment.
2
The way in is mailed
A single link that proves the address, attaches the password they parked, and
signs them in. One click from “you are in” to being in — anything longer
loses the people who waited.
Reading the queue
customers:read; admitting takes customers:write, because it is what
creates the account.