Sign In
Crimson includes a dedicated Sign in page that works in two modes:
Portal mode (Ghost Portal popup) → controlled by the custom setting
use_portal_linksCustom form mode (inline sign-in form) → uses Ghost’s members form attributes
It also includes a safety feature: if a logged-in member visits /signin/, they are redirected to the Account page using the correct mode.

How to create the Sign In page in Crimson?
To create Sign In page, you do not need to create anything inside Ghost. Just upload the routes.yaml file and Crimson will create the custom Sign In page.
Read more about routes.yaml file at Upload routes.yaml file
URL and route setup
For Sign In page, we have following routes.yaml configuration.
What this does:
It tells Ghost that when someone opens https://example.com/signin/, Ghost should render signin.hbs as the template.
If you see a 404 on /signin/, the route is either missing, your routes.yaml hasn’t been uploaded, or Ghost hasn’t reloaded routes yet.
How Ghost member sign-in works
Ghost member authentication is passwordless. Members sign in using an email-based flow (magic link) and can also use one-time login codes depending on how the form is configured.
Crimson supports both:
Portal sign-in (popup UI handled by Ghost Portal)
Theme sign-in form using
data-members-form="signin"
The key toggle: @custom.use_portal_links
@custom.use_portal_linksCrimson’s signin.hbs checks the custom setting:
ON (
true) → use Portal screens (popup experience via#/portal/...anddata-portalattributes)OFF (
false) → use the custom inline sign-in form (data-members-form="signin")
This lets you choose between a “Portal-first” site experience vs a “fully theme-styled” experience.


See Site-wide Settings for more details on changing use_portal_links setting.
Behavior summary
Logged in (@member exists)
ON
Nothing (no page UI)
Immediate redirect to {{@site.url}}/account/#/portal/account/
Logged in (@member exists)
OFF
Nothing (no page UI)
Immediate redirect to {{@site.url}}/account/
Logged out
ON
Sign-in heading + Sign in button + Sign up link
Page sets hash to #/portal/signin/ to automatically open Portal sign-in
Logged out
OFF
Sign-in heading + Sign up link + inline email form
Ghost handles form submit and emails a magic link (+ one-time code if enabled)

Recommended usage
Keep use_portal_links ON if you want:
use_portal_links ON if you want:Portal popups for sign in/sign up/account
A consistent Portal UI across the whole site
Portal customization to apply everywhere (Portal settings + design)
Keep use_portal_links OFF if you want:
use_portal_links OFF if you want:A fully theme-designed sign-in experience (inline form)
A “no popups” approach for authentication pages
Direct control over layout and content on
/signin/
Troubleshooting
/signin/ shows 404
Confirm the route exists in
routes.yamlUpload
routes.yamlagain and restart/reload theme routes (especially on self-hosted)Ensure the template name matches exactly:
template: signin
Portal doesn’t open when use_portal_links is ON
Confirm Portal is enabled/configured in Ghost Admin (Portal links should work like
#/portal/...)Confirm your theme includes
{{ghost_head}}and{{ghost_foot}}in the right places (Portal scripts are normally injected by Ghost)
Sign-in emails aren’t being received
Member sign-in requires working email delivery
On self-hosted sites, ensure mail is configured (mail is one of the core required setup items).
FAQs
If I turn OFF use_portal_links, do one-time codes still work?
Yes. Crimson's custom form explicitly enables them with data-members-otc="true".
Last updated