The Scenario
You run a membership community on Payhip and pipe subscription.created webhooks into an Excel workbook on SharePoint via Power Automate — it's been running for four months. The "Subscriptions" worksheet holds the raw event JSON in one column. Nobody has looked at it in weeks because nobody knows what to do with raw JSON.
This morning you got a Slack message from a co-founder: "Can you send me a breakdown of new subscribers by plan for the last three months? Trying to prep for the investor sync."
The investor sync is at 9 AM tomorrow.
The bad version:
- Open the first row in the "Subscriptions" worksheet, parse the JSON manually to find the plan name and the subscription date.
- Tally it somewhere — a separate worksheet, a running total in your head.
- Work through all 400-odd rows, trying to keep a running count by plan without losing track of which rows you've processed.
You have the data. The output someone needs is a simple table: plan names down one side, months across the top, subscriber counts inside. Getting from A to B should not take until midnight.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Excel workbook. It reads the raw webhook data, extracts the subscriber details, and pivots them into a summary table — all in one pass.
Parse every row of my Excel "Subscriptions" worksheet from the Payhip subscription.created event column and produce a count breakdown by membership tier in a new "Tier Summary" worksheet.
What You Get
- A pivot table lands on "Tier Summary" with plan names in one axis and subscriber counts grouped by month in the other.
- The source rows in the "Subscriptions" worksheet are read but not modified.
- Any row where the JSON is malformed or missing the expected fields is noted separately rather than silently excluded from the count.
What If the Data Is Not Quite Ready
Some webhook rows are subscription.updated events mixed in with subscription.created
For each row in the "Subscriptions" worksheet, check whether the Payhip event type is "subscription.created". Process only those rows — extract subscriber email, plan name, and date — and pivot them into a summary table by plan and month on a "Tier Summary" worksheet. Skip all other event types.
Plan names in the webhook data use internal slugs instead of display names
Parse the Payhip subscription.created events in the "Subscriptions" worksheet. Map the plan slugs to display names using this table: "tier_1" → "Starter", "tier_2" → "Pro", "tier_3" → "Enterprise". Then pivot subscriber counts by display plan name and month into the "Tier Summary" worksheet.
You want the summary broken down by both plan and acquisition month, plus a totals row
Parse the Payhip subscription.created webhook JSON in the "Subscriptions" worksheet. Extract plan name and subscription date. Build a pivot table on "Tier Summary" with plan names as rows, calendar months as columns, subscriber counts as values, and a "Total" row at the bottom summing each plan's full count.
Full pipeline — parse events, map slugs, filter to last 90 days, pivot, and add MoM growth
Parse subscription.created events from the "Subscriptions" worksheet. Filter to events from the last 90 days. Map plan slugs to display names. Pivot subscriber counts by plan and month on "Tier Summary". Add a "MoM Growth" row showing percentage change between each adjacent month column.
The investor summary you needed this morning is ready before the sync.
Try It
Get the 7-day free trial of SheetXAI and open the workbook where your Payhip subscription webhook data is accumulating, then ask it to pivot new subscriber counts by plan and month. To understand cancellations in the same dataset, see Track Churn From Payhip Subscription Deleted Events in an Excel workbook or return to the Payhip integration overview.
