Skip to content

Ghost CSV Imports With Multiple Newsletters: What Happens to Email Subscriptions?

Illustrative still life: a completely unmarked notebook beside a plain computer mouse.

A Ghost CSV import does not use subscribed_to_emails to choose individual newsletters. Its result depends on two things: whether the member already exists in Ghost, and whether the CSV value is true or false.

For a new member, true subscribes that person to every newsletter whose “Subscribe new members on signup” setting is enabled. false unsubscribes the person from every newsletter at import. For an existing member, true normally leaves email preferences unchanged, with one documented exception for members who were already unsubscribed from every newsletter. false unsubscribes the existing member from every newsletter.

Those four cases come from Ghost Help’s Import members guide. They matter because a CSV can contain a simple true-or-false field while a Ghost publication can have several newsletters with separate subscription choices.

What subscribed_to_emails means in a Ghost import

Ghost supports a subscribed_to_emails field in a member CSV. The field accepts true or false. The email column is required for an import; the other supported fields are optional.

The field concerns a member’s email-newsletter subscription state. It does not identify a named newsletter in the CSV. A value such as weekly=true or a column labelled with a newsletter name is not part of the documented import behavior for subscribed_to_emails.

That distinction is easy to miss when a publication has more than one newsletter. Ghost lets each newsletter keep its own subscriptions, settings, and template design. Members can choose newsletters individually during signup or later through their email preferences in account settings.

The CSV field still has a broad effect in several cases. It can opt a new member into qualifying newsletters, or unsubscribe a new or existing member from all newsletters. Prepare the column only after separating new records from existing records in your import list.

New members imported with true

When Ghost imports a member who does not already exist, subscribed_to_emails=true opts that member into all newsletters that have “Subscribe new members on signup” turned on.

The signup setting belongs to each newsletter. A publication with three newsletters can have the setting enabled for one, two, or all three. Ghost applies the import result to the newsletters whose setting is enabled at the time of import.

This does not mean that true grants access to one newsletter chosen in the CSV. The documented rule uses the newsletter-level signup setting. Review that setting for every active newsletter before importing new members with true.

A fictional example makes the scope clearer. Imagine a publication with “Monday Briefing,” “Product Notes,” and “Podcast Alerts.” If only “Monday Briefing” and “Podcast Alerts” have “Subscribe new members on signup” enabled, a new member imported with true is opted into those two newsletters. The example is illustrative only; the exact result always follows the settings in the Ghost publication.

New members imported with false

For a new member, subscribed_to_emails=false means the member is unsubscribed from all newsletters upon import.

This rule is absolute in Ghost’s documented four-case list. It does not preserve a subscription to a particular newsletter, even where another newsletter has “Subscribe new members on signup” enabled. The CSV value controls the import result for that new member.

Use this value when the imported record should enter Ghost without newsletter subscriptions. The person can still have a member record, because member import and newsletter subscription status are separate parts of the import behavior described by Ghost.

The wording matters. “Unsubscribed from all newsletters” describes preference state. It does not state anything about whether a specific email will be delivered, opened, or received in an inbox. Ghost’s import documentation does not present subscribed_to_emails as a delivery guarantee.

Existing members imported with true

Existing members require more care. When Ghost finds a member who already exists and the CSV contains subscribed_to_emails=true, Ghost leaves that person’s email subscription preferences alone, unless the member was previously unsubscribed from all newsletters.

That rule protects existing choices in the usual case. A member already subscribed to selected newsletters does not gain every newsletter with “Subscribe new members on signup” enabled merely because the import row says true. The new-member rule and the existing-member rule are different.

The exception also deserves a direct reading. Ghost documents that existing members who were previously unsubscribed from all newsletters are treated differently when imported with true. Do not turn that limited statement into a claim that true selects one newsletter, restores a previous newsletter mix, or guarantees a particular email outcome. The documentation does not say those things.

A fictional example: a member already receives “Product Notes” but has not selected “Podcast Alerts.” Importing that existing member with true leaves preferences alone under Ghost’s documented rule. The import does not use the new-member signup configuration to overwrite that member’s individual choices.

Before using true for existing members, identify what your source list represents. A row may be an update to a current Ghost member, a duplicate exported from another system, or a record for someone who has already changed preferences in Ghost. Those are operationally different situations, even though each row may contain the same boolean value.

Existing members imported with false

For an existing member, subscribed_to_emails=false unsubscribes the member from all newsletters.

This is the broadest action in the four-case list. It applies to existing members even though their preferences would otherwise be left alone when the field is true. A CSV that mixes intentional unsubscribes with rows where the value is blank, absent, or incorrectly mapped needs careful review before the import starts.

Ghost lists subscribed_to_emails as an optional supported field. If your import does not need to alter email subscription state, do not assume that adding a false value is harmless. In the documented existing-member case, it removes subscriptions across all newsletters.

A fictional example: an existing member subscribes to two newsletters. If that person’s imported row contains false, Ghost unsubscribes the person from all newsletters. The result does not preserve one selected newsletter.

Creating a newsletter is a separate action

Importing members and creating a newsletter are separate Ghost workflows.

When creating a newsletter, Ghost provides an “Opt-in existing subscribers” setting. If enabled, existing members are automatically subscribed to the newsletter being created. That setting concerns the creation of that newsletter.

The CSV import rules concern member rows and the subscribed_to_emails field. They do not replace the newsletter-creation setting, and the newsletter-creation setting does not change the documented meaning of true and false during import.

Keep these decisions apart:

  • Decide which newsletters have “Subscribe new members on signup” enabled before importing new members with true.
  • Decide whether a new newsletter should opt in existing members when you create that newsletter.
  • Decide whether imported existing members should keep their current preferences or be unsubscribed from all newsletters.

Ghost’s Setup email newsletters guide describes both the newsletter-level signup setting and the option to opt existing members into a newly created newsletter. It also states that members can manage individual newsletter choices through signup and account preferences.

A compact import checklist

The table separates the documented results. Check the member’s status first, then read the CSV value.

Member status before import subscribed_to_emails value Documented Ghost result
New member true Opted into all newsletters with “Subscribe new members on signup” enabled
New member false Unsubscribed from all newsletters upon import
Existing member true Preferences left alone, unless previously unsubscribed from all newsletters
Existing member false Unsubscribed from all newsletters

A practical preparation pass can stay short. First, make sure each row has an email address, because Ghost requires it. Next, separate records that already exist in Ghost from records that do not. Then inspect every active newsletter’s “Subscribe new members on signup” setting. Finally, review each subscribed_to_emails value against the four cases above.

Map CSV fields carefully in the Ghost Members import screen. Ghost lets you map member data to available fields and create a custom field when the CSV contains a field Ghost does not already have. A custom field is not a substitute for the documented subscribed_to_emails field, so keep newsletter-state data mapped to the correct field.

Questions worth answering before the import: Which rows are new to Ghost, and which rows already belong to members with existing preferences? Which newsletters currently have “Subscribe new members on signup” enabled? Does every false row intentionally remove subscriptions from all newsletters?