Abstimmungs-Block
Eine Umfragefrage mit einem Klick: Jede Option ist zugleich ein echtes In-E-Mail-Steuerelement und ein einfacher Link. Das Abstimmen funktioniert überall, von Gmail im Web bis zum einfachsten reinen Text-Client, meist ohne dass der Empfänger sein Postfach verlassen muss.
Wie es funktioniert
Jede Abstimmungsoption wird gleichzeitig in zwei Ausprägungen gerendert, nicht in einer beim Erstellen festgelegten. Überall dort, wo ein Client In-E-Mail-Formularübermittlungen unterstützt (Gmail Web/Android, Yahoo und andere), ist jede Option ein echtes <form method="post">, das direkt an den öffentlichen Interaktions-Endpunkt von MailInApp sendet, sodass ein Tippen darauf abstimmt, ohne das Postfach zu verlassen. Dieses Formular ist in eine rein kinetische Ebene eingebettet und mit einer CSS-Regel gepaart, die die zweite Ausprägung verbirgt: einen einfachen <a href>-Link zu /v/[token]/act, der dieselbe Stimme bestätigt und auf einer gehosteten Seite erfasst.
Überall dort, wo die CSS-Regel nicht beachtet wird (Outlook oder ein beliebiger Client, der kein In-E-Mail-Formular absenden kann), wird stattdessen dieser verborgene Link sichtbar und übernimmt die Aufgabe. Ein einfacher Link ist das einzige universelle Grundelement, das jeder E-Mail-Client rendern und ausführen kann. Beide Wege senden an denselben Erfassungs-Endpunkt und erzeugen ein identisches Ereignis, sodass sich die Ergebnisse nie danach aufspalten, welchen Client ein Empfänger verwendet hat.
Eine Stimme wird erst erfasst, sobald sie auf der Live-Seite bestätigt wurde (oder sofort bei einer In-E-Mail-Übermittlung) — nicht bei einem bloßen Link-Abruf. Das ist wichtig, weil Unternehmens-Scanner und Sicherheitstools im Postfach jeden Link in einer E-Mail vorab abrufen, sobald sie eintrifft; würde ein bloßes GET zählen, würden sich die Abstimmungsergebnisse mit Bots füllen, bevor ein Mensch die Nachricht überhaupt geöffnet hat. Die Bestätigung erfolgt auch auf dem Link-Weg über eine Formularübermittlung, weshalb /v/[token]/act ein zweistufiger Bestätigen-dann-Erfassen-Vorgang ist statt einer Weiterleitung mit sofortiger Erfassung.
Die eigene Stimme eines Empfängers wird dedupliziert. Ein erneutes Klicken auf den eigenen Link (ein eifriger Doppel-Tap, ein wiederholter Seitenaufruf) ist ein No-op statt eines zweiten Eintrags, durchgesetzt durch eine deterministische Firestore-Dokument-ID, die auf Kampagne, Block und Empfänger basiert. Anonyme Stimmen (ohne Empfänger-Token — zum Beispiel aus einer exportierten HTML-Datei, die in einen ESP eines Drittanbieters eingefügt wurde) werden nicht pro Person dedupliziert; es gibt keine Person, auf die man schlüsseln könnte. Stattdessen werden sie pro IP, pro Kampagne und pro Minute ratenbegrenzt, da die ID einer Kampagne im Quellcode der E-Mail selbst sichtbar ist und nichts sonst ein Skript daran hindert, beliebige Stimmen abzusenden.
Konfigurierbare Felder:
- Frage — der Prompt-Text der Abstimmung, plus eigene Farbe und Schriftgröße.
- Hintergrundfarbe, Innenabstand, Rahmen und Rahmenradius der Karte.
- Optionstextfarbe und Optionshintergrundfarbe — eine gemeinsame Stilüberschreibung, die auf jeden Options-Chip angewendet wird.
Jede Abstimmungsoption ist ein untergeordneter Knoten mit einem einzigen Label-Feld — Optionen lassen sich im Baum frei hinzufügen, entfernen oder neu anordnen.
Wenn für das Projekt ein Enddatum oder eine Antwortobergrenze konfiguriert ist (siehe Umfrage-Lebenszyklus) und diese erreicht wurde, tauscht die Live-Ansicht die interaktiven Chips gegen inaktive, graue Entsprechungen aus, mit dem Hinweis „Diese Umfrage nimmt keine neuen Antworten mehr an“. Das gemailte HTML selbst zeigt diesen Zustand nie — es ist zum Sendezeitpunkt statisch, und die Prüfung erfolgt erst, wenn die Seite geöffnet wird, nicht wenn die E-Mail gesendet wird.
Beispiele
Subject
Quick one: what should we build next?
Eine Einzelfragen-Abstimmung („Welches Feature sollten wir als Nächstes bauen?“) in einem Produkt-Newsletter liefert ein direktes Stimmungsbild zum Interesse, ohne den Aufwand eines vollständigen Formulars. Siehe Umfragen & NPS-Feedback für das übergreifende Muster zur strukturierten Feedback-Erfassung direkt aus dem Postfach. Eine Nachbereitungs-E-Mail zu einer Veranstaltung kann fragen „Würdest du zu einer weiteren kommen?“ mit den Optionen Ja/Nein/Vielleicht, was direkt in die Planung der nächsten Veranstaltung einfließt. Unentschlossene Teams können eine Abstimmung als leichtgewichtige interne Abstimmung nutzen („Logo A oder Logo B?“), gesendet an Stakeholder, mit Ergebnissen, die live auf der Ergebnisseite sichtbar werden, während sie eintreffen.
So sieht der statische Fallback aus
<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>
Das ist der Tier-2-Link-Pfad: ein einfaches <a> zu /v/[token]/act, gestylt wie der gleiche Chip, den das In-E-Mail-Formular rendert — nur sichtbar, wenn das kinetische Formular per CSS ausgeblendet ist.