Free Funnel with Deep Link
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#
- The end-user goes through your Zellify funnel (quiz, onboarding, personalization, etc.)
- At the email collection step, the user submits their email. The Registration Webhook fires, delivering the email, quiz answers, and
app_user_idto your backend - Your backend creates a user account using the email and
app_user_id - The end-user reaches the final page (no paywall), which contains a Deep Link Button configured with
app_user_id - The end-user taps the button, is routed to your app or web product, and the
app_user_ididentifies them
What Zellify Handles#
- Generates a unique
app_user_idfor every funnel visitor - Fires the Registration Webhook with email, quiz answers, and
app_user_idwhen the user submits their email - Provides the Deep Link Button component, which interpolates
app_user_id(andemail) 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.
- Go to Dashboard → Settings → Developers (https://dash.zellify.app/settings?tab=developers)
- Click Configure
- Enter your webhook endpoint URL
- 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 addressanswers— all quiz/form responses collected in the funnelcontext.appUserId— the uniqueapp_user_idcontext.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.
3. Configure the Deep Link Button on your final page#
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_idfrom the deeplink to identify the user - For web products: set the URL to your signup or login page with
app_user_idandemailas query parameters
4. Identify the user in your product#
When the user arrives at your app or web product:
- Extract
app_user_idfrom 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:
- Registration Webhook —
context.appUserIdin the payload, used by your backend to create the account - Deep Link Button URL —
app_user_idinterpolated 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.