# gumroad-ecommerce-integration > Handles Gumroad store integration, purchase buttons, product synchronization, and checkout flows for SketchUp extensions. Use when implementing purchase functionality or managing Gumroad products. - Author: mlamey - Repository: mostafalamey/ML-Extensions-website - Version: 20260207231332 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-07 - Source: https://github.com/mostafalamey/ML-Extensions-website - Web: https://mule.run/skillshub/@@mostafalamey/ML-Extensions-website~gumroad-ecommerce-integration:20260207231332 --- --- name: gumroad-ecommerce-integration description: Handles Gumroad store integration, purchase buttons, product synchronization, and checkout flows for SketchUp extensions. Use when implementing purchase functionality or managing Gumroad products. --- # Gumroad E-commerce Integration Integrate Gumroad seamlessly into the ML Extensions website for smooth purchasing experience. ## Gumroad Embed Methods ### 1. Direct Purchase Links ```jsx const GumroadButton = ({ productId, price, productName }) => { const gumroadUrl = `https://gum.co/${productId}?wanted=true`; return ( Buy {productName} - ${price} ); }; ``` ### 2. Embedded Checkout Overlay ```jsx import { useEffect } from 'react'; const GumroadOverlay = ({ productId, isOpen, onClose }) => { useEffect(() => { if (isOpen && window.GumroadOverlay) { window.GumroadOverlay.open({ url: `https://gum.co/${productId}`, title: 'Purchase Extension' }); } }, [isOpen, productId]); // Load Gumroad overlay script useEffect(() => { const script = document.createElement('script'); script.src = 'https://gumroad.com/js/gumroad-overlay.js'; script.async = true; document.body.appendChild(script); return () => { document.body.removeChild(script); }; }, []); return null; }; ``` ### 3. Product Information Integration ```jsx const GumroadProduct = ({ productId }) => { const [product, setProduct] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { // Fetch product info from Gumroad API fetch(`https://api.gumroad.com/v2/products/${productId}`) .then(res => res.json()) .then(data => { setProduct(data.product); setLoading(false); }) .catch(err => { console.error('Failed to load product:', err); setLoading(false); }); }, [productId]); if (loading) return
{product.description}
Your purchase of {extension.name} is complete. Check your email for download instructions.