← ∆ voicehook.ai

Datenschutzerklärung

Stand: 10. Oktober 2026 · English version

1. Verantwortlicher

Oliver Spitzkat
Am Lindenbusch 22
50354 Hürth
Deutschland

E-Mail, auch für Datenschutzanfragen: support@voicehook.ai

2. Überblick

voicehook.ai ist ein Sprachanruf im Browser. Du sprichst mit einem Sprach-Bot, dessen Antworten entweder ein KI-Sprachmodell oder ein von dir eingeladener KI-Agent liefert. Ein Gratis-Kontingent kannst du ohne Anmeldung nutzen. Für bezahlte Minuten lädst du ein Guthaben auf; dafür gibt es ein Konto, an dem optional deine E-Mail-Adresse hängt. Unsere Seiten setzen bei Besuchern keine Cookies und binden keine Analyse-, Tracking- oder Werbedienste ein.

3. Hosting

Webseite, Programmierschnittstelle (API), Datenbanken und der Sprachserver laufen auf einem eigenen Server bei der Hetzner Online GmbH, Industriestr. 25, 91710 Gunzenhausen, im Rechenzentrum Nürnberg, Deutschland. Hetzner verarbeitet die Daten als Auftragsverarbeiter.

4. Server-Logs

Beim Aufruf von voicehook.ai protokolliert der Webserver (Caddy) jeden Zugriff mit:

  • IP-Adresse,
  • Datum und Uhrzeit,
  • aufgerufene Adresse einschließlich Parametern; geheime Parameter wie Einladungscodes und Zugangstoken werden vor dem Schreiben unkenntlich gemacht,
  • HTTP-Statuscode und übertragene Datenmenge,
  • vom Browser gesendete Kopfzeilen wie Browsertyp (User-Agent) und Referrer.

Zusätzlich protokollieren der Anwendungsserver und der Sprachdienst technische Ereignisse: Raumname, Teilnehmerkennungen, Beginn, Ende und Dauer eines Anrufs, Buchungs- und Fehlermeldungen. Gesprächsinhalte protokollieren wir nicht: weder was du sagst noch was der Bot oder ein eingeladener Agent sagt, sondern nur technische Angaben wie Länge, Zeitpunkt und Zustand einer Äußerung.

Für die Reichweitenstatistik zählen wir je Tag, Kampagnen-Quelle und Schritt (Seitenaufruf, Call gestartet, Einladung kopiert, KI beigetreten, Call ab einer Minute, Anmeldung, Aufladung, erneuter Call an einem späteren Tag). Die Kampagnen-Quelle (utm_source und utm_campaign aus dem Link) hält die geöffnete Seite nur im Arbeitsspeicher; sie wird nicht in deinem Browser gespeichert. Bei Calls über einen Einladungslink oder einen von einem KI-Agenten erzeugten Call-Link gilt die Art des Links als Quelle, ohne Kampagnen-Quelle gilt „direct“. Beim Anlegen eines Raums schickt die Seite die Quelle einmal mit, und der Server speichert sie als Etikett zum Raumnamen (Raumname, Quelle, Kampagne, Zeitpunkt; eigene Tabelle room_source in funnel.sqlite, nicht im Kostenprotokoll), ohne IP-Adresse, Konto oder Gerätekennung. Ob in diesem Raum eine Einladung kopiert wurde oder eine KI beigetreten ist, vermerkt der Server ebenfalls zum Raum. Die übrigen Schritte ordnet er nur über den Raumnamen zu: Call ab einer Minute und Anmeldung aus dem Kostenprotokoll (Abschnitt 7.1), Aufladung aus den Buchungen des Kontos, das an diesem Raum hängt. Diese Zuordnung ist pseudonym, nicht anonym, denn über den Raum sind die Buchungen eines Kontos erreichbar. Ausgewertet und ausgegeben werden aber nur Summen je Tag, Quelle und Schritt; die Statistik verknüpft die Schritte nicht mit deiner Person und enthält keine IP-Adressen und keine Kennungen deines Geräts. Ob jemand wiederkommt, werten wir nur bei angemeldeten Konten aus, anhand der ohnehin gespeicherten Call-Buchungen; auch dabei entstehen nur Summen. Die Zählanfragen erscheinen wie jeder Aufruf für höchstens 7 Tage im Server-Log, ohne den Inhalt der Anfrage. Etiketten und Vermerke zum Raum löschen wir nach 35 Tagen, die Tageszähler ohne Personenbezug nach 25 Monaten (Abschnitt 14). Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an einer Reichweitenmessung ohne Tracking).

Zweck: Betrieb, Fehlersuche und Abwehr von Missbrauch. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an einem sicheren und funktionsfähigen Dienst).

Zum Schutz vor Missbrauch hält der Server die IP-Adresse beim Starten eines Anrufs bis zu 10 Minuten im Arbeitsspeicher (höchstens 5 Anrufstarts je 10 Minuten und IP-Adresse). Diese Liste wird nicht auf die Festplatte geschrieben.

5. Sprachanruf

5.1 Verbindung

Audio wird per WebRTC in Echtzeit über einen selbst betriebenen LiveKit-Server auf unserem Server in Nürnberg übertragen (rtc.voicehook.ai). Wir zeichnen Anrufe nicht auf. Für den Beitritt stellt der Server ein Zugangstoken aus, das standardmäßig nach einer Stunde abläuft. Einladungslinks sind an einen Raum gebunden und laufen ebenfalls ab. Der Anruf endet, wenn niemand mehr im Raum ist oder das Guthaben aufgebraucht ist. Der Raum wird danach gelöscht.

5.2 Spracherkennung (Deepgram)

Damit der Bot dich versteht, wird dein Mikrofon-Audio an Deepgram, Inc. (USA) zur Spracherkennung übertragen. Ein Sprachfilter auf unserem Server schickt nur Abschnitte, in denen Sprache erkannt wurde; Stille wird nicht übertragen.

5.3 Sprachmodell (Google Gemini)

Im normalen Modus erhält die Gemini API von Google den erkannten Text des Gesprächs und die Anweisungen für den Bot, um Antworten zu erzeugen. Im Live-Modus wird dein Audio direkt an Gemini Live (Google) übertragen, das Spracherkennung, Antwort und Sprachausgabe in einem Schritt übernimmt.

5.4 Sprachausgabe (Google Cloud Text-to-Speech)

Die Sätze, die der Bot spricht, werden von Google Cloud Text-to-Speech in Audio umgewandelt. Google erhält dabei nur den zu sprechenden Text.

5.5 Transkript und eingeladene Agenten

Das Transkript (was der Bot gehört und gesagt hat) wird live an die Teilnehmenden des Raums übertragen und im Browser angezeigt. Unser Code speichert Transkripte und Audio nicht dauerhaft. Lädst du einen eigenen KI-Agenten in den Anruf ein (zum Beispiel Claude Code oder Codex), erhält dieser Agent die Transkripte. Für die Verarbeitung durch deinen Agenten und dessen Anbieter sind wir nicht verantwortlich.

Rechtsgrundlage für die Verarbeitung im Anruf: Art. 6 Abs. 1 lit. b DSGVO (Bereitstellung des von dir gestarteten Dienstes).

5.6 Eingeladene Agenten über HTTPS (Bridge)

Ein eingeladener Agent tritt dem Anruf entweder direkt per WebRTC bei (zum Beispiel mit dem Kommandozeilenprogramm voicehook-agent) oder über unsere HTTPS-Schnittstelle (/api/bridge/*), etwa wenn er in einer Cloud-Umgebung ohne WebRTC läuft. Beim Beitritt über HTTPS hält unser Server die Verbindung zum Raum stellvertretend für den Agenten. Er leitet das Transkript, die Sätze anderer Teilnehmender und Ereignisse im Raum (wer beitritt, wer gerade spricht) per HTTPS an den Agenten weiter und gibt die Sätze, die der Agent sprechen lässt, an den Bot weiter. Diese Inhalte hält der Server nur im Arbeitsspeicher, solange die Sitzung läuft.

Für jeden Beitritt stellt der Server einen zufälligen Sitzungsschlüssel aus, der nur für diesen einen Raum gilt. Auf dem Server liegt davon nur ein SHA-256-Hashwert. Der Schlüssel verfällt, wenn der Anruf endet oder der Agent den Raum verlässt, außerdem nach einer Zeit ohne Aktivität (standardmäßig 10 Minuten; der Agent kann diese Frist auf bis zu 60 Minuten setzen oder abschalten). Damit eine laufende Sitzung einen Neustart unseres Servers übersteht, speichern wir je Sitzung in einer Datenbank auf unserem Server (bridge.sqlite): Raumname, Teilnehmerkennung, IP-Adresse des Agenten, den vom Agenten angegebenen Namen und das Modell, die gewünschte Stimme, den Namen des Nutzers, falls der Agent ihn mitschickt, sowie die Zeitpunkte von Beginn, letzter Aktivität und Ende. Einladungen, Persona-Texte und Transkripte speichern wir dort nicht. Der Eintrag wird spätestens 5 Minuten nach dem Ende der Sitzung gelöscht. Beim Beitritt protokolliert der Server Raumname, Teilnehmerkennung und IP-Adresse des Agenten (siehe Abschnitt 4).

Welchen Agenten du einlädst, entscheidest du selbst; betrieben wird er von dir oder einem Anbieter deiner Wahl. Für die Verarbeitung durch deinen Agenten und dessen Anbieter sind wir nicht verantwortlich (siehe 5.5). Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO.

5.7 Sprache des Anrufs

Seite und Anruf gibt es auf Deutsch und auf Englisch. Deine Wahl speichert dein Browser lokal (siehe Abschnitt 11). Beim Anlegen eines Raums hinterlegt der Server die Sprache als Eigenschaft des Raums (Raum-Metadaten auf unserem LiveKit-Server), damit Bot und eingeladene Agenten dieselbe Sprache verwenden; Einladungslinks zu englischen Räumen tragen den Zusatz lang=en. Diese Angabe gehört zum Raum, nicht zu einer Person, und verschwindet mit dem Raum. Das Etikett mit der Kampagnen-Quelle speichert der Server dagegen getrennt vom Raum (siehe Abschnitte 4 und 14).

6. Gratis-Kontingent

Ohne Guthaben gibt es ein begrenztes Gratis-Kontingent pro Tag. Um es zuzuordnen, nutzen wir eine zufällige Kennung, die dein Browser im lokalen Speicher anlegt (anon-id), und deine IP-Adresse (bei IPv6 das /64-Netz); bist du angemeldet, zusätzlich die interne Kennung deines Kontos, damit das Kontingent einmal je Konto und Tag gilt. Gespeichert werden davon nur SHA-256-Hashwerte, nie die Kennung oder IP-Adresse im Klartext. Den Hash der IP-Adresse bilden wir mit einem täglich wechselnden geheimen Schlüssel, der nirgends gespeichert wird, sodass Hashwerte verschiedener Tage nicht zusammengeführt werden können. Dazu kommen Tag, Modus, Verbrauch und der Raumname. Diese Einträge werden nach 7 Tagen automatisch gelöscht.

Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO (Bereitstellung des Gratis-Angebots) und lit. f (berechtigtes Interesse, Missbrauch des kostenlosen Angebots zu verhindern).

7. Guthaben und Konto

Wenn du Guthaben auflädst, legt der Server ein Konto an und gibt deinem Browser ein geheimes Wallet-Token, das im lokalen Speicher deines Browsers liegt. Auf dem Server wird davon nur ein SHA-256-Hashwert gespeichert. In der Kontodatenbank (billing.sqlite) speichern wir:

  • Konto-ID, E-Mail-Adresse (aus dem Bezahlvorgang oder der Anmeldung) und ob sie bestätigt ist,
  • Guthaben und offene Beträge,
  • Buchungen: Aufladungen (Stripe-Sitzungs- und Zahlungs-ID, Betrag, Zeitpunkt), Erstattungen und Rückbuchungen sowie den Verbrauch je Anruf (Raumname, Modus, Kosten, Zeitpunkt),
  • die Zuordnung, welches Konto einen Raum bezahlt,
  • optional einen Namen, den du selbst im Konto einträgst (höchstens 22 Zeichen). In Calls, die du angemeldet startest oder betrittst, wird er an alle Teilnehmenden übermittelt und erscheint als dein Name für Delta (auch als Kontext an das Sprachmodell, siehe 5.3), für die verbundenen Agenten und bei deinen Entscheidungen. Du kannst ihn jederzeit ändern oder löschen; ohne Namen heißt du im Call „Gast“. Gespeichert wird er, solange das Konto besteht.

Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO (Vertrag über das Guthaben) und lit. c (handels- und steuerrechtliche Aufbewahrungspflichten für Buchungen).

7.1 Kostenprotokoll je Anruf

Am Ende jedes Anrufs schreibt der Server einen Eintrag in ein Kostenprotokoll (Tabelle call_ledger in billing.sqlite), auch bei Anrufen über das Gratis-Kontingent. Ein Eintrag enthält:

  • Raumname und Kennung des Anrufs, Modus (normal oder live),
  • wer den Anruf trägt (Guthaben, Gratis-Kontingent, Betreiber oder ohne Zuordnung) und die Konto-ID, wenn der Anruf über ein Guthaben läuft oder du beim Starten angemeldet warst,
  • Beginn, Ende und Dauer sowie deine Sprechzeit (die Sekunden, die der Sprachfilter als Sprache erkannt hat),
  • die verbrauchten Mengen der Dienste (Sekunden Spracherkennung, Zeichen Sprachausgabe, Tokens des Sprachmodells), die daraus berechneten Kosten, die gebuchten Beträge (Gratis-Kontingent, Guthaben) und den Grund, aus dem der Anruf endete.

Transkripte, Audio, E-Mail-Adressen und IP-Adressen enthält das Protokoll nicht. Zweck: Abrechnung, Nachvollziehbarkeit der Buchungen und Kontrolle unserer Kosten. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO.

7.2 Eigene Styles

Deine eigenen Styles (Name, Farb- und Reglerwerte, Vorschaubild) speichert dein Browser im lokalen Speicher (siehe Abschnitt 11). Bist du angemeldet, speichern wir sie zusätzlich an deinem Konto (in billing.sqlite), damit sie auf allen deinen Geräten verfügbar sind. Teilst du einen Style, legen wir eine unveränderliche Kopie an, die jeder mit dem Link abrufen kann; Konto und E-Mail-Adresse sind dabei nicht sichtbar. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO. Speicherdauer: solange das Konto besteht.

8. Anmeldung

8.1 Anmeldung per E-Mail-Link

Gibst du deine E-Mail-Adresse ein, schicken wir dir einen Anmeldelink. Der Versand läuft über Resend (Resend, Inc., USA), das dafür deine E-Mail-Adresse und den Inhalt der Mail erhält. Der Link ist 15 Minuten gültig und nur einmal verwendbar; auf dem Server liegt davon nur ein Hashwert zusammen mit der E-Mail-Adresse. Zum Schutz vor Missbrauch begrenzen wir die Zahl der Anfragen je IP-Adresse und E-Mail-Adresse.

8.2 Anmeldung mit Google oder GitHub

Du kannst dich auch mit deinem Google- oder GitHub-Konto anmelden (OAuth). Dabei wirst du zum jeweiligen Anbieter weitergeleitet und meldest dich dort an. Wir fragen nur deine E-Mail-Adresse ab und übernehmen sie nur, wenn der Anbieter sie als bestätigt meldet. Gespeichert werden die bestätigte E-Mail-Adresse und die Kennung deines Kontos beim Anbieter (Anbieter-ID) mit dem Zeitpunkt der ersten und letzten Anmeldung. Für die Verarbeitung bei der Anmeldung auf ihren Seiten sind Google bzw. GitHub selbst verantwortlich.

Rechtsgrundlage für die Anmeldung: Art. 6 Abs. 1 lit. b DSGVO.

9. Zahlungen (Stripe)

Zum Aufladen leiten wir dich auf die Bezahlseite von Stripe weiter (Stripe Payments Europe, Ltd., 1 Grand Canal Street Lower, Dublin 2, Irland). Deine Zahlungsdaten (zum Beispiel Kartendaten) gibst du direkt bei Stripe ein; wir erhalten sie nicht. Ist zu deinem Konto schon eine E-Mail-Adresse gespeichert, geben wir sie an Stripe weiter, damit sie vorausgefüllt ist. Von Stripe erhalten wir die bei der Zahlung angegebene E-Mail-Adresse, den Betrag und Kennungen der Zahlung sowie Meldungen über Erstattungen und Rückbuchungen. Stripe kann Daten auch in die USA übermitteln. Rechtsgrundlage: Art. 6 Abs. 1 lit. b und lit. c DSGVO.

10. Programmbibliotheken (jsDelivr)

Die Anrufseite lädt die Bibliotheken livekit-client und three.js vom Content Delivery Network jsDelivr. Dabei erhält der CDN-Betreiber deine IP-Adresse und Browser-Kopfzeilen. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (schnelle, zuverlässige Auslieferung).

11. Cookies und lokale Speicherung

Besuchern setzen wir keine Cookies. Ausnahme: Geräte des Betreibers tragen ein technisches Cookie (vh_int), damit deren Aufrufe nicht in der Statistik zählen. Besucher erhalten dieses Cookie nie. Unsere Seiten speichern einige Werte im lokalen Speicher deines Browsers (localStorage). Die Kampagnen-Quelle aus einem Link speichern wir nicht in deinem Browser. Die meisten verlassen deinen Browser nie; Teilnehmerkennung, anon-id, Wallet-Token und Anmelde-Nonce gehen bei der jeweiligen Anfrage an unseren Server. Du kannst alles jederzeit über die Browser-Einstellungen löschen.

SchlüsselInhalt
vh-wallet-v1Wallet-Token: Zugang zu deinem Guthaben
vh_login_nonceEinmalwert, der eine Anmeldung an diesen Browser bindet
vh-anon-v1Zufällige Kennung für das Gratis-Kontingent (anon-id)
vh-free-seen-v1Ob der Hinweis zum Gratis-Kontingent heute schon gezeigt wurde
vh-seen-v1Ob du schon einmal einen Call hattest (steuert den Hinweis für Erstbesucher)
vh-theme-v1Helles oder dunkles Design
vh-hd-v1HD-Darstellung an/aus
vh-tr-mode-v1Position bzw. Anzeige des Transkripts
vh-music-state-v2Einstellungen der Visualisierung (Regler, Farbpalette)
vh-mode-v1Gewählter Anzeigemodus
vh-live-mode-v1Normaler Modus oder Live-Modus
vh.langGewählte Sprache für Seite und Anruf (Deutsch oder Englisch)
vh-mic-v1, vh-mic-v1-labelGewähltes Mikrofon (Geräte-ID und Name)
vh-id:v1:<raum>Zufällige Teilnehmerkennung je Raum, damit ein Neuladen dich nicht als neue Person zeigt

Ein früher verwendeter Schlüssel vh-recent-invites:v1 wird beim Aufruf gelöscht. Die Bezahlseite von Stripe sowie die Anmeldeseiten von Google und GitHub können eigene Cookies setzen; dafür gelten die Datenschutzhinweise dieser Anbieter.

12. Kontakt per E-Mail

E-Mails an Adressen unter voicehook.ai werden über den Weiterleitungsdienst ImprovMX an unser Postfach weitergeleitet. Wir verarbeiten deine Nachricht nur, um sie zu beantworten. Rechtsgrundlage: Art. 6 Abs. 1 lit. b bzw. lit. f DSGVO.

13. Empfänger und Drittlandübermittlung

EmpfängerZweckSitz
Hetzner Online GmbHServer-HostingDeutschland
Deepgram, Inc.SpracherkennungUSA
Google (Gemini API, Gemini Live, Cloud Text-to-Speech)Sprachmodell, SprachausgabeIrland / USA
Stripe Payments Europe, Ltd.ZahlungsabwicklungIrland
Resend, Inc.Versand der Anmelde-MailsUSA
Google, GitHub, Inc.Anmeldung (OAuth), nur wenn du sie wählstIrland / USA
jsDelivrAuslieferung von Programmbibliothekensiehe Betreiber
ImprovMXE-Mail-Weiterleitungsiehe Betreiber

Werden Daten in die USA oder ein anderes Land außerhalb der EU übermittelt, stützt sich das auf einen Angemessenheitsbeschluss der EU-Kommission (für zertifizierte US-Unternehmen das EU-US Data Privacy Framework) oder auf Standardvertragsklauseln der EU-Kommission.

14. Speicherdauer

Wir speichern personenbezogene Daten, solange es für den jeweiligen Zweck erforderlich ist, und darüber hinaus, soweit gesetzliche Aufbewahrungsfristen (etwa für Buchungen) es verlangen. Wo der Code feste Fristen vorgibt:

  • Audio und Transkripte: werden von unserem Code nicht dauerhaft gespeichert.
  • Server-Logs (Abschnitt 4): 7 Tage, danach automatisch gelöscht.
  • Kampagnen-Etiketten am Call und Stufen-Markierungen: 35 Tage. Tageszähler der Reichweitenstatistik (ohne Personenbezug): 25 Monate.
  • Sicherheitsprotokoll des Servers (Anmeldeversuche und Verwaltungszugriffe mit IP-Adresse): 4 Wochen, zur Aufklärung von Angriffen (Art. 6 Abs. 1 lit. f DSGVO).
  • IP-Adressen für den Missbrauchsschutz beim Anrufstart: höchstens 10 Minuten im Arbeitsspeicher.
  • Gratis-Kontingent (Hashwerte, Verbrauch): 7 Tage.
  • Anmeldelinks: 15 Minuten gültig; abgelaufene Links werden bei späteren Anmeldungen automatisch gelöscht.
  • Zugangstoken: Gültigkeit standardmäßig 1 Stunde.
  • Sitzungen eingeladener Agenten über HTTPS: bis zum Ende der Sitzung, danach höchstens 5 Minuten.
  • Anrufe: enden, wenn niemand mehr im Raum ist oder das Guthaben aufgebraucht ist; der Raum wird danach gelöscht.
  • Konto und Buchungen: solange das Konto besteht, Buchungen zusätzlich bis zum Ablauf der gesetzlichen Aufbewahrungsfristen.
  • Kostenprotokoll je Anruf: 13 Monate nach dem Ende des Anrufs, danach automatisch gelöscht.
  • Eigene Styles am Konto und geteilte Styles: solange das Konto besteht.
  • Lokale Speicherung im Browser: bis du sie löschst.

15. Deine Rechte

Du hast nach der DSGVO das Recht auf:

  • Auskunft (Art. 15),
  • Berichtigung (Art. 16),
  • Löschung (Art. 17),
  • Einschränkung der Verarbeitung (Art. 18),
  • Datenübertragbarkeit (Art. 20),
  • Widerspruch gegen Verarbeitungen auf Grundlage von Art. 6 Abs. 1 lit. f (Art. 21).

Wende dich dafür an support@voicehook.ai.

16. Beschwerderecht

Du kannst dich bei einer Datenschutz-Aufsichtsbehörde beschweren, insbesondere in dem Land, in dem du wohnst oder arbeitest. Für uns zuständig ist die Landesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen (LDI NRW), Kavalleriestr. 2-4, 40213 Düsseldorf.