← Back to home

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.

1

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.

2

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.

3

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.

4

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.

5

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-sdk
import { 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.

6

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).

7

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.