Win back Gumroad customers after refunds and cancellations
The moment a buyer refunds or cancels on Gumroad, send an empathetic offer, sync HubSpot, and alert your team so nobody churns quietly.
Trigger this workflow with a Gumroad webhook subscribed to the refund, cancellation, and subscription_ended resource subscriptions so it fires the instant a buyer refunds a purchase, cancels a membership, or lets a subscription lapse.
When the webhook fires, read the payload to figure out which resource triggered it and which sale or subscription is involved. For a refund event use Gumroad Get Sale to pull the full sale record. For cancellation and subscription_ended events use Gumroad Get Subscriber to pull the subscriber. Either way also call Gumroad List Products so you have the product title, price, and description handy for a relevant, human-sounding message.
If the event is actually a chargeback or dispute (Gumroad flags the refund as such, or the underlying resource is dispute-flavored), skip the discount step entirely. Do not mint an offer code and do not send the win-back email. Go straight to the HubSpot logging and Slack alert steps below and clearly mark the note and the alert as a chargeback so a human handles it directly.
For every non-dispute event, mint a fresh single-use retention discount on Gumroad with Create Offer Code. Attach it to the same product the buyer was on, set max_purchase_count to 1 so it can only be redeemed once, and pick a discount size that matches the situation. Use a light 15 to 20 percent nudge for a clean cancellation with no stated reason, a heavier 30 to 40 percent when the buyer specifically cited price, and a smaller courtesy discount when the sale was already refunded. Give the code a memorable name tied to the product and the buyer so it is easy to trace later.
Draft a warm, personalized win-back email to the buyer and send it via Gmail Send a Message. Greet them by first name, acknowledge the specific event they just went through (refund, cancellation, or ended subscription), name the product, and offer the single-use code as a friendly second chance rather than a hard pitch. Keep it short and empathetic, sign off from a real name, and never sound pushy or defensive.
Upsert the buyer in HubSpot using Batch Upsert Contacts matched on email so they exist as a contact whether or not they were in the CRM before. Then use Create Note associated with that contact to log a churn record capturing the event type, the product, the amount involved, any cancellation reason Gumroad returned, and either the offer code you generated or the fact that this was a chargeback with no code. This is the audit trail retention needs later.
Finally, post a short alert to a Slack support channel using Slack Send a Message. Include the buyer name, the product, the event type, the amount, the offer code (or the phrase no code, chargeback), and a link back to the HubSpot contact. Keep the message compact so a teammate can scan it and decide whether to reach out personally when the buyer replies to the email.
What does this prompt do?
- Listens for Gumroad refunds, cancellations, and ended subscriptions the moment they happen
- Sends a warm, personalized win-back email with a single-use retention discount tied to the exact product the buyer was on
- Upserts the buyer in HubSpot and logs a churn note capturing the event, the product, and the discount that was offered
- Posts a short alert to a Slack support channel so a teammate can jump in if the buyer replies
- Skips the discount entirely for chargebacks and disputes and just logs plus alerts, so a human handles those cases directly
What do I need to use this?
- A Gumroad account that can generate offer codes and receive webhooks
- A Gmail address to send the win-back email from
- A HubSpot workspace with contacts and notes enabled (works on Free)
- A Slack workspace with a channel for support and retention alerts
How can I customize it?
- Which events kick it off: refunds only, cancellations only, ended subscriptions, or any mix of the three
- The tone, length, and signature of the win-back email
- How aggressive the retention discount gets (a light nudge for fresh cancellations, a deeper offer when someone cited price)
- Which Slack channel gets the alert and which HubSpot properties or lists get updated
FAQs
Does this run automatically or do I have to trigger it?
Will the discount really only work once?
What happens on a chargeback or dispute?
Do I have to use HubSpot?
Can it handle both digital products and memberships?
Related templates
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.
Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.
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.
Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.
Score last week's finished live chats against one rubric, let an AI grader draft the notes with quotes, and send coaching straight to the agent.
Every proposal you have ever submitted in one searchable archive, with the closest past answers lined up against each question in a new RFP.
Turn every Gumroad cancellation into a second chance.
Automate the win-back email, the single-use discount, the CRM note, and the team alert so you never let a churned buyer slip away in silence.