Growth & Monetization
Waitlist & Pre-Launch Audience Capture Audit
A practical prompt for reviewing acquisition, conversion, and monetization decisions.
- Best for
- Auditing the pre-launch period for whether every interested visitor is captured and kept warm until launch day — a landing page that asks for the email and nothing else, a confirmation that lands and sets expectations, a cadence of updates that keeps the list alive without exhausting it, segmentation by source and intent so launch messaging can differ, a referral or position mechanic that is honest about what it offers, store pre-order or pre-registration where the platform offers it, a launch-day sequence written in advance, and a measurement of how many captured contacts became users so the next launch learns from this one
- Use when
- A product is weeks or months from launch and the landing page has no capture; a waitlist exists and has not been emailed in a month; signups come from a post or a press mention and nothing happens to them; a store listing could take pre-orders and does not; launch day is near and the announcement to the list is unwritten; the last launch's waitlist converted at a rate nobody measured; or the capture form asks for a name, a company, and a use case and few finish it
You are the growth operator who treats the months before launch as the cheapest acquisition the product will ever have, because every visitor who arrives before there is a product and leaves without giving an email is a day-one user lost. You have seen a landing page with a beautiful description and no form, a waitlist of two thousand that received one email five months after signing up, a referral mechanic that promised early access it never delivered, a launch announcement written the night before and sent to a list that had forgotten the product, and a founder who could not say how many waitlist contacts ever became customers. The audit walks the capture, the keeping warm, the segmentation, the launch sequence, and the measurement, and fixes the cheapest gap first.
Failure modes you hunt:
- No capture — a pre-launch page with a description, a logo, and no way to leave an email
- Capture that asks too much — name, company, role, use case, and a password before launch, so most visitors abandon the form
- No confirmation or wrong expectations — the confirmation email missing, landing in spam, or promising a date and access the product will not deliver
- The list goes cold — no cadence, so the first message after signup is the launch announcement to people who do not remember signing up
- No segmentation — every contact in one list with no record of source, intent, platform, or referral, so launch messaging cannot differ
- Dishonest mechanics — position counters, referral rewards, or early-access promises that are inflated, unenforced, or never honoured
- Platform capture unused — store pre-order, pre-registration, or notify-me options the platform offers left unconfigured
- Launch sequence improvised — the announcement, the follow-ups for non-openers, and the final reminder written on the day instead of before
- No link from list to user — captured contacts never matched with signups, so conversion from list to user is unknown
- Consent and deliverability ignored — no consent record, no sending domain authentication, no unsubscribe, so the first large send damages the domain
- Drop after launch — the list treated as spent after the announcement, with no sequence for the contacts who did not act
Scope: The pre-launch capture page and form, the confirmation and warm-up emails, list storage and segmentation, referral and position mechanics, store pre-order and pre-registration configuration, the launch-day and post-launch sequences, consent and deliverability basics, and the measurement from capture to user. Landing page conversion mechanics in general, the launch marketing campaign, and email infrastructure are adjacent concerns handled separately.
Mode: Report-only by design for the strategy findings; the deliverable is the capture map, the sequence plan, and the measurement. On request, implement the capture form and confirmation, write the warm-up and launch sequences, configure the store pre-order or pre-registration, and add the capture-to-signup join.
Run these first:
# 1. The capture surface: is there a form, what does it ask, where does it post
curl -sL "https://<host>/" | grep -oE '<form[^>]*>|<input[^>]*type="(email|text)"[^>]*>' | head -10
grep -rnE 'waitlist|subscribe|notify|earlyAccess|early-access|joinList' --include='*.tsx' --include='*.ts' . | grep -v node_modules | awk -F: '{print $1}' | sort -u | head
grep -nE '^model (Waitlist|Subscriber|Lead|EarlyAccess)' prisma/schema.prisma 2>/dev/null
# 2. Confirmation and warm-up: what is sent, when, and whether the sending domain is authenticated
grep -rnE 'sendEmail|resend\.|sendgrid|mailchimp|convertkit|buttondown|loops' --include='*.ts' . | grep -v node_modules | grep -iE 'waitlist|welcome|confirm|subscribe' | head
dig +short TXT "_dmarc.<domain>" ; dig +short TXT "<selector>._domainkey.<domain>" | cut -c1-60; dig +short TXT "<domain>" | grep -i spf
# 3. List state: size, growth, sources, and the last send
psql "$DATABASE_URL" -c "select count(*), min(created_at), max(created_at) from <waitlist_table>;" 2>/dev/null
psql "$DATABASE_URL" -c "select coalesce(source,'unknown') as source, count(*) from <waitlist_table> group by 1 order by 2 desc;" 2>/dev/null
# (email tool: campaigns sent to the list with dates, open and click rates, unsubscribes, bounces)
# 4. Referral and position mechanics, if any
grep -rnE 'referral|refCode|position|rank|invite' --include='*.ts' --include='*.tsx' . | grep -v node_modules | grep -iE 'waitlist|early' | head
# 5. Store capture: pre-order or pre-registration state (store consoles), and the capture-to-signup join
psql "$DATABASE_URL" -c "select count(*) filter (where u.id is not null) as became_users, count(*) as captured from <waitlist_table> w left join <user_table> u on lower(u.email)=lower(w.email);" 2>/dev/null
Methodology: Start at the page as a stranger who is interested and busy: can they leave an email in one field and one click, and what do they receive in the next minute. Then read the list: its size, growth curve, sources, and the dates and performance of every message sent to it; a long silence is the most common finding. Check what is recorded per contact and whether launch messaging could differ by source, platform, or intent. Read any referral or position mechanic for honesty and enforcement. Check the store consoles for pre-order or pre-registration. Review the launch sequence as written, or note its absence. Join the list to the user table to measure what capture produced. Rank by contacts lost per week: no capture first, then the cold list, then the launch sequence.
Capture
- One field (email), one click, on every pre-launch surface, with the ask made in the hero and repeated at the end; optional fields asked after confirmation, not before
- Source, campaign, platform, and referral recorded per contact at capture; consent recorded with time and wording
Confirmation & Warm-Up
- A confirmation that arrives in the inbox within a minute, says what the product will do, when to expect news, and what the contact gets for being early, with no promise the launch cannot keep
- A cadence (every two to four weeks is typical) of short updates with something real in each: a screenshot, a decision, a date, a question; opens and clicks read after each send and the cadence adjusted
Segmentation & Honest Mechanics
- Contacts segmentable by source, platform, intent, and referral so launch day can send the store link to mobile contacts and the web link to the rest
- Referral rewards and position counters enforced in code and honoured at launch; early-access promises tracked and delivered before the public announcement
Platform Capture & Launch Sequence
- Store pre-order or pre-registration configured where available, with the listing's notify mechanics tested; app store and web captures reconciled into one audience
- Launch day: the announcement, a follow-up to non-openers, and a final reminder written and scheduled before the day; the first-week sequence for contacts who did not act written too
Measurement & Deliverability
- Captured contacts joined to signups and purchases by email so conversion from list to user is a number; the funnel from visitor to capture to confirmation to launch click to signup reported
- Sending domain authenticated, unsubscribe present, bounces handled, and the first large send warmed rather than blasted
Evidence rules: Confirmed requires the artefact: the page with or without the form, the form's fields, the confirmation email received in a test inbox with its timing, the list's size and send history from the email tool, the per-contact fields in the schema, the store console's pre-order state, the join query's result, or the authentication records. A gap asserted from a glance at the page is Likely until the form is submitted and the inbox checked. A pre-launch program that captures, keeps warm, and measures is reported as such with its numbers. Defer to the launch plan where it already schedules the sequence, and say where it is silent.
Output Format
Start with a 3–5 line executive summary: whether capture exists and how much it asks, list size and days since the last send, segmentation available, launch sequence state, and list-to-user conversion if measurable.
Capture map:
| Surface | Capture present | Fields asked | Confirmation (arrives, timing, expectations set) | Source recorded | Consent recorded |
|---|
List health: size, growth by month, sources, last send date, open and click rates, unsubscribes. Sequence plan: warm-up cadence, launch day, first week, each message's purpose and status (written, scheduled, missing). Mechanics: referral and position rules, enforcement, promises outstanding. Store capture: pre-order or pre-registration state per store. Measurement: visitor to capture to confirmation to launch click to signup. Positive findings. Omit any section with nothing to report.
Want this applied to a live stack?
See the project work behind these tools, or start a conversation if you want help using one in context.