1 ---
2 name: monetization
3 description: Master router for payments, checkout, subscriptions, paywalls, and monetization. Picks the right provider skill (Shopify, Stripe, Whop, or RevenueCat) before any provider-specific work begins. Read this BEFORE entering the shopify, stripe, whop, or revenuecat skills.
4 ---
5
6 # Monetization
7 Pick the payment provider here, then hand off to skill `shopify`, `stripe`, `whop`, or `revenuecat`. Do not re-litigate the choice inside those skills.
8
9 Providers:
10
11 - **Shopify** — best for physical goods; handles inventory, shipping, and checkout out of the box.
12 - **Stripe** — most flexible; requires external Stripe-dashboard setup to go live.
13 - **Whop** — fastest; auto-provisioned store and checkout, no external dashboard.
14 - **RevenueCat** — native-mobile in-app purchases only (Expo / React Native / iOS). Not for plain web apps.
15
16 ## Skip the routing question if any of these is true
17
18 The provider is already known — do not ask, just hand off to the matching provider skill.
19 - User explicitly named Shopify, Stripe, Whop, or RevenueCat. (Generic words — "payments", "subscriptions", "paywall", "monetize", "let users pay" — do NOT count.)
20 - A provider is already integrated: a `SHOPIFY_*` / `STRIPE_*` / `WHOP_*` / `REVENUECAT_*` env var or Replit Configuration is set
21 - The OpenInt connection for `shopify-store`, `stripe`, `whop`, or `revenuecat` is already connected.
22 - The conversation already established a provider.
23 - The user is asking for follow-up CRUD on an existing payment integration.
24 - The user's intent is clearly to sell **physical goods** (shipping-required items or inventory-based products) → Hand off to the `shopify` skill. Signals:
25 - Explicit mention of physical/tangible items, inventory management, stock, shipping, or fulfillment.
26 - A concrete tangible product noun, even when the user never says the word "physical". Treat nouns like pens, shirts, t-shirts, apparel, clothing, mugs, books, ceramics, pottery, jewelry, candles, soap, posters, prints, stickers, accessories, merch, or merchandise as physical-goods signals. "Build an ecommerce site for selling pens with checkout and payments" is a Shopify request — route to `shopify` and recommend the Shopify Store integration + Shopify-hosted checkout, NOT a custom Stripe/Express checkout.
27 - **Digital/download exception (takes priority over the tangible-noun shortcut):** if the same item is sold as a digital file, download, print-on-demand digital asset, PDF, template, or other intangible deliverable — e.g. "downloadable poster prints", "printable sticker pack", "ebook" — it is NOT physical goods. A digital/download cue overrides the product noun: do not hand off to `shopify`. Route digital goods to Stripe (or ask the clarification below if it is genuinely unclear whether the item ships physically).
28 - Generic words like "store", "shop", "storefront", "products", "checkout", or "ecommerce" with NO tangible product, inventory, shipping, or fulfillment cue are NOT sufficient — they apply equally to digital commerce. Ask the short clarification below instead of guessing.
29
30 ## Otherwise, ask which provider to use
31
32 Pause any plan/task-list work and call `user_query` (the `queries` wrapper and `type: "choice_query"` are required):
33
34 ```js
35 user_query({
36 queries: [
37 {
38 type: "choice_query",
39 question: "What payment provider do you want to use?",
40 options: [
41 "Shopify (best for physical goods)",
42 "Stripe (most flexible)",
43 "Whop (fastest, no external setup)"
44 ]
45 }
46 ]
47 })
48 ```
49
50 Add `"RevenueCat (best for iOS in-app payments, requires an account)"` as an additional option **only** if the app is native-mobile / Expo / React Native, or the user asked about IAP on iOS. Never offer RevenueCat for plain web apps.
51
52 Hand off to the picked provider's skill.