{"slug": "i-built-two-etsy-seo-tools-in-14-days-full-stack-breakdown-cloudflare-workers-kv", "title": "I built two Etsy SEO tools in 14 days — full stack breakdown (Cloudflare Workers + KV + Stripe)", "summary": "A developer built two Etsy SEO tools in 14 days using Cloudflare Workers, KV, and Stripe, with a total monthly infrastructure cost of $0. The tools include ContentBase, an AI listing optimizer, and ShopScan, an on-demand SEO audit service. The developer implemented a simpler Stripe payment activation pattern that avoids webhook endpoints by using session ID validation and KV storage.", "body_md": "I spent the last two weeks building two products targeting the 5M+ Etsy seller market. Here's the honest story — what worked, what didn't, and the full technical stack.\n\nMost Etsy sellers write listings from a maker's perspective. They describe what they made. Buyers search for what they want to find.\n\n\"Handmade ceramic mug, blue, 12oz\" gets almost no search traffic.\n\n\"Handmade Ceramic Coffee Mug | Blue Stoneware 12oz | Gift for Coffee Lovers\" ranks for a dozen buyer searches.\n\nSame product. One gets found. One doesn't.\n\n**ContentBase** — AI listing optimizer. Paste any Etsy, Shopify, or Amazon listing. Get a rewritten title, description, and 13 keyword-targeted tags in ~10 seconds. Free for 5/day, no signup. Pro is $9/month.\n\n**ShopScan** — on-demand Etsy SEO audit. Pay $19, submit your listing, get a 12-page report (score, keyword gaps, full rewrite, action plan) by email within 24h.\n\nTotal monthly infrastructure cost: **$0**.\n\nMost people implement Stripe webhooks for post-payment activation. I found a simpler pattern.\n\nAfter payment, Stripe redirects to:\n\n```\nhttps://contentbase-crw.pages.dev?session_id={CHECKOUT_SESSION_ID}\n```\n\nThe frontend POSTs the session_id to `/activate-pro`\n\non the Worker. The Worker validates the format (`cs_live_`\n\nprefix — unguessable), generates a token, stores in KV, emails via Brevo.\n\nNo webhook endpoint. No signing secret. No HTTPS concerns. Works perfectly.\n\n```\nasync function handleActivatePro(request, env) {\n  const { session_id, email } = await request.json();\n\n  if (!session_id?.startsWith('cs_live_')) {\n    return json({ error: 'Invalid session' }, 400);\n  }\n\n  // Prevent replay attacks\n  const existing = await env.CB_TOKENS.get(`session:${session_id}`);\n  if (existing) return json({ token: existing, reused: true });\n\n  const token = generateToken();\n  await env.CB_TOKENS.put(`token:${token}`, 'active');\n  await env.CB_TOKENS.put(`session:${session_id}`, token);\n\n  await sendEmail(env, { to: email, subject: 'Your ContentBase Pro access is live' });\n  return json({ token, success: true });\n}\n```\n\nNo database needed:\n\n``` js\nasync function checkRateLimit(ip, env) {\n  const key = `rate:${ip}:${new Date().toISOString().split('T')[0]}`;\n  const count = parseInt(await env.CB_RATE.get(key) || '0');\n  if (count >= 5) return { allowed: false };\n  await env.CB_RATE.put(key, String(count + 1), { expirationTtl: 86400 });\n  return { allowed: true };\n}\n```\n\nKeys expire after 24h automatically. Cleanup is free.\n\n**Cloudflare is absurdly good for this use case.** Worker + KV + Pages covers serverless functions, key-value storage, and static hosting — all free, globally distributed.\n\n**Zero-friction free tier matters.** No email required to use ContentBase. No account. Just paste and get. The conversion to Pro happens after people see the output.\n\n**Distribution is harder than building.** The technical side took days. Finding actual Etsy sellers to try it is taking weeks. If you've solved Etsy/niche community distribution, I'd genuinely love to hear how.\n\nHappy to answer questions about the architecture or the Etsy seller market.", "url": "https://wpnews.pro/news/i-built-two-etsy-seo-tools-in-14-days-full-stack-breakdown-cloudflare-workers-kv", "canonical_source": "https://dev.to/aidaserviceasglitch/i-built-two-etsy-seo-tools-in-14-days-full-stack-breakdown-cloudflare-workers-kv-stripe-1m18", "published_at": "2026-05-31 11:23:02+00:00", "updated_at": "2026-05-31 11:42:42.951570+00:00", "lang": "en", "topics": ["ai-products", "ai-tools", "ai-startups"], "entities": ["Cloudflare Workers", "KV", "Stripe", "Brevo", "Etsy", "ContentBase", "ShopScan"], "alternates": {"html": "https://wpnews.pro/news/i-built-two-etsy-seo-tools-in-14-days-full-stack-breakdown-cloudflare-workers-kv", "markdown": "https://wpnews.pro/news/i-built-two-etsy-seo-tools-in-14-days-full-stack-breakdown-cloudflare-workers-kv.md", "text": "https://wpnews.pro/news/i-built-two-etsy-seo-tools-in-14-days-full-stack-breakdown-cloudflare-workers-kv.txt", "jsonld": "https://wpnews.pro/news/i-built-two-etsy-seo-tools-in-14-days-full-stack-breakdown-cloudflare-workers-kv.jsonld"}}