> For the complete documentation index, see [llms.txt](https://docs.themeupstudio.com/crimson/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.themeupstudio.com/crimson/custom-pages/subscribe.md).

# Subscribe

{% hint style="success" %}
Subscribe behaves the same way as [Sign Up](/crimson/custom-pages/sign-up.md)
{% endhint %}

The **Subscribe** page is the dedicated place where visitors can create a Ghost member account on your site — either via **Ghost Portal** (overlay) or via a **custom inline Subscribe form**, depending on your theme setting.

<figure><img src="/files/U1yQQprkQXJIz6IacS7A" alt=""><figcaption><p>Subscribe page in Crimson</p></figcaption></figure>

### How to create the Subscribe page in Crimson? <a href="#how-to-create-the-sign-in-page-in-crimson" id="how-to-create-the-sign-in-page-in-crimson"></a>

To create Subscribe page, you do not need to create anything inside Ghost. Just upload the `routes.yaml` file and Crimson will create the custom Subscribe page.

{% hint style="success" %}
Read more about `routes.yaml` file at [Upload routes.yaml file](https://docs.themeupstudio.com/crimson/getting-started/upload-routes.yaml-file)
{% endhint %}

***

### URL and route setup <a href="#url-and-route-setup" id="url-and-route-setup"></a>

For Subscribe page, we have following `routes.yaml` configuration.

```yaml
routes:
  /subscribe/:
    template: subscribe
```

This tells Ghost: when someone opens **`/subscribe/`**, render **`subscribe.hbs`**.

{% hint style="warning" %}
If you see a 404 on `/subscribe/`, the route is either missing, your `routes.yaml` hasn’t been uploaded, or Ghost hasn’t reloaded routes yet.
{% endhint %}

***

### Settings that control the page behavior

#### A) Crimson setting: `use_portal_links`

This is your theme toggle that decides *how* people sign up:

* **ON** → open **Ghost Portal** subscribe (overlay) using Portal links (`#/portal/subscribe/` or `data-portal="subscribe"`). Portal link behavior is supported directly by Ghost.
* **OFF** → show a **custom inline subscribe form** that Ghost handles via `data-members-form="subscribe"`.

{% hint style="success" %}
Read more about `use_portal_links` site wide setting in [Site-wide Settings](/crimson/custom-settings/site-wide-settings.md)
{% endhint %}

#### B) Ghost Admin setting: “Who should be able to subscribe to your site?”

In Ghost Admin → **Settings → Membership → Access**, Ghost lets you choose:

1. **Anyone can sign up**
2. **Paid-members only**
3. **Invite-only**
4. **Nobody**

<figure><img src="/files/wMDNDoTFzYdiyDZx4UnO" alt=""><figcaption><p>Ghost Admin settings to control Membership Access</p></figcaption></figure>

Ghost exposes this to themes via:

* `@site.members_enabled` → true if access is **not** set to “Nobody”
* `@site.members_invite_only` → true if access is set to “Only people I invite”

***

### Behavior summary <a href="#behavior-summary" id="behavior-summary"></a>

The Subscribe template has 4 main branches:

#### 1) If visitor is already logged in (`@member`)

✅ **Redirect to Account page**

* Portal account if `use_portal_links` is ON → `/account/#/portal/account/`
* Normal account if OFF → `/account/`

This ensures members never see a subscribe page again.

***

#### 2) If site is invite-only (`@site.members_invite_only`)

<figure><img src="/files/SN2eU5oO4fnWKSL6JCkv" alt=""><figcaption><p>Membership access is set to Invite-only</p></figcaption></figure>

✅ Show an **invite-only message**:

<figure><img src="/files/F3BQ0pVhoaW0oecF5JX5" alt=""><figcaption><p>Subscribe page when membership access is set to Invite-only</p></figcaption></figure>

…and provide a **Sign in** link (which opens Portal Sign in if `use_portal_links` is ON, via `data-portal="signin"`). Portal links + `data-portal` are a standard Ghost feature.

{% hint style="warning" %}
Invite-only prevents public sign-ups, but imported/invited members can still log in.
{% endhint %}

***

#### 3) If memberships are enabled (`@site.members_enabled`)

This means access is either:

* **Anyone can sign up**, or
* **Paid-members only**

<figure><img src="/files/AMhWldN8iBJNta02Hq9w" alt=""><figcaption><p>Membership enabled in Ghost settings</p></figcaption></figure>

Now `use_portal_links` decides the experience:

**If `use_portal_links` is ON (Portal mode)**

* The template sets: `window.location.hash = '/portal/subscribe/'`
* Then it renders a simple page with a Subscribe button that includes `data-portal="subscribe"`

**Result:** the Portal subscribe overlay opens on `/subscribe/` using the Portal route pattern.

<figure><img src="/files/sfdnXP58e44xZ48YK91D" alt=""><figcaption><p>Subscribe portal popup when <code>use_portal_links</code> is turned on</p></figcaption></figure>

{% hint style="success" %}
Portal can be customized from Ghost Admin (plans shown at sign up, terms notice, requiring agreement, etc.)
{% endhint %}

**If `use_portal_links` is OFF (Custom form mode)**

The template shows an inline form:

```html
<form data-members-form="subscribe"> … </form>
```

<figure><img src="/files/FiQpjEOy3MT2i8EdKv13" alt=""><figcaption><p>Subscribe page when membership access is enabled</p></figcaption></figure>

Ghost handles this form automatically:

* `data-members-form="subscribe"` sends a **subscribe email** for new members, and if the email already exists, Ghost sends a **signin email instead**.

{% hint style="warning" %}

#### For "Paid-members only" - Custom pages show FREE plan too

In Ghost, we do not have a setting/helper/flag to differentiate between "Anyone can signup" and "Paid-members only" for "Who should be able to subscribe to your site?" setting in Membership Access.

Due to this, the Membership page will continue to show the FREE plan too.

If this causes issues with your membership flow, please `use_portal_links` and handle the membership via Ghost provided Portal links.
{% endhint %}

***

#### 4) If memberships are disabled (`@site.members_enabled` is false)

This corresponds to Ghost Admin access = **Nobody**.

<figure><img src="/files/Q8j9xu6EWIN70v0XLGDO" alt=""><figcaption><p>Ghost Admin Setting disabling membership access</p></figcaption></figure>

Subscribe page will **not** render a sign-up UI. Instead it redirects:

* Portal sign-in hash if `use_portal_links` ON
* Otherwise `/signin/`
