Skip to main content
Adapty is a subscription management platform for mobile apps. The integration lets your app verify user access based on purchases made in your FunnelFox funnels. When a user buys a recurring product in your funnel, FunnelFox creates an Adapty profile and grants the configured access level.
Adapty integration settings

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.

Setup

To proceed with this setup, you need:
  • An active Adapty account with configured products.
  • Products in Adapty that include their corresponding Stripe, Paddle, or other product IDs for accurate tracking.
  • A mobile app with the Adapty SDK activated in the app code.
  • Recurring products configured in FunnelFox.
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 IntegrationsAdapty.
  2. Paste your API Secret.
  1. Enter your Access Level name (default: “premium”).
  2. Click Save changes.
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:
  1. Custom input: If you add an input element with the _USERID_ element ID, its value becomes the App User ID.
  2. From your backend: When you fetch the user ID from your backend, set it using custom code inside a Raw HTML element:
  1. Email (default): If none of the above are provided, the user’s email address is used as the App User ID.
  2. Fallback: If no email is collected, FunnelFox uses fnlfx_ + FunnelFox profile ID.
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:
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.

Campaign attribution

Enable Campaign attribution in Integrations > Adapty to send every completed transaction to Adapty’s User Acquisition service, enriched with the marketing parameters captured during the session. This setting is off by default.
Adapty then matches your ad spend against FunnelFox web revenue, so you can report ROAS by campaign, adset, and ads. FunnelFox reads the attribution values from the funnel URL query parameters captured when the session starts, not from the checkout page URL. Each value is sent only when it’s present in the URL. Your project must also belong to an organization, and your ad accounts must be connected in Adapty.
Campaign attribution works independently from the Adapty profile sync. It sends data to a different Adapty service: no profiles are created and no access levels are granted through this channel.
FunnelFox sends one event per completed transaction:

Access levels

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. Access level changes take effect only after you republish your funnels.

Subscription events

FunnelFox doesn’t send named events to Adapty. It calls the Adapty Server-Side API whenever a purchase or a subscription change happens in your funnel. * For FunnelFox Billing only.
When a user turns off auto-renewal, the subscription stays active until the end of the current period. Adapty schedules the revoke at the period end so the user keeps access until then. A hard cancellation revokes access immediately.

Mobile app integration

Your mobile app needs to identify the user and check their 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.

Troubleshooting

  • Check URL parameters for typos in adapty_profile_id
  • Verify _USERID_ input element ID is exact
  • Ensure email is collected before purchase
  • Review customer ID priority order
  • Ensure you’re testing in preview mode (automatic sandbox)
  • Use test payment methods (test cards)
  • Check Adapty dashboard Sandbox section, not Production