Free Funnel with Deep Link

Route users to your app or web product after a free Zellify funnel with no paywall.

The Problem

You are using Zellify for lead generation, onboarding, or quizzes — but you are not charging at this stage. There is no paywall in your funnel. After the user completes the flow, you want to route them to your mobile app or web product, and you need a way to identify them on the other side.


How It Works

  1. The end-user goes through your Zellify funnel (quiz, onboarding, personalization, etc.)

  2. At the email collection step, the user enters their email. The Registration Webhook fires, delivering the email, quiz answers, and app_user_id to your backend

  3. Your backend creates a user account using the email and app_user_id

  4. The end-user reaches the final page (no paywall), which contains a Deep Link Button configured with app_user_id

  5. The end-user taps the button, is routed to your app or web product, and the app_user_id identifies them


What Zellify Handles

  • Generates a unique app_user_id for every funnel visitor

  • Fires the Registration Webhook with email, quiz answers, and app_user_id when the user submits their email

  • Provides the Deep Link Button component, which interpolates app_user_id (and email) into any URL


What You Need to Set Up

1. Configure the Registration Webhook

Since there is no payment in this flow, the Registration Webhook is your primary way to capture user data.

  1. Go to Dashboard → Settings → Developers (https://dash.zellify.app/settings?tab=developersarrow-up-right)

  2. Click Configure

  3. Enter your webhook endpoint URL

  4. Save and securely store the webhook secret

For the full payload structure and signature verification, see Registration Webhook.

2. Handle the Registration Webhook in your backend

Your backend receives the webhook payload containing:

  • email — the visitor's email address

  • answers — all quiz/form responses collected in the funnel

  • context.appUserId — the unique app_user_id

  • context.funnelId, context.campaignId, context.experimentId — attribution data

Create a user account with email and app_user_id. Store quiz answers if your product uses them for personalization.

Add a Deep Link Button component to the last page of your funnel. Configure it with app_user_id interpolation:

  • For mobile apps: set the URL to your deeplink scheme (or a deferred deeplink provider URL). The app reads app_user_id from the deeplink to identify the user

  • For web products: set the URL to your signup or login page with app_user_id and email as query parameters

4. Identify the user in your product

When the user arrives at your app or web product:

  • Extract app_user_id from the deeplink or URL parameters

  • Call your backend to look up the user by app_user_id

  • The account and any quiz data stored from the Registration Webhook are already available


The Linking Key

Without a paywall, there is no payment provider metadata involved. The linking is simpler:

  1. Registration Webhookcontext.appUserId in the payload, used by your backend to create the account

  2. Deep Link Button URLapp_user_id interpolated into the link, carried to your app or web product

Your backend matches on app_user_id at both steps. No payment provider is in the loop.


When to Use This

  • Lead generation funnels — capture email and quiz data, then send users to your product

  • Onboarding-first flows — run users through a personalized quiz before they see your app, so the in-app experience can be tailored from the start

  • Freemium acquisition — get users into your free tier through a web funnel, then upsell inside the app later

If you later add a paywall to this funnel, the same app_user_id will flow into Stripe/Paddle metadata, and you can extend the integration using any of the other guides.


Last updated