Documentation

Funnels

Web2App funnels

Qualify users with a quiz, walk them through an info screen, collect payment on the web, then deep-link them back into your app.

Overview

A funnel is an ordered sequence of steps that ends in a hosted paywall. It lives at a stable public URL:

text
https://www.experiwall.com/f/{funnelId}

The typical Web2App pattern is: run a paid ad, send traffic to the funnel URL, qualify with a short quiz, present the paywall, collect payment in the browser, then deep-link the user back into your mobile app with a signed redemption token.

No SDK installation required on the web side. The funnel and paywall are both server-rendered by Experiwall.

Step types

Each funnel has an ordered list of steps. Three types are supported:

  • quiz_single_select — a question with labeled radio options. The user's choice is recorded in the session and can be forwarded to your app via the deep-link token.
  • info — a title, optional body copy, and a CTA button. Use it for benefit screens, trust builders, or loading placeholders.
  • paywall — references an existing published paywall by ID. The funnel hands off to the hosted paywall; after a successful purchase the user is redirected to your configured success URL.

Order matters

Steps run in array order. Branching based on quiz answers is not yet supported; every user walks the same path.

User flow

Here is the full request path from ad click to app open:

  1. User lands on /f/{funnelId}.
  2. Experiwall mints an anonymous session, writing a cookie (exwf_{funnelId}) that persists for 30 days.
  3. Quiz and info steps render server-side; answers post to /api/f/{funnelId}/answer.
  4. When a paywall step is reached, the funnel redirects through /api/f/{funnelId}/checkout?screen_id=... which stamps two short-lived attribution cookies (exwf_active_session,exwf_active_funnel) and then 302s to the hosted paywall at/p/{screenId}.
  5. Payment completes on the hosted paywall via Stripe, Polar, or MercadoPago.
  6. The return route verifies the payment, signs a redemption token, and redirects to your success URL.
  7. If an app scheme is configured, the success URL can be your deep-link handler which opens the app directly.

Setup

Funnels are created and managed from Dashboard → Funnels. Each funnel belongs to a project and references paywalls from the same project.

To go live:

  1. Create a funnel and add at least one paywall step.
  2. Publish the funnel. Unpublished funnels return a 404.
  3. Make sure the referenced paywall is also published. A paywall step pointing to an unpublished or deleted screen shows an error page.
  4. Configure a Success URL in Settings → Payments. This is where the user lands after purchase.

To send the user back into your app after checkout, configure an App scheme in Settings → Payments (for example, myapp). Experiwall will build a deep-link of the form:

text
myapp://experiwall-redeem?token={signedToken}

The token is an HMAC-SHA256 signed payload (5-minute TTL) containing screen_id, product_id, payment_intent_id, and project_id. Verify it server-side or via the REST API before granting entitlements.

Native SDK

The React Native SDK exports Experiwall.redeem(token) which posts the token to /api/sdk/redeem and returns the verified entitlement state. See the React Native SDK docs.

Meta CAPI

If you run Meta (Facebook/Instagram) ads to drive funnel traffic, connect the Conversions API to get server-side Purchase events. Configure your Meta Pixel ID and a Conversions API access token in Settings → Payments.

On a confirmed purchase, Experiwall fires a Purchase event with value, currency, and any available matching signals collected at funnel entry: em (hashed email), fbp (browser cookie), fbc (click id), client IP, and user agent.

fbclid capture

The fbclid query parameter is captured automatically from the referrer when the funnel session is created. No configuration needed.

Attribution

Each funnel session records which funnel and quiz answers led to a conversion. The exwf_active_session cookie ties the browser session to the payment event so conversions appear in both funnel analytics and the paywall conversion dashboard.

Attribution cookies are short-lived (30 minutes). If the user abandons and returns later, the funnel session cookie (30-day TTL) restores their progress but a fresh attribution window starts for the payment.