Track PayPal subscription revenue and churn every Monday
Every Monday at 8am, get the recurring revenue numbers PayPal does not show you, plus every subscription that quietly stopped paying.
Every Monday at 8am on a cron schedule, build the recurring revenue report that PayPal does not give me natively, append it to a running history in Google Sheets, and post a narrative summary to Slack.
Start in Google Sheets. Use Get Values to read the tracking tab that lists the PayPal subscription IDs we monitor. This sheet is the registry of subscriptions. PayPal has no operation that lists every subscription on an account, so never try to fetch all subscriptions directly. Always iterate over the IDs read from the sheet.
For each subscription ID, call PayPal Get Subscription to capture the current status (ACTIVE, SUSPENDED, CANCELLED, or EXPIRED), the plan ID, the billing amount and currency, the subscriber name or email, and the next billing date. If the plan name or pricing detail is not present on the subscription record, call Get Plan for that plan ID to fill it in.
Then call List Subscription Transactions for each subscription over the last seven days to confirm which subscriptions actually collected money in that window. A subscription can read as ACTIVE while quietly failing to bill, so treat the transaction list as the source of truth for money collected and the status field as the source of truth for lifecycle state. Total up what was genuinely collected across all subscriptions.
Read last week's snapshot row from the same sheet and compare it against what you just gathered. Compute the total active count, new subscriptions that were not present in last week's snapshot, subscriptions that moved to CANCELLED, subscriptions that moved to SUSPENDED, and estimated monthly recurring revenue. When estimating MRR, normalize every active subscription's billing amount to a monthly figure: divide annual plans by 12, multiply weekly plans by 52 and divide by 12, and count monthly plans as they are. Only count subscriptions that are currently active.
Append this week's snapshot to the same sheet with Append Values, one row per week, containing the run date, active count, new, cancelled, suspended, total collected in the last seven days, and estimated MRR. Keep the column order identical every week so the tab becomes a running MRR history that can be charted.
Finally, post the narrative summary to Slack with Send a Message. Write a few short sentences someone can read on their phone, leading with estimated MRR and how it moved against last week. Name every subscription that moved to SUSPENDED or CANCELLED, with the subscriber name or email and the monthly amount at risk. Frame the suspended ones as recoverable revenue rather than lost revenue: PayPal automatically retries failed recurring payments and suspends the subscription after repeated failures, so a suspended subscription usually means a payment problem that someone can fix this week by reaching out. Cancelled subscriptions should be reported as confirmed churn.
If the sheet contains no prior snapshot row, treat this run as the baseline: append the row as normal and say in the Slack message that this is the first snapshot, so there is no week over week comparison yet. If an individual subscription ID cannot be read from PayPal, keep going with the rest and list the failed IDs at the end of the Slack message rather than failing the whole report.
Example output
What does this prompt do?
- Checks every subscription you track and records its current status, plan, and billing amount.
- Confirms which subscriptions actually collected money in the last seven days, so a plan that looks active but stopped billing does not slip past you.
- Works out active count, new, cancelled, suspended, and your estimated monthly recurring revenue, compared against last week.
- Adds this week's numbers as a new row in your spreadsheet, building a revenue history you can chart over time.
- Posts a short written summary to Slack naming everyone who went suspended or cancelled, since suspended usually means a failed payment you can still save.
What do I need to use this?
- A PayPal business account that bills customers on subscriptions.
- A Google Sheet with a tab listing the subscription IDs you want tracked, one per row. This list is how the report knows what to check.
- A Slack workspace and a channel where the weekly report should land.
How can I customize it?
- Change the day and time, for example Friday afternoon instead of Monday morning.
- Send it to a different Slack channel, or as a direct message to just the founder.
- Adjust the reporting window, or add an extra callout when estimated revenue drops by more than a set percentage.
FAQs
Why can't I just get this from PayPal?
What does a suspended subscription actually mean?
How does it know which subscriptions to look at?
Will this change anything in my PayPal account?
Do I need a paid Google Workspace account?
Related templates
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
Stop guessing what your PayPal subscriptions are actually worth.
Get a written revenue readout every Monday, plus an early warning on the subscriptions you can still save.