Log every Gumroad sale to Google Sheets and Slack

The moment a Gumroad sale comes in, drop a full row into your revenue ledger and ping the team channel with the summary.

Deterministic Code
GumroadGoogle SheetsSlack BotSalesFinanceData SyncNotifications & Alerts
PromptCreate

Whenever Gumroad fires a sale webhook (the sale resource_subscription), append a new row to my Google Sheets sales ledger using Append Values, and post a short Slack notification summarising the sale.

Trigger: Gumroad webhook, sale resource. The full sale payload is available on the incoming event, so no extra Gumroad reads are required. Get Sale is available if any field needs enrichment.

Filter first: if the payload indicates the sale was refunded (any refunded flag or refund timestamp) OR is a test purchase (test flag), stop the workflow without writing anything. Only real, non-refunded sales should make it past this step.

Step 1: Google Sheets Append Values on my sales ledger spreadsheet. Append a single new row with these columns in order: sale timestamp (ISO8601 from the payload), buyer email, product name, variant (blank if no variant), price in dollars (convert from cents, formatted like 19.00), currency (uppercase, e.g. USD), quantity, and referrer. Use USER_ENTERED so the timestamp and numbers keep their native types in the sheet.

Step 2: Slackbot Send a Message to the sales alerts channel. Keep the copy short and scannable, one line is fine: product name, price in dollars with currency, and buyer email. Example: "New sale: Indie Handbook — $19.00 USD — buyer@example.com".

This is deterministic fan-out, no AI drafting or judgement calls. Every field is known upfront from the webhook payload. If either step fails, surface the error but do not retry the other step blindly — the sheet is the source of truth for the ledger.

What does this prompt do?

  • Fires the instant a new Gumroad sale is completed, using Gumroad's sale webhook
  • Appends a new row to your Google Sheets ledger with the sale timestamp, buyer email, product name, variant, price in dollars, currency, quantity, and referrer
  • Posts a short Slack message summarising the sale (product, price, buyer email) to the channel your team actually checks
  • Skips refunded sales and test purchases so the ledger and the notifications stay accurate

What do I need to use this?

  • A Gumroad account that is actively taking sales
  • A Google Sheet with a header row ready for the sale columns
  • A Slack workspace and the channel where you want sale pings to land

How can I customize it?

  • Change the Slack channel or route different products to different channels
  • Swap the spreadsheet or tab you write to, or add extra columns (order ID, discount code, tax)
  • Adjust the Slack summary wording, or include the variant and quantity in the ping

FAQs

How fast does the sheet and Slack update after a sale?
Effectively in real time. Gumroad calls the webhook the moment the sale is completed, so the row lands in your sheet and the Slack ping fires within a few seconds.
Will refunded orders or test purchases show up in the ledger?
No. Refunded sales and test purchases are filtered out before anything is written, so your sheet stays clean.
Is the price logged in dollars or cents?
Dollars. Gumroad sends the amount in cents, and the workflow converts it before writing the row and before posting the Slack message.
Can I add or remove columns later?
Yes. The column list is defined in the workflow, so you can add fields like order ID or drop the referrer without rebuilding anything.
Does this replace Gumroad's own analytics?
No, it complements them. This is for teams who want their own running ledger they can pivot, chart, and share, plus the live Slack visibility.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
A brand asset library your marketing team actually searches

Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.

General Input Storage
General Input Database
JigsawStack
+1
App
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
Clean out the Looker dashboards and Looks nobody opens

One board showing every dashboard and Look with its folder, owner and favorite count, so you can find dead content and retire it safely.

Looker
Slack Bot
App

Stop copy-pasting Gumroad sales into a spreadsheet.

Wire your sales ledger and your Slack channel up once and let every future sale log itself.