One link. iOS, Android, and the web fallback.
You measure activation, retention, and feature adoption. Elido routes a single short link wherever the user should go right now.
- Deferred deep-link parity across iOS Universal Links and Android App Links
- A/B variants per link with weighted or round-robin rotation
- In-app share with branded short URL preview
- QR codes for offline-to-app: print, scan, install, attribute
elido.me/p123yourapp://product/123intent://product/123shop.example.com/product/123app installed → deep link · App/Play Store → install · desktop → webDeferred deep-linking
Click → install → land on the right screen.
Most app installs lose context — the user clicked a link about product X, the App Store opens, and your onboarding starts at the welcome screen instead of product X. Deferred deep-linking preserves intent across the install boundary using clipboard fingerprint matching.
- Step 1
Click
elido.me/p123 (no app)Click hash + UTM landed in ClickHouse with a 24h match window.
- Step 2
Install
App Store / Play StoreUser redirects to the store, downloads, opens the app for the first time.
- Step 3
First launch
clipboard fingerprint matchYour SDK reads the click hash; the API joins it to the original click row.
- Step 4
Deep-route
/product/123 · attributedApp opens at the right screen with UTM context, not the welcome screen.
A/B variants
Soft-launch on 5%. Roll out on 100%. Same short link.
A single short link can carry up to five destinations. Split by weight or round-robin; each variant tracks its own click time-series and z-test confidence. Useful for feature-flag-style rollouts where you want a small percentage of users on a new onboarding path without a client-side SDK.
- Weighted splitConfigurable per variant — 5/95 for soft launches
- z-test confidenceTwo-proportion z-test at the click level
- Round-robinEqual distribution for low-volume creative tests
- Per-variant time-seriesSee dayparting and device-type drift between arms
elido.me/launchshare.acme.app/r/u-9h2x- Embed in newsletterBranded short URL preview
- Generate QR codeSVG · for print or screen
- Add to campaignInherits UTM template
In-app share
Share buttons that mint short links on tap.
The share API takes a destination URL, a campaign tag, and an optional click cap. It returns a branded short link and an Open Graph preview ready for the share sheet. The link's UTM template inherits from the campaign so analytics arrive pre-tagged. Click cap means a referral code can be capped at N uses without touching your backend.
- POST /v1/links with campaign_id + max_clicks
- Branded short URL on your custom domain
- Auto-generated OG image with link metadata
- Click cap fires expired_destination_url at threshold
- Per-share analytics: who shared, who clicked, when
What you can ship
- Deferred deep-link parity across iOS Universal Links and Android App Links
- A/B variants per link with weighted or round-robin rotation
- In-app share with branded short URL preview
- QR codes for offline-to-app: print, scan, install, attribute
- Server-side conversion attribution from app install events
- Post-install attribution via clipboard + fingerprint match
What Elido gives product teams
Onboarding links, feature-flag routing, and deep links come with sharp edges in most shorteners. These are the specific gaps we close.
Route to the right destination without a custom redirect service
Smart links evaluate rules at the edge on every request: geo (ISO country), device type (mobile/tablet/desktop), operating system, language header, referrer domain, and time-of-day with day-of-week filters. Rules are evaluated in order; first match wins. Five rules per link is the limit on Pro; Business removes the cap. Fallback to a default destination is always required. For product teams, the common patterns are: route iOS users to the App Store and Android to the Play Store from a single shared link; route users in a specific market to a localized landing page; send users in a specific time window to a live event page and otherwise to a recording. Rules are set in the dashboard or API — no redirect service to deploy, no Lambda to maintain. Changes propagate to the edge in under 60 seconds without a deploy.
Traffic splitting for soft launches and creative tests
A single short link can have up to 5 destination variants. Traffic splits by weight (configurable per variant; default equal split) or round-robin. Each variant tracks its own click time-series so you can see if a variant's engagement diverged by hour of day or by device type — useful for surface-specific tests. The statistical confidence model is a two-proportion z-test at the click level; the dashboard shows 'variant A leads with X% confidence' once both variants clear the minimum sample (default 200 clicks each). For feature-flag-style routing — where you want a small percentage of users on a new onboarding flow — use a weighted split with 5% on the new destination. Unlike a dedicated feature-flag tool, this doesn't require a client-side SDK; it's a server-side redirect. The trade-off: you can't target specific users or user segments, only statistical segments by request attributes.
Universal Links and App Links without a third-party deep-link service
Deep links open the right screen in a native app when the app is installed. On iOS this is Universal Links (HTTPS domains that the OS intercepts if the app has claimed them). On Android this is App Links (verified via assetlinks.json). Elido serves apple-app-site-association and assetlinks.json automatically from your custom domain's well-known paths — you configure your app's bundle ID and team ID once in domain settings, and the files are kept current. Fallback chain: app installed → deep-link target; app not installed → App Store / Play Store URL you specify; desktop → web URL. UTM parameters are preserved through the fallback. No third-party deep-link SDK required in the app — the OS handles interception, not JavaScript. Tested with adb shell and xcrun simctl on each release.
Share links with built-in caps and rotation for time-bounded campaigns
The max_clicks cap is set per link: when the click count hits the threshold, the link redirects to a configurable expired-destination URL instead of the normal target. This is useful for in-app referral links (N uses per code), limited-access beta invite links, and time-bounded feature previews. Combine with rotation_mode: 'round-robin' to distribute traffic across a pool of destinations for waitlist flows or cohorted feature releases. From the product side, the link create + cap + rotation logic lives fully on the server — no client-side state to sync. The click count is in ClickHouse and updates in under 5 seconds. Per-link analytics break down the click distribution across variants, so you can see which rotation slot got used how often.
Cohort and retention views without a separate analytics product
Elido's analytics tier on Business includes cohort and retention views in ClickHouse: pick a link or campaign, pick a cohort dimension (acquisition channel, country, device type), and get a retention heatmap by day or week. This is not a replacement for a full product analytics tool — there's no user-level event tracking, no session replay, and no funnel builder across arbitrary event types. What it does replace is the 'how many people who clicked the onboarding email came back the next day?' question — that lives in click event data and Elido surfaces it directly. For deeper funnel analysis, export the raw click stream to BigQuery or Snowflake and join it with your product's user event table. The ClickHouse DSN (Business) gives direct SQL access if your BI team prefers that over exports.
Stack you'll touch
- Smart links
- Deep links
- A/B variants
- Funnel + cohort analytics
- Campaigns
What you'll instrument
- Activation lift
- Smart-link routed
- Retention cohorts
- Daily / weekly / monthly
- A/B sample window
- Hour-of-day controlled
Product teams building on this
Names are placeholders for now — real customer names land here as case studies are published.
“Deep links without Branch were a hard requirement after Firebase Dynamic Links sunset. Elido's Universal Link setup took an afternoon — no SDK in the app, no extra service to babysit. The App Store fallback rate surfaced that 40% of our share links are clicked before the user installs the app.”
“We use smart-link rules for geo-routing to regional landing pages. Managing it through a shortener instead of our own redirect service removed two Lambda functions from our infra and the on-call load that came with them.”
“The click cap on referral links is the feature nobody demos but everybody needs. We set a max_clicks per invite code and stopped over-provisioning beta slots.”
Elido vs Branch.io vs custom deep-linking for product teams
Branch is the deep-link market leader. Custom deep-linking is possible but expensive to maintain. The differences below are relevant when your main need is deep links plus routing — not a full mobile attribution platform.
| Capability | Elido | Branch.io | Custom deep-linking |
|---|---|---|---|
| Universal Links (iOS) | Auto-served apple-app-site-association from your domain | Fully managed, proven at scale | You serve the JSON, manage hosting |
| App Links (Android) | Auto-served assetlinks.json from your domain | Fully managed | You serve and keep current |
| Third-party SDK in app required | No — OS-level interception | Yes — Branch SDK | No — but you write the fallback logic |
| Smart-link routing rules | Geo, device, OS, language, referrer, time | Audience-targeted journeys (more powerful) | Whatever you code |
| A/B on destinations | Yes — weighted split, z-test confidence | Journey-level A/B (full CRO tool) | You build it |
| Mobile attribution (MMP) | Click ID passthrough; MMP wiring manual | Native MMP — Appsflyer, Adjust, Kochava | You integrate |
| Price | Included on Pro and Business | Volume-based; mid-market contracts start higher | Eng cost only |
| Click analytics | ClickHouse, per-link, cohort on Business | Deep mobile attribution analytics | Whatever you build |
Product team questions
Do I need a Branch-style SDK in my app to use Elido deep links?
No. Elido deep links use iOS Universal Links and Android App Links — OS-level mechanisms that require no third-party SDK in your app. You configure the apple-app-site-association and assetlinks.json files via Elido's domain settings; Elido serves them at the well-known paths on your custom domain. Your app needs to handle the universal link URL — that's standard iOS/Android URL routing code, not a new SDK dependency.
What happened to Firebase Dynamic Links — can Elido replace them?
Firebase Dynamic Links was sunset in August 2025. Elido can replace the basic pattern: a single HTTPS link that opens the app if installed, falls back to the store if not, and falls back to web on desktop. We don't replicate Firebase's deferred deep-linking (passing context through an install) — that requires an SDK in the app. For deferred deep-linking you'd still need Appsflyer, Adjust, or a similar MMP.
How do A/B variants work alongside smart-link rules?
Smart-link rules are evaluated first. If a rule matches, it takes the destination from the rule — variants are not applied. If no rule matches, traffic falls to the fallback, and if the fallback has variants configured, the variant split applies. So you can have a link that routes iOS users to the App Store unconditionally, routes US desktop users to a specific landing page, and A/B splits everyone else between two destinations.
What's the click cap use case for product?
Referral programs (N uses per invite code), limited beta access (cap invites without touching your backend), time-bounded previews (max 500 clicks on a demo link before it expires to a waitlist page). max_clicks is set per link at create time or via PATCH. When the cap is hit, the link redirects to the expired_destination_url you configured.
Is there session-level or user-level tracking available?
No. Click events are at the request level: country, device, OS, referrer, UTM, and timestamp. There's no user identity in click events unless you pass a user_id as a custom query parameter and it flows through to your destination. Elido is not a product analytics tool — it doesn't do session replay, user profiles, or funnel tracking across arbitrary events. For that, use Mixpanel, PostHog, or Amplitude and join click data on the UTM or click ID.
How fast do smart-link rule changes propagate?
Rule changes are written to api-core and pushed to the Redis L2 cache in under 60 seconds. The edge-redirect service's in-process LRU cache has a TTL of 30 seconds for rule-bearing links. In practice: a rule change is live at the edge within 90 seconds of saving it in the dashboard or API.
Can I use Elido for in-app share without a custom domain?
Yes. Elido's shared domains (s.elido.me for paid, b.elido.me for Business) work fine for in-app share links where brand consistency is less important than the click-cap and routing features. Custom domains give you branded URLs (share.yourapp.com), which matters for referral programs where the link appears in the UI.
Where do I export retention cohort data if I need it in my warehouse?
Scheduled export to S3, BigQuery, or Snowflake — available on Business. Export the raw click stream; the cohort computation runs in your warehouse where you can join it with your product's user event table. The ClickHouse DSN (Business) gives direct SQL access if you'd rather compute cohorts in ClickHouse and pull results to your BI tool.
Product team's reading list
iOS Universal Links + Android App Links setup, fallback chain, and tested configurations.
Edge rule engine for routing by device, OS, language, geo, and time.
One landing surface for the link in your bio — useful for app-store + web fallbacks.
Branded SVG/PNG generation with click-through analytics on every scan.
Server-side attribution for app installs and post-install events.
Not sure which angle fits?
Most teams start as one and grow into all four. Our sales team can walk through your specific stack in 20 minutes.