Liens intelligents. One link, many destinations.
Acheminez par appareil, géolocalisation, langue, heure de la journée. Les règles sont évaluées au niveau du POP périphérique — la première correspondance l'emporte, avec un retour à la destination par défaut. Ne coûte rien de plus qu'une redirection normale avec cache hit.
- First-match rule engine at the edge
- Sub-millisecond rule evaluation
- A/B variants with z-test confidence
- Time-windowed campaigns in UTC
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.
- Step 1
User clicks
elido.me/xFrom email, QR, social, anywhere.
- Step 2
Nearest edge POP
Frankfurt · 4 msAnycast routes to Hetzner FRA / OVH SGP / Hetzner ASH.
- Step 3
Rule eval
L1 cache · 0.2 msFirst-match wins, no origin round-trip.
- Step 4
302 → destination
elido.me/x → /de/preiseClick 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.
- CountryISO 3166-1 alpha-2 lists, e.g. DE, AT, CH
- Device & OSiOS, Android, Windows, macOS, Linux
- LanguageAccept-Language with BCP-47 fallbacks
- Time windowUTC range with day-of-week filter
- ReferrerExact or wildcard host match
- 1ifCountry: DE, AT, CHANDDevice: Mobile/de/preise⋮⋮
- 2ifCountry: FR, BEANDLanguage: fr-*/fr/tarifs⋮⋮
- 3ifOS: iOSApp Store · apps.apple.com/...⋮⋮
- 4ifTime: Mon–Fri 09–17 UTCANDReferrer: newsletter.*/promo/q2⋮⋮
- else/en/pricing— fallback (required)
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.
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 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
- Correspondance pays ISO et fuseau horaire IANA
- Ciblage mobile / tablette / bureau
- Fenêtres horaires avec filtres par jour de la semaine
- Expression régulière User-Agent pour les utilisateurs avancés
- Limite de clics par lien (max_clicks)
- Variantes A/B avec pondération ou répartition équitable
Ce que fait réellement le moteur de règles des smart-links
Le ciblage géographique et par appareil sont des bases. Les détails ci-dessous expliquent les cas limites qui font échouer les implémentations basiques.
Le premier match l'emporte, évaluation au POP de l'edge — pas d'aller-retour vers l'origine
Les règles sont stockées dans Redis (cache L2) et évaluées par le service edge-redirect à chaque requête, au sein du même processus qui effectue la redirection — il n'y a pas de moteur de règles séparé à appeler. L'évaluation des règles ajoute moins de 1ms à une redirection en cache. L'ordre d'évaluation est celui que vous définissez dans le tableau de bord ou l'API ; glissez pour réordonner, ou utilisez le champ order dans l'API. La sémantique du premier match signifie que vous placez vos règles les plus spécifiques en premier (ex: 'mobile + France + lundi matin → page promo') et vos règles générales en dernier. Si aucune règle ne correspond, la destination de secours (fallback) est servie — le fallback est obligatoire, il ne peut pas être vide. Les modifications de règles se propagent de api-core à Redis en moins de 30 secondes ; le TTL du cache LRU de l'edge pour les liens avec règles est de 60 secondes, donc la fenêtre de propagation complète est inférieure à 90 secondes.
Six dimensions : géo, appareil, OS, langue, référent et heure
Chaque règle peut combiner jusqu'à six dimensions dans une seule condition. Géo : liste de codes pays ISO 3166-1 alpha-2 (un ou plusieurs pays). Type d'appareil : mobile, tablette, ordinateur — dérivé du User-Agent. OS : iOS, Android, Windows, macOS, Linux — également du User-Agent. Langue : correspondance de l'en-tête Accept-Language (balises de langue BCP 47 ; 'fr' correspond à 'fr-FR', 'fr-CA', etc.). Domaine référent : correspondance exacte ou générique avec le domaine de l'en-tête Referer (utile pour le routage social vs email vs direct). Heure : fenêtre temporelle UTC avec filtre optionnel par jour de la semaine (ex: 'Lun–Ven 09:00–17:00 UTC'). Le regex User-Agent est disponible pour les utilisateurs avancés qui doivent cibler une version spécifique de navigateur ou de robot ; il n'est pas exposé par défaut dans le tableau de bord, uniquement via l'API. Plusieurs dimensions dans une même règle sont liées par un ET ; un lien peut avoir jusqu'à 5 règles (Pro) ou un nombre illimité (Business).
Répartitions A/B pondérées avec confiance z-test — jusqu'à 5 variantes par lien
Un lien peut avoir jusqu'à 5 variantes de destination. Répartition du trafic par poids (configurable par variante ; la somme des poids doit être égale à 100) ou par round-robin. Chaque variante suit ses propres statistiques de clics afin que vous puissiez voir si l'effet est constant au fil de la journée. Le modèle de confiance est un z-test à deux proportions au niveau du clic : le tableau de bord affiche 'la variante A mène avec X% de confiance' une fois que les deux variantes ont dépassé un échantillon minimum (par défaut 200 clics chacune, configurable jusqu'à 1 000). Nous rapportons la confiance brute du z-test ; nous n'appliquons pas de corrections de tests séquentiels. Les variantes A/B et les règles de smart-links peuvent coexister sur le même lien : les règles sont évaluées en premier, et la répartition A/B s'applique uniquement au chemin de secours (fallback). Vous pouvez donc router les utilisateurs iOS sans condition tout en testant deux destinations A/B pour tous les autres. Le bouton 'le gagnant emporte tout' verrouille le lien sur la variante gagnante et supprime les autres — cette action est irréversible.
Règles par fenêtre temporelle pour les campagnes saisonnières et événementielles
Les règles temporelles vous permettent de définir une règle qui s'active et se désactive selon un calendrier sans intervention manuelle. L'utilisation typique : une règle de page promotionnelle active du Black Friday 00:00 UTC au Cyber Monday 23:59 UTC, puis repasse automatiquement à la destination permanente. Les règles sont évaluées en UTC ; si votre campagne est sensible au fuseau horaire, convertissez en UTC au moment de la configuration. Les règles planifiées sont évaluées de la même manière que les règles statiques — à l'edge, pas d'aller-retour vers l'origine. Le tableau de bord affiche une vue chronologique des règles planifiées afin que les fenêtres qui se chevauchent soient visibles. Cas particulier : si deux règles de fenêtre temporelle se chevauchent et que les deux correspondent, celle avec l'indice d'ordre le plus bas l'emporte (premier match). Il n'y a pas de détection de conflit — il est de votre responsabilité de vérifier les règles qui se chevauchent.
Une destination de secours est requise — pas de 404 quand les règles ne correspondent pas
Chaque smart-link doit avoir une destination de secours. Il n'y a pas d'option 'afficher une page d'erreur si aucune règle ne correspond' — le fallback est le filet de sécurité. Le fallback peut être n'importe quel URL ; il est également utilisé comme destination canonique pour Google Bot et les autres robots (les règles de smart-links ne sont pas appliquées aux User-Agents de robots connus pour éviter toute confusion d'indexation). Au-delà du fallback principal, l'expiration au niveau du lien (expires_at) et le plafond de clics (max_clicks) ont chacun leur propre URL de destination expirée configurable — distincte du fallback des règles. Ainsi, un lien peut avoir : jusqu'à 5 règles de routage, un fallback en cas de non-correspondance des règles, une destination pour après la date d'expiration et une destination pour après le plafond de clics. Ces éléments se composent proprement ; les cas particuliers sont documentés dans les guides.
Équipes utilisant les smart-links en production
Les noms sont des espaces réservés pour l'instant — les noms réels des clients apparaîtront ici au fur et à mesure de la publication des études de cas.
“Nous avons retiré un service de redirection Node.js qui nous coûtait 40ms d'aller-retour. Les smart-links sur Elido évaluent les règles à l'edge ; la redirection est aussi rapide qu'un simple lien court. Le service de règles représentait 600 lignes de code que nous n'avons plus à maintenir.”
“Les règles par fenêtre temporelle pour le contenu saisonnier nous permettent de paramétrer les campagnes à l'avance et de dormir tranquilles. Auparavant, c'était un changement manuel de redirection à 2 heures du matin. Maintenant, c'est une règle planifiée et un rappel dans le calendrier pour vérifier le résultat.”
“L'affichage de la confiance A/B dans le tableau de bord a mis fin à l'argument 'est-ce statistiquement significatif ?' lors de notre standup. Nous regardons le chiffre du z-test, convenons d'un seuil et passons à autre chose.”
Smart-links Elido vs Bitly geo + Rebrandly geo
Bitly et Rebrandly proposent tous deux le routage géographique. Les différences résident dans la profondeur des règles, la latence d'évaluation et les capacités A/B.
| Feature | Elido | Bitly | Rebrandly |
|---|---|---|---|
| Dimensions des règles | Géo, appareil, OS, langue, référent, heure | Géo + appareil (limité) | Géo + appareil |
| Variantes A/B par lien | Jusqu'à 5 — pondérées + confiance z-test | Non disponible | Non disponible |
| Règles évaluées à l'edge | Oui — pas d'aller-retour vers l'origine | Redirections servies par l'edge ; l'évaluation des règles varie | Varie selon le forfait |
| Temps de propagation des règles | Moins de 90 secondes | Non documenté | Non documenté |
| Règles planifiées / par fenêtre temporelle | Oui — fenêtre UTC, filtre par jour de la semaine | Non disponible | Non disponible |
| Règles max par lien | 5 sur Pro, illimité sur Business | Géo : 1 per lien | Varie selon le forfait |
| Destination de secours (fallback) | Requise, configurable | Destination par défaut | Destination par défaut |
| Plafond de clics | Oui — par lien, par variante | Non disponible | Non disponible |
Questions sur les smart-links
À quelle vitesse les changements de règles se propagent-ils ?
api-core pousse les changements de règles vers Redis dans les 30 secondes suivant l'enregistrement. Le service edge-redirect dispose d'un cache LRU interne avec un TTL de 60 secondes pour les liens avec règles. Propagation complète : moins de 90 secondes dans le pire des cas. Si vous avez besoin d'une propagation plus rapide (ex: coupure lors d'un événement en direct), l'API dispose d'un point de terminaison d'invalidation du cache qui force l'invalidation de Redis immédiatement — l'edge LRU manquera alors le cache et récupérera de Redis en quelques secondes.
Que se passe-t-il si deux règles correspondent à la même requête ?
Le premier match l'emporte — la règle avec l'indice d'ordre le plus bas est appliquée. Il n'y a pas de détection ou de fusion de conflits. Il est de votre responsabilité de commander les règles correctement et d'éviter les fenêtres temporelles ou les listes de pays qui se chevauchent. L'outil de prévisualisation des règles dans le tableau de bord vous permet de simuler une requête de test par rapport à l'ensemble de règles actuel pour vérifier quelle règle s'active.
Les règles s'appliquent-elles à Google Bot et aux autres robots ?
Non. Les modèles de User-Agent de robots connus sont exclus de l'évaluation des règles ; les robots reçoivent toujours la destination de secours. C'est intentionnel — vous ne voulez pas que votre routage smart-link affecte le comportement d'indexation ou serve involontairement du contenu spécifique à une région aux robots. La liste d'exclusion des robots est la même que celle utilisée par l'edge pour classer le trafic organique par rapport au trafic robot dans les analyses.
Comment la confiance du z-test est-elle calculée ?
Z-test à deux proportions au niveau du clic. L'hypothèse nulle est que les deux variantes ont le même taux de clics. La confiance est 1 - valeur-p, exprimée en pourcentage. Nous n'appliquons pas de correction de Bonferroni pour les variantes multiples ; l'exécution de plus de 2 variantes augmente le taux de faux positifs. Pour les expériences formelles, exportez le flux brut de clics et effectuez le test de signification dans votre entrepôt de données. Nous affichons le chiffre du tableau de bord comme un indicateur directionnel, pas comme une conclusion causale.
Puis-je définir une règle qui ne route que sur un référent spécifique ?
Oui — la correspondance du domaine référent est l'une des six dimensions de règle. Vous pouvez faire correspondre un domaine exact (ex: 'newsletter.example.com') ou un joker ('*.example.com'). L'en-tête Referer est utilisé ; la suppression du référent HTTPS signifie que vous n'obtiendrez pas toujours un référent de sites HTTPS externes. Pour les liens partagés par email (où le Referer est généralement absent), les règles de référent sont moins fiables que les règles géo ou d'appareil.
Puis-je utiliser les smart-links avec le forfait gratuit ?
Non. Les smart-links sont une fonctionnalité Pro et Business. Les liens du forfait gratuit vont vers une destination unique sans règles de routage. Vous pouvez prévisualiser l'interface des règles en gratuit, mais les règles ne sont pas évaluées à l'edge tant que vous n'avez pas mis à niveau votre forfait.
Existe-t-il des analyses par variante ?
Oui. Chaque variante d'une répartition A/B possède sa propre série temporelle de clics visible dans la vue analytique du lien. Les ventilations par géo, appareil et référent sont agrégées au niveau du lien, pas par variante — les ventilations de dimensions par variante sont prévues dans la feuille de route pour le forfait Business.
Quelle est la différence entre un smart-link et une répartition A/B de campagne ?
L'A/B smart-link est par lien : vous répartissez le trafic vers différentes destinations pour la même URL courte. L'A/B de campagne se situe au niveau de la campagne : vous utilisez deux variantes de liens courts (slugs différents) ciblant la même destination, et utilisez les analyses de campagne pour comparer quel slug a obtenu le plus de clics. Cas d'utilisation différents : l'A/B au niveau du lien sert à tester la destination ; l'A/B de campagne sert à tester le contenu créatif et le slug.
Keep reading
Universal Links + App Links — la couche de routage spécifique au mobile qui fonctionne parallèlement aux règles de smart-links.
A/B au niveau de la campagne, modèles UTM et exports planifiés — le flux de travail de campagne construit au-dessus des smart-links.
Données de clics, ventilation géo/appareil et vues par cohorte — à quoi ressemble réellement le trafic des smart-links dans ClickHouse.
Comment les équipes produit utilisent les smart-links pour le routage des feature-flags, l'onboarding et le partage in-app.
Prêt à essayer ?
Commencez avec le forfait gratuit, passez à la version supérieure lorsque vous avez besoin d'un domaine personnalisé.