Monday morning Ghost membership growth report in Slack
Start every week with a real read on your publication. Net new free vs paid members, churn, top posts, and one recommendation, posted to Slack.
Build me a weekly Ghost membership growth report that posts to Slack every Monday at 9am Eastern time so the team starts the week with a real read on the publication.
Trigger: a cron schedule, every Monday at 9:00 America/New_York.
This is an agent workflow. The agent should pull data from Ghost, compute the numbers, write a digest, and post it to Slack as a single message.
Data to pull from Ghost (Admin API):
1. Browse Members (Admin API) once, filtered to members created in the last 7 days. Page through all results. Bucket by status so we can split free vs paid signups.
2. Browse Members (Admin API) a second time, filtered to members whose status is canceled and whose status changed in the last 7 days. Page through all results. This is the churn count.
3. Browse Posts (Admin API) for posts published in the last 7 days. Include the published_at timestamp, title, slug, and URL.
4. Browse Newsletters (Admin API) to know which newsletters exist on the site so the agent can attribute signups when a member subscribed via a specific newsletter.
There is no Ghost analytics endpoint in our catalog, so derive every count from these listing operations. Use Ghost's NQL filter syntax on created_at and status to scope the queries to the last 7 days.
Numbers the digest must include:
- Net new free members this week (signups with a free status).
- Net new paid members this week (signups with a paid status).
- Total churn (members whose status flipped to canceled in the last 7 days).
- Weekly churn rate: churned members divided by the total active member count at the start of the week, expressed as a percentage with one decimal.
- Net growth: new members minus churned members.
Content analysis: line up the publish times of the week's posts and newsletters against when signups happened. Pick the top three posts by recency that coincided with a signup spike and call them out with title, URL, and a one-line note on why each one stood out.
End the digest with one specific recommendation for the upcoming week, grounded in what the data showed (for example: 'The Tuesday post on X drove 40 percent of paid signups, double down on that topic next week').
Delivery: use Slack Bot Send a Message to post a single message to the #growth channel. Keep formatting clean using Slack's mrkdwn: bold section headers, short bullet lists, and clickable links to post URLs. Keep numbers concrete and skip filler. No fluff, no padding.
If a given week has zero new members or zero churn, still post the digest and say so plainly. Do not skip the post.
Additional information
What does this prompt do?
- Every Monday at 9am Eastern, pulls the last 7 days of Ghost activity and posts a digest to your growth channel in Slack.
- Counts net new free and paid members, totals churn, and calculates a weekly churn rate so you see real growth, not vanity totals.
- Lines up the past week's posts and newsletters with signup spikes and calls out the top three that moved the needle.
- Ends with one concrete recommendation for the week ahead so the team starts Monday with a plan, not just numbers.
What do I need to use this?
- A Ghost site with admin access so you can create a custom integration and grab an Admin API key.
- A Slack workspace where you can install the General Input bot and a #growth channel (or any channel of your choice) for the weekly post.
- Roughly 3 months of Ghost membership activity for the numbers to feel meaningful. Brand-new sites will still get a report, just with smaller numbers.
How can I customize it?
- Change the day or time. Daily, Friday afternoon, or first of the month all work the same way.
- Swap the Slack channel, or send the digest as a direct message to a single owner instead of a team channel.
- Tweak what the digest emphasizes. Some teams want paid conversions front and center, others care most about churn or about which newsletter drove the most signups.
Frequently asked questions
Does this work with both Ghost Pro and self-hosted Ghost?
Will it count free and paid members separately?
How does it pick the top posts?
Can I send the report to more than one Slack channel?
What if I do not have a #growth channel?
Stop guessing how the publication actually did last week.
Connect Ghost and Slack once, and Geni delivers a real membership read every Monday at 9am.