Gumroad sales and memberships next to your visitors
Connect a Gumroad access token and add the Ping address. Sumly reads every sale and membership, counts them without tax and after Gumroad's fee, and traces sales from your own site to the visit that started them.
Connected in three steps
A token pasted once, and the Ping address. Gumroad tokens cannot be limited to reading; Sumly only reads with it.
-
1
In Gumroad: Settings → Advanced → Applications. Create an application named Sumly (any icon; the redirect URI can be
http://127.0.0.1), then press Generate access token. -
2
Gumroad tokens cannot be limited to reading. Sumly only reads sales, subscribers, products and payouts with it, and keeps it encrypted.
-
3
Paste the token below. The first read takes three years of sales and every subscriber, so it can take a few minutes.
-
4
Then add the Ping address Sumly shows under Settings → Advanced → Ping, so sales arrive as they happen and carry the visitor the site script put on your product links.
Or let your coding assistant do it
Paste this into Claude Code, Cursor or Codex in your project. It fits the code to how your project is built, asks you for the dashboard steps and leaves the keys to you.
See what it says
Set up Gumroad for Sumly in this project. Sumly (https://sumly.dev) shows revenue next to the visits and app users it came from. The full guide is https://sumly.dev/integrations/gumroad; read it if anything below is unclear. Steps: 1. In Gumroad: Settings → Advanced → Applications. Create an application named Sumly (any icon; the redirect URI can be `http://127.0.0.1`), then press Generate access token. 2. Gumroad tokens cannot be limited to reading. Sumly only reads sales, subscribers, products and payouts with it, and keeps it encrypted. 3. Paste the token into Sumly. The first read takes three years of sales and every subscriber, so it can take a few minutes. 4. Then add the Ping address Sumly shows under Settings → Advanced → Ping, so sales arrive as they happen and carry the visitor the site script put on your product links. So each payment shows which visit it came from: Product links on your site (gumroad.com/l/… and yourname.gumroad.com/l/…) need nothing more: the site script adds ?sumly_visitor_id= to them, and Gumroad passes it back in the Ping. So add the Ping address. If you want it on the sale itself too, give the product a custom field named sumly_visitor_id: Gumroad fills it from the link. Each sale then counts for the source, campaign and country of the visit that started it. In the EU and UK there is a visitor only after they agree. Keep in mind: Built from Gumroad's API docs and checked against responses shaped like them, not yet against a live Gumroad account. Tell us if a number looks off. Gumroad tokens cannot be limited to reading; Sumly never writes with it. A subscriber carries no price in Gumroad's API, so each is read with their latest charge. That walk runs when you connect and about once a day after, so a cancellation can take a day to show; sales come every 15 minutes, and at once with the Ping. Refunds come from your payouts (Gumroad pays out weekly, and lists the coming payout too). A sale alone does not say it was refunded. Affiliate commissions are not taken off. How to work: - Look at how this project is built first, and fit the code to its framework and its way of doing things; the examples above are a starting point, not something to paste as is. - Steps that happen in a dashboard (Sumly, or Gumroad's own) are mine: tell me exactly what to click, then wait for me. - The Gumroad key goes into Sumly (Projects and payments), not into this project: Sumly reads Gumroad itself. Your part in the code is only carrying the visitor into checkout, as above. - Keys the code needs belong in environment variables, never in the code or the repository. Never ask me to paste a secret key into this chat; tell me which variable to set. - Change only what this needs, show me the changes before you commit, and tell me how to check that it works.
What you see after connecting
Gumroad next to every other project and provider, on the same pages.
Overview
MRR, ARR, revenue per customer, paying members, trials and the MRR set to cancel.
Sales before tax and after Gumroad's fee, with the buyer.
Metrics over time, with churn, LTV and quick ratio.
Plans by product and tier, customers, the outlook and a CSV export.
With the Ping added
Revenue by source and campaign, and ROI for each cost.
Which visit paid
Product links on your site (gumroad.com/l/… and yourname.gumroad.com/l/…) need nothing more: the site script adds ?sumly_visitor_id= to them, and Gumroad passes it back in the Ping. So add the Ping address. If you want it on the sale itself too, give the product a custom field named sumly_visitor_id: Gumroad fills it from the link. Each sale then counts for the source, campaign and country of the visit that started it. In the EU and UK there is a visitor only after they agree.
How attribution works →Counts toward your plan
Nothing: payments, customers and refunds never count toward your plan. Only the page views and app screens Sumly keeps do. Plans →
The details
What Sumly reads
- Sales of every product, with Gumroad's fee and the tax
- Memberships, priced by each subscriber's latest charge
- Refunds and chargebacks from your payouts
- Each sale the moment it happens, by the Ping
When Sumly reads Gumroad
- Sales every 15 minutes, together with the other connections of the project. The first read takes three years of sales.
- Every subscriber, with their latest charge for the price, when you connect and then about once a day.
- Refunds and chargebacks from the payouts of the last weeks, including the coming one.
- With the Ping added, each sale is read again from Gumroad the moment it happens.
How Gumroad money is counted
- Monthly value
- The subscriber's latest charge before tax, spread over their recurrence: a third for quarterly, a twelfth for yearly, a twenty-fourth for every two years.
- Trials
- A membership with a free trial counts from the day the trial ends.
- Cancellations
- A membership set to cancel leaves MRR the day the cancellation was asked for, though it stays paid up until the period ends. One that failed to pay or ended stops on that day.
- Tax
- Gumroad is the merchant of record and pays the tax. Sales count their price before tax.
- Fees
- Gumroad's fee on each sale (and your processor's, for sales through your own Stripe or PayPal). Net revenue is after it.
- Refunds and chargebacks
- As your payout lists them: the sale price back, and net after the fee Gumroad returned. Each is dated on its day.
- Currency
- Sales in their own currency, turned into euros at the ECB rate of that day; refunds in your payout's currency. MRR converts at today's rate.
Good to know
- Built from Gumroad's API docs and checked against responses shaped like them, not yet against a live Gumroad account. Tell us if a number looks off.
- Gumroad tokens cannot be limited to reading; Sumly never writes with it.
- A subscriber carries no price in Gumroad's API, so each is read with their latest charge. That walk runs when you connect and about once a day after, so a cancellation can take a day to show; sales come every 15 minutes, and at once with the Ping.
- Refunds come from your payouts (Gumroad pays out weekly, and lists the coming payout too). A sale alone does not say it was refunded.
- Affiliate commissions are not taken off.
Gumroad questions
Can Sumly change anything in Gumroad?
No. Gumroad tokens cannot be limited to reading, but Sumly only reads with it and keeps it encrypted. You can revoke it under Settings → Advanced at any time.
Why add the Ping?
It brings each sale within seconds, and it is how the visitor the site script put on the link comes back. Without it, sales still arrive every 15 minutes, without a source.
Why can a cancellation take a day?
Gumroad's API lists subscribers without a price, so Sumly reads every subscriber with their latest charge, and does that once a day rather than every 15 minutes.
Does it read Discover sales?
Yes. They are sales like any other; Gumroad's higher fee on them comes off.
Why is the Ping not signed?
Gumroad does not sign it. The address holds a secret of its own, and Sumly takes nothing from the call but which sale it was: the sale is read again from Gumroad with your token.
Other integrations
Try it with your own projects
Sign in with Google or a code by e-mail and connect your first project. Free for one project, and 14 days of a paid plan with no card.
Start freeOr look around first: open the live demo.