> 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/membership.md).

# Membership

This document explains **how the Membership page works in the Crimson Ghost theme**, how to set it up in Ghost Admin, and how content like **FAQs**, the **intro paragraph**, and **pricing cards** behave based on your Ghost settings.

<figure><img src="/files/Gb7C2vZDMHp2rbbWty22" alt=""><figcaption><p>Membership page in Crimson</p></figcaption></figure>

### How the Membership page is set up

In the Crimson theme, the **Membership page** is a *special page* that the theme renders using a dedicated template.

Think of it like this:

* **Ghost Admin** is where you create and manage your content (pages, posts, memberships, tiers).
* **The theme** decides how that content looks on the front-end (layout, buttons, pricing cards, FAQs).
* The Crimson theme has a **membership template** that automatically:
  * Shows a membership title + intro text
  * Lists membership tiers (Free / Paid tiers)
  * Displays pricing in monthly/yearly modes
  * Pulls FAQ items from a specific Ghost Page (the one with slug `membership`)

So your job is mostly **content setup** in Ghost Admin; the theme will do the layout automatically.

***

### How to create this page in Ghost

To make Crimson’s Membership page work properly, you must create a **Ghost Page** with the slug: `membership`

1. Go to **Ghost Admin → Pages**
2. Click **New page**
3. Give it a title like: **Membership**
4. Open **Page settings** (the sidebar)
5. Set the **URL / Slug** to: `membership`
6. Save and **Publish** the page

<figure><img src="/files/qyU55jiSL9DLchb8fOIA" alt=""><figcaption><p>Adding the Membership page</p></figcaption></figure>

#### Why the slug matters

Crimson specifically looks for a page with slug **membership** to fetch:

* The **excerpt** (intro paragraph under the title)
* The **FAQ toggle cards** you place in the page content

If the slug is different (like `pricing` or `join`), the theme won’t find it automatically.

***

### How to add FAQs

Crimson’s Membership page supports FAQs automatically by reading **Toggle cards** (accordion-style blocks) from the Membership page you created in Ghost.

#### What you need to do

Inside the **Membership page editor** in Ghost:

1. Insert **Toggle cards** for each FAQ:
   * Add a Toggle card (Ghost editor → “+” menu → **Toggle**)
   * Put the **question** in the toggle title
   * Put the **answer** in the toggle content
2. Publish/update the page

<figure><img src="/files/9f4mvUXNbIM5tF6g0sQn" alt=""><figcaption><p>Adding FAQs in Membership page</p></figcaption></figure>

#### How Crimson uses them

* Crimson scans the Membership page content for **Toggle cards**
* It then **extracts the Q/A** and renders them in the styled FAQ section on the Membership template
* If you add/remove/reorder toggles, the Membership page FAQs update automatically

<figure><img src="/files/zZnURCzvb7gtBuZVPPEo" alt=""><figcaption><p>FAQs rendered on the Membership page by Crimson</p></figcaption></figure>

#### Notes / tips for beginners

* Use **one toggle per FAQ**
* Keep answers reasonably short for best readability
* You can use formatting inside answers (basic text formatting usually works well)

{% hint style="warning" %}
If you add **no Toggle cards**, the FAQ section will hide itself.
{% endhint %}

***

### The paragraph below the title comes from the Page “Excerpt”

On the Membership page layout, the short paragraph below “Membership” is not typed into the template directly.

It comes from the **Excerpt** field of the Ghost Membership page (slug `membership`).

<figure><img src="/files/qHF9TFTMBaQib3wjD5Ap" alt=""><figcaption><p>Paragraph below Membership title</p></figcaption></figure>

#### How to set it

1. Go to **Pages → Membership**
2. Open **Page settings**
3. Find the **Excerpt** field
4. Write a short summary (example):
   * “Choose a plan that fits you. Get full access to premium posts, newsletters, and member-only updates.”
5. Update the page

<figure><img src="/files/PqAlrXWt4gZO4YIzn9gD" alt=""><figcaption><p>Adding Membership page paragraph</p></figcaption></figure>

***

### Behavior based on the setting `use_portal_links`

Crimson includes a theme setting called: `use_portal_links`

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

#### What Portal means

**Ghost Portal** is Ghost’s built-in membership UI (a popup/modal experience) for:

* Sign in
* Sign up
* Paid checkout

#### If `use_portal_links` is enabled (true)&#x20;

* Buttons and links are more likely to open **Portal** (popup/modal) instead of sending people to separate pages.
* For example:
  * “Sign in” may open a Portal sign-in modal
  * “Subscribe” may open the Portal checkout flow

This is convenient because it feels smoother (no page loads) and relies on Ghost’s built-in membership interface.

#### If `use_portal_links` is disabled (false)

* Links behave more like traditional navigation:
  * Users go to  `/signin/`, `/signup/` , etc.

{% hint style="warning" %}

#### Important note for Crimson users

Even if Portal is used for sign-in/sign-up actions, you should still keep your **Membership page** (slug `membership`) because Crimson uses it as a content source for:

* Excerpt
* FAQs
  {% endhint %}

***

### Behavior based on “Membership access” set in Ghost Admin

This part controls **who can see content on your site**, and it affects what membership means to your readers.

In **Ghost Admin → Settings → Membership**:

* You can enable membership features
* You can configure paid subscriptions (via Stripe)
* You can set whether signups are open or invite-only

The Membership page is essentially your “sales page” explaining plans and letting users subscribe.

Depending on your membership configuration:

* If **members are enabled**, the Membership page can show plans and let people subscribe.
* If **invite-only mode** is enabled, users can’t subscribe; the UI will show them the pricing plans, but they would not be able to sign up/subscribe.

***

### Membership pricing cards

The pricing section displays a card for each membership tier you created in Ghost.

#### Where tiers come from

In Ghost Admin, tiers are managed in:

* **Settings → Membership → Tiers**

{% hint style="warning" %}
You need to connect Stripe account with your Ghost for paid tiers to work.
{% endhint %}

You typically create:

* A **Free** tier (if enabled)
* One or more **Paid** tiers (monthly and/or yearly pricing)

#### What each pricing card shows

<figure><img src="/files/M5fMdkeExnoJ6WGiK4cV" alt=""><figcaption><p>Pricing card in Membership page</p></figcaption></figure>

Each pricing card typically includes:

* **Tier name** (e.g., “Free”, “Premium”, “Pro”)
* **Tier description**
* **Price**
  * Monthly price (if configured)
  * Yearly price (if configured)
* **Benefits list**
  * These are pulled from the tier’s benefits settings in Ghost
* **Subscribe button**
  * The button launches signup/checkout behavior depending on your site settings

#### Monthly vs Yearly selector

At the top of the pricing area, users can switch between:

* **Monthly**
* **Yearly**

<figure><img src="/files/Yb6Vb4YTSwR1PIS238lW" alt=""><figcaption><p>Monthly / Yearly selector</p></figcaption></figure>

When switching:

* The page hides the non-selected pricing labels/buttons and shows only the chosen billing period.

#### Free trial ribbon (if you use trials)

If a paid tier has a **trial period** set, the pricing card can show a badge like:

* “X days free”

<figure><img src="/files/ihvOoqT5lFklhMF6WBbZ" alt=""><figcaption><p>Free trial ribbon</p></figcaption></figure>

This helps users quickly understand there’s a free trial before payment starts.

#### Invite-only behavior

If your Ghost site is set to **invite-only** for members, users cannot subscribe normally.

In that case, instead of a normal “Subscribe” checkout flow:

* The cards show a message indicating subscriptions are invite-only
* Users are encouraged to **sign in** if they already have an account

#### When members are enabled and not invite-only

If membership is enabled and subscriptions are open:

* Clicking **Subscribe Now** opens Ghost’s signup/checkout flow (often via Portal)
* The plan chosen (monthly vs yearly) is passed into the signup process so Ghost knows which tier and interval the user selected

***

### Quick setup checklist

1. **Enable Membership in Ghost** (Settings → Membership)
2. **Connect Stripe** (if you want paid tiers)
3. **Create tiers** (Free + Paid tiers, set benefits, prices, trials if needed)
4. **Create a Page with slug `membership`**
5. Set the **Excerpt** (this becomes the intro text)
6. Add **Toggle cards** for FAQs inside the page content
7. Publish and visit: `/membership/`

***

### Troubleshooting

<details>

<summary>The Membership page shows a 404 (Not Found)</summary>

**Most common causes**

* The required route isn’t available on your site.
* The page slug is incorrect.

**Fix**

1. In Ghost Admin, confirm you created a **Page** with slug exactly:
   * `membership` (all lowercase, no spaces)
2. Go to **Settings → Labs → Routes** (or where routes are managed in your Ghost version) and confirm your theme routes include:
   * `/membership/`
3. Save/update routes (if you’re using a custom ) and restart/reload your site if required. `routes.yaml`

**Tip:** After changing a slug, Ghost may keep old links cached in menus. Re-check your navigation links too.

{% hint style="warning" %}
Read more about routes at [Upload routes.yaml file](/crimson/getting-started/upload-routes.yaml-file.md)
{% endhint %}

</details>

<details>

<summary>The page loads, but the intro paragraph under “Membership” is blank</summary>

**Why it happens**

* Crimson pulls that paragraph from the **Excerpt** of the Membership page (slug `membership`), not from the page body content.

**Fix**

1. Go to **Pages → Membership**
2. Open **Page settings**
3. Add text in **Excerpt**
4. Update the page

**Common mistake**

* Writing the paragraph in the editor content instead of the Excerpt field.

</details>

<details>

<summary>FAQs don’t show up (or the FAQ section is empty)</summary>

**Why it happens**

* Crimson only picks up FAQs that are created as **Toggle cards** inside the Membership page content.
* If no Toggle cards are found, the FAQ section hides itself.

**Fix**

1. Edit the page with slug `membership`
2. Add **Toggle** cards (one per FAQ)
   * Toggle title = question
   * Toggle content = answer
3. Update the page
4. Refresh the front-end Membership page

**Common mistakes**

* Using regular headings and paragraphs instead of **Toggle cards**
* Using another card type (like Callout, Quote, or HTML) and expecting it to behave like FAQs
* Adding toggles on a different page (not the one with slug `membership`)

</details>

<details>

<summary>I created a Membership page, but Crimson isn’t picking it up</summary>

**Why it happens**

* Crimson looks specifically for the page with slug `membership`. If your slug is `Membership`, `memberhip`, `pricing`, `join`, etc., it won’t match.

**Fix**

* Rename the page slug to exactly: `membership`

**Common mistakes**

* Typos like `memberhip` (missing “s”)
* Using uppercase letters (Ghost usually normalizes slugs, but don’t rely on it)

</details>

<details>

<summary>Pricing cards don’t appear at all</summary>

**Most common causes**

* Membership is not enabled in Ghost.
* No tiers are configured.

**Fix**

1. Go to **Settings → Membership**
2. Make sure membership features are enabled
3. Ensure you have at least one tier configured:
   * Free tier and/or Paid tiers

**If you want paid tiers**

* You must connect Stripe in Ghost Membership settings; otherwise paid tiers won’t function as expected.

</details>

<details>

<summary>“Subscribe Now” button doesn’t work (or does nothing)</summary>

**Most common causes**

* Membership is disabled in Ghost.
* Portal is not enabled or not loading.
* Browser extensions (ad/script blockers) are blocking the Portal script.

**Fix**

1. Confirm **Settings → Membership** is enabled
2. Temporarily disable ad blockers/script blockers and test again
3. Test in an incognito/private window
4. If you are using Portal-based flows, ensure Portal is enabled in Ghost’s membership/portal settings

**Common mistake**

* Assuming the theme can handle paid checkout without Ghost membership + Stripe configured.

</details>

<details>

<summary>The site is “Invite only” and users can’t subscribe</summary>

**Expected behavior**

* If your Ghost site is configured as **invite-only**, users will not be allowed to freely sign up/subscribe.
* Crimson will show messaging indicating invite-only status, and typically directs existing users to **sign in**.

**Fix (if you don’t want invite-only)**

* Go to **Settings → Membership** and change the signup setting from invite-only to 'Anyone can sign up'.

**Common mistake**

* Turning on invite-only while expecting public subscriptions to work.

</details>

<details>

<summary>Monthly/Yearly toggle changes, but the pricing looks “wrong”</summary>

**What’s usually happening**

* A tier may only have **yearly** pricing set (no monthly), or vice versa.
* In that case, switching to the missing interval may show fewer cards or less pricing info.

**Fix**

* In **Settings → Membership → Tiers**, confirm each tier has the pricing intervals you want:
  * Monthly price set (optional)
  * Yearly price set (optional)

**Common mistake**

* Expecting Ghost to automatically “calculate” monthly from yearly (or the reverse). You must set them explicitly.

</details>

<details>

<summary>Discount badge shows 0% or doesn’t show</summary>

**Why it happens**

* The discount display only makes sense when both monthly and yearly pricing exist for the same tier.
* If monthly is missing, the discount badge may hide.
* If yearly is not actually cheaper than paying monthly for 12 months, it may hide.

**Fix**

* Ensure the tier has both monthly and yearly prices configured, and that yearly is meaningfully discounted if you want a visible discount.

</details>

<details>

<summary>Portal links vs custom pages confusion (<code>use_portal_links</code>)</summary>

**Symptom**

* Clicking “Sign in” opens a popup on one site, but goes to `/signin/` on another.&#x20;
* You expected one behavior but got the other.

**Why it happens**

* The theme setting **`use_portal_links`** changes whether membership links trigger **Ghost Portal** (modal) or traditional pages/routes.

**Fix**

1. Go to **Settings → Design → Theme settings (Crimson)**
2. Toggle **use\_portal\_links**
3. Save settings and refresh

**Common mistake**

* Enabling Portal links but also expecting `/signin/`, `/signup/`, etc. to be the primary flow (or vice versa).

</details>

### Quick “Sanity Check” (When something feels off)

If you feel something is off, check these:

1. Page slug is exactly **`membership`**
2. Excerpt is filled (for the intro text)
3. FAQs are **Toggle cards** on that same page
4. Membership is enabled in Ghost
5. Tiers exist (and Stripe is connected for paid tiers)
6. Invite-only is not enabled (unless you truly want it)
