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.

Additional information

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

Frequently asked questions

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.

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.