Bloque de enlace de reunión
Detalles de acceso para un evento en línea o híbrido: una etiqueta de proveedor, una URL de unión, una hora de inicio, y cuántos minutos antes del inicio debe presentarse como activo el enlace de unión. Es el bloque detrás del momento "haz clic aquí para unirte" de un webinar o una invitación de reunión remota, construido para mantenerse preciso ya sea que el destinatario abra el correo una semana antes o treinta segundos antes de que empiece la llamada.
Cómo funciona
El campo de proveedor (Zoom, Google Meet, Microsoft Teams, o Personalizado) es solo una etiqueta — no hay OAuth ni conexión de cuenta con ninguno de ellos, solo una URL simple que pegas tú mismo. Existe para elegir el texto del botón de unión ("Unirse en Zoom" frente a un genérico "Unirse a la reunión" para Personalizado), nada más.
El HTML enviado siempre renderiza el botón de Unirse como un enlace real y clicable, la misma convención de "estático en el momento del envío" que usan los bloques de cuenta regresiva y producto. Un correo no puede volver a obtenerse a medida que se acerca la hora de inicio de la reunión, así que no hay forma de restringirlo ahí.
Junto al botón, una línea de estado y una insignia siguen la cuenta regresiva. Mientras startsAt esté en el futuro, se lee "Comienza en Xd Xh Xm" (o "Xh Xm" una vez por debajo de un día), junto a un pequeño GIF renderizado en el servidor construido con la misma técnica de imagen de cuenta regresiva que usa el bloque de Cuenta regresiva. Esa imagen sigue contando correctamente en cada apertura, aunque sea una imagen estática regenerada al vuelo con cada solicitud, no algo animado del lado del cliente. Una vez que pasa la hora de inicio, la insignia cambia a "En vivo ahora" sin más cuenta regresiva.
La vista en vivo alojada es el único lugar donde este bloque realmente restringe el control de Unirse, porque a diferencia de un correo enviado, la vista en vivo se obtiene de nuevo en cada visita. Ahí, el botón de Unirse solo aparece una vez que la hora de renderizado está dentro de opensMinutesBefore minutos de startsAt. Antes de que se abra esa ventana, el destinatario ve un chip gris inerte que dice "Se abre N minutos antes del inicio" (o "Aún no está abierto" si opensMinutesBefore es 0) en lugar de un enlace funcional. Esto se calcula de forma sincrónica a partir de las propias props del bloque contra el reloj actual — sin lectura de Firestore, sin estado de respuesta almacenado — así que es económico en cada renderizado de la vista en vivo. Un bloque sin startsAt definido siempre está abierto, tanto en el correo como en la vista en vivo, ya que no hay nada contra qué restringir.
La línea opcional de acceso telefónico, si se completa, se renderiza como texto plano junto al botón de Unirse en todos los niveles — no es un enlace en sí, solo un número de teléfono para quien se una únicamente por voz.
Campos configurables:
- Proveedor — Zoom, Google Meet, Microsoft Teams, o Personalizado (solo etiqueta).
- URL de unión — a dónde enlaza el botón.
- Hora de inicio — la hora de inicio de la reunión; también determina la insignia "Comienza en" y la restricción de la vista en vivo.
- Acceso telefónico (opcional) — un número de teléfono renderizado como texto plano.
- El enlace de unión se abre este número de minutos antes del inicio — la ventana de restricción de la vista en vivo (por defecto 15; 0 significa que el enlace solo está inerte exactamente hasta el instante de inicio).
- Color de fondo, relleno, borde y radio de borde en la tarjeta.
- Color/tamaño de la etiqueta de estado, y sobrescrituras de color/fondo del botón de Unirse.
No hay nada que responder en un bloque de Enlace de reunión — es contenido que se actualiza en vivo, no una pregunta — así que nunca aparece en el panel de respuestas ni en la exportación CSV. El clic de Unirse en sí sigue rastreándose en el mapa de calor de clics a nivel de bloque como cualquier otro enlace, a través del slot genérico de seguimiento de clics que comparte cualquier bloque con enlace simple.
Ejemplos
Subject
Your seat is booked — join link inside
Una invitación a webinar empareja un bloque de Enlace de reunión con una Cuenta regresiva más arriba en el correo — la cuenta regresiva genera urgencia en los días previos, y la insignia del enlace de reunión toma el relevo con una lectura precisa de "Comienza en" a medida que se acerca el momento. Para un evento híbrido, coloca tanto un bloque de Enlace de reunión como uno de Sede en el mismo correo, para que los asistentes remotos y presenciales obtengan cada uno el control que les corresponde. El propósito de proyecto "Evento" te da justo ese emparejamiento como punto de partida — mira Eventos y webinars. Definir opensMinutesBefore en algo como 10 o 15 evita que quienes hacen clic temprano se unan a una llamada mayormente vacía y no encuentren nada sucediendo todavía.
Cómo se ve la alternativa estática
<div style="margin:12px 0;background-color:transparent">
<p style="margin:0 0 6px;font-size:13px;font-weight:600;color:#111827">Starts in 2h 14m</p>
<img src="https://mailinapp.com/api/countdown?t=1753401600000&c=111827&s=9f2a..." width="220" height="40" alt="Starts in 2h 14m"
style="display:block;max-width:100%;height:auto;margin-bottom:8px" />
<a href="https://zoom.us/j/123456789"
style="display:inline-block;padding:10px 20px;background-color:#4f46e5;color:#ffffff;
border-radius:6px;text-decoration:none;font-size:14px;font-weight:600">
Join on Zoom
</a>
<p style="margin:8px 0 0;font-size:13px;color:#4b5563">Dial in: +1 415 555 0100</p>
</div>
Este es el nivel enviado por correo: una insignia de cuenta regresiva en vivo, un enlace de Unirse siempre clicable directo a la URL de la reunión, y la línea de acceso telefónico en texto plano — sin restricción, ya que el correo es estático en el momento del envío.