Gumroad Integration
Replace Gumroad's file hosting with Continuata's advanced download system while keeping Gumroad for payments and marketing.
Integration Method (API-only): Unlike Shopify, WooCommerce, FastSpring, Stripe, and VibraCart Pro, there is no first-class Gumroad webhook receiver in Continuata. You wire Gumroad's "ping" to your own server (or a serverless function) and have it call the Continuata API to mint download tokens. The rest of this guide walks through that setup.
Integration Strategy
Keep Gumroad for its excellent payment processing and affiliate system, but deliver files through Continuata for better performance and features.
Keep Using Gumroad For
- Payment processing
- Affiliate program
- Marketing tools
- Customer management
- Analytics dashboard
Switch to Continuata For
- File hosting and delivery
- Download experience
- Resume functionality
- Delta updates
- Predictable usage-based bandwidth pricing
Setup Process
Step 1: Upload Products to Continuata
- Upload your digital products to Continuata
- Note the Product IDs for each item
- Ensure all products are published and have active versions
Step 2: Configure Gumroad Ping
Gumroad can send a "ping" (webhook) to a URL you specify whenever a sale occurs. You'll point this at your own server or a serverless function that calls the Continuata API to create a download token.
- In Gumroad, go to Settings → Advanced → Ping
- Set the ping URL to your serverless function endpoint
- Select Sale events
Step 3: Create a Serverless Handler
Your handler receives the Gumroad ping, extracts the product and customer details, and calls the Continuata API to create a download token:
// Example: Cloudflare Worker or Node.js handler
export default {
async fetch(request) {
const ping = await request.formData();
const email = ping.get('email');
const fullName = ping.get('full_name') || email;
const price = ping.get('price'); // Gumroad sends cents
const currency = (ping.get('currency') || 'usd').toUpperCase();
// Map the Gumroad product to your Continuata product ID (a UUID)
const CONTINUATA_PRODUCT = mapGumroadProduct(ping.get('product_id'));
// Create a purchase in Continuata (mints the download link + emails it).
// NOTE: /api/purchases expects form fields, not JSON.
const body = new FormData();
body.set('customerId', 'new'); // or an existing customer id
body.set('newCustomer.name', fullName);
body.set('newCustomer.email', email);
body.set('productId', CONTINUATA_PRODUCT);
body.set('amount', String((Number(price) || 0) / 100)); // whole currency units
body.set('currency', currency);
body.set('paymentMethod', 'gumroad');
body.set('sendEmail', 'true');
const res = await fetch('https://continuata.io/api/purchases', {
method: 'POST',
headers: { 'Authorization': 'Bearer ' + CONTINUATA_API_KEY },
body,
});
return new Response(res.ok ? 'OK' : 'Continuata error', { status: res.ok ? 200 : 500 });
}
};
Endpoint shape: /api/purchases is the same form-based endpoint the dashboard uses — it responds with an HTML fragment rather than JSON, and returns 422 if a customer with that email already exists (look the customer up first for repeat buyers). productId must be the Continuata product ID (a UUID from the product page), not the slug.
Customer Experience
Here's what your customers will experience:
Purchase on Gumroad
Customer completes purchase using familiar Gumroad checkout.
Receive Download Link
Continuata sends a download link via email automatically.
Browser-Native Download
Full-speed, multithreaded download directly to disk with resume support and SHA-256 verification.
Migration from Gumroad Files
Transitioning existing Gumroad products to use Continuata delivery:
Gradual Migration: Start with new products on Continuata, then gradually migrate existing products. You can run both systems simultaneously during transition.
Migration Checklist
- Upload product files to Continuata
- Test download links with sample customers
- Set up your serverless handler to process Gumroad pings
- Monitor download analytics for issues
- Gradually disable Gumroad file delivery
Need Help? Contact support@continuata.com for personalised migration assistance. See the API Integration guide for the full API reference.