{"product_id":"gumroad-payhip-sales-webhook-to-google-sheets-n8n","title":"Gumroad \u0026 Payhip Sales Webhook to Google Sheets (n8n)","description":"\u003ch3\u003eOne sales ledger for Gumroad + Payhip—automatically sync into Google Sheets via n8n webhooks\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow listens to \u003cstrong\u003eGumroad\u003c\/strong\u003e and \u003cstrong\u003ePayhip\u003c\/strong\u003e sales events and writes a unified, de-duplicated sales log into \u003cstrong\u003eGoogle Sheets\u003c\/strong\u003e—so you don’t need separate CSV exports or manual reconciliation.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReceives events from two webhooks:\u003c\/strong\u003e one for Gumroad (Ping) and one for Payhip (paid\/refunded).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eVerifies each request:\u003c\/strong\u003e Gumroad requests are validated using your \u003cem\u003eseller_id\u003c\/em\u003e, and Payhip requests are verified using the \u003cem\u003esignature\u003c\/em\u003e (SHA-256 of your API key). Anything else is ignored.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eNormalizes both platforms into one schema\u003c\/strong\u003e with fields like order ID, platform, status, date, product, quantity, currency, gross, fees, net, and buyer email.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eAppends or updates rows by order ID:\u003c\/strong\u003e webhook retries won’t duplicate entries, and \u003cstrong\u003erefunds update the original sale\u003c\/strong\u003e. Payhip fees are included so \u003cstrong\u003enet\u003c\/strong\u003e is calculated correctly.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eHow to set it up\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eCreate a Google Sheet with a \u003cstrong\u003eSales\u003c\/strong\u003e tab and the header row specified in the workflow’s main sticky note.\u003c\/li\u003e\n  \u003cli\u003eAdd your \u003cstrong\u003eGumroad seller ID\u003c\/strong\u003e and the \u003cstrong\u003eSHA-256 hash of your Payhip API key\u003c\/strong\u003e into the two check nodes.\u003c\/li\u003e\n  \u003cli\u003eConnect Google Sheets, paste your sheet URL, \u003cstrong\u003epublish\u003c\/strong\u003e, then paste the production webhook URLs into:\n    \u003cul\u003e\n      \u003cli\u003eGumroad: \u003cstrong\u003eSettings \u0026gt; Advanced \u0026gt; Ping\u003c\/strong\u003e\n\u003c\/li\u003e\n      \u003cli\u003ePayhip: \u003cstrong\u003eSettings \u0026gt; Developer \u0026gt; Webhooks\u003c\/strong\u003e\n\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eRun one \u003cstrong\u003ecombined sales ledger\u003c\/strong\u003e for digital products sold on both Gumroad and Payhip.\u003c\/li\u003e\n  \u003cli\u003eKeep \u003cstrong\u003erefunds and retries accurate\u003c\/strong\u003e without manual edits.\u003c\/li\u003e\n  \u003cli\u003eGive operators and SaaS dashboards a single source of truth in Google Sheets.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003en8n nodes\/workflow components: \u003cstrong\u003ewebhook\u003c\/strong\u003e, \u003cstrong\u003eif\u003c\/strong\u003e, \u003cstrong\u003ecode\u003c\/strong\u003e, \u003cstrong\u003esticky note\u003c\/strong\u003e, \u003cstrong\u003eGoogle Sheets\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003eCustomization: add columns in the two \u003cstrong\u003eNormalise\u003c\/strong\u003e code nodes.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":46248877752499,"sku":"N8N-21220","price":35.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/a_N59xcmpaf2CMYjFa0o1_5kfr2IHN.png?v=1792487143","url":"https:\/\/buyflowscripts.com\/products\/gumroad-payhip-sales-webhook-to-google-sheets-n8n","provider":"N8N Commerce","version":"1.0","type":"link"}