---
name: monetization
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.
---

# Monetization
Pick the payment provider here, then hand off to skill `shopify`, `stripe`, or `revenuecat`. Do not re-litigate the choice inside those skills.

Providers:

- **Shopify** — best for physical goods; handles inventory, shipping, and checkout out of the box.
- **Stripe** — most flexible; requires external Stripe-dashboard setup to go live.
- **RevenueCat** — native-mobile in-app purchases only (Expo / React Native / iOS). Not for plain web apps.

## Skip the routing question if any of these is true

The provider is already known — do not ask, just hand off to the matching provider skill.
- User explicitly named Shopify, Stripe, or RevenueCat. (Generic words — "payments", "subscriptions", "paywall", "monetize", "let users pay" — do NOT count.)
- A provider is already integrated: a `SHOPIFY_*` / `STRIPE_*` / `REVENUECAT_*` env var or Replit Configuration is set
- The OpenInt connection for `shopify-store`, `stripe`, or `revenuecat` is already connected.
- The conversation already established a provider.
- The user is asking for follow-up CRUD on an existing payment integration.
- The user's intent is clearly to sell **physical goods** (shipping-required items or inventory-based products) → Hand off to the `shopify` skill. Signals:
  - Explicit mention of physical/tangible items, inventory management, stock, shipping, or fulfillment.
  - 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.
  - **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).
  - 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.

## Otherwise, ask which provider to use

Pause any plan/task-list work and call `user_query` (the `queries` wrapper and `type: "choice_query"` are required):

```js
user_query({
  queries: [
    {
      type: "choice_query",
      question: "What payment provider do you want to use?",
      options: [
        "Shopify (best for physical goods)",
        "Stripe (most flexible)"
      ]
    }
  ]
})
```

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.

Hand off to the picked provider's skill.
