Run every Gumroad discount code from one campaign desk
See every discount code across all your Gumroad products in one table, fix the ones about to run out, and launch new promos an agent plans for you.
I sell about a dozen products on Gumroad and I run discounts across all of them, but Gumroad only lets me manage offer codes one product at a time from each product's checkout page, so there is no single place to see what is running. Build me a discount campaign desk: one app where I can see every code across every product, act on them inline, and plan new promos.
The home view is one table. Load every product with the Gumroad List Products operation, then for each product load its codes with List Offer Codes, and use Get Offer Code to fill in the per-code detail the list response does not carry. Group the rows by product so I can scan a product and see all of its codes underneath it. Each code row should show the code itself, the discount (percentage off or a fixed amount off), how many times it has been used, the usage cap, how many uses are left, and the validity window when the code has a start or end date. Gumroad returns money amounts in cents, so divide by 100 and format as currency before displaying anything.
Add a status column that calls out the codes I need to act on. Flag a code as nearly exhausted once it has used most of its cap, defaulting to 80 percent or more and letting me change that threshold, and flag it as dead once the cap is fully used or the validity window has ended. Let me sort and filter the table by status so I can pull up just the codes that need attention, and show counts of nearly exhausted and dead codes at the top of the page.
I want three actions available inline from the table. First, mint a new code on any product with Create Offer Code, using a small form where I set the code text, the discount as either a percentage or a fixed amount off, the usage cap, and an optional validity window. Second, raise or lower the cap on an existing code with Update Offer Code. That operation only adjusts the usage cap, so present it as a cap change rather than a general edit, and make it clear in the interface that the discount amount cannot be changed once the code exists. Third, retire a finished promo with Delete Offer Code. Deleting is permanent in Gumroad, so put a confirmation step in front of it that names both the code and the product.
Put a "Plan a promo" button on every product row that kicks off a background agent scoped to that product. The agent pulls recent sales for the product with List Sales, using the ISO8601 before and after filters to bound a recent window, and works out how the product has actually been selling: volume, revenue, the trend over the window, and what any past discounting looks like. From that it decides what discount depth is justified, creates the code with Create Offer Code, and writes launch copy I can paste straight into an email or a social post. It returns a plan into the app containing its read on the product's sales, the discount it chose and the reasoning behind it, the code it created with its cap and window, and the launch copy.
The plan lands in a review panel inside the app rather than going anywhere else. A newly created code does nothing until I actually share it, so nothing is live until I approve the plan and use the copy. From the review panel let me approve a plan, which marks the campaign as launched, or discard it, which deletes the code the agent created using Delete Offer Code so a rejected plan does not leave a stray code sitting on the product. Keep past plans per product with timestamps so I can look back at what was suggested.
Every code the desk creates, whether I minted it inline or the agent created it, should be appended to a campaign ledger spreadsheet in Google Sheets using the Append Values operation. Each row should carry the launch date, the product name, the code, the discount, the usage cap, whether it came from me or from the agent, and empty columns for the revenue figures that get filled in later. Let me choose the spreadsheet and the tab the ledger writes to.
Add a refresh action on the ledger. It reads the existing rows with Get Values, finds campaigns that launched at least seven days ago and do not have revenue filled in yet, and for each one pulls that product's sales with List Sales, setting the ISO8601 after and before filters to the launch date and seven days after it. Total the revenue for that window, remembering amounts come back in cents, and write the figures back into the matching ledger rows with Update Values. Include both the revenue in the seven days after launch and how many of that code's uses landed in the window, so the ledger ends up showing which discounts actually paid off.
Keep the whole thing tight: the product and code table is the home view, the ledger and the saved promo plans are reachable from it, and every action is available from the row I am already looking at.
What does this prompt do?
- One table with every product you sell and every discount code under it, showing the discount, how many times it has been used, how much of the cap is left, and which codes are nearly exhausted or already dead.
- Create a new code, raise the cap on one that is about to run out, or retire a finished promo without leaving the page.
- A "Plan a promo" button on each product hands the work to a background agent that studies recent sales, picks a discount depth it can justify, sets up the code, and writes launch copy you can paste into an email or a post.
- Every code the desk creates is logged to a campaign ledger spreadsheet, and a refresh fills in the revenue from the seven days after each launch so you can see which discounts actually paid off.
What do I need to use this?
- A Gumroad account with the products you sell, and permission to manage discount codes on them
- A Google account and a spreadsheet you want to use as the campaign ledger
- A rough idea of how deep a discount you are willing to offer, so the promo planner stays inside your limits
How can I customize it?
- Change what counts as nearly exhausted. By default a code gets flagged once it has used most of its allowance, and you can move that line wherever you like.
- Tell the promo planner how deep a discount it may suggest and what tone to write the launch copy in, so it sounds like you.
- Point the ledger at a different spreadsheet or tab, and change the revenue window from seven days to whatever matches how your launches actually run.
FAQs
Can I finally see discount codes from all my products in one place?
Can I change the discount amount on a code that already exists?
What happens when I retire a code?
Does the promo planner publish anything without asking me?
How does it know whether a discount actually worked?
Does it touch my products or my prices?
Related templates
Stage a batch of filings overnight, then approve each completed form from a screenshot before anything is ever submitted.
Review every conversation Fin closed as resolved, judge which ones actually stuck, and see what the gap is worth against your bill.
Work every return, damage and warranty claim in one queue, with the order, the delivery date and a policy-backed recommendation already on screen.
See exactly which ingredients next week needs based on what you actually sold, adjust anything by hand, then build a one-click grocery cart.
See follower growth, posting cadence, format mix and engagement rate for your brand and every competitor you track, side by side on one board.
Open one screen to see how every service in your Jobber price book actually performed: how often it sold, what you charged, and where prices swing.
Stop hunting for discount codes product by product.
Open one desk that shows every Gumroad promo you are running, what it has cost you, and what to launch next.