Product Craft Bible
Countdown & Urgency UI
Inicio E-commerce Countdown & Urgency UI
E-commerce

Countdown & Urgency UI

8 reglas FTC "Bringing Dark Patterns to Light" (sept. 2022) · deceptive.design/types/fake-urgency · Caso app Hurrify (Shopify, retirada 2023)EU Omnibus Directive (blacklist UCPD) · UOKiK vs Amazon PLN 31.85M (2024) · ASA vs Hammonds (oct. 2025) · Booking.com vs CMA (UK)WCAG 2.2.1 Timing Adjustable (Level A), W3C · texto normativo: Turn off / Adjust 10x / Extend con ≥20s y ≥10 extensionesWCAG 2.2.2 Pause, Stop, Hide (Level A), W3C · nota normativa: sin excepción de 5s para auto-updating content
144

Countdown & Urgency UI

8 reglas
1262

Countdown solo para deadlines que existen de verdad

Un temporizador de cuenta regresiva es una promesa visual: le dice al usuario que algo cambia cuando el reloj llega a cero. Si la oferta no expira, si el precio no sube o el carrito no se pierde, el temporizador es una mentira de diseño. La distinción operativa es nítida: un deadline timer apunta a una fecha fija real (2026-12-31T23:59:59) y el banner desaparece al expirar; un evergreen timer reinicia por sesión y carece de deadline real. La FTC nombra explícitamente el "baseless countdown timer" como dark pattern: crear presión mostrando un reloj falso que se reinicia al llegar a cero. La credibilidad del producto depende de que la promesa se cumpla sin excepciones.

FTC "Bringing Dark Patterns to Light" (sept. 2022) · deceptive.design/types/fake-urgency · Caso app Hurrify (Shopify, retirada 2023)
Preferir
Oferta de lanzamiento · termina 31 dic
02
días
14
hrs
37
min
Fecha fija real. El 1 de enero el banner desaparece y se muestra el precio regular.
Evitar
"¡Solo por hoy!" (cada día)
00
hrs
04
min
59
seg
↻ reinicia a 0:00, oferta idéntica
Timer evergreen: la oferta nunca expira de verdad.
1263

Urgencia y escasez falsas son ilegales, no solo poco éticas

Mostrar urgencia o escasez ficticias no es un "truco de marketing" tolerable: es una misrepresentation material bajo múltiples marcos legales. En la UE, la Directiva Omnibus coloca los fake countdown timers en la blacklist de prácticas comerciales desleales, con multas de hasta el 4% del volumen de negocio anual. En Polonia, Amazon fue multada PLN 31,850,141 (~7.2 M EUR) por UOKiK en marzo 2024 por countdown de entrega con plazos que no podía garantizar. En Reino Unido, la ASA dictaminó en octubre 2025 contra Hammonds Furniture por un timer que creaba "a false sense of urgency". Booking.com enfrentó acción de la CMA y demanda colectiva por claims de "only 1 room left" inexactos. La FTC no requiere probar intención: el efecto de decepcionar basta.

EU Omnibus Directive (blacklist UCPD) · UOKiK vs Amazon PLN 31.85M (2024) · ASA vs Hammonds (oct. 2025) · Booking.com vs CMA (UK)
Preferir
Auriculares Studio Pro
$189
Quedan 4 en stock
Cifra real del inventario. Solo se muestra cuando hay ≤5 unidades; si hay >10, no se muestra número.
Evitar
Auriculares Studio Pro
$189
¡Solo quedan 2 unidades!
Stock real: 847. El mensaje no cambia entre visitas. Blacklist Omnibus · multas hasta 4% del volumen anual.
1264

WCAG 2.2.1: todo límite de tiempo con consecuencia debe ser ajustable (Nivel A)

Cualquier temporizador que imponga una consecuencia al usuario (pierde el carrito, la sesión, la reserva) debe ser desactivable, ajustable o prorrogable, salvo cuando el límite es esencial e intrínseco a la actividad. Es un requisito Level A, el más básico de WCAG. La norma exige al menos una de: apagar, ajustar (hasta 10x el tiempo por defecto) o extender (advertir antes de expirar y dar ≥20s para extender con una acción simple, permitiendo ≥10 extensiones). La excepción de "evento en tiempo real" (una subasta) no aplica a una flash sale de retail. Un countdown de "20 min para completar la compra" que expira sin advertencia viola 2.2.1 y expone al equipo a reclamaciones de accesibilidad.

WCAG 2.2.1 Timing Adjustable (Level A), W3C · texto normativo: Turn off / Adjust 10x / Extend con ≥20s y ≥10 extensiones
Preferir
Tu carrito (3) ⏱ 2:00
¿Sigues ahí?
Tu carrito se libera en 2 minutos. Puedes extender el tiempo cuantas veces necesites.
Necesito más tiempo
Evitar
Tu carrito (3) ⏱ 0:01
"Tu sesión expira en 10:00" → al llegar a 0 el carrito se borra sin advertencia ni opción de extender. Viola WCAG 2.2.1 (Level A).
1265

WCAG 2.2.2: todo countdown animado necesita pausar / detener / ocultar (Nivel A)

Un temporizador que parpadea, hace flip o tiene animación continua es "contenido que se auto-actualiza" bajo WCAG 2.2.2. El usuario debe poder pausarlo, ocultarlo o detenerlo, o bien controlar su frecuencia, salvo que la actualización sea esencial. A diferencia del contenido en movimiento, no existe la excepción de 5 segundos para contenido auto-actualizable. Sin un control, el countdown puede ser inaccesible para personas con trastornos vestibulares, epilepsia fotosensible o dificultades cognitivas que se distraen con el movimiento continuo. Es Level A, no opcional. W3C recomienda que, si hay varios elementos animados, un único mecanismo los afecte a todos a la vez.

WCAG 2.2.2 Pause, Stop, Hide (Level A), W3C · nota normativa: sin excepción de 5s para auto-updating content
Preferir
0
4
:
3
7
Pausar animación Control visible que detiene el flip de todos los counters
Evitar
0
4
:
3
7
Flip-clock infinito, sin ningún control de pausa · viola WCAG 2.2.2 (Level A)
1266

prefers-reduced-motion: detén la animación, no el timer

El contador puede seguir corriendo matemáticamente aunque sus animaciones de flip, pulso o parpadeo estén desactivadas. Las personas que activan "Reduce Motion" en su sistema lo hacen porque el movimiento les causa malestar físico o cognitivo, no porque quieran perder información. La solución correcta separa el estado funcional del timer (JS que actualiza el DOM) de sus efectos de transición (CSS). El antipatrón es ocultar el timer completo con display:none bajo reduced-motion: el usuario pierde el deadline. Lo correcto: el número sigue actualizándose; solo la transición de flip se reemplaza por un cambio instantáneo. Es la técnica C39 de W3C y refuerza tanto 2.2.2 como 2.3.3.

W3C WCAG 2.2 Technique C39 (prefers-reduced-motion) · MDN @media (prefers-reduced-motion: reduce)
Preferir
Animación off, número vivo
/* JS sigue actualizando el número */
.timer-digit {
  transition: transform 0.4s ease;
}
@media (prefers-reduced-motion: reduce) {
  .timer-digit {
    transition: none;  /* solo el flip */
    animation: none;
  }
  /* el deadline sigue visible */
}
Evitar
Oculta el timer entero
@media (prefers-reduced-motion: reduce) {
  .countdown {
    display: none;
    /* ✗ el usuario pierde */
    /*   el deadline completo */
  }
}
1267

No pongas countdown dentro del checkout ni de acciones críticas

Un temporizador en la página de pago, en un formulario de datos bancarios o durante la confirmación de una acción irreversible aplica presión en el momento de mayor vulnerabilidad cognitiva del usuario. El estrés del reloj aumenta errores de entrada, decisiones impulsivas y arrepentimiento post-compra. La FTC señala que la presión temporal en momentos de compra es "material to purchase decisions" y una misrepresentation si es falsa. Reserva el countdown para la previa a la acción (la oferta en la página de producto o el carrito); al entrar al checkout, reemplázalo por un banner estático que comunique el límite sin un reloj parpadeando: "Tienes hasta las 18:00 para finalizar".

FTC "Bringing Dark Patterns to Light" (presión temporal en compra = material) · deceptive.design/types/fake-urgency
Preferir
Pago seguro
Número de tarjeta
Tienes hasta las 18:00 para finalizar, sin presión de reloj.
Confirmar pago
Evitar
Pago seguro
Número de tarjeta
05:00, tu reserva expira
Confirmar pago
1268

Contadores "N personas viendo" deben ser reales o no existir

Mostrar "23 personas están viendo esto ahora" con un número aleatorio generado por JS es un dark pattern documentado de fake social proof. Combina la presión de escasez con la de urgencia social (Cialdini, 1984: scarcity + social proof, dos de los seis principios de influencia), y su uso simultáneo maximiza la presión psicológica. El caso documentado de OneTravel ("38 people are looking at this flight") confirmó por el código fuente que el número era un integer aleatorio. La FTC clasifica los "false activity messages" como dark pattern. Si el sistema no puede acceder a datos de sesiones activas reales, el widget no debe existir: un número inventado socava la confianza en cuanto el usuario lo detecta.

Cialdini "Influence" (1984), cap. Scarcity + Social Proof · Caso OneTravel (deceptive.design/types/fake-social-proof) · FTC "false activity messages"
Preferir
8 personas tienen este SKU en su carrito
Conteo real de sesiones activas vía WebSocket. Si hay <5 sesiones reales, el widget no se muestra.
Evitar
17 personas están viendo esto ahora
Math.floor(Math.random()*30)+10
Número inventado. Fake social proof · dark pattern FTC.
1269

Comunica qué pasa al expirar antes de que expire

El usuario tiene derecho a saber las consecuencias de la expiración antes de que ocurran. Si el precio sube, dilo. Si el carrito se libera, dilo. Si la oferta desaparece pero puede volver a buscarla, dilo también. La opacidad post-expiración fuerza a experimentar la consecuencia como una sorpresa aversiva, lo que destruye la confianza y aumenta el abandono permanente. Es además un requisito implícito de WCAG 2.2.1 (advertir antes de expirar). En el caso Amazon/UOKiK fue agravante que las condiciones del plazo estuvieran "buried in terms of service using hard-to-read grey text". Lo correcto: anticipar la consecuencia exacta y, al expirar, explicar qué cambió con un enlace para reactivar si aplica.

WCAG 2.2.1 ("warned before time expires") · UOKiK vs Amazon (2024): condiciones ocultas en texto gris como agravante
Preferir
Oferta de temporada ⏱ 3:00
Si el timer expira, el precio vuelve a $249 y tu selección se guarda en favoritos automáticamente.
Evitar
?
Timer → 0:00 → recarga
El precio normal aparece sin aviso previo. El usuario queda desconcertado: nunca supo qué consecuencia se acercaba.