Point any HTML form at one endpoint. 500 free submissions — no card, no time limit — and unlimited forms.
Create free accountRecord the current contract before changing the URL
List what the visitor sees and what happens after submission. A successful migration preserves both. Write down field names, required inputs, selected options, repeated values, attachment types, recipients, thank-you behavior, autoresponder content and each downstream integration.
Include the deployed page URL and the current endpoint in the handoff. Take a synthetic example of the request and its expected result. A screenshot of the form is useful, but it does not reveal hidden controls or webhook payloads. Use fictitious contact details for fixtures rather than exporting customer messages into a development repository.
| Preserve | Verify separately |
|---|---|
| Visitor field names and values | Provider-specific hidden control fields |
| Labels, styling and validation | Endpoint and access key |
| Checkbox and multi-select choices | Array encoding and empty-value behavior |
| Expected file attachments | Storage plan, connection and upload limits |
| Notification workflow | Recipients, autoresponder and SMTP settings |
| CRM mapping | Webhook authentication and payload shape |
References: SplitForms field reference
Connect the correct endpoint
For the standard API, post to https://splitforms.com/api/submit and include a hidden access_key field. For the compatibility endpoint, post to https://splitforms.com/f/YOUR_ACCESS_KEY. The key in the compatibility URL identifies the form, so you do not need to add a second routing input.
Compatibility is not permission to assume every vendor setting transfers automatically. The /f endpoint translates supported special controls, including common redirect and honeypot aliases. An email template stored in another vendor’s dashboard is not part of your form HTML and needs its own migration.
<form action="https://splitforms.com/f/YOUR_ACCESS_KEY" method="POST">
<label>Name <input name="name" required></label>
<label>Email <input type="email" name="email" required></label>
<label>Message <textarea name="message" required></textarea></label>
<button type="submit">Send</button>
</form>References: SplitForms API reference · Migrate from Formspree
Check files, redirects and abuse controls
A file picker can look unchanged while its upload fails. Confirm that the request sends file bytes, the target plan supports uploads and the Storage integration is connected. Open the resulting file from a stored submission. Merely seeing its filename in an email is not sufficient verification.
Check the production thank-you destination and any fields deliberately forwarded to it. Keep private answers out of query strings unless your workflow explicitly requires them and you have considered where URLs are logged. Update the allowed hostname and configure verification for the new backend before accepting live traffic.
References: SplitForms file and field handling · Redirect setup
Recreate the delivery workflow
Set the owner notification recipients and any CC or routing rules in SplitForms. Configure the autoresponder separately from the owner notification. If you use custom SMTP, check that the sender identity and provider credentials belong to the intended account.
For a webhook consumer, compare actual field paths instead of assuming a new vendor uses the old JSON envelope. Update signature verification for SplitForms, and confirm that your receiver handles duplicate deliveries safely. A successful browser response says nothing about whether the final CRM field was mapped correctly.
References: Submission and delivery lifecycle · Verify webhook signatures
Use a concrete acceptance checklist
Run a controlled test after deploying the actual public page, not only the local preview. Agree on who receives that test so it does not become a sales follow-up. Record the time, form name and expected results, then inspect each checkpoint.
Keep the previous action URL and delivery settings in your release notes. If a critical acceptance check fails, restore the previous configuration while you diagnose it. Avoid sending every visitor submission to both systems as an improvised test: that can double notifications and create duplicate CRM contacts.
- Required inputs reject invalid data with a clear message.
- Every intended visitor answer appears under the correct field name.
- Unchecked and repeated choices have the expected meaning.
- Uploaded files can be opened.
- The dashboard record, owner notification and autoresponder are checked separately.
- The thank-you page and any analytics conversion trigger once.
- The downstream integration stores one record with the expected fields.
- A failed request preserves visitor input and offers a useful next step.
References: Contact-form launch checks
Frequently asked questions
Can I keep my current form design?
Yes for an HTML or framework form you control. Preserve its markup and styles while changing the submission connection. A hosted form-builder embed may need to be rebuilt.
Does changing the endpoint import old leads?
No. It changes where future submissions go. Export and retain historical records according to your existing workflow; do not assume the endpoint performs a data migration.