Feature

Web-to-app onboarding funnels with Stripe checkout for mobile apps

RevenueDot's funnel builder makes a few web screens in a row, such as a quiz, a proof point, an email field, your plans and a success page. You publish it to a public URL, visitors pay on Stripe Checkout, and they open your app with a redemption link. The analytics tab shows where visitors drop off.

Free up to $10,000 a month in tracked revenue. Works with the RevenueCat SDK you already ship.

The RevenueDot funnel builder for a funnel named Onboarding funnel. Six steps are listed on the left: two questions, an info step, an email step, a paywall and a success step. A phone preview in the middle shows the question What brings you here with four answers, and the question's title, subtitle and answers are on the right.
The builder: steps on the left, a live phone preview in the middle and step properties on the right.
The funnel builder with its live phone preview. Recorded with demo data.

Five step types

Question, info, email, paywall and success, with up to 30 steps and answers that jump to other steps.

Answers become attributes

A question's answer is saved on the customer and moves to the app user when the purchase is redeemed.

Events to your tools

Funnel views, steps and purchases go to webhooks, Segment, Amplitude, Mixpanel, PostHog, Meta, Google Tag Manager, Branch and AppsFlyer.

Drop-off analytics

Views, checkouts, purchases, conversion, revenue and the drop-off of every step.

Steps

How to publish a web-to-app funnel

First finish the four web billing steps: Stripe connected, a web config, web products and an offering. A funnel's paywall step sells that offering's web products.

  1. 01

    Create a funnel

    Open Funnels and select Create funnel. Start from the starter (a question, an info step, an email step, the paywall and the success step), from a blank funnel, or describe it and use Build with AI.

  2. 02

    Edit the steps

    Add, reorder, duplicate and delete steps. Set each step's text, the theme colors and the answers. Send an answer to another step with its next field to build paths.

  3. 03

    Check the preview

    The phone preview is the real page with your web prices. Discount codes and payments run only on the public page.

  4. 04

    Publish

    Select Publish. A funnel needs one paywall step and one success step, with the paywall before the success step and the success step last.

  5. 05

    Share the URL

    The funnel lives at a public URL such as https://api.revenuedot.app/pay/scanner/focus-quiz, or on your own domain. Add ?app_user_id=, ?email= or ?code= to pre-fill them.

What does a funnel look like as JSON?

The builder edits a JSON document, the same one the API reads and writes. A save checks that ids are unique, every next names a step that exists, and colors are valid.

funnel-draft.jsonJSON
{
  "theme": { "background": "#FFFFFF", "text": "#0A0A0A", "accent": "#0A0A0A", "button_text": "#FFFFFF", "corner_radius": 0 },
  "steps": [
    { "id": "goal", "type": "question", "title": "What do you want to get done?", "attribute": "goal",
      "options": [
        { "id": "focus", "label": "Focus on deep work" },
        { "id": "sleep", "label": "Sleep better", "next": "sleep_tip" }
      ] },
    { "id": "plan", "type": "info", "title": "Your plan is ready", "body": "Your daily plan is set." },
    { "id": "sleep_tip", "type": "info", "title": "Better sleep starts tonight", "body": "A short routine helps most people." },
    { "id": "email", "type": "email", "title": "Where should we send your plan?", "required": true },
    { "id": "paywall", "type": "paywall", "title": "Choose your plan", "offering": "web", "highlight_package": "$rc_annual", "allow_codes": true },
    { "id": "success", "type": "success", "title": "You are in", "body": "Open the app to start.", "show_redemption": true }
  ]
}

How do you see where funnel visitors drop off?

The Analytics tab, or GET /v2/projects/{project_id}/funnels/{funnel_id}/analytics?days=7, shows views, checkouts, purchases, conversion (purchases divided by views) and revenue in US dollars. Every step shows how many sessions saw and finished it and its drop-off, from 0 to 1.

The Analytics tab of the published Onboarding funnel for 30 days: cards for views 1, checkouts 1, purchases 1, conversion 100% and revenue $59.99, then a table of the six steps with viewed, completed, a completion bar and drop-off, and a views-per-day chart.
Step-by-step completion and drop-off for a published funnel (demo data).

Which funnel events can go to analytics and ad tools?

The page records funnel_viewed, step_viewed, step_completed, checkout_started and purchase. Three of them are RevenueDot event types you opt in to on a webhook or integration: FUNNEL_VIEWED, FUNNEL_STEP_COMPLETED and FUNNEL_PURCHASE.

  • Segment, Amplitude, Mixpanel and PostHog get them as rd_funnel_viewed, rd_funnel_step_completed and rd_funnel_purchase.
  • Meta, Google Tag Manager, Branch and AppsFlyer get them as web events with the visitor's browser and ad click ids, so campaigns learn which clicks led to purchases.
  • An email step reports only provided or skipped, never the address. Visitors whose browser sends Global Privacy Control get no IP address, user agent or click ids.

What is not built yet?

  • A/B tests of funnel steps, a funnel template gallery and image upload. Use an https image URL.
  • Funnel events for Adjust, Kochava, Singular, Tenjin and Airbridge. They match people by mobile device ids, which a web visitor does not have.

FAQ

Web-to-app funnels: questions people ask

What is a web-to-app funnel for a mobile app?

It is a short sequence of web pages, usually a quiz, a proof point, an email field and a paywall, that sells your app's subscription before the visitor installs the app. The visitor pays on the web, then opens the app and the purchase is linked to their account.

How do web funnel buyers get access in the app?

After payment they get a redemption link on the success page and by email. The link opens your app, the app calls the SDK's redeemWebPurchase, and RevenueDot merges the anonymous web buyer into the app user, along with the quiz answers saved as attributes.

Can I build the funnel with AI?

Yes. Select Build with AI and describe who the funnel is for, the questions and the offer. RevenueDot returns a funnel it has checked and repaired, and opens it as a draft for you to edit. Nothing is published until you publish it. Self-hosted servers need an OpenAI or Anthropic key for this.

Can I send funnel events to Meta or Google Ads?

Yes, through the Meta, Google Tag Manager, Branch and AppsFlyer integrations. Funnel events are opt-in: add funnel_viewed, funnel_step_completed and funnel_purchase to the integration's event types. They carry ad click ids from the landing URL when the visitor has not opted out.

Can I A/B test funnel steps?

Not yet. You can run two funnels at different URLs and compare their analytics, and you can A/B test the offerings your apps use. Step-level tests inside one funnel are not built.

Get started

Run subscriptions without the revenue share.

Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue, or move an existing RevenueCat app with one line of code.

Already have an account? Sign in · Prefer your own servers? Self-host free