FORMHUSH / HubSpot alternative
A focused alternative to HubSpot forms
Compare FormHush with your lead-capture needs, then replace a HubSpot embed with a plain form. Understand field mapping, routing and CRM limits.
If you need a contact form with classification and routing, FormHush offers a focused alternative for that part of your workflow. It is not a CRM, a marketing automation suite or a replacement for your customer history.
Map the form before replacing it
List the fields and workflows your existing embed uses. The current FormHush endpoint stores only name, email, message and the website honeypot. Extra CRM properties, file uploads and consent records do not become stored custom fields.
Use the form below only when that field set meets your requirements. If your workflow depends on separately stored consent or additional properties, keep the existing system or implement and validate a suitable backend before switching.
Before connecting
Create a free account, confirm your email with the magic link, then open your dashboard. Your first form is created automatically. Add forms, allowed website origins and notification destinations in settings. Free includes 100 submissions per month; paid Solo and Studio plans are available through Polar. Resend delivers account emails and email notifications. Set an optional thank-you URL on one of your allowed website origins in Form settings.
The examples use https://api.formhush.com/f/example-contact. Replace the illustrative example-contact ID with your provisioned ID; it is not a live demo form. Keep account keys out of public markup. Browser requests must come from an exact allowed origin, including the scheme and any port.
<form action="https://api.formhush.com/f/example-contact" method="POST">
<label for="contact-name">Name</label>
<input id="contact-name" name="name" maxlength="120" autocomplete="name">
<label for="contact-email">Email</label>
<input id="contact-email" name="email" type="email" maxlength="254" autocomplete="email">
<label for="contact-message">Message</label>
<textarea id="contact-message" name="message" maxlength="8000" required></textarea>
<input name="website" type="text" hidden tabindex="-1" autocomplete="off">
<button type="submit">Send message</button>
</form>
Plan CRM delivery separately
FormHush supports configurable outbound webhooks, but does not include a native HubSpot connector. A relay would need to receive FormHush events, authenticate to the CRM, map fields and handle retries and duplicates. Keep any CRM credentials on that relay, never in the public form.
The current outbound event types are submission.qualified and submission.unsorted. Include a review process for Unsorted messages instead of treating every forwarded submission as a qualified lead. Keep your CRM if you need pipeline tracking, lifecycle automation or a longer history.
Decide on scope, not a price claim
Compare the features you actually need and the cost of maintaining a relay. FormHush pricing alone does not establish savings over your existing setup. The offers below cover submission quotas, not CRM services.
Fields and thank-you behaviour
message is required, up to 8,000 characters. name is optional, up to 120 characters; email is optional, up to 254 characters and must be valid when supplied. The website string is mandatory and must stay empty for a legitimate visitor. A filled honeypot is stored as spam, not silently discarded.
Only JSON and URL-encoded POST bodies are accepted, with a 16,384-byte limit. Up to 20 additional text fields are stored and delivered, with at most 2,000 characters each and 8,000 in total. Field names must start with a letter or underscore and contain only letters, digits, underscores, dots, spaces or hyphens (64 characters maximum). Arrays, objects, repeated names and file uploads are rejected. FormHush does not use _gotcha, and a submitted _redirect does not control navigation.
Native URL-encoded forms receive HTTP 303 to the FormHush confirmation page by default. In Form settings, choose an HTTPS thank-you page on an allowed website origin to use your own. JSON requests, or URL-encoded requests with Accept: application/json, receive HTTP 201 JSON; JavaScript forms handle their own success state after checking the response. Native form errors show a readable error page; entered text is not echoed. For iframe forms, set a custom thank-you page that allows framing, or use a JSON form with an inline success state.
Classification, delivery and retention
Only a filled honeypot is deterministically classified as spam. Links and quoted spam phrases are evaluated in context by AI. When configured, Jev classifies the remaining message text after email addresses and phone numbers are masked. That masking is not complete anonymisation. Ambiguous decisions stay in Needs review. Forward them or mark them as spam in the dashboard. A daily email reminder covers unresolved messages from previous days and contains no submission content.
Real leads and urgent messages are queued for configured destinations. When AI is unavailable, remaining accepted messages become Unsorted and are also queued; the honeypot check still applies. Delivery adapters support email, Slack, Telegram and webhooks, configured in your dashboard. Email delivery uses Resend. Retries do not guarantee that a third party receives a message.
Submissions and related notification jobs are deleted after 30 days by scheduled cleanup. Copies sent to your channels follow those services’ retention policies. Processing can involve the United States; see the privacy policy for providers and details.
Spam and sales pitches do not count toward your monthly quota. Other accepted messages reserve a place while classification is pending. At the cap, a new message needing a place is rejected; you receive an alert at 80% and 100%. Rate limits still apply to all submissions.
Test the complete flow
- Test from an allowed origin using a provisioned form. Submit a clear enquiry and check its stored result in the dashboard.
- Check delivery separately, using a configured test destination. An accepted response alone does not prove notification delivery.
- Send a nonempty message with
websitefilled to verify that it is stored as spam without notification. An empty message is a validation error, not a spam verdict. - Confirm a missing honeypot or empty message returns HTTP 400, an unsupported body format returns HTTP 415, and a disallowed browser origin returns HTTP 403.
- Verify the thank-you page or inline success message and preserve entered text on errors. Rate and monthly limits return HTTP 429; respect
Retry-Afterbefore retrying. Check for a stored record after a network failure to avoid duplicate submissions.
Plans and next steps
- Free: 0 USD per month for 100 submissions.
- Solo: 9 USD per month for 1,000 submissions.
- Studio: 29 USD per month for 5,000 submissions.
Free signup and paid Solo and Studio subscriptions are open during the public beta. Polar handles checkout; Resend delivers account emails and email notifications. Accepted submissions reserve a place in the account quota, shared across its forms. Classified spam and sales pitches release that place; honeypot spam never uses one. Quotas reset each UTC calendar month. Over-limit requests are rejected with HTTP 429, with no automatic overage charges.
Start with a free account and configure forms in your dashboard. For help, contact hello@formhush.com. See the privacy policy for retention and providers, or browse all integration guides.