Waitlist  /  SDK integration

Waitlist SDK

Put the waitlist on any page — share its hosted URL, or embed it as an auto-resizing iframe. These are the exact snippets your dashboard's SDK → Waitlist tab generates (same source, pre-filled with your slug and default language). Replace YOUR_WAITLIST_SLUG with your waitlist's slug.

Show the waitlist on your website

Hosted waitlist page — share this URL

url
https://onelo.tools/waitlist/YOUR_WAITLIST_SLUG

The URL works on its own as a hosted page if you'd rather link to it than embed it. The look comes from the linked app's Branding & Waitlist tabs.

Embed · Full-width (follows browser width)

html
<iframe
  id="onelo-embed-YOUR_WAITLIST_SLUG"
  src="https://onelo.tools/waitlist/YOUR_WAITLIST_SLUG?lang=en"
  style="width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);border:none;min-height:480px;"
  loading="lazy"
></iframe>
<script>
  // Auto-resize the iframe height to its content (no inner scrollbar). Handles
  // both the waitlist form and the store (the waitlist-mode toggle shows either).
  window.addEventListener('message', function (e) {
    if (e.origin !== "https://onelo.tools") return;
    var d = e.data || {};
    if (d.type === 'onelo:resize' && d.height) {
      var f = document.getElementById('onelo-embed-YOUR_WAITLIST_SLUG');
      if (f) f.style.height = d.height + 'px';
    }
  });
</script>

Embed · In-container (fills its slot — keeps it inside your page column)

html
<iframe
  id="onelo-embed-YOUR_WAITLIST_SLUG"
  src="https://onelo.tools/waitlist/YOUR_WAITLIST_SLUG?lang=en"
  style="width:100%;border:none;min-height:480px;"
  loading="lazy"
></iframe>
<script>
  // Auto-resize the iframe height to its content (no inner scrollbar). Handles
  // both the waitlist form and the store (the waitlist-mode toggle shows either).
  window.addEventListener('message', function (e) {
    if (e.origin !== "https://onelo.tools") return;
    var d = e.data || {};
    if (d.type === 'onelo:resize' && d.height) {
      var f = document.getElementById('onelo-embed-YOUR_WAITLIST_SLUG');
      if (f) f.style.height = d.height + 'px';
    }
  });
</script>
Both embeds carry a tiny postMessage listener that auto-resizes the iframe to its content (no inner scrollbar). The page adapts on its own: it shows the signup form while Waitlist mode is on, and redirects to your store once you launch (unless you disable Auto-redirect to store, in which case it shows a branded “closed” state) — so the same embed keeps working before and after launch. See Waitlist mode & the store.

Choosing the language

The form's language is driven by the ?lang= query on the URL. Your code decides the value — render your German page with ?lang=de, your Polish page with ?lang=pl, and so on. An unknown or missing value falls back to your default language. Full details in Customize the form.

Is the embed secure?

Yes. The signup endpoint is public by design — anyone can submit an email — so the protection is about stopping abuse, not gatekeeping access:

ProtectionWhat it does
Slug bindingThe embed is bound to your account by the waitlist slug in its URL — there is nothing secret in it to leak.
Rate limitingCapped at 5 signups per minute per IP — blunts scripted floods and email enumeration.
Bot verificationCloudflare Turnstile challenges automated submissions before the signup is accepted.
HoneypotA hidden field that bots fill and humans never see; filled submissions are silently dropped.
List-size capYour list holds up to Free 500 / Pro 5,000 / Business 20,000 active entries in total. At the cap, the endpoint declines new signups.
Hashed IPIP addresses are stored only as a SHA-256 hash, for abuse tracking — never in the clear.
The hosted iframe adds an extra layer: the form runs on Onelo's origin, sandboxed from your page, so the parent site can never read the submission or the response.

No API key needed

The embed and the hosted page are bound to your account by the waitlist slug alone — no publishable key is involved. Copy the pre-filled snippet from the dashboard → SDK tab.

Looking for the dashboard side — creating the waitlist, inviting people, branding, consent? Start at the Waitlist guide.
Waitlist SDK — Onelo Docs