Live

Waitlist

Referral tracking, email notifications, and a hosted signup page — behind one API call, built for your AI agent to use autonomously.

Get started → CLI & API reference ↓
Referral tracking Email notifications Hosted signup page Batch invite CAN-SPAM compliant

Tell your agent "launch a waitlist." It handles the rest.

No stitching together forms, email tools, and spreadsheets. Your AI agent gets one tool that handles the entire pre-launch flow.

🔗

Built-in referral system

Every signup gets a unique referral code and shareable link. Track clicks, conversions, and see your top referrers on a leaderboard.

✉️

Automatic emails

Welcome emails on signup, invite emails when you're ready. CAN-SPAM compliant with one-click unsubscribe built in.

📄

Hosted signup page

A ready-to-share signup page with light and dark themes. No frontend code needed — just share the link.

👥

Batch invite

Invite up to 20 people at once. Each gets a personalized invite email with your branding and a CTA to get started.

📊

Real-time stats

Total signups, today's count, this week's growth, and a top referrers leaderboard — one API call away.

🔒

Tenant-isolated

Every waitlist is fully isolated at the database level with PostgreSQL Row-Level Security. Your data never leaks.

Your agent calls five commands.
That's the whole integration.

No SDK, no webhooks, no config files. Point your AI agent at the CLI or API — it discovers the actions and runs them autonomously.

25t waitlist add Add someone to the waitlist
$ 25t waitlist add --email "alice@example.com" --name "Alice"

✓ Added position #42 · referral code 25T-ABCDE · welcome email sent
25t waitlist list List waitlist entries
$ 25t waitlist list --status waiting --limit 10

#1  alice@example.com    Alice      waiting  referrals: 3
#2  bob@example.com      Bob        waiting  referrals: 1
#3  carol@example.com    Carol      waiting  referrals: 0
showing 3 of 150 entries
25t waitlist stats Get aggregate statistics
$ 25t waitlist stats

total: 150 · today: 12 · this week: 45

top referrers:
  alice@example.com    15 referrals  23 clicks
  bob@example.com       8 referrals  19 clicks
25t waitlist invite Invite one or many entries
# Single invite
$ 25t waitlist invite --email "alice@example.com"

✓ Invited alice@example.com · invite email sent

# Batch invite (up to 20)
$ 25t waitlist invite --emails "alice@example.com,bob@example.com"

✓ Batch complete 2 invited · 0 already invited · 0 not found
25t waitlist remove Remove an entry
$ 25t waitlist remove --email "spam@bot.com"

✓ Removed spam@bot.com
POST /api/v1/waitlist/add Add someone to the waitlist
Request
curl -X POST https://api.25.tools/api/v1/waitlist/add \
  -H "Authorization: Bearer 25t_..." \
  -H "Content-Type: application/json" \
  -d '{
    "email": "alice@example.com",
    "name": "Alice"
  }'
Response
{
  "data": {
    "email": "alice@example.com",
    "name": "Alice",
    "position": 42,
    "referral_code": "25T-ABCDE",
    "status": "waiting",
    "email_status": "sent"
  }
}
POST /api/v1/waitlist/list List waitlist entries
Request
curl -X POST https://api.25.tools/api/v1/waitlist/list \
  -H "Authorization: Bearer 25t_..." \
  -H "Content-Type: application/json" \
  -d '{
    "status": "waiting",
    "limit": 10
  }'
Response
{
  "data": {
    "entries": [{
      "email": "alice@example.com",
      "position": 1,
      "referral_count": 3,
      "status": "waiting"
    }],
    "total": 150
  }
}
POST /api/v1/waitlist/stats Get aggregate statistics
Request
curl -X POST https://api.25.tools/api/v1/waitlist/stats \
  -H "Authorization: Bearer 25t_..." \
  -H "Content-Type: application/json" \
  -d '{}'
Response
{
  "data": {
    "total": 150,
    "today": 12,
    "this_week": 45,
    "top_referrers": [{
      "email": "alice@example.com",
      "referral_count": 15
    }]
  }
}
POST /api/v1/waitlist/invite Invite one or many entries
Request
curl -X POST https://api.25.tools/api/v1/waitlist/invite \
  -H "Authorization: Bearer 25t_..." \
  -H "Content-Type: application/json" \
  -d '{
    "email": "alice@example.com"
  }'
Response
{
  "data": {
    "email": "alice@example.com",
    "status": "invited",
    "email_status": "sent"
  }
}
POST /api/v1/waitlist/remove Remove an entry
Request
curl -X POST https://api.25.tools/api/v1/waitlist/remove \
  -H "Authorization: Bearer 25t_..." \
  -H "Content-Type: application/json" \
  -d '{
    "email": "spam@bot.com"
  }'
Response
{
  "data": {
    "email": "spam@bot.com",
    "status": "removed"
  }
}

A signup page, ready to share

Every waitlist gets a hosted signup page out of the box. Light or dark theme, referral tracking included, no code required.

25t configure --page-theme "light"← click to toggle
🔒 25.tools/w/25t_pub_abcdefgh

Join the MyApp Waitlist

Be the first to know when we launch.

Name
Alice Johnson
Email
alice@example.com
Join waitlist

Light & dark themes

Match your brand with a single config flag. No CSS needed.

Referral-aware

Appends ?ref= codes automatically. Shows referral URL after signup.

Zero deploy

Hosted on 25.tools infrastructure. Share the link, start collecting signups.

25t — waitlist quick start
# Configure your product
$ 25t configure --product-name "MyApp" --signup-url "https://myapp.com"
✓ Settings updated
 
# Add your first entry
$ 25t waitlist add --email "alice@example.com" --name "Alice"
✓ Added position #1 · referral code 25T-ABCDE
 
# Check your stats
$ 25t waitlist stats
total: 1 · today: 1 · this week: 1
 

Start managing your waitlist

One API key. Referrals, emails, and a hosted page — included.

Get started →

Part of 25.tools

Waitlist + 24 more tools.
One subscription.

The waitlist tool is included in every 25.tools plan — alongside analytics, CRM, email, payments, and more. One API key, one bill.

$25 $10 /mo
SAVE 60% — EARLY BIRD

Lock in the early bird price forever

Waitlist Analytics Email CRM Payments Forms Auth Storage +17 more
See all tools →