You can run a Poa organization on your own domain. Members visit yourorg.example.com instead of poa.box/explore/yourorg. They see your branding instead of Poa's. They never necessarily realize they are using the Poa platform underneath. The underlying organization is exactly the same. Same governance. Same treasury. Same members. The front door is just yours.
This is the right setup for organizations that want a distinct public identity. A worker co-op with its own customer-facing brand. A student club with a campus subdomain. A foundation that wants to look like a foundation. For everyone else, the default poa.box hosting is simpler and fine.
You point a DNS record (a CNAME or an A record, depending on your host) at Poa's hosting infrastructure. We map that hostname to your organization's slug. When members visit your domain, they get the Poa app shell but pre-loaded with your organization's identity. They are on your org's home page from the moment the page loads. Your logo. Your description. Your members. Your proposals.
Sign-in still works the same way (passkey or wallet). Cross-org features (the global explore directory, account-level settings) are reachable from your domain. You can also hide them from the nav if you want a more focused experience.
Bread & Roses Co-op already has a website at breadandroses.coop that advertises their delivery service. They want their member portal to live on the same domain. members.breadandroses.coop. So their workers do not have to remember a separate URL.
members.breadandroses.coop pointing at our hosting.members.breadandroses.coop to bread-and-roses (their org's slug).members.breadandroses.coop, the page loads as the Bread & Roses Co-op home. Their workers sign in with passkey and start using the platform.What did not change: the organization is still the same organization underneath. Same governance. Same treasury. Same audit trail in the protocol dashboard. They are just renting the front door.
Customizable per white-label deployment:
Not customizable (and we will not change this on request):
White-label is currently set up via direct configuration with the Poa team. We want to verify the org has good standing. We want the right contact information. We want to do a security review on any non-standard requests. The flow:
For a worked example with all the Cloudflare clicks documented, see docs/kubi-dao-setup.md. The runbook we wrote for dao.kublockchain.com. Self-serve white-label setup is on the roadmap. In the meantime, the manual path is short.
Mechanics:
poa-app/src/config/hostDefaultOrg.js in the Poa-frontend repo. When the app boots, it checks window.location.host against the configured mapping. If there is a match, the app is initialized in "single-org" mode for that slug.https://poa.box and rewrites the root path to your org's home (so visitors do not see a brief "exploring all orgs" flash on the first paint). A canonical worker template, with all the Cloudflare clicks documented, is in docs/kubi-dao-setup.md. Poa's own production worker (the one fronting poa.box itself) is in cloudflare-worker/worker.mjs.poa.box registers your hostname as a WebAuthn related origin. This is what lets a passkey created on one domain authenticate on another within the configured allowlist.poa.box/explore/bread-and-roses directly would see the same org. Just inside Poa's main shell.poa.box/explore/yourorg) resolve. We set a canonical URL on the page so search engines do not see this as duplicate content. If you care strongly about SEO on your own domain, talk to us about the canonical strategy that fits your case.poa.box from external integrations (Discord bots, email). Most of these we can configure to use your white-label domain instead. Worth checking after setup.