Integration overview
From “we want to try Atharly” to attributed installs in production, in 30–45 minutes. The full step-by-step guide lives in our private repo and gets emailed to you when you request access.
Request access
Self-serve sign-up is gated while we hand-pick the first cohort of customers. Email hello@atharly.com with your company name, the platforms you ship on, and what you want to attribute. We provision a tenant within one business day and email back a passkey-registration link.
Sign in with a passkey
No passwords, no SMS codes. The dashboard authenticates with WebAuthn — TouchID, Windows Hello, or a hardware key. Add a backup passkey at Settings → Security so you don’t lock yourself out.
Register your app
Atharly publishes per-tenant apple-app-site-association and assetlinks.json files so iOS Universal Links and Android App Links route into your app. Add your bundle ID + Apple Team ID + Android package + signing SHA-256 fingerprints on the Apps page; the files publish within 30 seconds.
Wire associated-domains / intent-filter
iOS — add applinks:*.l.atharly.com to your .entitlements under com.apple.developer.associated-domains.
Android — add a <intent-filter> with the verified host pointing at your tenant’s subdomain in your launcher activity.
Drop the SDK into your app
All three SDKs ship as closed-source binaries from the standard registries — no private repo grants required.
Web — npm:
npm install @atharly/web-sdkimport { atharly } from '@atharly/web-sdk';
atharly.init({ apiKey: 'at_pk_<tenant>_<key>_<secret>' });
// On a CTA that points at a smart link:
await atharly.captureClick('click_abc123');
// On the in-app-browser interstitial landing page (when the link
// opens inside Instagram / TikTok / Snapchat webview):
atharly.detectAndRenderInterstitial(destinationURL);iOS — Swift Package Manager (recommended):
.package(
url: "https://github.com/atharly/ios-sdk-binary.git",
from: "0.1.0"
)or CocoaPods:
pod 'AtharlySDK', '~> 0.1.0'import AtharlySDK
// AppDelegate.application(_:didFinishLaunchingWithOptions:)
Atharly.shared.initialize(
apiKey: "at_pk_<tenant>_<key>_<secret>",
launchOptions: launchOptions
)
Atharly.shared.checkDeferredDeepLink { params, error in
// params.contentId / params.campaign / params.customData → route
}
// AppDelegate.application(_:continue:restorationHandler:)
Atharly.shared.continueUserActivity(userActivity)Android — Maven Central:
implementation("com.atharly:atharly-sdk:0.1.0")import com.atharly.sdk.Atharly
// Application.onCreate
Atharly.init(this, "at_pk_<tenant>_<key>_<secret>")
// Launcher Activity.onCreate
Atharly.shared.session()
.withDeferredLinkHandler { params, _ ->
// params.customData → route
}
.init(intent)Migrating from Branch? The iOS pod and Android AAR keep the legacy Branch / BNC* public symbols stable, so an existing Branch integration moves to Atharly with just a dependency swap — no source changes. See the README in each SDK repo for the legacy code path.
Verify attribution lands
Tap your link on a real device. The 24-hour click / install / attribution counters bump within a minute on the dashboard’s home page. The Analytics tab breaks down match-rate by tier (deterministic auth- anchor, probabilistic, below-threshold).
Quotas + scaling
Free tier: 20 active links + 1,000 events/month per tenant. Past that, link create returns 429 and event ingestion rejects. Email hello@atharly.com to lift the ceiling — billing goes live in a future release.
Want the full step-by-step guide?
Email hello@atharly.com and we’ll send the developer guide (with sample apps, troubleshooting, and the lost-passkey recovery playbook) alongside your tenant provisioning email.