anyshop.io

Changelog

What we've shipped

Listed newest first. We ship something most days. Don't see a fix you need? Tell us.

2026-05-12

Public API + CLI + MCP, cart, subscriptions, buyer trust

  • TypeScript SDK: @anyshop/sdk — typed client, zero runtime deps. new Anyshop({apiKey}).orders.list({status:"paid"}).
  • CLI: @anyshop/cli — npx @anyshop/cli orders list, products create, audit, etc. Zero runtime deps.
  • MCP server: @anyshop/mcp — drop into Claude Desktop to manage your store conversationally. 10 tools mapped to the REST API.
  • HWID license binding: /api/v1/license_keys/[id]/bind + verify endpoint with bind_on_first_use flag.
  • Stripe Payment Links: dashboard button + API endpoint for reusable / one-time checkout URLs.
  • Mark fulfilled button for paid orders that need manual fulfillment.
  • Multi-line cart on the storefront: add multiple products, single Stripe Checkout Session with all line_items.
  • Buyer trust: shop landing shows ★ rating + N orders fulfilled + member-since + buyer-protection badge. Buyers leave reviews from the receipt; sellers see them on /dashboard/feedback. "Report a problem" complaint flow surfaces in /admin/complaints platform-wide.
  • REST API v1: /api/whoami, /api/v1/orders, /api/v1/orders/[id], /api/v1/products (GET + POST). Bearer-token auth via SHA-256 hashed API keys.
  • Stripe Subscriptions: subscription-type products checkout in mode:subscription, renewals create orders via invoice.paid, buyers manage billing via Stripe Portal.
  • Embed checkout: <script src=embed.js> with AnyShop.open({shopSlug,productSlug}) — modal iframe with auto top-level breakout on Stripe redirect.
  • Webhook deliveries log + per-delivery detail + replay button.
  • Discord and Slack incoming-webhook URLs auto-formatted as embeds.
  • License key bulk import (10k per paste, deduped against existing).
  • Order detail: delivered keys per line, audit timeline, webhook log, refund-with-Stripe action.
  • Refund button calls real Stripe Refunds API; charge.refunded webhook keeps bookkeeping idempotent.
  • Email receipts via Resend (graceful no-op without RESEND_API_KEY).
  • Storefront product search, embed-mode layout, "Email me my orders" lookup flow.
  • Seller analytics page with daily revenue + order sparklines.
  • Edit product + duplicate product actions.
  • CSV export for orders and customers.
  • Stale-pending order cleanup cron (every 15 min).
  • Stripe Connect routing: when the seller has connected, sessions create on their account with a 1% application_fee_amount (or fee_percent for subscriptions).
  • Dashboard setup-health warnings: STRIPE_SECRET_KEY missing, STRIPE_WEBHOOK_SECRET missing (the silent-failure one), RESEND_API_KEY missing.
  • Low license-key stock alert on the dashboard home.
  • Test mode pill in the top bar when running on Stripe test keys.

2026-05-11

V0 launch — core platform

  • 3-app Turborepo: dashboard (marketing + seller admin), storefront (multi-tenant per-shop), api (Stripe webhook receiver).
  • Drizzle schema: 23 tables, 19 PG enums. Neon-hosted Postgres.
  • Clerk auth, seller onboarding flow, multi-step shop setup.
  • Stripe Connect Express OAuth + callback.
  • Webhook signing/dispatch infrastructure: HMAC-SHA256, retries with exponential backoff up to 24h.
  • Order completion pipeline: paid → fulfilled, license key allocation via SELECT…FOR UPDATE SKIP LOCKED, audit + webhook fanout.
  • Admin platform-operator surface (10+ routes): shops, users, orders, enforcement, disputes, audit.
  • 57-event webhook taxonomy across orders, products, customers, subscriptions, disputes, replacements, resellers, affiliates, security.