Blocco Sondaggio
Una domanda di sondaggio a un tap: ogni opzione è al tempo stesso un controllo reale dentro l'email e un link semplice. Il voto funziona ovunque, da Gmail web al client più basilare solo testo, senza chiedere al destinatario di uscire dalla posta in arrivo nella maggior parte dei casi.
Come funziona
Ogni opzione del sondaggio viene renderizzata con due rappresentazioni contemporaneamente, non una scelta in fase di creazione. Ovunque un client supporti gli invii di modulo dentro l'email (Gmail web/Android, Yahoo e altri), ogni opzione è un vero <form method="post"> che invia direttamente all'endpoint pubblico delle interazioni di MailInApp, così toccarla registra il voto senza uscire dalla posta in arrivo. Quel modulo è racchiuso in un livello solo cinetico e abbinato a una regola CSS che nasconde la seconda rappresentazione: un semplice link <a href> verso /v/[token]/act, che conferma e registra lo stesso voto su una pagina ospitata.
Ovunque quella regola CSS non venga rispettata (Outlook, o qualsiasi client che non riesca a inviare un modulo dentro l'email), quel link nascosto diventa visibile e fa il lavoro. Un link semplice è l'unico elemento davvero universale che ogni client di posta riesce a renderizzare e seguire. Entrambi i percorsi passano attraverso lo stesso endpoint di registrazione e producono un evento identico, quindi i risultati non si dividono mai in base al client usato dal destinatario.
Un voto viene registrato solo una volta confermato sulla pagina live (o immediatamente in caso di invio dentro l'email) — mai su una semplice richiesta del link. Questo conta perché scanner aziendali e strumenti di sicurezza della posta in arrivo pre-caricano ogni link di un'email non appena arriva; se una GET nuda contasse, i risultati del sondaggio si riempirebbero di bot prima ancora che un umano apra il messaggio. La conferma avviene tramite un invio di modulo anche sul percorso del link, ed è per questo che /v/[token]/act è una conferma-e-registrazione in due passaggi, non un reindirizzamento-e-registrazione diretto.
Il voto di un destinatario viene deduplicato. Ricliccare sul proprio stesso link (un doppio tap frettoloso, un ricaricamento ripetuto della pagina) non ha effetto invece di generare una seconda riga, grazie a un id di documento Firestore deterministico associato a campagna, blocco e destinatario. I voti anonimi (senza token del destinatario — per esempio uno proveniente da un file HTML esportato e incollato in un ESP di terze parti) non vengono deduplicati per persona; non c'è una persona a cui associarli. Vengono invece limitati per IP, per campagna, per minuto, dato che l'id di una campagna è visibile nel codice sorgente stesso dell'email e niente altro impedisce a uno script di inviare voti arbitrari.
Campi configurabili:
- Domanda — il testo della domanda del sondaggio, più colore e dimensione del font propri.
- Colore di sfondo, padding, bordo e raggio del bordo sulla card.
- Colore testo opzione e colore sfondo opzione — una sovrascrittura di stile condivisa applicata a ogni chip dell'opzione.
Ogni opzione del sondaggio è un nodo figlio con un unico campo etichetta — aggiungi, rimuovi o riordina le opzioni liberamente nell'albero.
Se il progetto ha una data di chiusura o un limite di risposte configurato (vedi ciclo di vita del sondaggio) e questo è stato raggiunto, la vista live sostituisce i chip interattivi con equivalenti inerti e grigi, con una nota "Questo sondaggio è chiuso a nuove risposte". L'HTML inviato via email non mostra mai questo stato — è statico al momento dell'invio, e il controllo avviene solo quando la pagina viene aperta, non quando l'email viene inviata.
Esempi
Subject
Quick one: what should we build next?
Un sondaggio a domanda singola ("Quale funzionalità dovremmo costruire ora?") inserito in una newsletter di prodotto dà una lettura diretta dell'interesse senza il sovraccarico di un modulo completo. Vedi Sondaggi e feedback NPS per il pattern più ampio di raccogliere feedback strutturato direttamente dalla posta in arrivo. Un'email di riepilogo evento può chiedere "Verresti a un altro?" con opzioni Sì/No/Forse, alimentando direttamente la pianificazione del prossimo. I team indecisi in un A/B possono usare un sondaggio come voto interno leggero ("Logo A o Logo B?") inviato agli stakeholder, con i risultati visibili in tempo reale sulla pagina dei risultati man mano che arrivano.
Come appare il fallback statico
<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>
Questo è il percorso link di livello 2: un semplice <a> verso /v/[token]/act, stilizzato per somigliare allo stesso chip che il modulo dentro l'email renderizza — visibile solo quando il modulo cinetico è nascosto via CSS.