Web + App Campaigns
Last updated: 2026-05-13
Get attribution tracking live in 5 minutes. DATALYR helps mobile apps track users, measure ad performance, and run web-to-app campaigns that bypass SKAN, ATT, and adset limits.
Quick start guides: iOS (Swift) · React Native / Expo
Step 1: Create your DATALYR account
- Sign up at datalyr.com/signup
- Go to Settings → API — copy your API key (starts with
dk_)
Step 2: Install the DATALYR mobile SDK
The mobile SDK lets you track users, capture events, and attribute installs and revenue back to the ads and campaigns that drove them.
- iOS (Swift): follow the setup guide
- React Native: follow the setup guide
Step 3: Connect your paywall integration
Connect your paywall integration to DATALYR so we can track revenue events like purchases, renewals, cancellations, and refunds. All it takes is adding a webhook URL in your provider’s dashboard.
- Superwall: follow the setup guide
- RevenueCat: follow the setup guide
Step 4: Install the Web SDK
The Web SDK tracks users on your landing pages and website so we can connect the full journey from ad click on the web to app install to purchase.
- HTML: follow the setup guide
- React / Next.js: follow the setup guide
Step 5: Connect your ad platforms
Connect your ad platforms so DATALYR can match ad spend to revenue, give you accurate ROAS, and attribute these events server-side.
- Meta (Facebook / Instagram)
- TikTok
- Google Ads
- Other: reach out at hello@datalyr.com
Step 6: Set up conversion rules
Configure conversion rules to send the right events back to your ad platforms so they can optimize for your highest-value users.
- Go to Conversions → Add Rule
- Pick your trigger event (e.g.
purchase), choose your ad platform, and set the conversion value - Hit Save — it’s live immediately
Step 7: Set up App Campaigns (Web-to-App)
Run your mobile app ads as web campaigns (Meta Sales, TikTok Traffic, Google Ads) through your own domain. This bypasses SKAN restrictions, ATT requirements, and adset limits. Ad platforms treat them as regular web campaigns.
How it works:
- User clicks your ad and lands on a page on your domain with the DATALYR web SDK
- The SDK captures all attribution data (click IDs, UTMs, ad cookies)
- User clicks through to the app store and installs your app
- The DATALYR mobile SDK matches the app user to the web visitor automatically
- In-app events are sent back to your ad platforms as conversions
To set this up:
- Create an App Link in your dashboard (Track → Create Link → App Link)
- Host a landing page on your domain with the DATALYR web SDK
- Set up your ad campaign using a web objective (not “App Installs”)
- Full setup guide →
Step 8: Verify it's working
- Set
debug: truein the SDK — you should see events logging in your console - Make a test purchase (Sandbox / TestFlight)
- Open Live in your dashboard — events should appear within seconds
Best practices
- Since these are now Web campaigns, turn off Desktop targeting on ad platforms.
- Only use the DATALYR SDK for tracking user events (signups, screen views, paywall views, etc.) — do not track purchases or subscriptions through the SDK if you use Superwall or RevenueCat. Revenue should come through webhooks only.
- Always pass DATALYR attributes to your payment provider (
getSuperwallAttributes()orgetRevenueCatAttributes()) after both SDKs are initialized — this is what links your ad data to your revenue. - Call
identify()with the user’s email after signup / login — this improves attribution accuracy, especially on iOS where email is used as a fallback. - For App Campaigns, use a prelander page (not a redirect) — it’s safer for ad platform compliance and gives better match rates.
- Initialize the DATALYR SDK early (AppDelegate or App.tsx) before any other tracking calls.
Why server-side revenue tracking matters
Client-side purchase tracking is unreliable:
- User starts a trial → SDK fires
trackPurchase($0)→ trial never converts → you counted fake revenue - Payment fails → SDK fires before confirmation → phantom revenue
- User gets a refund → SDK already counted it → revenue is inflated
Server-side webhooks are best for data:
- Superwall / RevenueCat only send events after the store confirms the transaction
- Refunds come through as negative revenue automatically
- Trial starts vs actual conversions are distinct events
- Renewals, billing issues, cancellations — all accurate
The SDK’s job is attribution (where did this user come from?) and the webhook’s job is revenue (what did they actually pay?). DATALYR connects them via visitor ID / user ID matching.