=== splitforms — Form Backend ===
Contributors: splitforms
Tags: form, contact-form, form-backend, no-code
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
Stable tag: 1.1.15
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Add a working contact form to any WordPress site in seconds. Free for 1,000 submissions/month — no SMTP, no database tables, no spam plugins.

== Description ==

**splitforms** is the simplest way to add working forms to WordPress. No database tables. No SMTP setup. No spam-fighting plugins to layer on top. Drop in your free splitforms access key, place the `[splitforms]` shortcode on any page, or save custom HTML/CSS forms and embed them with `[splitforms form="quote"]`. Submissions are emailed straight to your inbox by the splitforms form-backend API at [https://splitforms.com](https://splitforms.com).

**Free forever — 1,000 submissions/month, no credit card.**

If you've ever fought with `wp_mail()`, deliverability, SPF/DKIM, SMTP plugins, contact-form-as-database, or spam-protection-as-a-service, splitforms exists to delete that pain. You paste an access key. You drop a shortcode. Submissions arrive in your inbox. That is the entire setup.

= Why splitforms instead of a heavier form plugin? =

* **Zero database overhead.** Submissions go to the splitforms API and get emailed to you — they never touch `wp_options`, `wp_postmeta`, or any custom table. Your site stays fast and your backups stay small.
* **Honeypot spam protection built in.** A hidden honeypot field is included on every form by default — bots fill it, humans don't, and the splitforms backend rejects the submission.
* **Leads stay outside WordPress.** Review submissions in the splitforms dashboard instead of storing lead data in your WordPress database.
* **Server-side rendered HTML.** The form HTML is in your page source. Search engines, screen readers, and form fillers see it natively. No client-side JavaScript required to display the form.
* **Lightweight and themeable.** Minimal CSS, themed via CSS custom properties. Plays nicely with any theme — override one variable and you're done.
* **Multiple saved forms.** Create custom WordPress-side forms like contact, quote, support, or booking, then embed each one with its own shortcode.
* **Shortcode manager.** See every available shortcode in one table and delete saved forms you no longer need.
* **Paste your own HTML/CSS.** Bring the fields and styling from your theme, designer, or page builder. Paste HTML and CSS separately, or paste one combined snippet with a `<style>` block and fields together.
* **Live form preview.** Preview saved custom forms in Settings before placing the shortcode on a live page.
* **Optional reCAPTCHA.** Turn on Google reCAPTCHA globally or only for specific saved forms by adding a public site key.
* **Multiple forms per page.** Stack as many forms on a single page as you like — every shortcode instance gets unique field IDs.

= Pricing =

* **Free** — 1,000 submissions/month, forever, no credit card.
* **Pro** — $5/month for higher submission volume and advanced routing.
* **$59 4-year plan** — pay once, four years of Pro.

Sign up at [https://splitforms.com](https://splitforms.com) to grab your free access key.

= Privacy =

This plugin posts form submissions directly from the visitor's browser to the splitforms API at `https://splitforms.com/api/submit`. The plugin itself does not store submissions in WordPress. The splitforms service handles delivery and is governed by the splitforms privacy policy at [https://splitforms.com](https://splitforms.com).

== Installation ==

1. Install splitforms from **Plugins → Add New** in WordPress, or upload the `splitforms` folder to `/wp-content/plugins/`.
2. Activate the plugin in **Plugins**.
3. Go to **Settings → splitforms** and paste your access key from [https://splitforms.com](https://splitforms.com), then add the `[splitforms]` shortcode to any page or post.
4. Optional: save custom forms in **Settings → splitforms**, then embed them with shortcodes like `[splitforms form="quote"]`, `[splitforms form="support"]`, or `[splitforms form="booking"]`.

== Frequently Asked Questions ==

= How much does splitforms cost? =

The free tier includes 1,000 submissions/month forever, with no credit card required. If you outgrow it, Pro is $5/month or $59 for four years of Pro.

= Do I need a server, SMTP credentials, or any other setup? =

No. splitforms is the form backend — submissions are POSTed to `https://splitforms.com/api/submit`, and the splitforms service emails them to the address on your account. You don't configure SMTP, you don't add DNS records, you don't install any other plugin.

= What about spam? =

Every form ships with a hidden honeypot field (named `botcheck`) that catches the majority of automated bots. The splitforms backend also runs additional spam scoring on every submission server-side, so you don't have to layer on CAPTCHAs.

= Can I turn on reCAPTCHA? =

Yes. Add your public reCAPTCHA site key in **Settings → splitforms** and enable it globally, or override it per saved form. For secure verification, also add the matching secret key in your splitforms form settings; the WordPress plugin only renders the browser widget and never exposes the secret key.

= Can I create different forms for different pages? =

Yes. In **Settings → splitforms**, add saved custom forms with their own slug, subject, redirect, access key override, custom HTML fields, and optional CSS. Then place them with `[splitforms form="quote"]`, `[splitforms form="support"]`, etc. If a saved form does not set its own access key, it uses the default key.

= Can I paste my own HTML and CSS? =

Yes. Paste your custom form fields into a saved custom form. You can paste HTML and CSS separately, or paste one combined snippet that includes a `<style>` block and form fields together. You can paste a full form tag if you have one; splitforms keeps the safe inner fields and wraps them with the correct endpoint, hidden access key, honeypot, time trap, AJAX handling, and status message.

= Why are fields named botcheck, website, or confirm_email removed? =

Those names are reserved for splitforms anti-spam honeypots. They are hidden from real visitors and checked by the backend. If you need a visible website field, use a name like `company_website` or `website_url`.

= Does the plugin support file uploads? =

The v1.0 plugin renders Name, Email, and Message fields. File-upload support is planned for a later release and will be configurable from the shortcode attributes.

= Can I customise the default form fields? =

The plain `[splitforms]` shortcode renders a simple Name + Email + Message form. For custom fields, save a custom form in Settings and embed it with `[splitforms form="your-slug"]`.

= Can I change the "From" name on notification emails? =

Yes — set a **Default notification "From" name** in Settings → splitforms (e.g. "Acme Contact Form"), or pass `from_name="..."` per shortcode for per-form overrides. Leave both empty to use the splitforms default.

== Screenshots ==

1. Settings → splitforms — paste your access key and configure defaults.
2. Saved custom forms with reusable shortcodes like `[splitforms form="quote"]`.
3. A rendered `[splitforms]` form on a front-end page.
4. A submission notification email arriving in your inbox.

(Add screenshot-1.png, screenshot-2.png, screenshot-3.png to the plugin's `assets/` folder before publishing to WordPress.org.)

== Changelog ==

= 1.1.15 =
* Removes pasted Splitforms control fields from custom forms so direct-API snippets do not submit duplicate access keys or metadata.

= 1.1.14 =
* Adds a hidden iframe fallback so plugin forms never navigate visitors to the API endpoint if JavaScript submit handling is blocked.

= 1.1.13 =
* Explicitly renders every reCAPTCHA widget so multiple splitforms shortcodes on one WordPress page can all submit successfully.

= 1.1.12 =
* Adds saved custom form name and slug metadata to submissions so multiple WordPress forms can share one access key and still be identified in splitforms, email, webhooks, and CRM integrations.

= 1.1.11 =
* Preserves pasted form tag inline styles and keeps custom form wrappers transparent so custom backgrounds render correctly.

= 1.1.10 =
* Stops default plugin input and submit-button styles from overriding pasted custom form designs.

= 1.1.9 =
* Removes already-saved pasted enhancement JavaScript from rendered custom forms and previews.

= 1.1.8 =
* Renders reCAPTCHA before the submit button, including custom pasted forms with their own button.

= 1.1.7 =
* Moves form metadata, page URL stamping, client-side time-trap, and double-submit protection into the plugin script.
* Preserves classes from pasted form tags so custom CSS and live previews keep matching.
* Removes pasted JavaScript snippets from custom form HTML because plugin enhancements are handled safely by the plugin.

= 1.1.6 =
* Adds a WordPress settings card and plugin-row link for viewing leads in the external splitforms dashboard.
* Adds polished plugin screenshot assets for distribution.

= 1.1.5 =
* Keeps reserved honeypot fields hidden in saved custom forms and live previews.

= 1.1.4 =
* Adds an available shortcodes table to Settings → splitforms.
* Adds a delete checkbox for saved custom forms.

= 1.1.3 =
* Adds a live admin preview for saved custom forms.
* Updates previews as users paste combined HTML/CSS or edit separate HTML and CSS fields.

= 1.1.2 =
* Adds a combined HTML + CSS paste box for saved custom forms.
* Extracts style blocks from combined snippets and saves the safe form fields for rendering.

= 1.1.1 =
* Adds optional Google reCAPTCHA display settings globally and per saved form.
* Loads the reCAPTCHA script only when an embedded form has reCAPTCHA enabled and a site key configured.

= 1.1.0 =
* Adds saved custom forms in Settings → splitforms.
* Adds `[splitforms form="slug"]` for different forms on different WordPress pages.
* Supports custom form HTML and CSS while preserving splitforms hidden fields, honeypot, time trap, AJAX submit, and status messages.
* Allows per-form access key, subject, redirect URL, sender name, and submit button label overrides.

= 1.0.1 =
* Adds inline AJAX submission handling with success/error messages.
* Honors the WordPress redirect setting after a successful AJAX submission.
* Loads lightweight frontend CSS/JS for inline AJAX handling.
* Lowers minimum PHP requirement to 7.4.

= 1.0.0 =
* Initial release.
* Settings page (Settings → splitforms) with access key, default subject, default redirect URL, and default notification "From" name.
* `[splitforms]` shortcode with optional `subject`, `redirect`, `from_name`, and `class` attributes.
* Honeypot spam-trap field (`botcheck`) included by default.
* Frontend CSS using custom properties for easy theme integration.
* Translation-ready (text domain: `splitforms`).

== Upgrade Notice ==

= 1.1.4 =
Shortcode list and saved-form delete controls in Settings.

= 1.1.3 =
Live preview for custom form HTML/CSS in Settings.

= 1.1.2 =
Combined HTML + CSS paste support for saved custom forms.

= 1.1.1 =
Optional reCAPTCHA display release for default and saved custom forms.

= 1.1.0 =
Saved custom forms release. Use `[splitforms form="quote"]` for reusable custom HTML/CSS forms.

= 1.0.1 =
Live-site test release with inline submission status and WordPress-side redirect support.

= 1.0.0 =
First public release of splitforms for WordPress. Sign up free at https://splitforms.com.
