LogSure

Waitlists

Launch with a list.

A waitlist for every app, with as many lists as you need, signups per day and who you have invited.

The waitlist across three sample apps: totals for waiting, invited and joined, each app's lists, and signups per day over 90 days.

Lists, not spreadsheets.

Name a list in the form, such as beta or android, and it exists. Move people from waiting to invited to joined, remove them, or export the list.

The signups list with each person's list, status, source and date, and filters by list and status.

Fair to the people who sign up.

Asking for consent records which text they agreed to. A repeat signup gets the same answer, so your form never tells anyone who is on the list.

  • Email addresses encrypted at rest
  • Changing a status sends no email
  • Find or erase one address from Privacy

A signup with consent and your own context

await logsure.waitlist({
  email: '[email protected]',
  name: 'Ann',
  list: 'beta',
  consent: true,
  props: { plan: 'team', referrer: 'launch-post' },
});

Bring the list you have.

Import earlier signups with their own dates and statuses, up to 1,000 per call, with the app's server key.

POST /_care/import/waitlist

{
  "app": "trailmap",
  "entries": [
    { "email": "[email protected]", "list": "beta",
      "status": "invited", "created_at": "2026-08-14T09:30:00Z" }
  ]
}

How it works.

Add the script

Or post JSON to /_care/waitlist yourself.

<script defer data-app="trailmap"
  src="/_care/script.js"></script>

Keep the bots out

An empty honeypot field, and Turnstile if you want it.

<input name="website" tabindex="-1"
  autocomplete="off" hidden>

Invite and export

Statuses in the console, the apps or the terminal; CSV whenever you need it.

logsure waitlist --list beta --status waiting