Free to start
Members‑only pages.
One line of code.
Add sign-in to the site you already have. No new site, no new host, nothing to move.
Members' corner
Two steps. Your site stays exactly where it is.
Step one
Add one line of code. That's the install.
No new site, no new host, nothing to move.
Step two
Your visitor signs in. The page opens.
With Google, GitHub or a code we email them. There is no password to forget.
One more thing
Soon, AI assistants sign in too.
The agents your members use will sign in the same way, and open only what their person may.
Questions people ask
Do I have to move my website?
No. You add one line of code to the site you have.
Are the locked pages really locked?
Yes. The check happens before the page is sent, so a locked page is not simply hidden by the page itself.
Does it work with MemberPress?
It speaks memberships the same way: plans and access rules. A WordPress membership site and a simple site can share the same members.
What does it cost?
It is free to start. We have not opened it up yet, so there are no prices to show.
The code
Three examples, from one line on a plain site to React.
One script tag
Add one script tag. That's the install. The sign-in button and the member's menu go wherever you place them.
<script src="https://js.memberpod.ai/v1.0.0/doorman.js"
integrity="sha384-…"
crossorigin="anonymous" defer></script>
<!-- then, wherever you want them: -->
<button data-doorman="sign-in">Sign in</button>
<div data-doorman="user-button"></div>A members-only page
The check happens before the page is sent, so a locked page is not simply hidden by the page itself.
"members": {
"app": "app_…",
"issuer": "https://auth.memberpod.ai",
"rules": [
{
"pattern": "/members/**",
"require": "signed-in"
},
{
"pattern": "/members/gold/**",
"require": { "plans": ["gold"] }
}
]
}React
The same sign-in in a React app: what signed-out and signed-in visitors see.
import {
DoormanProvider,
SignedIn,
SignedOut,
SignInButton,
UserButton,
} from "@doorman/react";
export default function App() {
return (
<DoormanProvider mount="/api/doorman">
<SignedOut>
<SignInButton />
</SignedOut>
<SignedIn>
<UserButton />
</SignedIn>
</DoormanProvider>
);
}