# 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.

- Workflow type: agent
- Services: PayPal, Google Sheets, Slack Bot
- Categories: Finance, Operations
- Published: 2026-08-09

## What it does

- 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 you'll need

- 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.

## Prompt

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.

## How to customize

- 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.

## Example output

Weekly subscription report, 9 Aug

Estimated MRR is $12,480, up $310 from last week. 47 subscriptions active, 3 new this week, and $11,905 actually collected over the last seven days.

Needs attention: 2 subscriptions moved to SUSPENDED. Acme Design Co ($149/mo) and R. Patel ($49/mo) both failed their retries this week. That is $198 of monthly revenue that is usually recoverable if someone reaches out before the plan closes out.

Cancelled: 1. Northwind Ltd ($99/mo) cancelled on 6 Aug after 14 months.

## FAQ

### Why can't I just get this from PayPal?

PayPal gives you individual transactions and subscription records, but it has no built-in reporting for recurring revenue, churn, or how those numbers move week to week. This report builds that history for you by taking a snapshot every week and comparing it to the last one.

### What does a suspended subscription actually mean?

PayPal automatically retries a recurring payment when it fails, and suspends the subscription after repeated failures. So suspended usually means a card problem rather than a customer who chose to leave, which is why the summary calls those out separately. Reaching out that same week often recovers the revenue.

### How does it know which subscriptions to look at?

It reads the list of subscription IDs from a tab in your Google Sheet. You add a subscription ID there once and it gets tracked from then on, which also means you can deliberately exclude test or internal subscriptions.

### Will this change anything in my PayPal account?

No. It only reads subscription and payment information from PayPal. The only things it writes are the new row in your spreadsheet and the summary message in Slack.

### Do I need a paid Google Workspace account?

No, a regular Google account works. You just need a spreadsheet you can share with the workflow.

Use this prompt in General Input: https://www.generalinput.com/prompts/track-paypal-subscription-revenue-and-churn-every-monday