Reference · Tools
Gumroad trigger
Receives webhook notifications from Gumroad when sales, refunds, disputes, or cancellations occur for your digital products.
The Gumroad Trigger fires when Gumroad reports a transaction event — a sale, refund, dispute, dispute won, or subscription cancellation — and passes the full payload through, including product details, buyer email, price, currency and subscription metadata. A typical build is granting access to a course on sale and revoking it on refund or cancellation.
- Works as
- Webhook trigger
- Tool name
gumroad_trigger- Parameters
- 1
- Outputs
- Output
- Credentials
- Gumroad
- Official docs
- Gumroad docs gumroad.com
What you can build with Gumroad
- Start a workflow when a digital product is sold on Gumroad.
- Trigger a license key delivery email when a Gumroad sale occurs.
- When automate refund processing when a Gumroad refund is issued.
- When track subscriber churn when a Gumroad subscription is cancelled.
- When alert on payment disputes from Gumroad customers.
Overview
Receives webhook notifications from Gumroad when commerce events occur on your digital products. Supports five resource subscription types: sale (new purchase), refund (purchase refunded), dispute (chargeback filed), dispute_won (chargeback resolved in seller favor), and cancellation (subscriber cancelled). Gumroad sends webhook payloads as application/x-www-form-urlencoded POST requests containing detailed transaction data including product info, buyer email, price, currency, card details, and subscription metadata. No signature verification is available from Gumroad. Useful for automating order fulfillment, license key delivery, refund processing, churn tracking, and sales analytics workflows.
Node Type
Trigger — webhook (receives incoming HTTP callbacks)
Input / Output
| Direction | Port(s) |
|---|---|
| Input | None (trigger node) |
| Output | Output |
Credentials
This tool requires Gumroad credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Cancellation | cancellation |
| Dispute | dispute |
| Dispute Won | dispute_won |
| Refund | refund |
| Sale | sale |
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Resource | options | Yes | — | The resource type that will fire the webhook event. Each type creates a separate subscription on Gumroad. |
Options: cancellation (a subscriber cancelled), dispute (a chargeback was raised against a sale), dispute_won (a sale dispute was won), refund (a sale was refunded), sale (a new purchase) |
To listen for more than one resource, add one Gumroad Trigger node per resource type.
Output Data
Each delivery produces one output item. The Gumroad payload fields are placed directly on the item alongside three metadata fields:
{
"_trigger": "gumroad_webhook",
"_timestamp": "2026-01-01T00:00:00.000Z",
"_webhookEvent": "sale",
"seller_id": "",
"product_id": "",
"product_name": "Example Product",
"permalink": "example",
"product_permalink": "https://gumroad.com/l/example",
"email": "buyer@example.com",
"price": 999,
"gumroad_fee": 100,
"currency": "usd",
"quantity": 1,
"order_number": 1,
"sale_id": "",
"sale_timestamp": "2026-01-01T00:00:00.000Z",
"purchaser_id": "",
"subscription_id": "",
"card": {
"visual": "**** **** **** 4242",
"type": "visa",
"expiry_month": 12,
"expiry_year": 2027
},
"offer_code": "",
"license_key": "",
"ip_country": "US",
"custom_fields": {},
"variants": {},
"url_params": {},
"shipping_information": {},
"is_recurring_charge": false,
"test": true,
"refunded": false,
"disputed": false,
"dispute_won": false
}
_trigger— alwaysgumroad_webhook._timestamp— ISO 8601 timestamp of when the delivery arrived._webhookEvent— the resource that fired: taken from the payload’sresource_namewhen Gumroad supplies it, otherwise derived from thecancelled,dispute_won,disputedandrefundedflags, defaulting tosale.priceis in the currency’s smallest unit (for example cents), andtestistruefor test purchases.
Field availability depends on the product and the event — subscription fields such as subscription_id and is_recurring_charge only appear for membership products, and license_key only appears when the product issues licences. Reference values downstream by expression, for example {{ $json.email }} or {{ $json.product_name }}.
Example Configuration
Fire on every new sale:
{
"type": "gumroad_trigger",
"parameters": {
"resource": "sale"
}
}
Fire when a purchase is refunded:
{
"type": "gumroad_trigger",
"parameters": {
"resource": "refund"
}
}
Track subscription churn:
{
"type": "gumroad_trigger",
"parameters": {
"resource": "cancellation"
}
}
Alert on chargebacks:
{
"type": "gumroad_trigger",
"parameters": {
"resource": "dispute"
}
}
Trigger Behavior
- Activation: When the workflow is activated, a webhook endpoint is registered with the service.
- Deactivation: The webhook is automatically unregistered when the workflow is deactivated.
- Payload: The incoming webhook payload is parsed and output as workflow items.
- Verification: Supports signature verification where applicable.
Tips
This tool receives Gumroad commerce events via webhooks, such as sales, refunds, or cancellations. It is the right tool when you need to start a workflow based on specific Gumroad transaction types. It produces detailed transaction data including product information, buyer email, and price.
Frequently asked questions
Can one trigger listen for several event types?
Each resource type creates its own webhook subscription on Gumroad, so a trigger listens for the resource you select. Use a separate trigger per event type you need to handle.
Which events are available?
Sale for a new purchase, Refund for a reversed one, Dispute when a chargeback is filed, Dispute Won when it is resolved in your favour, and Cancellation when a subscription ends.
What is in the payload?
Detailed transaction data — product information, buyer email, price, currency and subscription metadata — so most fulfilment logic needs no follow-up API call.
Do I need to handle refunds and disputes separately?
They are distinct events, so yes if you want distinct behaviour. Refund and Dispute often warrant different responses: one is usually a customer request, the other a bank-initiated chargeback.
Build with Gumroad
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Gumroad credentials first.
Open BusyBotLast reviewed . Spotted something wrong? Tell us.