Sign-in
Magic links are the default — no passwords to forget, rotate, or phish. A fallback path exists for edge cases. Both go through a deliberate two-step confirmation.
Why magic links
Passwords are the weakest link in most SaaS accounts — reused, phishable, forgotten, leaked. For a surface that contains your company's financials and fundraising plans, that's a poor foundation.
Magic links instead:
- Are time-bound — 15-minute expiry, one use, consumed on click.
- Are email-bound — only the person with access to the email inbox can use the link.
- Don't carry "dictionary attack" risk — no guessable password to try.
- Don't require remembering anything — members don't manage credentials.
The two-step confirmation
Here's a subtle bug most magic-link systems have: email providers (spam filters, Outlook Safe Links, mailing list gateways, security scanners) often follow every URL in every email to check if it's malicious. Each of those follows is a GET request to your magic link — and if you naively "sign the user in on GET", the scanner consumes the token before the human ever clicks.
BoardHerald splits sign-in into two steps:
- The email link is a
GETto/auth/confirm?token=…. That page renders a simple "Confirm sign-in" button. It does not create a session on its own. - When the human clicks Confirm, the browser POSTs the token back. Only then does BoardHerald verify the token and issue the session cookie.
Scanners that blindly GET the URL hit the confirmation page but never POST — so they can't consume the token. The human clicks through normally.
Fallback password
Magic links fail in two scenarios:
- Your email is down (company-wide outage, a board member whose domain got rate-limited).
- You're in an environment that strips inbound email (an airgapped network, for instance).
For those, BoardHerald has a hidden fallback route at /fallback-login. An ADMIN can enable passwords for specific members in Settings → Members → [member] → Fallback password. The member picks a password (stored as a strong KDF hash server-side), then signs in with email + password instead of magic link.
The fallback password respects the same NDA and role gates as magic-link sessions — you can't bypass anything by using it. All sign-ins (both channels) go through identical audit logging.
Platform host vs tenant host
BoardHerald runs on two kinds of hostnames:
- Platform host —
app.boardherald.com. The default sign-in surface. Multi-tenant — your session cookie carries the org you belong to, resolved from the magic link. - Tenant host —
acme.boardherald.comor your custom domainboard.acme.com. Scoped to one specific tenant. Signing in here lands you in that tenant directly; the sign-in page is white-labelled with your branding.
For agents, both hostnames accept MCP traffic on /api/mcp. We recommend pointing agents at the platform host (app.boardherald.com) because the API key itself identifies the tenant — fewer moving parts. See Agents — Configuration.