Where Your Form Submissions Actually Go

Sitelas's submissions inbox plus optional fan-outs — per-form webhook, site-level Google Sheets, Drive-routed file uploads. Plus Turnstile bot protection on every public form.

S

Sitelas Team

May 11, 20263 min read
Where Your Form Submissions Actually Go

Every form on every Sitelas site uses the same form primitive — contact, newsletter, RSVP, quote, application, donation, custom. Submissions always land in three places by default and up to three more depending on how the site is configured.

The default destinations

1. The Sitelas inbox (always)

Every submission saves to the form_submissions table with the form's actual field schema. View at /dashboard/sites/[subdomain]/messages. Filter by site, status, or form type. Submissions are unlimited on every tier — there's no monthly cap.

2. The site_contacts CRM (always, when email is present)

Submissions with an email field upsert into a unified per-site contact record keyed on (site_id, email). Same person submits twice from different forms — one contact, two activity entries. Counters (total_submissions, last_submission_at, is_subscribed) are denormalized for fast reads.

3. Cloudflare Turnstile, before anything saves

Every public form path verifies a Turnstile token before accepting the submission. Managed mode, interaction-only appearance, fail-open. Bots get a soft block; humans never see a challenge.

The optional fan-outs

Per-form webhook

Each form can declare an integration.webhookUrl. Sitelas POSTs the submission JSON to that URL. HTTPS-only, server-resolved from the published page tree (no SSRF risk). One retry at +300ms on transient 5xx / network failures; 4xx errors short-circuit. Use this for Zapier, n8n, Discord, custom backends — anything that takes an HTTPS POST.

Site-level Google Sheets (Nango OAuth)

Connect Google Sheets once at /dashboard/sites/[subdomain]/integrations (or inline from any form's property panel). After that, every form on the site fans out to one workbook named "Sitelas — {subdomain} Form Submissions". Each formType opens its own tab — Contact, Newsletter, Quote — with columns derived from that form's actual field schema. Add a new field to an existing form? A new column appends to the header row; existing columns never reorder.

OAuth uses the drive.file scope only (non-sensitive — no Google verification required). Tokens live in Sitelas's self-hosted Nango instance; the database stores only a nango_connection_id. Zero plaintext credentials anywhere.

File uploads go to the owner's Google Drive

Forms with file fields require Drive connected (the same Sheets OAuth covers it). Files upload to a per-site folder named "Sitelas — {subdomain} Form Uploads" in the owner's own Drive. Sitelas never hosts visitor-submitted files. Validated by size (10 MB cap), MIME type, blocked-extension list, and magic-byte sniff so a renamed evil.exe doesn't slip through as fake.pdf. Delete a submission → the Drive file gets trashed via the same connection. Delete the site → the whole folder gets trashed before the OAuth connection revokes.

Reading submissions from Claude

The connector exposes list_submissions, read_submission, draft_reply_to_submission, list_contacts, get_contact, list_contact_activity. Day-to-day:

"Anyone reach out this week? Draft replies to anyone asking about catering."

Claude reads the inbox, drafts replies, and lands them in your dashboard ready to send.

Verifying it works

Each integration card on /dashboard/sites/[subdomain]/integrations has a Send test button. Fires a synthetic submission through the live dispatcher — exactly the path a real submission would take — and shows the outcome inline. Verify the connection without sending a real form fill.

Related Templates

Try these templates to get started.

S

Sitelas Team

The Sitelas team writes about building and operating websites through chat — the Claude.ai connector, the in-editor AI chat, form integrations, and everything that ships in the box.

Build your site with AI

Pick a template, describe what you want, and let AI build it. Publish in minutes.

Browse Templates