Introduction
Show our Leads, pixel install and other screens inside your own app, under your brand, in an iframe.
Your menu on the left, our Leads and pixel-install screens on the right, in an iframe. Your users sign in to your app only, your server opens each session, and nothing secret ever reaches the browser. Most teams are live in a day.
Try it
This is exactly what your users see (our read-only demo account; pixel checks are simulated, so any domain works).
No domain yet, so the field is open. Type any domain and click Verify: the check fails and the screen explains what to fix.
Three ways to integrate
Not sure embedded screens are the right fit? Compare them:
| API only | Embedded screens | Full white label | |
|---|---|---|---|
| Where your clients work | Your own screens, fed by our API | Your app, with our screens in an iframe | Our dashboard on your domain (reveal.youragency.example) |
| Who signs them in | You | You (we never see their password) | Our sign-in page, with your brand |
| What you build | The leads list, pixel install, settings | One server endpoint and an iframe | Your marketing site and your billing |
| Who bills your clients | You | You | You: your server calls our API on every payment |
| Time to launch | Weeks | A day | A few days (DNS + branding) |
All three use the same building blocks: one website per client, created with your master key, and leads (credits) that follow what the client pays you.
Your path through this section
1. Quickstart
Your own website inside a local page in about 10 minutes: one key, one call, one HTML file.
2. Understand the flows
One-time setup, a client signing up, a client logging in: every call in order, as a diagram and as API calls.
3. Build it, step by step
Your domain and keys, what your users see, a website per client, the one-time link, the iframe.
4. Billing
Leads follow what your clients pay you: trial, paid, plan change, cancel.
5. Go live
Bring your existing clients across, run the security checklist, or let your AI assistant build it.
The two keys
| Key | Looks like | Where you get it | What it can do |
|---|---|---|---|
Master key (HL_MASTER_KEY) | master-priv-… | Account settings → API Keys | Create and change websites, set credits and trials. Sent as ?privateKey=. |
Embed key (HL_EMBED_KEY) | hle_… | Account settings → White label → Embed in your app | Only open embedded sessions. Sent as Authorization: Bearer. |
Both keys stay on your server
Never put either key in front-end code, a mobile app or a public repository. The browser only ever gets a link that works once.
Common questions
Which integration is right for my SaaS? Embedded screens when your users already live in your app and you want our screens behind your own menu. Full white label when you would rather send clients to the whole dashboard on your domain. API only when you build every screen yourself. The table above compares all three.
Do my users need a Happierleads login? No. They sign in to your app only; your server asks us for a one-time link on every page load, and we never see their password or need their email (Open a screen).
How long does a session stay open? As long as your Session length says: 1 week by default, from 1 minute to 1 year. Then the frame sends session-ended and your page fetches a fresh link (Show it in an iframe). Revoking a key or switching embedding off ends every session at once.
Do my users see the Happierleads name? Not once the screens are on your domain (Your domain and keys); the frame’s messages carry no brand either. Keep our name out of your own routes, titles and menu items too (Keep it white label).
How are leads billed? Leads (credits) come from your account. Your server gives each client’s website its own allowance and trial or paid state, and you bill the client yourself: start a trial, switch to paid, change plan, cancel. A normal monthly renewal needs no call.
Can I test on localhost? Yes: add http://localhost:8000 under Your app’s addresses and follow the Quickstart. Any address not on that list gets a blank frame.