Dokki Docs logo

Forms

A form turns a table into a public collection endpoint. Submissions append rows to the table, so you can gather intake requests, signups, feedback, lightweight surveys, or structured reports without giving the submitter workspace access.

Create a form

Open a table and click the form or collection button in the table toolbar. Dokki reads the live table columns from the collaborative table document and starts with each column as a possible question.

Configure questions

  • Set the form title and optional description.

  • Enable or disable each column as a question.

  • Customize each question label without renaming the table column.

  • Mark enabled questions as required when the row should not be accepted without a value.

  • Deleted table columns are dropped from the form configuration; new table columns are appended as disabled fields when you reopen the dialog.

Start and share collection

Saving stores the configuration. Starting collection activates a unique anonymous form token and shows a share link at /form/<token>. Stopping collection keeps the configuration but makes the link reject new submissions.

Send rows from another system

Open the Webhook panel in the collection dialog to copy the private endpoint, inspect the live field schema, copy a cURL example, or rotate the token.

  • Send a GET request to the webhook URL to retrieve public field keys, types, required flags, and allowed options.

  • Send a JSON POST with an Idempotency-Key header and a body shaped as { "values": { "<field-key>": "<value>" } }.

  • The endpoint accepts bodies up to 1 MB. When KV rate limiting is configured, webhook submissions are limited to 300 requests per IP per hour.

Treat the webhook URL like a password. Do not place it in client-side code or public documentation. Rotating the token immediately invalidates the old URL.

Submission validation

Anonymous submissions are gated by the unguessable token and the form's active state. On submit, Dokki validates values against the live table column definitions in the same document it mutates, so select options and typed values are checked before a row is added.

Rate limiting and errors

When Vercel KV rate-limiting environment variables are configured, browser form submissions are limited to 30 submissions per IP per hour. Invalid values return field-level validation errors. Inactive forms return an error instead of adding a row.

Operational notes

  • A form belongs to one table resource.

  • The submission counter is best-effort; the appended table rows are the source of truth.

  • Use forms for collection, not for permissioned editing. Anyone with the active link can submit.

  • Disable collection before sharing a table publicly if you do not want more anonymous rows.

Forms | Dokki Docs