Smart links. One link, many destinations.
Enrutamiento por dispositivo, geolocalización, idioma, hora del día. Las reglas se evalúan en el POP del edge — la primera coincidencia gana, se vuelve al destino predeterminado. No cuesta nada además de un redireccionamiento normal con acierto de caché.
- 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
- Coincidencia de país ISO y zona horaria IANA
- Orientación a móvil / tablet / escritorio
- Ventanas de tiempo con filtros por día de la semana
- Expresiones regulares de User-Agent para usuarios avanzados
- Límite de clics por enlace (max_clicks)
- Variantes A/B con ponderación o rotación
Qué hace realmente el motor de reglas de smart-links
El enrutamiento geográfico y la segmentación por dispositivo son lo básico. Los detalles a continuación explican los casos extremos que complican las implementaciones simples.
La primera coincidencia gana, evaluada en el POP del edge — sin viaje de ida y vuelta al origen
Las reglas se almacenan en Redis (caché L2) y son evaluadas por el servicio edge-redirect en cada solicitud, dentro del mismo proceso que realiza la redirección — no hay un motor de reglas separado al que llamar. La evaluación de reglas añade menos de 1 ms a una redirección con acierto en caché. El orden de evaluación es el que establezcas en el dashboard o API; arrastra para reordenar o usa el campo de orden en la API. La semántica de 'primera coincidencia' significa que colocas tus reglas más específicas primero (ej. 'móvil + Alemania + lunes por la mañana → página de promoción') y tus reglas generales al final. Si ninguna regla coincide, se sirve el destino fallback — el fallback es obligatorio, no puede estar vacío. Los cambios en las reglas se propagan de api-core a Redis en menos de 30 segundos; el TTL de la caché LRU del edge para enlaces con reglas es de 60 segundos, por lo que la ventana de propagación completa es inferior a 90 segundos.
Seis dimensiones: geo, dispositivo, OS, idioma, referente y tiempo
Cada regla puede combinar hasta seis dimensiones en una sola condición. Geo: lista de códigos de país ISO 3166-1 alpha-2 (uno o más países). Tipo de dispositivo: móvil, tablet, escritorio — derivado del User-Agent. OS: iOS, Android, Windows, macOS, Linux — también del User-Agent. Idioma: coincidencia de cabecera Accept-Language (etiquetas de idioma BCP 47; 'fr' coincide con 'fr-FR', 'fr-CA', etc.). Dominio referente: coincidencia exacta o con comodines contra el dominio de la cabecera Referer (útil para enrutar tráfico social vs email vs directo). Tiempo: ventana de tiempo UTC con filtro opcional de día de la semana (ej. 'Lun–Vie 09:00–17:00 UTC'). El regex de User-Agent está disponible para usuarios avanzados que necesiten segmentar una versión específica de navegador o rastreador; no está expuesto en el dashboard por defecto, solo vía API. Las múltiples dimensiones en una sola regla se combinan con AND; un enlace puede tener hasta 5 reglas (Pro) o ilimitadas (Business).
Splits A/B ponderados con confianza z-test — hasta 5 variantes por enlace
Un enlace puede tener hasta 5 variantes de destino. El tráfico se divide por peso (configurable por variante; los pesos deben sumar 100) o round-robin. Cada variante rastrea su propia serie temporal de clics para que puedas ver si el efecto es constante a lo largo del día. El modelo de confianza es un z-test de dos proporciones a nivel de clic: el dashboard muestra 'la variante A lidera con X% de confianza' una vez que ambas variantes superan una muestra mínima (por defecto 200 clics cada una, configurable hasta 1,000). Reportamos la confianza bruta del z-test; no aplicamos correcciones de pruebas secuenciales. Las variantes A/B y las reglas de smart-links pueden coexistir en el mismo enlace: las reglas se evalúan primero, y el split A/B se aplica solo a la ruta de fallback. Así puedes enrutar a los usuarios de iOS incondicionalmente mientras realizas un A/B testing de dos destinos para todos los demás. El botón de 'el ganador se lo lleva todo' bloquea el enlace a la variante líder y elimina las otras — esto es irreversible.
Reglas con ventana de tiempo para campañas estacionales y basadas en eventos
Las reglas de tiempo te permiten configurar una regla que se activa y desactiva según un horario sin intervención manual. El uso típico: una regla para una página promocional activa desde el Black Friday 00:00 UTC hasta el Cyber Monday 23:59 UTC, que luego vuelve automáticamente al destino perenne. Las reglas se evalúan en UTC; si tu campaña depende de la zona horaria, conviértela a UTC al momento de la configuración. Las reglas programadas se evalúan de la misma manera que las reglas estáticas — en el edge, sin viaje de ida y vuelta al origen. El dashboard muestra una vista de línea de tiempo de las reglas programadas para que las ventanas superpuestas sean visibles. Caso extremo: si dos reglas de ventana de tiempo se superponen y ambas coinciden, gana la que tenga el índice de orden más bajo (primera coincidencia). No hay detección de conflictos — las reglas superpuestas son tu responsabilidad de revisar.
El destino fallback es obligatorio — sin errores 404 cuando las reglas no coinciden
Cada smart-link debe tener un destino fallback. No hay una opción de 'mostrar una página de error si ninguna regla coincide' — el fallback es la red de seguridad. El fallback puede ser cualquier URL; también se utiliza como el destino canónico para Google Bot y otros rastreadores (las reglas de smart-links no se aplican a User-Agents de rastreadores conocidos para evitar confusiones en la indexación). Más allá del fallback principal, la expiración a nivel de enlace (expires_at) y el límite de clics (max_clicks) tienen cada uno su propia URL de destino expirado configurable — independiente del fallback de reglas. Así, un enlace puede tener: hasta 5 reglas de enrutamiento, un fallback para cuando no hay coincidencia de reglas, un destino para después de la fecha de expiración y un destino para después del límite de clics. Estos se componen limpiamente; los casos extremos están documentados en las guías.
Equipos que usan smart-links en producción
Los nombres son marcadores de posición por ahora — los nombres de clientes reales aparecerán aquí a medida que se publiquen los casos de estudio.
“Retiramos un servicio de redirección en Node.js que nos costaba 40 ms de ida y vuelta. Los smart-links en Elido evalúan las reglas en el edge; la redirección es tan rápida como un enlace corto normal. El servicio de reglas eran 600 líneas de código que ya no mantenemos.”
“Las reglas de ventana de tiempo para contenido estacional nos permiten configurar campañas con antelación y olvidarnos. Antes eso era un cambio de redirección manual a las 2 AM. Ahora es una regla programada y un recordatorio en el calendario para revisar el resultado.”
“La visualización de confianza A/B en el dashboard terminó con la discusión de '¿es eso estadísticamente significativo?' en nuestro standup. Miramos el número del z-test, acordamos un umbral y seguimos adelante.”
Smart-links de Elido vs geo de Bitly + geo de Rebrandly
Tanto Bitly como Rebrandly ofrecen enrutamiento geográfico. Las diferencias radican en la profundidad de las reglas, la latencia de evaluación y la capacidad A/B.
| Feature | Elido | Bitly | Rebrandly |
|---|---|---|---|
| Dimensiones de reglas | Geo, dispositivo, OS, idioma, referente, tiempo | Geo + dispositivo (limitado) | Geo + dispositivo |
| Variantes A/B por enlace | Hasta 5 — ponderadas + confianza z-test | No disponible | No disponible |
| Reglas evaluadas en el edge | Sí — sin viaje de ida y vuelta al origen | Redirecciones servidas en el edge; la evaluación de reglas varía | Varía según el plan |
| Tiempo de propagación de reglas | Menos de 90 segundos | No documentado | No documentado |
| Reglas programadas / ventanas de tiempo | Sí — ventana UTC, filtro de día de la semana | No disponible | No disponible |
| Máximo de reglas por enlace | 5 en Pro, ilimitadas en Business | Geo: 1 por enlace | Varía según el plan |
| Destino fallback | Obligatorio, configurable | Destino por defecto | Destino por defecto |
| Límite de clics | Sí — por enlace, por variante | No disponible | No disponible |
Preguntas sobre smart-links
¿Qué tan rápido se propagan los cambios de reglas?
api-core envía los cambios de reglas a Redis en menos de 30 segundos tras guardar. El servicio edge-redirect tiene una caché LRU en el proceso con un TTL de 60 segundos para enlaces con reglas. Propagación completa: menos de 90 segundos en el peor de los casos. Si necesitas una propagación más rápida (ej. corte en vivo de un evento), la API tiene un endpoint para invalidar la caché que fuerza la invalidación de Redis inmediatamente — el LRU del edge fallará y volverá a obtener de Redis en segundos.
¿Qué sucede si dos reglas coinciden con la misma solicitud?
La primera coincidencia gana — se aplica la regla con el índice de orden más bajo. No hay detección de conflictos ni fusión. Es tu responsabilidad ordenar las reglas correctamente y evitar ventanas de tiempo o listas de países superpuestas. La herramienta de vista previa de reglas en el dashboard te permite simular una solicitud de prueba contra el conjunto de reglas actual para verificar qué regla se activa.
¿Se aplican las reglas a Google Bot y otros rastreadores?
No. Los patrones de User-Agent de rastreadores conocidos se excluyen de la evaluación de reglas; los rastreadores siempre reciben el destino fallback. Esto es intencional — no quieres que el enrutamiento de tu smart-link afecte el comportamiento de indexación o sirva contenido específico por región a los rastreadores de forma involuntaria. La lista de exclusión de rastreadores es la misma que utiliza el edge para clasificar tráfico orgánico vs bots en analytics.
¿Cómo se calcula la confianza del z-test?
Z-test de dos proporciones a nivel de clic. La hipótesis nula es que ambas variantes tienen la misma tasa de clics. La confianza es 1 - p-value, expresada como porcentaje. No aplicamos la corrección de Bonferroni para múltiples variantes; ejecutar más de 2 variantes aumenta la tasa de falsos positivos. Para experimentos formales, exporta el flujo de clics brutos y ejecuta la prueba de significancia en tu almacén de datos. Mostramos el número en el dashboard como un indicador direccional, no como una conclusión causal.
¿Puedo configurar una regla que enrute solo en un referente específico?
Sí — la coincidencia de dominio referente es una de las seis dimensiones de las reglas. Puedes coincidir con un dominio exacto (ej. 'newsletter.example.com') o un comodín ('*.example.com'). Se utiliza la cabecera Referer; el recorte de referentes en HTTPS significa que no siempre obtendrás un referente de sitios HTTPS externos. Para enlaces compartidos en email (donde Referer suele estar ausente), las reglas de referente son menos fiables que las de geo o dispositivo.
¿Puedo usar smart-links en el nivel gratuito?
No. Los smart-links son una característica de Pro y Business. Los enlaces del nivel gratuito van a un único destino sin reglas de enrutamiento. Puedes previsualizar la interfaz de reglas en el nivel gratuito, pero las reglas no se evalúan en el edge hasta que actualices tu plan.
¿Hay analytics por variante?
Sí. Cada variante en un split A/B tiene su propia serie temporal de clics visible en la vista de analytics del enlace. Los desgloses por geo, dispositivo y referente se agregan a nivel de enlace, no por variante — los desgloses de dimensiones por variante están en el roadmap para Business.
¿Cuál es la diferencia entre un smart-link y un split A/B de campaña?
El A/B de smart-link es por enlace: divides el tráfico a diferentes destinos para la misma URL corta. El A/B de campaña es a nivel de campaña: ejecutas dos variantes de enlace corto (diferentes slugs) que apuntan al mismo destino, y usas los analytics de campaña para comparar qué slug obtuvo más clics. Diferentes casos de uso: el A/B a nivel de enlace es para probar destinos; el A/B de campaña es para probar creatividades y slugs.
Keep reading
Universal Links + App Links — la capa de enrutamiento específica para móviles que funciona junto a las reglas de smart-links.
A/B a nivel de campaña, plantillas UTM y exportaciones programadas — el flujo de trabajo de campaña construido sobre smart-links.
Datos de clics, desglose por geo/dispositivo y vistas de cohortes — cómo se ve realmente el tráfico de smart-links en ClickHouse.
Cómo los equipos de producto usan smart-links para enrutamiento de feature-flags, onboarding y compartición en la aplicación.
¿Listo para probarlo?
Empieza con el plan gratuito, actualiza cuando necesites un dominio personalizado.