Online verkaufen
Kontaktformular DSGVO-konform: Vorlage + Erklärung warum
Was drin steht
- Ein DSGVO-konformes Kontaktformular braucht: HTTPS, Datenschutz-Hinweis mit Checkbox, Doppel-Opt-In bei Marketing-Zustimmung, Spam-Schutz ohne reCAPTCHA-US-Cloud, Logging mit Aufbewahrungsfrist.
- Pflicht-Felder: nur, was du wirklich brauchst (Daten-Minimierung). „Bitte alle Felder ausfüllen" mit 12 Pflichtfeldern ist DSGVO-Verstoß durch übermäßige Datenerhebung.
- reCAPTCHA von Google ist zwar nicht offiziell verboten, aber DSGVO-rechtlich kritisch — wir empfehlen Cloudflare Turnstile oder selbstgehostete Honeypot/Time-Trap-Kombinationen.
- Logging: IP-Adresse darf nur zur Spam-Abwehr 7-30 Tage gespeichert werden, danach löschen oder anonymisieren.
- Vorlage am Ende des Artikels: HTML + Backend-Logik für ein DSGVO-konformes Formular, fertig zum Übernehmen.
Es gibt fast kein Element auf einer Mittelstands-Website, das so unterschätzt wird wie das Kontaktformular. Es wirkt trivial, ist aber datenschutz-rechtlich eine kleine Mausefalle: Was nach „nur ein Name und eine Mail" aussieht, kann bei falscher Implementierung zur Abmahnung führen — oder schlimmer, zu einer Aufsichts-Beschwerde mit Bußgeld.
Wir bauen Kontaktformulare jeden Monat. Hier ist die Checkliste, die wir intern verwenden — und eine fertige Vorlage.
Die sieben Pflicht-Elemente
1. HTTPS
Das Formular muss über HTTPS abgesendet werden. Ohne HTTPS sind die eingegebenen Daten unverschlüsselt unterwegs — DSGVO-rechtlich nicht ausreichende technische Maßnahme. Heute ist HTTPS-Standard (Let's Encrypt kostenlos), wer das 2026 noch nicht hat, hat dringend Handlungsbedarf.
2. Datenschutz-Hinweis mit aktiver Zustimmung
Vor dem Absenden muss der Nutzer aktiv zustimmen, dass seine Daten verarbeitet werden. Konkrete Umsetzung:
- Checkbox (nicht vorausgewählt!) mit Text: „Ich willige ein, dass meine Angaben zur Bearbeitung meiner Anfrage verarbeitet werden. Es gilt unsere Datenschutzerklärung."
- Link auf Datenschutzerklärung in der Nähe der Checkbox.
- Widerrufs-Hinweis: „Du kannst diese Einwilligung jederzeit per Mail an datenschutz@firma.de widerrufen."
Was nicht zählt: Eine bloße Info im Kleingedruckten ohne aktive Aktion. Auch nicht: vor-angekreuzte Checkbox — das ist nach DSGVO ungültig.
3. Daten-Minimierung (nur Pflicht-Felder, die du wirklich brauchst)
Die DSGVO verlangt „Datensparsamkeit". Praxis-Übersetzung: Du darfst nicht 12 Pflicht-Felder verlangen, wenn 3 reichen. Für ein Standard-Kontaktformular reichen Name, E-Mail, Nachricht als Pflichtfelder. Telefonnummer, Firma, Position, Adresse — alles optional.
Wer mehr Pflicht-Felder anlegt, muss begründen können, warum diese Daten zwingend zur Bearbeitung der Anfrage nötig sind. „Damit wir wissen, wer du bist" ist keine gültige Begründung — Name und Mail reichen dafür.
4. Spam-Schutz ohne Google reCAPTCHA
Google reCAPTCHA (v2 und v3) ist verbreitet, aber DSGVO-kritisch: Die Daten gehen in die US-Cloud (Google LLC, Kalifornien), eine Einwilligung ist meist nicht ausdrücklich eingeholt, und für sensible Branchen (Ärzte, Anwälte) ist es faktisch nicht nutzbar.
Bessere Alternativen 2026:
- Cloudflare Turnstile: kostenloser CAPTCHA-Ersatz, kein Tracking, EU-tauglich.
- Honeypot-Felder: unsichtbare Felder, die nur Bots ausfüllen — wenn sie ausgefüllt sind, wird die Anfrage verworfen.
- Time-Trap: Formulare, die in weniger als 2 Sekunden ausgefüllt werden, sind fast immer Bots → verwerfen.
- Friendly Captcha (deutscher Anbieter, kostenfrei für kleine Sites): privacy-friendly, DSGVO-konform.
5. Logging-Frist
Wenn du IP-Adressen, Absende-Zeitstempel oder User-Agent loggst (z.B. für Spam-Abwehr oder forensische Aufklärung), darfst du das nicht unbegrenzt tun. Praxis-Empfehlung:
- IP-Adresse: max. 7-14 Tage, danach löschen oder auf das /24-Subnetz anonymisieren.
- Absende-Zeitstempel: kann länger bleiben (gehört zur Korrespondenz).
- User-Agent: max. 30 Tage.
6. Doppel-Opt-In bei Marketing-Zustimmung
Wenn dein Formular zusätzlich eine Newsletter-Anmeldung enthält („Bitte auch in den Newsletter aufnehmen"), brauchst du ein Doppel-Opt-In: Nach Absenden geht eine Bestätigungs-Mail an die angegebene Adresse, der Empfänger muss dort klicken, um die Anmeldung zu bestätigen.
Ohne Doppel-Opt-In ist die Newsletter-Anmeldung ungültig — und Newsletter ohne gültige Einwilligung sind UWG-Verstoß (Wettbewerbsrecht) und DSGVO-Verstoß zugleich.
7. Korrekte Bestätigung mit Korrespondenz-Hinweis
Nach Absenden zeigst du eine Bestätigungs-Seite („Danke, wir melden uns innerhalb von 24 Stunden"). Optional: Bestätigungs-Mail an den Absender — das ist nicht Marketing, sondern Bestätigung der eingehenden Anfrage, daher ohne Doppel-Opt-In erlaubt.
Vorlage: HTML + Backend
HTML-Frontend
<form action="/api/kontakt" method="POST" enctype="multipart/form-data">
<label for="name">Name *</label>
<input id="name" name="name" type="text" required>
<label for="email">E-Mail *</label>
<input id="email" name="email" type="email" required>
<label for="nachricht">Nachricht *</label>
<textarea id="nachricht" name="nachricht" rows="6" required></textarea>
<!-- Honeypot: für Bots sichtbar, für Menschen versteckt -->
<div style="position:absolute;left:-9999px;opacity:0" aria-hidden="true">
<input type="text" name="website" tabindex="-1" autocomplete="off">
</div>
<!-- Time-Trap: Server prüft, ob Formular zu schnell abgesandt wurde -->
<input type="hidden" name="_ts" value="ZEITSTEMPEL_BEI_PAGE_LOAD">
<label>
<input type="checkbox" name="consent" required>
Ich willige ein, dass meine Angaben zur Bearbeitung meiner Anfrage verarbeitet werden.
Es gilt unsere <a href="/datenschutz">Datenschutzerklärung</a>.
</label>
<button type="submit">Anfrage senden</button>
</form>
Backend-Logik (vereinfacht)
// 1. Honeypot prüfen
if (body.website) return res.json({ ok: true }); // Bot, still verwerfen
// 2. Time-Trap prüfen
const ts = parseInt(body._ts, 10);
if (Date.now() - ts < 3000) return res.json({ ok: true }); // zu schnell
// 3. Pflicht-Felder prüfen
if (!body.name || !body.email || !body.nachricht || !body.consent) {
return res.status(400).json({ error: 'Pflichtfelder fehlen' });
}
// 4. IP nur 7 Tage speichern (für Spam-Abwehr)
const ip = req.headers['x-forwarded-for'] || req.ip;
await db.insert(contactSubmissions).values({
name: body.name, email: body.email, message: body.nachricht,
ipAnonymized: anonymize(ip), createdAt: new Date(),
});
// 5. Mail an dich + Bestätigung an Absender
await sendMail({ to: 'kontakt@firma.de', ...formData });
await sendMail({ to: body.email, subject: 'Anfrage eingegangen', ... });
return res.json({ ok: true });
Was du im Datenschutz-Dokument ergänzen musst
Im Datenschutz braucht dein Kontaktformular einen eigenen Absatz:
Kontaktformular. Wenn du uns über das Kontaktformular eine Nachricht schickst, verarbeiten wir die von dir angegebenen Daten (Name, E-Mail-Adresse, Nachricht) ausschließlich zur Bearbeitung deiner Anfrage. Rechtsgrundlage ist deine Einwilligung (Art. 6 Abs. 1 lit. a DSGVO). Die IP-Adresse, von der die Anfrage stammt, speichern wir maximal 7 Tage zur Spam-Abwehr. Du kannst deine Einwilligung jederzeit per Mail an datenschutz@firma.de widerrufen.
Zwei häufige Missverständnisse
Mythos: „Wir brauchen ein SSL-Zertifikat von einer kommerziellen CA"
Nein. Let's Encrypt-Zertifikate sind technisch gleichwertig und kostenlos. „Premium SSL-Zertifikate" für 200 €/Jahr sind kein Sicherheits-Plus, sondern teils Marketing.
Mythos: „Wir dürfen keine Telefonnummer im Formular abfragen"
Doch — solange es optional ist und der Zweck erkennbar (z.B. „falls Rückruf gewünscht"). Pflicht-Feld machen nur, wenn du es wirklich brauchst.
Wenn du dir unsicher bist
Frag Hannes — er schaut sich deine Formulare an: ob sie HTTPS-übermittelt sind, ob die Datenschutz-Klausel sichtbar ist und ob reCAPTCHA verwendet wird. Datenschutz ist einer von sechs Punkten, die er dabei mitnimmt.
Häufige Fragen
Reicht eine Datenschutz-Klausel, oder brauche ich auch ein Impressum-Link in der Nähe des Formulars?
Was ist mit Speicher-Fristen für die eigentliche Anfrage-Nachricht?
Darf ich Anfragen aus dem Kontaktformular für eine spätere Marketing-Ansprache nutzen?
Was ist mit der Vorratsspeicherung von IP-Adressen — gilt da nicht 6 Monate?
Brauche ich ein DSGVO-Audit für mein Formular?
Was ist mit "datenschutzkonform" als Werbeaussage — darf ich das sagen?
Das regeln wir — so sieht das bei uns aus.
Unsicher, wo deine Seite steht? Frag Hannes — er schaut sie sich an und sagt dir ehrlich, was zu holen ist.