Bloque de encuesta
Una pregunta de encuesta de un solo toque: cada opción es a la vez un control real dentro del correo y un enlace simple. Votar funciona en todas partes, desde Gmail web hasta el cliente más básico de solo texto, sin pedirle al destinatario que salga de su bandeja de entrada en la mayoría de los casos.
Cómo funciona
Cada opción de encuesta se renderiza con dos representaciones a la vez, no una elegida al momento de construir. Dondequiera que un cliente admita envíos de formularios dentro del correo (Gmail web/Android, Yahoo, y otros), cada opción es un <form method="post"> real que envía directamente al endpoint público de interacciones de MailInApp, así que tocarla vota sin salir de la bandeja de entrada. Ese formulario está envuelto en un nivel exclusivamente cinético y emparejado con una regla CSS que oculta la segunda representación: un enlace simple <a href> hacia /v/[token]/act que confirma y registra el mismo voto en una página alojada.
Dondequiera que la regla CSS no se respete (Outlook, o cualquier cliente que no pueda enviar un formulario dentro del correo), ese enlace oculto se vuelve visible en su lugar y hace el trabajo. Un enlace simple es la única primitiva universal que todo cliente de correo puede renderizar y seguir. Ambos caminos se envían a través del mismo endpoint de registro y producen un evento idéntico, así que los resultados nunca se bifurcan según el cliente que usó el destinatario.
Un voto se registra una vez que se confirma en la página en vivo (o inmediatamente en un envío dentro del correo) — no con una simple solicitud del enlace. Esto importa porque los escáneres corporativos y las herramientas de seguridad de bandeja de entrada precargan cada enlace de un correo tan pronto como llega; si una simple solicitud GET contara, los resultados de la encuesta se llenarían de bots antes de que un humano abriera el mensaje. La confirmación ocurre mediante un envío de formulario incluso en el camino del enlace, por lo que /v/[token]/act es un flujo de confirmar-y-luego-registrar en dos pasos en lugar de una redirección-y-registro.
El propio voto de un destinatario se deduplica. Volver a hacer clic en su propio enlace (un doble toque impaciente, una recarga fallida de la página) es una operación nula en lugar de una segunda fila, aplicado mediante un id de documento de Firestore determinístico basado en la campaña, el bloque y el destinatario. Los votos anónimos (sin token de destinatario — por ejemplo, uno proveniente de un archivo HTML exportado y pegado en un ESP de terceros) no se deduplican por persona; no hay ninguna persona sobre la cual basarse. En su lugar, se limitan por tasa por IP, por campaña, por minuto, ya que el id de una campaña es visible en el propio código fuente del correo y nada más impide que un script publique votos arbitrarios.
Campos configurables:
- Pregunta — el texto de la consigna de la encuesta, más su propio color y tamaño de fuente.
- Color de fondo, relleno, borde y radio de borde en la tarjeta.
- Color de texto de opción y color de fondo de opción — una sobrescritura de estilo compartida aplicada a cada chip de opción.
Cada opción de encuesta es un nodo hijo con un único campo de etiqueta — agrega, elimina o reordena opciones libremente en el árbol.
Si el proyecto tiene una fecha de cierre o un límite de respuestas configurado (mira ciclo de vida de la encuesta) y se ha alcanzado, la vista en vivo intercambia los chips interactivos por equivalentes inertes y grises, con una nota "Esta encuesta está cerrada a nuevas respuestas". El HTML enviado en sí nunca muestra este estado — es estático en el momento del envío, y la verificación solo ocurre cuando se abre la página, no cuando se envía el correo.
Ejemplos
Subject
Quick one: what should we build next?
Una encuesta de una sola pregunta ("¿Qué función deberíamos construir a continuación?") colocada en un boletín de producto obtiene una lectura directa del interés sin la sobrecarga de un formulario completo. Mira Encuestas y retroalimentación NPS para el patrón más amplio de recolectar retroalimentación estructurada directamente desde una bandeja de entrada. Un correo de resumen posterior a un evento puede preguntar "¿Vendrías a otro?" con opciones Sí/No/Tal vez, alimentando directamente la planificación del próximo. Los equipos indecisos en pruebas A/B pueden usar una encuesta como una votación interna ligera ("¿Logo A o Logo B?") enviada a las partes interesadas, con los resultados visibles en vivo en la página de resultados a medida que llegan.
Cómo se ve la alternativa estática
<div id="em-poll-1" style="margin:12px 0;background-color:transparent">
<p style="margin:0 0 10px;font-weight:600;font-size:16px;color:#111827">Which do you prefer?</p>
<div>
<span class="kn-fallback">
<a href="https://mailinapp.com/v/eyJhbGci.../act?blockId=poll-1&blockType=poll&action=vote&option=Option+A"
style="display:inline-block;margin:0 6px 6px 0;padding:8px 14px;border:1px solid #d1d5db;border-radius:6px;background-color:#ffffff;color:#111827;font-size:14px;text-decoration:none">
Option A
</a>
</span>
</div>
</div>
Este es el camino de enlace de nivel 2: una <a> simple hacia /v/[token]/act, con el estilo del mismo chip que renderiza el formulario dentro del correo — visible solo cuando el formulario cinético está oculto por CSS.