Ghost is the platform for publishers who want to own their work. The software is open source, the content is portable, and on Ghost(Pro) or a self-hosted install the newsletter ships through Mailgun on the publisher's own domain. That is wonderful for independence and brand control. It also means deliverability is entirely your responsibility. If your issue lands in Promotions or Spam, there is no shared pool to absorb the blame.
That is where seeds come in. A seed test is the only no-vendor, no-reporting-fiction way to see where a Ghost issue actually landed. And because Ghost treats members (including seed addresses) as first-class citizens of your list, you can add them in seconds.
How Ghost handles members and why that helps seeds
Ghost runs on a members model. Every subscriber is a member — free or paid — and the newsletter sends to the members who opted in to email. You can add a member manually from the admin panel, or import, or via API. Ghost's free plan (self-hosted) and Ghost(Pro) tiers all support member addition; nothing is gated behind a higher plan for this.
For seed testing, members behave exactly like real subscribers: they receive every scheduled email, they appear in the email recipients list, and their engagement counts in analytics (if they open anything). That is actually what you want — seeds are treated like any other reader, so the placement you see is the placement real readers see.
Adding seed members on the free plan
Step by step, from a clean Ghost install:
- Get a batch of seed addresses. Use your own if you have old spare mailboxes; use the Inbox Check free generator if not.
- In Ghost admin, open
Members → New member. Enter the seed address and hit Add. Ghost will create the member without a welcome email by default; toggle "Send signup email" off if you do not want the welcome. - Label the new member
seedso you can filter them out of member counts later. Labels in Ghost behave like tags. - Verify the member is subscribed to the newsletter ("Email newsletter" toggle in the member record). Members who are unsubscribed from email will not receive your issues.
- For bulk: use
Members → Import memberswith a CSV. Columns:email,subscribed_to_emails,labels. Setsubscribed_to_emailstotrueandlabelstoseed.
# seeds.csv
email,subscribed_to_emails,labels
seed-gmail-a1@inbox-check.io,true,seed
seed-outlook-b2@inbox-check.io,true,seed
seed-yahoo-c3@inbox-check.io,true,seed
seed-mailru-d4@inbox-check.io,true,seed
seed-proton-e5@inbox-check.io,true,seedYour public subscriber count is a number you probably show to sponsors. A seed label lets you exclude seeds from the filterlabel:-seed whenever that count matters, so seeds do not inflate your audience reporting.
Pre-publish seed tests per issue
Ghost's email preview shows you how the issue will look. It does not tell you where it lands. For that you run a real send to seeds before the real send to readers. Two patterns work:
Pattern 1: Ghost email preview + seed send
Ghost lets you send a preview email to a specific address. Send the preview to a seeds-only email alias (a small helper address that forwards to your seed addresses). Check placement. If any seed lands in Spam or Promotions and you are not happy with that, adjust the issue and re-preview. Only then publish to the real list.
Caveat: previews sometimes take a slightly different code path than the main send in Ghost, so placement is not 100% identical. It is usually close enough for a go / no-go decision.
Pattern 2: Send-to-segment, seeds first
Ghost supports segmenting email sends by label. Schedule the issue to send only to label:seed first, review placement across your seed providers, then send to the rest of the list (label:-seed) once you are satisfied.
This is the more accurate approach because the code path is identical to the real send. The trade-off is that you need to be a little careful with scheduling so you do not accidentally double-send to some subscribers.
The free Inbox Check tool generates 20+ fresh seed addresses per test across Gmail, Outlook, Yahoo, Mail.ru, Yandex, ProtonMail and more. No signup, no credit card.
Reading placement on a Ghost newsletter
Because Ghost sends from your own domain, placement depends almost entirely on your own sender reputation. Expect:
- A brand-new Ghost install sending from a fresh domain will see Promotions (or worse) for the first weeks, until DKIM/DMARC and engagement build reputation.
- A well-warmed publishing domain with consistent openers will see mostly Inbox/Primary across Gmail and Outlook.
- Yahoo and Mail.ru are strict on DKIM alignment — if yours is off, seeds will show Junk there first.
- ProtonMail is forgiving on Ghost but strips trackers, so your click-tracking pixel opens rate will be lower for Proton seeds. That is normal.
DNS checklist every Ghost publisher should verify
A seed test that lands in Spam everywhere usually traces back to DNS. Before blaming content, confirm:
SPFincludes Mailgun (include:mailgun.orgif you use Ghost(Pro)) or your own chosen provider.DKIMis published on thepm._domainkey(or whatever selector Ghost/Mailgun gave you) TXT record and matches the key Ghost signs with.DMARCat leastp=none; rua=mailto:you@..., preferablyp=quarantineonce you trust alignment.MXand return-path are consistent with the provider that actually sends the email.
Frequently asked questions
Will seed members count against my Ghost(Pro) plan member limit?
Can I automate seed tests in Ghost?
Do seed opens skew Ghost's newsletter open-rate dashboard?
label:-seed to see real-subscriber numbers.