Products & Payments
AppFunnel handles checkout, subscription management, and revenue tracking through native payment provider integrations. You configure products and pricing in the dashboard, wire them into your funnel with the visual editor, and AppFunnel manages the entire payment lifecycle — from checkout to renewals to refunds.
Supported Providers
| Provider | Status | Checkout Methods |
|---|---|---|
| Stripe | Fully supported | Payment Element, Embedded Checkout |
| Paddle | Alpha | Paddle Checkout (inline or overlay) |
Stripe is the primary integration. Paddle support is functional but limited — expect rough edges.
How It Works
The payment system has four layers:
-
Stores — A store is a connection to a payment provider account (your Stripe or Paddle account). Each project can have multiple stores (e.g., separate live and test mode accounts). See Stripe Setup.
-
Store Prices — After connecting a store, you import prices from your payment provider. These are the actual Stripe Prices or Paddle Prices that will be charged. Prices sync automatically to stay up-to-date.
-
Funnel Products — In each funnel’s settings, you create products that reference imported store prices. A product has an ID (for referencing in templates), a display name, the linked store price, and optional trial configuration. Products expose computed variables like
products.monthly.priceandproducts.yearly.periodlyfor dynamic pricing display. -
Payment Flow — The funnel pages handle product selection, payment capture, and post-purchase navigation. See Payment Flow.
Key Concepts
Product Selection
Visitors select a product through the funnel UI — typically a pricing page with plan options. The selected product determines what is charged at checkout. Use the selectProduct click action or bind a SingleSelect to product IDs.
The currently selected product is accessible via products.selected.* variables for dynamic pricing display.
Trial Detection
Trial handling is automatic. When the selected product has trial days configured, the system creates a Stripe SetupIntent (captures the card without charging) instead of a PaymentIntent (charges immediately). The subscription is then created with the trial period, and the first charge happens when the trial ends.
Upsells
After a successful initial payment, you can offer additional products on subsequent pages using the purchase click action. This charges the card that was already captured — no additional payment form is shown. See Upsells.
Subscription Lifecycle
Subscriptions are tracked automatically via webhooks. AppFunnel monitors status changes (active, trialing, past due, canceled), records renewal payments, and emits integration events for each lifecycle transition. See Subscriptions.
Related
- Stripe Setup — Connect your Stripe account
- Payment Flow — Build a checkout page
- Upsells — Post-purchase offers
- Subscriptions — Lifecycle and webhook tracking
- Variable System — Product variables for dynamic pricing
- Click Actions — Payment-related actions (
submitPaymentElement,purchase,selectProduct)