Styling Guide

Customize the WaitList signup form to match your site. No build step needed.

Quick start

The default embed code works out of the box. WaitList automatically fetches your site's brand colors and applies them to the button and accent.

your-page.html
<!-- Basic embed — brand colors applied automatically --> <script src="https://waitlist.pl/v1/drop.js"></script> <div data-waitlist="emb_yourKey"></div>

Data attributes

Configure the form directly via HTML attributes. No CSS needed.

your-page.html
<div data-waitlist="emb_yourKey" data-layout="stacked" <!-- stacked | inline (default) --> data-size="lg" <!-- sm | md (default) | lg --> data-theme="dark" <!-- auto (default) | light | dark --> data-placeholder="Enter email" data-button-text="Join"></div>
AttributeValuesDescription
data-layoutinline | stackedInline: input + button side by side. Stacked: button below input (full width).
data-sizesm | md | lgControls padding and font size. Default: md.
data-themeauto | light | darkAuto detects your page's background color. Force light/dark if needed.
data-placeholderany textCustom input placeholder. Default: "Enter your email".
data-button-textany textCustom button label. Default: "Subscribe".

CSS custom properties (inline style)

Override colors and sizing directly on the container element. These take priority over the auto-detected brand palette.

your-page.html
<!-- Inline CSS custom properties --> <div data-waitlist="emb_yourKey" style=" --waitlist-button-bg: #e74c3c; --waitlist-button-text: #ffffff; --waitlist-accent: #e74c3c; --waitlist-radius: 0; --waitlist-max-width: 500px; "></div>
Custom PropertyDefaultDescription
--waitlist-button-bgbrand colorButton background color
--waitlist-button-text#ffffffButton text color
--waitlist-accentbrand colorFocus ring and success message color
--waitlist-border#ddd / #333Form border color (auto light/dark)
--waitlist-radius8pxBorder radius for form and buttons
--waitlist-fontinheritFont family for the form
--waitlist-max-width420pxMaximum width of the form
--waitlist-input-bg#fff / #1a1a2eInput background (auto light/dark)
--waitlist-input-text#333 / #eeeInput text color (auto light/dark)

CSS custom properties (stylesheet)

For more control, target the embed container from your own stylesheet. This keeps styling separate from HTML.

your-styles.css
/* Target all WaitList forms on the page */ [data-waitlist] { --waitlist-button-bg: #8b5cf6; --waitlist-button-text: #fff; --waitlist-accent: #8b5cf6; --waitlist-border: #e5e7eb; --waitlist-radius: 24px; --waitlist-font: 'Inter', sans-serif; } /* Target a specific form by embed key */ [data-waitlist="emb_yourKey"] { --waitlist-button-bg: #dc2626; --waitlist-max-width: 600px; }
Tip: CSS custom properties set in your stylesheet always win over the auto-detected brand palette. Inline style="" attributes win over everything.

Override internal classes

WaitList injects a scoped stylesheet with BEM-like classes. You can override them in your own CSS for full control.

your-styles.css
/* Override the form row (contains input + button) */ .waitlist-form__row { border: 2px solid #333; box-shadow: 0 4px 12px rgba(0,0,0,0.1); } /* Override the input */ .waitlist-form__input { font-size: 16px; } .waitlist-form__input::placeholder { color: #999; } /* Override the button */ .waitlist-form__button { text-transform: uppercase; letter-spacing: 1px; } /* Override the success/error message */ .waitlist-form__message { font-size: 14px; }
ClassElement
.waitlist-formOuter wrapper
.waitlist-form__rowForm element (flex row with input + button)
.waitlist-form__row--stackedStacked variant (flex-direction: column)
.waitlist-form__inputEmail input
.waitlist-form__buttonSubmit button
.waitlist-form__messageSuccess/error message below form

Examples

Pill-shaped with purple accent

example
<div data-waitlist="emb_yourKey" data-button-text="Join waitlist" style=" --waitlist-button-bg: #7c3aed; --waitlist-button-text: #fff; --waitlist-accent: #7c3aed; --waitlist-radius: 99px; "></div>

Stacked on dark background

example
<div data-waitlist="emb_yourKey" data-layout="stacked" data-theme="dark" data-size="lg" style=" --waitlist-button-bg: #00dfa2; --waitlist-button-text: #000; --waitlist-border: #333; --waitlist-input-bg: #111; --waitlist-input-text: #eee; "></div>

Minimal, no border

your-styles.css
[data-waitlist] { --waitlist-border: transparent; --waitlist-radius: 4px; --waitlist-max-width: 360px; } .waitlist-form__row { background: #f3f4f6; }