splitforms.com
← Back to the journal

Is a Public Form Access Key Safe? What to Keep Secret

Understand public form keys versus secret API tokens, why CORS is not authentication, and how to protect a SplitForms contact form against unwanted…

Start free — 500 submissionsSee pricing →No card, no time limit. Pro is $5/mo.
Short answer
A SplitForms form access key is designed to appear in browser code: it routes submissions to one form. It is different from an account API token or MCP token, which can authorize access to private records or management actions. Protect the public endpoint with form-level controls, and keep management credentials out of HTML and frontend bundles.
Try it on your own form

Point any HTML form at one endpoint. 500 free submissions — no card, no time limit — and unlimited forms.

Create free account

Which key belongs in a public form?

A working browser form must reveal its destination. Moving an access_key from a hidden input into JavaScript, or putting it in a frontend environment variable, does not make it secret. Visitors can inspect the generated page and its network requests. That is expected for a submission-only form endpoint.

The important question is what the credential permits. A public form key selects where an incoming message goes. An account token may authorize reading records or managing resources. Copy the form key from the form’s setup screen, and use the documented authentication mechanism for any separate account integration.

Which key belongs in a public form?
CredentialPublic frontend?Intended use
Form access keyYesRoute submissions to the intended SplitForms form.
Account API tokenNoAuthenticated operations permitted by the token.
MCP bearer tokenNoConnect an authorized AI client to account tools.
Webhook signing secretNoVerify incoming delivery signatures on your server.
CAPTCHA site keyYesInitialize a browser verification widget.
CAPTCHA secret keyNoServer-side verification, configured with the backend.

References: SplitForms API reference · SplitForms MCP authentication

Why hiding a key or enabling CORS is not enough

CORS controls whether browser JavaScript can read a cross-origin response. It does not stop arbitrary HTTP clients from sending requests. A script running outside a browser can send requests directly, so a public key plus an origin policy is not the same as authenticating a trusted sender.

Allowed Domains is useful for catching unintended deployments and restricting the browser sites that use a form. Combine it with server-side abuse controls. Do not treat a Referer or Origin header as proof of a visitor’s identity, and do not fix a CORS error by switching fetch to no-cors: you would lose access to the response details your success UI needs.

References: MDN: CORS · SplitForms origin and submission errors

A practical protection checklist for SplitForms

Start with one form per workflow so you can inspect submissions and settings separately. Keep the honeypot empty for legitimate visitors, preserve any timing field generated by the integration, and configure the real production hostname before enabling strict origin protection. Check both the root domain and the www hostname you actually use.

For persistent abuse, enable a supported verification provider and complete both browser and server configuration. A widget rendered on the page is only half the integration. Review spam outcomes after a change so a stricter rule does not quietly reject your genuine customers.

  • Use the public form key, never an account or MCP token, in the submitted request.
  • Keep recipient addresses and integration credentials in the dashboard settings.
  • Use honeypot, rate limiting and spam filtering together; no individual signal catches every bot.
  • Check the dashboard and Spam view during a controlled test.
  • Keep logs useful without copying full visitor messages or secrets into analytics.

References: SplitForms spam controls · SplitForms security

What to do when a key appears in a repository

First identify the credential. Finding the intended form access key in frontend source is different from discovering a privileged token. If a management credential was exposed, revoke or rotate it through the relevant account controls, update the service that uses it and review the actions it could authorize. Deleting a line from the latest commit does not remove older copies.

If a public form key is attracting spam, inspect the affected form and strengthen its controls. Changing the key without fixing an exposed privileged token would address the wrong problem. Equally, building a proxy solely to hide a submission endpoint adds maintenance without making the public contact form private.

References: Authentication and form setup

Where a hosted form backend helps

SplitForms is useful when you want a public website form without maintaining a custom email route, database and spam pipeline. The dashboard gives you a place to inspect accepted submissions before investigating email delivery, and a separate authenticated API or MCP connection can support authorized operations.

Choose a custom authenticated workflow when the submission represents a privileged action, such as changing an account or approving a payment. A public contact-form endpoint is intended to collect messages. Keep authorization for business actions in the application that owns those actions.

References: SplitForms API reference · Submission lifecycle

Frequently asked questions

Can someone read my submissions with the public form key?

The public submission key routes incoming form requests. Reading private records uses separate authenticated account access; do not substitute an account or MCP token into a public form.

Does a frontend environment variable hide the key?

No. Values included in browser code or requests can be inspected. Only put credentials designed for public use in the frontend.

Is a hidden input secure storage?

No. Hidden means it is not displayed as a normal control. The value remains visible in page source and the network request.

Related articles

More practical guidance from spam & security.

Browse the journal →
Spam & Security

Contact Form Security: How to Protect Form Submissions in 2026

Contact form security checklist for 2026: HTTPS, input validation, XSS prevention, spam prot…

12 min readRead →
Spam & Security

hCaptcha Pricing (2026): Is hCaptcha Free? Plan Limits

hCaptcha Basic is free (its plans page says up to 10,000 requests/month); Pro is $99–$139/mo…

7 min readRead →
Spam & Security

Add Cloudflare Turnstile to Any HTML Form (2026)

Step-by-step Cloudflare Turnstile setup for a plain HTML form: widget markup, server-side cf…

9 min readRead →

Explore this topic

Start with the overview, then move into focused guides.

OverviewWhat Is a Form Backend? (Complete Guide)Start here →GuideSelf-Hosted vs SaaS Form BackendRead →GuideForm Backend vs Form BuilderRead →GuideWhere Do Form Submissions Go?Read →ReferenceForm backend guideOpen →

Building forms with ChatGPT, Claude, Cursor, or v0? Connect the native MCP server and give your agent a production form backend.

Explore the MCP server →

Give your form a production backend.

One endpoint adds delivery, spam filtering, storage, and integrations. Start with 500 free submissions — no card, no time limit.

Create free accountRead the docs →
Secure checkoutSSL encryptionPrivacyProtected
VISAAMERICANEXPRESSstripe