Elido
Everything Elido does
Pro & Business

Smart links. One link, many destinations.

Route by device, geo, language, time of day. Rules evaluated at the edge POP — first match wins, fallback to the default destination. Costs nothing on top of a normal cache-hit redirect.

  • First-match rule engine at the edge
  • Sub-millisecond rule evaluation
  • A/B variants with z-test confidence
  • Time-windowed campaigns in UTC
elido.me/launch
elido.me/xDE · mobileFR · anyiOS · anyfallback/de/preise/fr/tarifsApp Store/en/pricing
Edge eval < 1 msfirst-match
5
Rules per link (Pro)
<90s
Rule propagation to edge
z-test
A/B confidence model
6
Rule dimensions

How it works

The redirect path, end to end

Smart-link rules are evaluated inside the same edge process that answers the redirect — there is no separate rules service to call. A cache-hit redirect with rules is indistinguishable from a plain one in latency.

  1. Step 1

    User clicks

    elido.me/x

    From email, QR, social, anywhere.

  2. Step 2

    Nearest edge POP

    Frankfurt · 4 ms

    Anycast routes to Hetzner FRA / OVH SGP / Hetzner ASH.

  3. Step 3

    Rule eval

    L1 cache · 0.2 ms

    First-match wins, no origin round-trip.

  4. Step 4

    302 → destination

    elido.me/x → /de/preise

    Click event fired async to Redpanda.

Rule builder

Rules that read like English

Every rule combines up to six dimensions — geo, device, OS, language, referrer, and time — joined with AND. Drag to reorder; first match wins. The fallback is always required, so a rule set never produces a 404.

  • Country
    ISO 3166-1 alpha-2 lists, e.g. DE, AT, CH
  • Device & OS
    iOS, Android, Windows, macOS, Linux
  • Language
    Accept-Language with BCP-47 fallbacks
  • Time window
    UTC range with day-of-week filter
  • Referrer
    Exact or wildcard host match
Routing rules
elido.me/launch
  • 1
    ifCountry: DE, AT, CHANDDevice: Mobile
    /de/preise
    ⋮⋮
  • 2
    ifCountry: FR, BEANDLanguage: fr-*
    /fr/tarifs
    ⋮⋮
  • 3
    ifOS: iOS
    App Store · apps.apple.com/...
    ⋮⋮
  • 4
    ifTime: Mon–Fri 09–17 UTCANDReferrer: newsletter.*
    /promo/q2
    ⋮⋮
  • else
    /en/pricing— fallback (required)
4 active rules · evaluated in orderLive · propagating to edge

Real-world routing

Same short link. Different landing per visitor.

The two patterns we see most: device-fork to native app stores with a desktop fallback, and country-fork for localised pricing pages. Both compose with A/B splits on the fallback path.

iPhoneiOS · Safari
elido.me/launch
Open in App Store
apps.apple.com/app/elido
Get the app
PixelAndroid · Chrome
elido.me/launch
Open in Play
play.google.com/store/apps/elido
Install
DesktopmacOS · any browser
elido.me/launch
elido.app/launch
Web onboarding, no install.
Continue

Country routing in production

An EU SaaS routing brand.app/pricing by visitor country. The fallback (everyone else) lands on the English page.

  • DE · Germany
    /de/preise
  • FR · France
    /fr/tarifs
  • ES · Spain
    /es/precios
  • IT · Italy
    /it/prezzi
  • PL · Poland
    /pl/cennik
  • NL · Netherlands
    /nl/prijzen
  • SE · Sweden
    /sv/priser
  • UA · Ukraine
    /uk/tsiny
  • · Everyone else
    /en/pricing
A/B split — elido.me/launch
7 days · 4,009 clicks
AA · /pricing-v1
1,842 clicks · CTR 4.1%
weight 50%45.9% of traffic
BB · /pricing-v2
Leading
2,167 clicks · CTR 4.8%
weight 50%54.1% of traffic
Z-test confidence
94%
Sample floor
200 / variant
Lift over A
+17.1%

A/B testing

Split traffic. Watch confidence climb.

Up to 5 variants per link with weighted or round-robin splits. Each variant tracks its own click time-series. The dashboard surfaces a two-proportion z-test as a directional indicator — we don’t hide the math.

  • Weighted (sums to 100) or round-robin
  • Per-variant click time-series
  • Z-test confidence over a configurable sample floor
  • Winner-picks-all locks the link to the leading variant
  • Composes with rules — A/B applies to the fallback path

What you can do

  • ISO country and IANA timezone matching
  • Mobile / tablet / desktop targeting
  • Time windows with day-of-week filters
  • User-Agent regex for power users
  • Per-link click cap (max_clicks)
  • A/B variants with weighted or round-robin

What the smart-link rule engine actually does

Geo routing and device targeting are table stakes. The details below explain the edge cases that trip up basic implementations.

Rule evaluation model
01

First-match wins, evaluated at the edge POP — no origin round-trip

Rules are stored in Redis (L2 cache) and evaluated by the edge-redirect service on every request, inside the same process that does the redirect — there's no separate rules engine to call. Rule evaluation adds less than 1ms to a cache-hit redirect. The evaluation order is the order you set in the dashboard or API; drag to reorder, or use the order field in the API. First-match semantics mean you put your most specific rules first (e.g., 'mobile + Germany + Monday morning → promo page') and your catch-all rules last. If no rule matches, the fallback destination is served — fallback is required, it cannot be empty. Rule changes propagate from api-core to Redis in under 30 seconds; the edge LRU cache TTL for rule-bearing links is 60 seconds, so the full propagation window is under 90 seconds.

Rule dimensions
02

Six dimensions: geo, device, OS, language, referrer, and time

Each rule can combine up to six dimensions in a single condition. Geo: ISO 3166-1 alpha-2 country code list (one or more countries). Device type: mobile, tablet, desktop — derived from User-Agent. OS: iOS, Android, Windows, macOS, Linux — also from User-Agent. Language: Accept-Language header matching (BCP 47 language tags; 'fr' matches 'fr-FR', 'fr-CA', etc.). Referrer domain: exact or wildcard match against the Referer header domain (useful for routing social vs email vs direct). Time: UTC time window with optional day-of-week filter (e.g., 'Mon–Fri 09:00–17:00 UTC'). User-Agent regex is available for power users who need to target a specific browser version or crawler; it's not exposed in the dashboard by default, only via the API. Multiple dimensions in a single rule are AND-ed; a link can have up to 5 rules (Pro) or unlimited (Business).

A/B testing
03

Weighted A/B splits with z-test confidence — up to 5 variants per link

A link can have up to 5 destination variants. Traffic splits by weight (configurable per variant; weights must sum to 100) or round-robin. Each variant tracks its own click time-series so you can see if the effect is consistent across hours of day. The 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 a minimum sample (default 200 clicks each, configurable up to 1,000). We report raw z-test confidence; we don't apply sequential testing corrections. A/B variants and smart-link rules can coexist on the same link: rules are evaluated first, and A/B split applies only to the fallback path. So you can route iOS users unconditionally while A/B testing two destinations for everyone else. The winner-picks-all button locks the link to the leading variant and deletes the others — this is irreversible.

Scheduled rules
04

Time-windowed rules for seasonal and event-based campaigns

Time rules let you set a rule that activates and deactivates on a schedule without manual intervention. The typical use: a promotional page rule active from Black Friday 00:00 UTC through Cyber Monday 23:59 UTC, then automatically falls back to the evergreen destination. Rules are evaluated in UTC; if your campaign is timezone-sensitive, convert to UTC at configuration time. Scheduled rules are evaluated the same way as static rules — at the edge, no origin round-trip. The dashboard shows a timeline view of scheduled rules so overlapping windows are visible. Edge case: if two time-window rules overlap and both match, the one with the lower order index wins (first-match). There's no conflict detection — overlapping rules are your responsibility to review.

Fallback chains
05

Fallback destination is required — no 404s when rules don't match

Every smart link must have a fallback destination. There is no 'show an error page if no rule matches' option — the fallback is the safety net. The fallback can be any URL; it's also used as the canonical destination for Google Bot and other crawlers (smart-link rules are not applied to known crawler User-Agents to avoid indexing confusion). Beyond the primary fallback, link-level expiry (expires_at) and click cap (max_clicks) each have their own configurable expired-destination URL — separate from the rules fallback. So a link can have: up to 5 routing rules, a fallback for no-rule-match, a destination for post-expiry-date, and a destination for post-click-cap. These compose cleanly; edge cases are documented in the guides.

Teams using smart links in production

Names are placeholders for now — real customer names land here as case studies are published.

We retired a Node.js redirect service that was costing us 40ms round-trip. Smart links on Elido evaluate rules at the edge; the redirect is as fast as a plain short link. The rules service was 600 lines of code we no longer maintain.

G
Growth team, B2C app, Madrid
Lead Engineer

Time-windowed rules for seasonal content let us set campaigns in advance and go to sleep. Previously that was a 2 AM manual redirect change. Now it's a scheduled rule and a calendar reminder to check the result.

C
Campaign team, media group, Warsaw
Digital Campaign Manager

A/B confidence display in the dashboard stopped the 'is that statistically significant?' argument in our standup. We look at the z-test number, agree on a threshold, and move on.

P
Product team, SaaS platform, Lisbon
Product Manager

Elido smart links vs Bitly geo + Rebrandly geo

Both Bitly and Rebrandly offer geo routing. The differences are in rule depth, evaluation latency, and A/B capability.

FeatureElidoBitlyRebrandly
Rule dimensionsGeo, device, OS, language, referrer, timeGeo + device (limited)Geo + device
A/B variants per linkUp to 5 — weighted + z-test confidenceNot availableNot available
Rules evaluated at edgeYes — no origin round-tripEdge-served redirects; rule evaluation variesVaries by plan
Rule propagation timeUnder 90 secondsNot documentedNot documented
Scheduled / time-windowed rulesYes — UTC window, day-of-week filterNot availableNot available
Max rules per link5 on Pro, unlimited on BusinessGeo: 1 per linkVaries by plan
Fallback destinationRequired, configurableDefault destinationDefault destination
Click capYes — per link, per variantNot availableNot available

Smart links questions

How fast do rule changes propagate?

api-core pushes rule changes to Redis within 30 seconds of save. The edge-redirect service has an in-process LRU cache with a 60-second TTL for rule-bearing links. Full propagation: under 90 seconds in the worst case. If you need faster propagation (e.g., live event cutover), the API has a cache-bust endpoint that forces Redis invalidation immediately — edge LRU will then miss and re-fetch from Redis within seconds.

What happens if two rules match the same request?

First-match wins — the rule with the lowest order index is applied. There is no conflict detection or merging. It's your responsibility to order rules correctly and to avoid overlapping time windows or country lists. The rule preview tool in the dashboard lets you simulate a test request against the current rule set to verify which rule fires.

Do rules apply to Google Bot and other crawlers?

No. Known crawler User-Agent patterns are excluded from rule evaluation; crawlers always get the fallback destination. This is intentional — you don't want your smart-link routing to affect indexing behavior or serve crawlers region-specific content unintentionally. The crawler exclusion list is the same list used by the edge to classify organic vs bot traffic in analytics.

How is the z-test confidence calculated?

Two-proportion z-test at the click level. The null hypothesis is that both variants have the same click-through rate. Confidence is 1 - p-value, expressed as a percentage. We don't apply Bonferroni correction for multiple variants; running more than 2 variants increases the false positive rate. For formal experiments, export the raw click stream and run the significance test in your warehouse. We surface the dashboard number as a directional indicator, not a causal conclusion.

Can I set a rule that routes only on a specific referrer?

Yes — referrer domain matching is one of the six rule dimensions. You can match an exact domain (e.g., 'newsletter.example.com') or a wildcard ('*.example.com'). The Referer header is used; HTTPS referrer-stripping means you won't always get a referrer from external HTTPS sites. For links shared in email (where Referer is typically absent), referrer rules are less reliable than geo or device rules.

Can I use smart links on the free tier?

No. Smart links are a Pro and Business feature. Free tier links go to a single destination with no routing rules. You can preview the rules interface on free, but rules don't evaluate at the edge until you upgrade.

Are there per-variant analytics?

Yes. Each variant in an A/B split has its own click time-series visible in the link analytics view. Geo, device, and referrer breakdowns are aggregated at the link level, not per-variant — per-variant dimension breakdowns are on the roadmap for Business.

What's the difference between a smart link and a campaign A/B split?

Smart-link A/B is per-link: you split traffic to different destinations for the same short URL. Campaign A/B is at the campaign level: you run two short link variants (different slugs) targeting the same destination, and use the campaign analytics to compare which slug got more clicks. Different use cases: link-level A/B is for destination testing; campaign A/B is for creative and slug testing.

Ready to try it?

Start on the free plan, upgrade when you need a custom domain.

Smart links — One short link, multiple destinations. · Elido