> ## Documentation Index
> Fetch the complete documentation index at: https://formpaste.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Sheets

> Hänge jede Einsendung automatisch als Zeile an eine Google-Tabelle an, die dir gehört - Pro.

<Info>**Pro** - eine Tabelle zu verbinden erfordert Pro.</Info>

Formpaste kann jede nicht als Spam eingestufte Einsendung als neue Zeile an eine
Google-Tabelle anhängen, die dir gehört. Kein Zapier dazwischen, keine Skripte, kein
OAuth-Bildschirm: Du teilst eine Tabelle mit einer Adresse, die wir dir geben, fügst den Link
zur Tabelle ein, und die Zeilen kommen an.

## Eine Tabelle verbinden

1. Öffne ein Formular im [Dashboard](https://app.formpaste.com) → **Automatisierungen** →
   **Google Sheets**.
2. Kopiere die **Dienstkonto-Adresse**, die auf der Karte angezeigt wird. Sie sieht so aus:
   `formpaste-sheets@…iam.gserviceaccount.com`.
3. Öffne in Google Sheets deine Tabelle → **Freigeben** → füge diese Adresse ein → gib ihr
   **Bearbeitungsrechte** → Freigeben.
4. Zurück in Formpaste: Füge die URL der Tabelle ein (oder nur ihre ID), schalte den Schalter
   ein und speichere.

<Warning>
  **Bearbeiter, nicht Betrachter.** Wir hängen Zeilen an und legen eine Spalte an, wenn dein
  Formular ein neues Feld bekommt, deshalb reicht Lesezugriff nicht aus. Die Freigabe mit der
  falschen Berechtigung ist der häufigste Grund, warum eine verbundene Tabelle leer bleibt.
</Warning>

Du kannst die vollständige URL direkt aus der Adressleiste deines Browsers einfügen -
`https://docs.google.com/spreadsheets/d/<ID>/edit#gid=0` - wir extrahieren die ID für dich.

## Wie eine Zeile aussieht

Die erste Einsendung schreibt die Kopfzeile: eine Spalte `_submitted_at`, dann eine Spalte pro
Formularfeld, benannt nach deinen `name`-Attributen.

| `_submitted_at`          | name       | email                                       | message |
| ------------------------ | ---------- | ------------------------------------------- | ------- |
| 2026-07-26T09:14:22.031Z | John Smith | [john@example.com](mailto:john@example.com) | Hello!  |

`_submitted_at` ist der Zeitpunkt, zu dem die **Einsendung** eingegangen ist (ISO 8601, UTC),
nicht der Zeitpunkt, zu dem die Zeile geschrieben wurde - der Zeitstempel bedeutet also weiter
das, was du erwartest, wenn eine Zeile nach einem erneuten Versuch ankommt.

## Wenn ein Formular ein neues Feld bekommt

Angenommen, du fügst deinem Formular ein Feld `phone` hinzu, nachdem die Tabelle bereits
existiert. Formpaste **legt eine Spalte `phone`** rechts neben deinen vorhandenen Spalten an
und füllt sie, statt den Wert stillschweigend zu verwerfen.

Das ist beabsichtigt und der wichtigste Unterschied zu anderen Formular-Backends: Eine
Einsendung darf nie still verloren gehen, nur weil eine Spalte noch nicht existierte. Aus
demselben Grund landet Spam in einem [Quarantäne-Ordner](/docs/de/features/quarantine), statt
gelöscht zu werden.

Ein paar Konsequenzen, die du kennen solltest:

* **Neue Spalten werden am Ende angehängt**, nie in der Mitte eingefügt - dein bestehendes
  Spaltenlayout verschiebt sich nie.
* **Du kannst Spalten umsortieren oder umbenennen.** Wir lesen vor jedem Anhängen die
  Kopfzeile und ordnen deine Feldnamen den Spalten zu, die gerade dort stehen.
* **Eine Spalte ohne passendes Feld** in einer Einsendung bekommt eine leere Zelle, damit die
  Zeilen ausgerichtet bleiben.
* **Eine Spalte auf etwas umzubenennen, das dein Formular nicht sendet**, führt dazu, dass wir
  das Feld beim nächsten Mal als neu behandeln und die Spalte wieder anlegen. Benenne
  stattdessen das Formularfeld um, wenn die Spalte mitwandern soll.

## Wann sie ausgelöst wird

Eine Zeile wird für jede **zugestellte, nicht als Spam eingestufte** Einsendung angehängt -
dieselben, die auch eine Benachrichtigungs-E-Mail erzeugen. Einsendungen in Quarantäne (Spam)
erreichen deine Tabelle nicht.

Das Anhängen erfolgt nach bestem Bemühen und unabhängig von der E-Mail: Ein Sheets-Fehler
blockiert, verzögert oder wiederholt deine E-Mail-Benachrichtigung niemals.

## Werte sind nie Formeln

Eingesendete Werte werden als **wörtlicher Text** geschrieben. Wenn jemand `=IMPORTRANGE(...)`
oder `=HYPERLINK(...)` einsendet, zeigt die Zelle diesen Text an; er wird in deiner Tabelle
nicht ausgeführt. Das ist beabsichtigt - ein Formular ist eine nicht vertrauenswürdige
Eingabe, und eine Formel, die auf Zuruf einer fremden Person in deiner Tabelle läuft, wäre ein
echtes Sicherheitsproblem.

## Wenn etwas schiefgeht

Die Karte sagt dir in klaren Worten, was zu tun ist:

| Was du siehst                          | Was passiert ist                                                               | Lösung                                                      |
| -------------------------------------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------- |
| Teile die Tabelle mit der Adresse oben | Die Tabelle ist nicht mit unserem Dienstkonto geteilt oder nur mit Lesezugriff | Teile sie mit der Adresse auf der Karte, als **Bearbeiter** |
| Diese Tabelle wurde nicht gefunden     | Falsche ID, oder die Tabelle wurde gelöscht                                    | Füge die URL der Tabelle erneut ein                         |
| Diese Tabellen-ID ist ungültig         | Der eingefügte Wert ist kein Google-Sheets-Link und keine ID                   | Füge die vollständige URL aus deinem Browser ein            |

Diese drei sind **Konfigurationsprobleme**, deshalb wiederholen wir sie nicht - ein erneuter
Versuch kann eine Berechtigungseinstellung nicht ändern. Behebe die Ursache und sende erneut;
die Warnung verschwindet, sobald du eine neue Konfiguration speicherst.

Vorübergehende Probleme (Google drosselt uns, eine Sheets-Störung) werden automatisch
wiederholt und zeigen nie einen Fehler an, weil es für dich nichts zu beheben gibt.

## Limits & Verhalten

* **Eine Tabelle pro Formular.** Mehrere Formulare können auf dieselbe Tabelle zeigen, wenn du
  sie zusammenfassen willst, auch wenn eine Tabelle pro Formular meist übersichtlicher ist.
* **Anhänge werden serialisiert**, damit zwei gleichzeitig eintreffende Einsendungen sich nicht
  überschneiden und die Kopfzeile beschädigen können.
* **Zeilen erscheinen normalerweise innerhalb von Sekunden** nach der Benachrichtigungs-E-Mail.
* **Wir lesen immer nur die Kopfzeile** und hängen Zeilen an. Den restlichen Inhalt deiner
  Tabelle lesen wir nie.
* Googles eigenes Limit von **10 Millionen Zellen** pro Tabelle gilt - das entspricht etwa zwei
  Millionen Einsendungen bei fünf Spalten.

## Free vs. Pro

Free-Formulare können keine Tabelle verbinden. Der Versuch, die Funktion bei Free zu
aktivieren, liefert:

| Code               | HTTP | Bedeutung                                 |
| ------------------ | ---- | ----------------------------------------- |
| `upgrade_required` | 403  | Diese Funktion erfordert einen Pro-Tarif. |

Die Integration **auszuschalten** funktioniert immer, in jedem Tarif - ein Downgrade sperrt
dich also nie mit einer Integration ein, die du nicht deaktivieren kannst.

## Ohne Konfiguration nutzbar

An keine Tabelle wird etwas gesendet, bevor du auf einem Pro-Formular eine verbindest. Ein
neues Formular schreibt nirgendwohin.

<Note>
  Willst du Einsendungen lieber woanders hinleiten - in ein CRM, eine Datenbank, Slack? Nutze
  [Webhooks](/docs/de/features/webhooks) mit einer Automatisierungsplattform. Sheets ist das eine
  Ziel, das wir nativ gebaut haben, weil die Frage "wo landen meine Einsendungen" häufiger mit
  einer Tabelle beantwortet wird als mit allem anderen.
</Note>
