> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.outpost.pub/llms.txt
> Use this file to discover all available pages before exploring further.

# Institutional Subscriptions

> Automatically upgrade members to paid access based on their email domain — for schools, organizations, and corporate partnerships.

export const PlanStatus = ({tier, status, beta, deprecated}) => {
  const variants = {
    luna: {
      bg: "#8340B9",
      color: "#ffffff",
      border: "1px solid #8340B9"
    },
    voyager: {
      bg: "#6B2FA0",
      color: "#ffffff",
      border: "1px solid #6B2FA0"
    },
    "space-station": {
      bg: "transparent",
      color: "#8340B9",
      border: "1px solid #8340B9"
    },
    "all-plans": {
      bg: "transparent",
      color: "#525252",
      border: "1px solid #a3a3a3"
    },
    labs: {
      bg: "transparent",
      color: "#a16207",
      border: "1px solid #a16207"
    },
    beta: {
      bg: "transparent",
      color: "#a16207",
      border: "1px solid #a16207"
    },
    "invite-only": {
      bg: "transparent",
      color: "#525252",
      border: "1px solid #a3a3a3"
    },
    bespoke: {
      bg: "transparent",
      color: "#525252",
      border: "1px solid #a3a3a3"
    },
    "outpost-hosted": {
      bg: "transparent",
      color: "#525252",
      border: "1px solid #a3a3a3"
    },
    deprecated: {
      bg: "transparent",
      color: "#b91c1c",
      border: "1px solid #b91c1c"
    }
  };
  const chip = (variant, label) => {
    const s = variants[variant] || variants["all-plans"];
    return <span key={variant + ":" + label} style={{
      display: "inline-flex",
      alignItems: "center",
      padding: "0.15rem 0.55rem",
      fontSize: "0.7rem",
      fontWeight: 700,
      letterSpacing: "0.05em",
      textTransform: "uppercase",
      borderRadius: "3px",
      lineHeight: 1.4,
      whiteSpace: "nowrap",
      backgroundColor: s.bg,
      color: s.color,
      border: s.border
    }}>
        {label}
      </span>;
  };
  const tierLabel = {
    "luna": "Luna",
    "voyager+": "Voyager+",
    "voyager-luna": "Voyager + Luna",
    "space-station+": "Space Station+",
    "all-plans": "All plans"
  };
  const tierVariant = {
    "luna": "luna",
    "voyager+": "voyager",
    "voyager-luna": "voyager",
    "space-station+": "space-station",
    "all-plans": "all-plans"
  };
  const statusLabel = {
    "labs": "Labs",
    "invite-only": "Invite-only",
    "bespoke": "Bespoke",
    "deprecated": "Deprecated",
    "outpost-hosted": "Outpost Hosted"
  };
  return <span style={{
    display: "inline-flex",
    gap: "0.4rem",
    flexWrap: "wrap",
    alignItems: "center",
    margin: "0 0 1.25rem 0"
  }}>
      {tier && chip(tierVariant[tier], tierLabel[tier])}
      {status && chip(status, statusLabel[status])}
      {beta && chip("beta", "Beta")}
      {deprecated && chip("deprecated", "Deprecated")}
    </span>;
};

<PlanStatus tier="voyager-luna" />

Institutional subscriptions automatically give paid-tier access to anyone who signs up with an email address matching a specific pattern. Use this for schools, corporations, nonprofits, or any organization that purchases access for all their members.

<Note>
  Institutional subscriptions are different from [group subscriptions](/features/group-subscriptions). Institutional subscriptions apply to everyone matching an email pattern (no limit on count). Group subscriptions are sold as a fixed seat count, with each member added by invitation.
</Note>

<Frame caption="The Institutional Subscriptions page showing email pattern rules">
  <img src="https://mintcdn.com/outpost-eb0cfbad/GtgZF2lZWcNeMe00/images/subscriptions/institutional-subscriptions.png?fit=max&auto=format&n=GtgZF2lZWcNeMe00&q=85&s=2a2e46cbc9510128d95495b80cff07ce" alt="Institutional Subscriptions page showing a data table with group name, email pattern, tier, expiration date, and subscriber count" width="1919" height="868" data-path="images/subscriptions/institutional-subscriptions.png" />
</Frame>

Go to **Subscriptions → Institutional Subscriptions** to manage institutional access rules.

<Note>
  Institutional Subscriptions are available on the Voyager and Luna plans. You'll see a message directing you to upgrade if your site is on the Space Station plan.
</Note>

## How it works

When you create an institutional subscription rule:

1. You define one or more **email patterns** (e.g., `@acmetechnicalcollege.edu`)
2. You select which **tier** matching members should receive
3. Any new free member who signs up with an email matching the pattern is **automatically upgraded** to that tier
4. After creation, if existing members already match, you'll be offered a dialog to apply the rule retroactively

Members of the organization don't need invite links, coupon codes, or admin action. They sign up with their institutional email and get access immediately.

Email matching is **substring-based** — `@university.edu` matches any email containing that string. The single character `*` is a special "match every email" pattern. See [Auto-Subscribe Rules](/features/auto-subscribe-rules#rule-matching-behavior) for full matching details.

## Creating an institutional subscription

Click **Add New** and configure:

| Field               | Description                                                                                                            |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Group Name**      | A descriptive name for this institution (e.g., "Acme Technical College")                                               |
| **Group Label**     | A label applied to every member matched by this rule. Required and unique per site. Supports the `%DATE%` placeholder. |
| **Email Patterns**  | One or more patterns to match (e.g., `@acmetechnicalcollege.edu`). Substring matching.                                 |
| **Tier**            | Which paid tier matching members should receive, or complimentary access.                                              |
| **Expiration Date** | Optional date when this institutional subscription rule stops matching new members                                     |

<Note>
  You can add multiple email patterns per institution. For example, a university might have both `@university.edu` and `@alumni.university.edu` patterns.
</Note>

After saving, if any existing members already match, an **Apply to Existing Members** dialog appears with two options:

* **Send welcome upgrade email** (default On) — sends the institutional welcome email to each matched member.
* **Cancel auto-renewal for paid members and add a complimentary subscription when the paid subscription expires** (default Off) — for existing paid members whose email matches, cancels their renewal and queues up a complimentary subscription that takes over once the paid period ends.

You can re-run **Apply to Existing Members** later from the rule's actions menu.

## Managing institutional subscriptions

Outpost doesn't yet bill institutional subscribers automatically. Bill them outside Stripe (e.g., by invoice) and set up the rule manually. For card-based recurring billing of an institution, use a [one-person subscription](/features/one-person-subscriptions) — it auto-renews.

The main page shows a data table with all institutional subscriptions:

| Column                | Description                                                |
| --------------------- | ---------------------------------------------------------- |
| **Group Name**        | The institution's name                                     |
| **Email Pattern**     | The matching email patterns                                |
| **Tier**              | The tier being granted                                     |
| **Expiration Date**   | When this institutional access expires (if set)            |
| **Subscribers Count** | How many members have been auto-upgraded through this rule |

You can:

* **Edit** an institutional subscription to update the name, email patterns, or expiration date. The tier and group label cannot be changed after creation.
* **Apply to Existing Members** — runs the rule against current members. Free members with matching emails are upgraded right away. Paid members are only affected if the cancel-and-comp option is enabled.
* **Delete** an institutional subscription to stop matching new members (existing members keep their access until the expiration date).
* **Export CSV** to download a list of all institutional subscriptions and their members
* **Search** to find specific institutional subscriptions by keyword

<Note>
  All members upgraded through institutional subscriptions automatically receive the `Institutional_Group_Subscription` label, plus the custom **Group Label** you set on the rule.
</Note>

## Autoresponder integration

The Autoresponder includes a pre-built action in the **Welcome Flow tab** that notifies members when they've been upgraded through an institutional subscription pattern match. This email lets them know they have paid access and explains what content is available to them.

See [Autoresponder → Welcome Flow](/features/basic-autoresponder#welcome-flow-tab) for details.

***

## Troubleshooting

### A member says their institutional access isn't working

A member's institutional access kicks in when they (1) sign up on your site as a free member and (2) click the confirmation email Ghost sends. Within about **5 seconds** of confirming, Outpost upgrades them to paid and sends the institutional welcome email.

If a member says it didn't work, check Ghost first:

1. In Ghost, search for the member by email under **Members**.
2. **If the member exists** as a free member, give them another 30 seconds — Outpost may still be processing. Then refresh the Ghost page to see if their tier updated.
3. **If the member doesn't exist in Ghost**, add them as a free member in Ghost (just email is fine), then **leave the page immediately**.

<Warning>
  After adding a missing member as free in Ghost, **save once and leave the member page**. Outpost picks up the new member within a few seconds and silently applies their institutional tier and labels. Staying on the page and clicking **Save** a second time will overwrite the labels and tier Outpost just applied. Come back to the member page a minute later if you want to verify the upgrade happened.
</Warning>

### Adding institutional members in bulk

If you're onboarding a whole list of institutional members at once, import them into Ghost as a CSV:

1. In Ghost, go to **Members → Settings (gear icon, top right) → Import members**.
2. Upload a CSV with at least an **email** column. If you include a name, Ghost uses a single combined name field — not separate first/last columns.
3. After the import completes, go to Outpost → **Publication details → Refresh** with the **Site data** switch on. Ghost notifies Outpost about one-off signups but not bulk imports, so Refresh tells Outpost to pull the new members in. See [publication details](/features/publication-details) for more.

To create the CSV from a spreadsheet, use **File → Export → Comma-separated values (.csv)** in Excel or Google Sheets.

***

## Frequently asked questions

<AccordionGroup>
  <Accordion title="What happens to existing free members whose email matches a new pattern?">
    When you save a new rule, Outpost offers an **Apply to Existing Members** dialog if any current members match. Free members with matching emails are upgraded right away. Paid members are only affected if the cancel-and-comp option is enabled. You can also re-run this from the rule's actions menu.
  </Accordion>

  <Accordion title="What happens when an institutional subscription expires?">
    Members who were auto-upgraded lose their paid access and revert to free status. They can choose to subscribe individually if they want to continue with paid access.
  </Accordion>

  <Accordion title="Can a member override an institutional subscription with their own paid subscription?">
    Yes. If a member subscribes individually via Stripe, their personal subscription takes precedence. If the institutional subscription expires, their personal subscription continues unaffected.
  </Accordion>

  <Accordion title="How is this different from Group Subscriptions?">
    **Institutional Subscriptions** use email pattern matching — anyone with a matching email is auto-upgraded, no invite needed. **Group Subscriptions** require a group owner to purchase seats and invite specific people. Institutional subscriptions are best for organizations where you want automatic access for large groups without inviting individual members.
  </Accordion>
</AccordionGroup>

***

## Related features

<CardGroup cols={2}>
  <Card title="Group Subscriptions" icon="users" href="/features/group-subscriptions">
    Invite-based group access (complementary to institutional access)
  </Card>

  <Card title="Tiers & Pricing" icon="layer-group" href="/features/tiers-and-pricing">
    The subscription tiers that institutional members receive
  </Card>

  <Card title="Auto-Subscribe Rules" icon="wand-magic-sparkles" href="/features/auto-subscribe-rules">
    Other automated subscription management rules
  </Card>

  <Card title="Autoresponder" icon="envelope-open-text" href="/features/basic-autoresponder">
    Welcome emails for auto-upgraded institutional members
  </Card>
</CardGroup>
