> ## Documentation Index
> Fetch the complete documentation index at: https://funnelfox.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Choose how your users sign in

> Compare authentication options for your funnels and apps

After customers purchase products in your funnel, they need a way to access your app. Your app also needs to verify their identity and unlock their purchase.

FunnelFox supports multiple authentication methods to hand off users from your web funnel to your mobile app. Compare each option below to choose the best fit for your implementation.

## Authentication methods

Each method balances user experience, reliability, and implementation complexity differently:

* [Email + password](/integrations/authentication/sign-in-methods#email-%2B-password): Simple to integrate and reliable, but requires manual credential entry.
* [OAuth](/integrations/authentication/sign-in-methods#oauth): Smooth user experience, but requires integration with your in-app authentication system.
* [Deferred deep link (DDL)](/integrations/authentication/sign-in-methods#deferred-deep-link): Most seamless experience, but less reliable and requires a backup method.
* [Email + magic link](/integrations/authentication/sign-in-methods#email-%2B-magic-link): Most reliable with excellent user experience, but requires more implementation work.

### Email + password

The simplest and most reliable authentication method. It also lets customers sign in directly in the funnel if a user was created during a previous funnel experience, but requires a [service account key](/integrations/authentication/firebase#service-account-key).

How it works:

1. Integrate Firebase or Supabase email/password authentication with FunnelFox.

2. Add email and password inputs to the same funnel screen. FunnelFox creates Firebase/Supabase users with the credentials they provide.

<Info>If no password input is provided, the user is created with a random password that the user cannot access. You'll need to implement a [password reset flow](https://firebase.google.com/docs/auth/admin/email-action-links) for the in-app authentication step.</Info>

3. Add email/password login functionality to your app.

4. Display a login link on your in-app paywall for users who previously purchased through the funnel.

If you want to reduce friction and avoid manual password entry, consider one of the methods below.

Learn how to set up:

* [Firebase email + password authentication](/integrations/authentication/firebase)
* [Supabase email + password authentication](/integrations/authentication/supabase)

### OAuth

This option reduces friction by eliminating manual password entry. It also lets customers sign in directly in the funnel if a user was created during a previous funnel experience.

How it works:

1. Integrate Firebase or Supabase OAuth with FunnelFox.

2. Add OAuth provider buttons (like Google or Apple) to your funnel screen. FunnelFox creates a user linked to the provider credentials and adds the user's email to their customer profile.

If a user enables [Hide My Email](https://support.apple.com/en-us/105078) with Apple, FunnelFox stores their anonymous email address with the `@privaterelay.appleid.com` domain.

<Accordion title="How customer profile with anonymous email looks like">
  <Frame>
    <img src="https://mintcdn.com/funnelfox/Pjk9wYL4cmSsprIq/assets/auth-anon-email.png?fit=max&auto=format&n=Pjk9wYL4cmSsprIq&q=85&s=a06779549698b75fbcef43629c4231e9" width="1586" height="860" data-path="assets/auth-anon-email.png" />
  </Frame>
</Accordion>

3. Integrate OAuth in-app login functionality.

Learn how to set up:

* [Firebase OAuth](/integrations/authentication/firebase)
* [Supabase OAuth](/integrations/authentication/supabase)

### Deferred deep link

DDLs don't require any manual input from customers. Users move seamlessly through the `funnel > install > open app > arrive identified` flow in one tap.

However, DDLs can fail, users may miss your `Download` button, and testing is challenging. Always implement a fallback authentication method to reduce support requests.

How it works:

1. Configure DDLs in AppsFlyer or Adjust with a variable containing a unique `user_id` or `session_id` as a query parameter.

2. Add a Button element with a DDL to your last funnel screen. This is typically a `Download app` CTA.

3. Process the DDL in your app and extract the `user_id` or `session_id` to sign in the user.

Learn how to set up [deferred deep linking](/integrations/authentication/deep-links) FunnelFox.

<Tip>The customer email is saved in the `{{email}}` variable (from Email input or OAuth), so you can include it in your deep links.</Tip>

### Email + magic link

Magic links eliminate password-related friction and are highly reliable. Users enter their email, receive a link, and tap it to log in.

This works perfectly as a fallback when DDLs fail.

To use magic links with Firebase, enable **Email/Password** and **Email link (passwordless sign-in)**, then implement email link sign-in handling in your app. Depending on your setup, you may also need to set up email delivery.

You can implement magic links in three ways:

<AccordionGroup>
  <Accordion title="Your backend generates link + you send email">
    1. Add an email input to your funnel screen and store the email.
    2. Generate the sign-in link on your backend using the Firebase Admin SDK (`generateSignInWithEmailLink(email, actionCodeSettings)`).
    3. Send the authentication link to the user's email from your backend.
    4. Handle email link sign-in in your app.
  </Accordion>

  <Accordion title="DDL + Firebase generates link and sends email">
    1. Add an email input to your funnel screen and store the email.
    2. Bring the user into your app with a DDL.
    3. Fetch the user's email from your backend.
    4. Call the Firebase client SDK `sendSignInLinkToEmail(...)` to send the link.
    5. Handle email link sign-in in your app.

    <Warning>Add a manual email entry in your app as a backup flow in case the DDL fails.</Warning>
  </Accordion>

  <Accordion title="Collect email in the app + Firebase generates link and sends email">
    1. Add a manual email entry in your app.
    2. Call the Firebase client SDK `sendSignInLinkToEmail(...)` to send the link.
    3. Handle email link sign-in in your app.
  </Accordion>
</AccordionGroup>

<Tip>Combine this method with DDLs for a complete authentication flow.</Tip>

Learn how to [set up Firebase](/integrations/authentication/firebase#setup) in FunnelFox and how to [configure magic links](https://firebase.google.com/docs/auth/web/email-link-auth) in Firebase.

## Next steps

* [Set up Firebase integration](/integrations/authentication/firebase)
* [Set up Supabase integration](/integrations/authentication/supabase)
* [Configure DDLs](/integrations/authentication/deep-links)
