
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:- Profile Creation: FunnelFox creates an Adapty profile using a unique customer ID
- Transaction Sync: Purchase details are sent to Adapty including price, product info, and subscription status
- Access Grant: The configured access level is granted to the user
- 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
- Log into your Adapty Dashboard
- Navigate to App Settings → API Keys
- Copy your Secret Key (not the public SDK key)
2
Configure in FunnelFox
- Go to Project Settings → Integrations → Subscriptions
- Toggle Adapty integration on
- Paste your API Secret
- Enter your Access Level name (default: “premium”)
- Click Save changes
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:- Custom Input: Add
_USERID_
input element to set custom Customer User ID - 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:Attribute | Value | Description |
---|---|---|
User’s email | If collected in the funnel | |
IP Country | Session country | Based on user’s location |
fnlfx_profile_id | Profile ID | FunnelFox’s internal profile ID |
fnlfx_session_id | Session ID | Current funnel session ID |
fnlfx_funnel_id | Funnel ID | Funnel that acquired the user |
vendor_profile_id | PSP customer ID | Payment provider’s customer ID |
vendor | Payment provider | stripe , 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.
Subscription Events
FunnelFox automatically handles these subscription lifecycle events:Event | Adapty Action | When It Happens |
---|---|---|
Purchase | Grant access level | User completes payment |
Trial Start | Grant access (marked as trial) | Free/paid trial begins |
Renewal | Update expiration | Subscription renews |
Refund | Revoke access level | Payment refunded |
Pause | Update status | Subscription 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: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:- Open your funnel in preview mode
- Purchases in preview automatically use sandbox
- Use test cards for payments
- 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.
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
Profile not created in Adapty
Profile not created in Adapty
- Verify API Secret is correct (use Secret Key, not Public SDK Key)
- Check product is configured as recurring (not one-time)
- Ensure Adapty integration is enabled in project settings
Access level not granted
Access level not granted
- Confirm access level name matches exactly (case-sensitive)
- Check subscription status is active
- Verify purchase completed successfully
- Wait a few seconds for sync to complete
Wrong customer ID used
Wrong customer ID used
- 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
Sandbox purchases not appearing
Sandbox purchases not appearing
- Ensure you’re testing in preview mode (automatic sandbox)
- Use test payment methods (test cards)
- Check Adapty dashboard Sandbox section, not Production
Mobile app not recognizing access
Mobile app not recognizing access
- Ensure customer ID matches between systems
- Refresh profile in mobile app
- Check access level name matches configuration
- Verify Adapty SDK is properly initialized
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