Gumroad buyer support console with refunds and license control

By General Input

Paste a customer email or license key and see every purchase, license, and membership in one place, then refund or reset a key right from the row.

Integrations

  • Gumroad
  • Gmail

Type

App

Categories

  • Customer Support
  • Operations

Build me a Gumroad buyer support console: one screen where I paste a customer email address or a license key and immediately see that person's entire history with my store, with every fix I might need to make available right there in the row.

The top of the app is a single search box that accepts either an email address or a license key. If the input looks like an email, resolve it with Gumroad List Sales filtered by that email address, paging through results so a repeat buyer's full history comes back rather than just the first page. If the input looks like a license key, resolve it by calling Gumroad List Products once to get the product ids, then Gumroad Verify License against each product until one matches, and cache the product list so repeated lookups stay fast. Important: pass the option that stops Verify License from incrementing the uses counter, because a support lookup must never burn one of the buyer's activations. Once a sale is identified, use Gumroad Get Sale for the full detail record.

Show the results as a customer profile. A header with the buyer name and email plus quick totals: number of purchases, lifetime spend, and how many orders have already been refunded. Under that, a purchases table with one row per order showing the product name, order date, amount paid, order status including whether it was refunded or disputed, and the license key if the product issues one. Selecting a row expands the full Get Sale detail, including any custom fields, variants, and the shipping address for physical goods.

Next to the purchases, a license panel driven by Gumroad Verify License showing whether the key is currently enabled or disabled, how many uses it has consumed against its limit, and the date it was first activated. Below that, a membership panel: sweep Gumroad List Product Subscribers across the account's membership products to find any subscription tied to this buyer's email, and use Gumroad Get Subscriber for the detail, showing plan, status, current period end, and cancellation date if one is set.

Every action I need lives on the row so I never leave the app. Refund the order in full or for a partial amount with Gumroad Refund Sale. Kill a compromised or abused key with Gumroad Disable License and restore it with Gumroad Enable License. Free up a seat for someone who reinstalled or changed machines with Gumroad Decrement License Uses Count. Mark a physical order as dispatched with Gumroad Mark Sale as Shipped, with optional tracking number and carrier URL fields in the dialog.

Put every one of those actions behind a confirmation step that spells out exactly what is about to happen, naming the buyer and the formatted amount, for example "Refund $49.00 to Dana Silva for Pro Plugin License?". Gumroad returns all amounts in cents, so format them as proper currency everywhere in the interface and convert back to cents when submitting a partial refund. If a refund fails, surface Gumroad's own error message in the dialog rather than a generic failure.

Gumroad only permits discretionary refunds within 90 days of purchase, so compare each order date against that window and show an unmistakable warning badge on any order that falls outside it, plus an extra line in the confirmation dialog, so nobody clicks refund blind on a year-old sale and gets a confusing error.

Add a "Draft the reply" button to the profile that kicks off a background agent. The agent reads the buyer's full purchase and license history from the app, works out the situation it is dealing with, and writes an appropriate response: a refund confirmation, a license reset with the freed seat explained, a duplicate charge explanation when it sees two near-identical orders close together, a shipping update, or a plain answer about what the person actually owns. It creates the message with the Gmail Create a Draft operation addressed to the buyer, then writes the draft id and the full body back into the app so the drafted reply appears in a panel on the profile. I read it there, and a Send button calls the Gmail Send a Draft operation. Nothing is ever sent without me pressing that button.

Keep a running activity log stored inside the app. Every refund, disable, enable, seat decrement, shipping mark, and sent reply gets a row recording which team member did it, which buyer and order it touched, the amount where relevant, and the timestamp. Show the buyer's own history inline on their profile, and give the log its own page with search and a filter by action type so I can answer questions like who refunded this order last Tuesday.

One thing to be explicit about in the interface: the handlers act as the connected Gumroad account owner, so any teammate who opens this app is operating on the same store with the same permissions. That is exactly why the activity log records the acting user on every row. Also handle the empty and unhappy paths properly: an email with no matching sales, a license key that belongs to no product, a buyer with purchases but no license, and an order that has already been refunded should each show a clear explanation rather than an empty table, and already-refunded orders should have their refund button disabled rather than hidden.

Related prompts

Explore more prompts
Win back LiveChat visitors whose chats went unansweredChase the paperwork every new client and vendor still owesFile Gmail attachments into storage with names you can findCandidate rediscovery desk for your archived Lever applicantsLaytime and demurrage claim workspace for chartering opsKajabi customer support console for member access fixesRun your application review round on Jotform submissionsRun your nutrition clients' weekly meal plans from one consoleReplace the dispatch whiteboard with a live production boardJob search command center with a self-filling pipeline board