Adapty integration enables seamless subscription management between FunnelFox and your mobile applications. When users purchase recurring products through your funnels, FunnelFox automatically creates Adapty profiles and grants appropriate access levels.
Adapty integration settings

What is Adapty?

Adapty is a subscription management platform for mobile apps. The integration allows your mobile app to verify user access based on purchases made through FunnelFox funnels.

How It Works

When a user completes a subscription purchase in your funnel:
  1. Profile Creation: FunnelFox creates an Adapty profile using a unique customer ID
  2. Transaction Sync: Purchase details are sent to Adapty including price, product info, and subscription status
  3. Access Grant: The configured access level is granted to the user
  4. Mobile App Verification: Your app checks the user’s access level through Adapty SDK
Adapty profiles are created only for subscription purchases. Consumable (one-time) products create profiles only if they have a custom access level configured in the checkout.

Configuration

Prerequisites

  • Active Adapty account with configured products
  • Products in Adapty must include their corresponding Stripe/Paddle/other payment provider product IDs for accurate tracking
  • Mobile app with Adapty SDK activated in the app code
  • Recurring products configured in FunnelFox

Setup Steps

1

Get Your API Secret

  1. Log into your Adapty Dashboard
  2. Navigate to App SettingsAPI Keys
  3. Copy your Secret Key (not the public SDK key)
2

Configure in FunnelFox

  1. Go to Project SettingsIntegrationsSubscriptions
  2. Toggle Adapty integration on
  3. Paste your API Secret
  4. Enter your Access Level name (default: “premium”)
  5. Click Save changes
Note: One Adapty configuration is shared across all funnels in the project.
3

Test the Integration

Test the integration using preview mode:
  • Open your funnel in preview mode
  • Make a test purchase (automatically uses sandbox)
  • For paid Adapty users: Check the new profile in Adapty dashboard
  • For free Adapty users: Verify by attempting to access paid content in your app
  • Check Event Feed in Adapty for sandbox events

Profile Creation

Customer User ID

By default, FunnelFox creates Adapty profiles using the user’s email as the Customer User ID. This can be customized using:
  1. Custom Input: Add _USERID_ input element to set custom Customer User ID
  2. Fallback: fnlfx_ + FunnelFox profile ID (if no email collected)
The adapty_profile_id URL parameter is supported for compatibility but not recommended. Use Customer User IDs for consistency. If you need to link to an existing Adapty profile, use the same Customer User ID that was originally used to create that profile.
If Customer User IDs don’t match between FunnelFox and your app, a new Adapty profile will be created, leading to duplicate profiles for the same user.

Profile Attributes

FunnelFox sets the following attributes in Adapty profiles:
AttributeValueDescription
EmailUser’s emailIf collected in the funnel
IP CountrySession countryBased on user’s location
fnlfx_profile_idProfile IDFunnelFox’s internal profile ID
fnlfx_session_idSession IDCurrent funnel session ID
vendor_profile_idPSP customer IDPayment provider’s customer ID
vendorPayment providerstripe, paddle, paypal, etc.
If you use Adapty for both in-app purchases and FunnelFox purchases, create a segment in Adapty with profiles where fnlfx_profile_id is not empty. Use this segment to filter FunnelFox purchases in analytics and separate them from in-app purchases.

Access Level Configuration

The Access Level field in FunnelFox settings determines which Adapty access level is granted when users purchase subscriptions.
If you have multiple access levels configured in Adapty, set them up in your Adapty dashboard and assign them to specific products. Otherwise, the default ‘premium’ access level will be used for all purchases.
For multiple product tiers, you can override the default access level by configuring custom access levels per product in your checkout elements.

Subscription Events

FunnelFox automatically handles these subscription lifecycle events:
EventAdapty ActionWhen It Happens
PurchaseGrant access levelUser completes payment
Trial StartGrant access (marked as trial)Free/paid trial begins
RenewalUpdate expirationSubscription renews
RefundRevoke access levelPayment refunded
PauseUpdate statusSubscription paused
Subscription cancellations are handled by Adapty automatically. When a user cancels, the subscription remains active until expiration, then Adapty removes access.

Mobile App Integration

Your mobile app needs to identify the user and check their access:
// First identify the user with the same Customer User ID used by FunnelFox
let customerUserId = "YOUR_CUSTOMER_USER_ID" // By default, this is the user's email
Adapty.identify(customerUserId) { _ in
    // Then check if user has access (replace "YOUR_ACCESS_LEVEL" with your actual level)
    Adapty.getProfile { result in
        if let profile = try? result.get() {
            let hasAccess = profile.accessLevels["YOUR_ACCESS_LEVEL"]?.isActive ?? false
            // Update UI based on access
        }
    }
}
The Customer User ID in identify() must match exactly what FunnelFox uses (by default, the user’s email). Mismatched IDs will create duplicate profiles.
When Adapty.activate() is called on app launch, an empty profile is created before identification. This is normal behavior. To exclude these empty profiles from analytics, configure the Installs definition for analytics setting in your Adapty dashboard.
See Adapty’s mobile SDK documentation for complete implementation guides for iOS, Android, React Native, and Flutter.

Testing

Sandbox Mode

Testing is simple with preview mode:
  1. Open your funnel in preview mode
  2. Purchases in preview automatically use sandbox
  3. Use test cards for payments
  4. Check Event Feed in Adapty dashboard and filter by Environment to see sandbox events
Sandbox events appear in the Event Feed but are not included in analytics. Use the Environment filter to view sandbox-specific events.
See Publishing & Preview for more details on preview mode.

Verification Checklist

  • Profile created in Adapty after purchase
  • Customer ID matches expected format
  • Access level granted correctly
  • Mobile app recognizes user’s access
  • Subscription expiration date is accurate
  • Cancellation revokes access level

Troubleshooting

Limitations

  • One-time purchases sync only with custom access level in checkout
  • Access level changes require funnel republishing
  • Custom attributes have limited support
  • Profile updates may have slight delay

Next Steps