Ghost automation · runs weekly
Unsubscribe unengaged Ghost members from email
Part of the free list has not opened an issue in months. Ghost recommends trimming it for deliverability, but finding those members means building a filter and a bulk action again each time.
Cotlet does it in your own Ghost account with list_members, get_member and unsubscribe_members, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Can Ghost do this on its own?
Ghost Admin filters members by open rate and sent emails and unsubscribes the selection in one bulk action (checked 17 Oct 2026). The Admin API changes the newsletters of a member one request at a time. Ghost recommends keeping the free list tidy by removing inactive subscribers. Nothing runs that cleanup for you or checks each profile before it acts.
How you do it in Ghost today
- In Ghost Admin the owner opens Members and clicks Add filter, then picks Emails sent (all time) and Open rate (all time) to find members who received emails and opened few or none.
- Adding the Member status filter keeps paying members out of the list, and Last seen shows who still visits the site.
- Each match can be opened to read the member profile: email stats, an activity feed with the most recent actions and the Subscribed to newsletter toggle.
- The "..." icon in the top right of the filtered list opens the bulk actions, and Unsubscribe from email applies to all selected members.
- The filter has to be rebuilt by hand each time, and nothing reminds the owner to do it.
How to unsubscribe unengaged Ghost members from email
Find free Ghost members who got at least 10 emails and opened none of them. Show me the list first. After I say yes, unsubscribe them from email. - 01
Build the filter
list_members runs with status free, min_emails_sent set to 10 and max_open_rate set to 0. Members whose open rate is null are left out of the list, because Ghost has not sent them enough emails to calculate one.
- 02
Look at the activity
get_member reads the profile of each match. A member who was seen on the site recently is moved to a "check by hand" group, because last_seen_at shows visits that email opens do not.
- 03
Show the list first
The agent reports the count and a sample of addresses and stops. Nobody is unsubscribed before you answer.
- 04
Unsubscribe
unsubscribe_members turns off email for the approved IDs. It asks for your OK even after you said yes in the chat, because it changes what real people receive. The member stays on the site and can subscribe again in their account.
- 05
Report
The agent returns how many members were unsubscribed and how many were skipped with the reason, so the list can be reviewed later.
What you get back
Free members with 10+ emails and no opens: 126
Recently seen on the site, left for you: 9
Unsubscribed from email: 117
Still subscribed, not matching: the rest of the list Other ways to ask
- Show me paid members who opened under 10% of emails in the last year, and unsubscribe nobody.
- Every first Monday, list free members with zero opens and send me the count only.
- Add the label "Cold" to the members you would unsubscribe, and do not change their subscription.
- Unsubscribe members whose email is marked as disabled by Ghost.
What Ghost allows, and what to know first
- The Admin API reports email_open_rate as a whole number from 0 to 100, or null when too few emails have been sent.
- Ghost marks an address as email disabled when it is unreachable or when messages were marked as spam.
- The filter "Unsubscribed from all" means the member has turned off every newsletter, and "Subscribed to at least one" means the member can receive at least one.
- Every newsletter email has an unsubscribe link that sets the member to unsubscribed, which is the same state this job sets.
- In the member profile, the Subscribed to newsletter toggle lets you subscribe a person again by hand.
unsubscribe_members asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.
Sources: Ghost Help: Member management · Ghost Help: How do I improve my email deliverability? · Ghost Help: Disabled emails · Ghost Developer Docs: Members
Call unsubscribe_members from a script
curl -X POST https://cotlet.dev/api/v1/ghost/members/unsubscribe \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"member_ids":["6710c3e5b1c2d400a1b2c4f1","6710c3e5b1c2d400a1b2c4f2","6710c3e5b1c2d400a1b2c4f3"]}' {
"unsubscribed": 3,
"skipped": 0,
"failed": []
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is ghost_write → unsubscribe_members. Example data.
Schedule it in n8n, Make, Zapier or cronGhost tools this automation uses
| Tool | Parameters |
|---|---|
| list_members | status, label, signed_up_on, created_after, min_emails_sent, max_open_rate, page, limit |
| get_member | member_id |
| unsubscribe_members | member_ids |
Frequently asked questions
Is it safe to connect Ghost to Cotlet?
Yes. You sign in to Ghost yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Ghost once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.
Give your agent access to Ghost.
Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Ghost.