Online verkaufen

Kontaktformular DSGVO-konform: Vorlage + Erklärung warum

Stand: 21. Mai 20264 Min Lesezeit

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?
Datenschutz-Klausel ist Pflicht beim Formular. Impressum gehört in den Footer (von jeder Seite erreichbar), nicht direkt am Formular. Wer beides am Formular hat, ist sicher, aber nicht zwingend.
Was ist mit Speicher-Fristen für die eigentliche Anfrage-Nachricht?
Die Anfrage selbst gilt als Korrespondenz und kann zur Bearbeitung der Anfrage und für legitime Dokumentations-Zwecke gespeichert werden. Praxis-Empfehlung: 6-12 Monate nach Abschluss der Anfrage, danach Löschung oder Archivierung mit Lösch-Frist.
Darf ich Anfragen aus dem Kontaktformular für eine spätere Marketing-Ansprache nutzen?
Nein, nicht ohne separate Einwilligung. Die Einwilligung für „Anfrage bearbeiten" umfasst nicht „in den Newsletter aufnehmen". Wer das vermischt, riskiert UWG- und DSGVO-Verstoß.
Was ist mit der Vorratsspeicherung von IP-Adressen — gilt da nicht 6 Monate?
Die TKG-Vorratsspeicherung ist eine separate Sache und betrifft Telekommunikations-Anbieter, nicht Website-Betreiber. Du musst keine 6 Monate IP-Adressen speichern — du darfst es im Gegenteil meist nicht.
Brauche ich ein DSGVO-Audit für mein Formular?
Nicht zwingend. Was sinnvoll ist: dein Formular einmal von einem IT-rechtlich erfahrenen Anwalt oder einer Datenschutz-Boutique gegen die DSGVO-Pflichten prüfen lassen. Kosten typisch 250-600 €.
Was ist mit "datenschutzkonform" als Werbeaussage — darf ich das sagen?
Nur, wenn es stimmt — und nur, wenn der Stand belegbar ist. „DSGVO-konform" ist als Werbe-Aussage zulässig, wenn du die Pflichten tatsächlich erfüllst.

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.