Quick answer
A painted door test (fake door test) is a demand test in which users see a realistic entry point, such as a button, menu item, pricing option or landing page, for a feature that has not been built, and the share who try to use it is measured before any build decision.
Formula: Click-through rate = unique users who clicked ÷ unique users who saw the door
What is a painted door test?
A painted door test, also called a fake door test, shows users a realistic way into a feature that does not exist yet (a button, a menu item, a pricing option, a landing page) and measures how many try to use it. When someone clicks, they learn the feature is coming and are usually invited to join a waitlist. The team gets a demand signal from real behaviour before writing any feature code.
The name says it: a door painted on a wall looks like an entrance, but leads nowhere yet. It belongs to the family of cheap validation methods Alberto Savoia calls pretotyping: test whether people want "the right it" before you build it right.
Common variants
| Variant | What users see | Measures |
|---|---|---|
| In-product button or menu item | "Export to PowerPoint" next to existing export options | Demand among current users |
| Pricing option | A new plan or add-on on the pricing page | Willingness to choose it, not to pay |
| Landing page | A page describing the feature, with "Get early access" | Interest from new audiences, often via ads |
| Email or in-app announcement | "New: scheduled reports. Try it" | Response from engaged users |
How to run one
- Write the hypothesis and the threshold first. "At least 5% of active users who see the button will click it within two weeks." Base the threshold on the adoption the feature would need to be worth building.
- Place the door where the need occurs, not on the homepage. Placement drives clicks as much as interest.
- Limit exposure to a share of users or one segment.
- Design the honest follow-up. On click: "We're exploring this. Want to know when it's ready?" with an optional waitlist or one question about what they wanted to do.
- Track three events: door viewed, door clicked, follow-up action.
- Run for one to two weeks, then remove the door whatever the result.
- Decide and tell the waitlist what happens next.
The metric and a worked example
The core metric is click-through rate = unique users who clicked ÷ unique users who saw the door. Using all active users as the denominator, including those who never saw it, understates interest.
Sample data: an "Export to PowerPoint" button shown for two weeks to a random 30% of active users in a reporting tool. Threshold set in advance: 5%.
| Segment | Saw the button | Clicked | Click rate | Joined waitlist |
|---|---|---|---|---|
| Admins | 1,500 | 180 | 12.0% | 61 |
| Members | 2,700 | 135 | 5.0% | 35 |
| All exposed users | 4,200 | 315 | 7.5% | 96 |
Overall, 7.5% clears the 5% threshold, and 96 of 315 clickers (30.5%) joined the waitlist, which suggests intent beyond curiosity. The segment split matters more: admins, who build reports for others, click at 2.4 times the rate of members (12.0% vs 5.0%). The feature would be scoped for admins first.
Rules that keep it honest
- Tell people immediately that the feature is not available. No fake loading screens.
- Never take payment or a commitment for something that does not exist.
- Keep it short and small; remove the door after the test.
- Stay out of critical paths. A fake option inside checkout or a security setting costs more trust than it earns.
- Follow up with the waitlist, including when you decide not to build.
Pitfalls
- Curiosity is not demand. A new label attracts clicks; the waitlist step and follow-up questions filter that.
- Placement bias. The same door in a more prominent spot gets more clicks; compare doors only at equal prominence.
- No threshold. Without one, any result can be read as a yes.
- Testing the price with a click. Choosing a plan on a page is not paying for it.
Running a painted door test with TapCub
Track the three steps as custom events:
tapcub.track('fake_door_view', { feature: 'pptx_export' });
tapcub.track('fake_door_click', { feature: 'pptx_export' });
tapcub.track('fake_door_waitlist', { feature: 'pptx_export' });
Then build a funnel from view to click to waitlist, and use event analysis breakdowns or segments (for example by role or plan) to compare groups as in the table above. Count unique people, not events, so repeated clicks by one user do not inflate the rate. A painted door is often the experiment at the bottom of an opportunity solution tree; if demand is confirmed, the next step is a minimum viable product.
Sources
- Savoia, A. (2019). The Right It: Why So Many Ideas Fail and How to Make Sure Yours Succeed. HarperOne.
- Ries, E. (2011). The Lean Startup. Crown Business.
Was this explanation clear?
We use your answers to fix and expand this page.
Couldn’t send. Please try again in a minute.
Thanks for the feedback. We’ll use it to improve this page.You’ve already sent feedback on this page. Thanks.

Customer Experience Consultant
Writes about live chat, visitor conversations, and self-service, sharing practical ways to make customer communication clearer and more effective.