Features Pricing
Start My Free Trial

A/B Testing

Test different headlines, subheadlines, and hero images to optimize your waitlist conversion.

!
Pro Plan Required A/B testing variants require a Pro plan.

A/B testing lets you create variants of your waitlist’s headline, subheadline, and hero image. Variants are shown randomly to visitors based on configurable weights, so you can measure which messaging converts best.

How It Works

  1. Create one or more variants with different headlines, subheadlines, or hero images
  2. When a visitor loads the signup form, the public config endpoint randomly selects a variant based on weights
  3. The selected variant’s content replaces the default waitlist headline/subheadline/hero image
  4. Each variant tracks its own view count and signup count for conversion rate analysis

Create a Variant

API: POST /waitlists/{waitlist_id}/variants

{
  "headline": "Be the First to Try It",
  "subheadline": "Join 500+ founders already on the list.",
  "hero_image_url": "https://example.com/hero-b.jpg",
  "weight": 50
}
Field Type Required Description
headline string (max 100 chars) Yes Alternate headline text
subheadline string (max 200 chars) No Alternate subheadline text
hero_image_url string (HTTPS URL) No Alternate hero image URL
weight integer (0-100) No Relative weight for random selection (default: 50)

Response (201):

{
  "variant_id": "v1a2b3c4-d5e6-7890-abcd-ef1234567890",
  "headline": "Be the First to Try It",
  "subheadline": "Join 500+ founders already on the list.",
  "hero_image_url": "https://example.com/hero-b.jpg",
  "weight": 50,
  "views": 0,
  "signups": 0,
  "created_at": "2025-03-15T10:30:00.000Z"
}
*
You don't need to provide all fields. If you only want to test different headlines, just set headline. The other fields will fall back to the waitlist's default values.

List Variants

API: GET /waitlists/{waitlist_id}/variants

{
  "variants": [
    {
      "variant_id": "v1a2b3c4-d5e6-7890-abcd-ef1234567890",
      "headline": "Be the First to Try It",
      "subheadline": "Join 500+ founders already on the list.",
      "hero_image_url": null,
      "weight": 50,
      "views": 230,
      "signups": 45,
      "conversion_rate": "19.57%",
      "created_at": "2025-03-15T10:30:00.000Z"
    },
    {
      "variant_id": "v5d6e7f8-a901-2345-bcde-f12345678901",
      "headline": "Don't Miss Out",
      "subheadline": "Early access is filling up fast.",
      "hero_image_url": null,
      "weight": 50,
      "views": 215,
      "signups": 52,
      "conversion_rate": "24.19%",
      "created_at": "2025-03-15T11:00:00.000Z"
    }
  ]
}

The conversion_rate is calculated as (signups / views * 100) and returned as a formatted percentage string.

Update a Variant

API: PATCH /waitlists/{waitlist_id}/variants/{variant_id}

{
  "headline": "Updated Headline",
  "weight": 30
}

Only the fields you include are updated. Omitted fields keep their current values.

Response (200):

{
  "variant_id": "v1a2b3c4-d5e6-7890-abcd-ef1234567890",
  "updated": true
}

Delete a Variant

API: DELETE /waitlists/{waitlist_id}/variants/{variant_id}

Returns 204 No Content. Existing signups that saw this variant retain the variant_id in their records.

How Weights Work

Weights are proportional, not percentages. The probability of a variant being selected is:

probability = variant_weight / sum_of_all_weights

Example: If you have two variants with weights 50 and 50, each is shown 50% of the time. If you add a third variant with weight 100, the probabilities become:

Variant Weight Probability
A 50 25%
B 50 25%
C 100 50%

When no variants exist, the waitlist’s default headline, subheadline, and hero image are always shown.

Tracking Results

Each variant tracks views and signups automatically:

  • Views are incremented each time the public config endpoint (GET /public/waitlists/{id}/config) selects and returns a variant
  • Signups are incremented when a signup is created with that variant’s variant_id

The variant_id is stored with the signup record and is included in:

  • The List Signups API response
  • CSV exports
  • The List Variants response (as aggregate views, signups, and conversion_rate)

  • Creating Waitlists — configure default headline, subheadline, and hero image
  • Analytics — track signup trends and traffic sources (Pro)
  • Managing Signups — view variant data per signup in list and export views