Docs and guides for using Basilform

Basilform receives submissions from your existing website forms, stores them in your dashboard, and can notify you or your customers by email.

What Basilform does

Basilform acts as the backend for forms on your website.

You create a form (think of it as "project") on Basilform and we provide you with a unique endpoint URL. You then add that URL to your website form's action attribute and your form is ready to accept submissions

All submissions are stored in your Basilform dashboard. You can also configure email notifications, redirects and auto-responses, but more on that later.

Form

The visible fields on your website, such as name, email, message, file upload, or a dropdown.

Endpoint URL

The Basilform URL your form sends submissions to. It looks like https://basilform.com/_/{your_form_id}.

Submission

One completed form entry. Basilform stores submitted fields, uploaded files, and useful spam metadata.

Plugin

An optional feature you can install on a form, like email notifications, redirects, CAPTCHA, or auto-responses.

You keep control of the design. Basilform does not host or style your form. Your website keeps its HTML and CSS; Basilform only handles receiving and managing submissions.

Quick start

  1. Create an account

    Sign up, verify your email address, and open the Forms dashboard.

    Sign up if you haven't
  2. Create a form endpoint

    Click New form, give it a name you will recognize, and Basilform creates a unique endpoint URL.

    Create a form
  3. Install the endpoint

    Copy the form URL and put it in your website form's action attribute.

    You will find instructions in your form's homepage. Look for this button:

  4. Submit a test entry

    Send one test submission from your website and confirm it appears in the Basilform dashboard.

    You only have a limited submissions in the free plan. Feel free to delete the test submission after you're done testing.

Install your form

The only required change is setting your form's action to the Basilform URL and using method="POST".

<form action="https://basilform.com/_/{your_form_id}" method="POST">
  <label>
    <span>Email</span>
    <input type="email" name="email" />
  </label>

  <label>
    <span>Message</span>
    <textarea name="message"></textarea>
  </label>

  <button type="submit">Send</button>
</form>
Make sure to replace {your_form_id} with your own endpoint ID.
Every field needs a name. Basilform uses the name attribute as the label in your dashboard and CSV exports.
Use any normal HTML field. Text inputs, email inputs, textareas, selects, checkboxes, radio buttons, and file inputs work.
Add files with multipart encoding. If your form accepts files, add enctype="multipart/form-data".
We strongly recommend adding a honeypot field to your form. This provides an extra layer of spam protection. Read more here.

Common form examples

Use these as starting points. Make sure to replace {your_form_id} with your own endpoint ID.

Contact form
<form method="POST" action="https://basilform.com/_/{your_form_id}">
  <label>
    <span>Email</span>
    <input type="email" name="email" placeholder="Email" />
  </label>
  <label>
    <span>Name</span>
    <input type="name" name="name" placeholder="Your name" />
  </label>
  <label>
    <span>Message</span>
    <textarea name="message"></textarea>
  </label>
</form>
Waitlist
<form method="POST" action="https://basilform.com/_/{your_form_id}">
  <label>
    <span>Email</span>
    <input type="email" name="email" placeholder="[email protected]" />
  </label>

  <button type="submit">Join Waitlist</button>
</form>
Feedback form
<form method="POST" action="https://basilform.com/_/{your_form_id}">
  <label>
    <span>Name</span>
    <input type="text" name="name" placeholder="Your name" />
  </label>

  <label>
    <span>Email</span>
    <input type="email" name="email" placeholder="[email protected]" />
  </label>

  <label>
    <span>Rating</span>
    <select name="rating">
      <option>Excellent</option>
      <option>Good</option>
      <option>Average</option>
      <option>Poor</option>
    </select>
  </label>

  <label>
    <span>Feedback</span>
    <textarea name="feedback"></textarea>
  </label>

  <button type="submit">Send Feedback</button>
</form>
Job application with files
<form method="POST" action="https://basilform.com/_/{your_form_id}" enctype="multipart/form-data">
  <label>
    <span>Full Name</span>
    <input type="text" name="name" placeholder="Your full name" />
  </label>

  <label>
    <span>Email</span>
    <input type="email" name="email" placeholder="[email protected]" />
  </label>

  <label>
    <span>LinkedIn Profile</span>
    <input type="url" name="linkedin" placeholder="https://linkedin.com/in/..." />
  </label>

  <label>
    <span>Resume</span>
    <input type="file" name="resume" accept=".pdf" />
  </label>

  <label>
    <span>Cover Letter</span>
    <input type="file" name="cover_letter" accept=".pdf" />
  </label>

  <button type="submit">Apply</button>
</form>
Net Promoter Score (NPS)
<form method="POST" action="https://basilform.com/_/{your_form_id}">
  <label>
    <span>How likely are you to recommend us to a friend or colleague? (0-10)</span>
    <input type="number" min="0" max="10" name="nps_score" />
  </label>

  <label>
    <span>What is the primary reason for your score?</span>
    <textarea name="reason"></textarea>
  </label>

  <label>
    <span>What could we improve?</span>
    <textarea name="improvements"></textarea>
  </label>

  <button type="submit">Submit Survey</button>
</form>

Viewing and managing submissions

You can view and manage your form's submissions through the dashboard.

Inbox and Spam

Clean and likely-spam submissions appear in the inbox. Submissions classified as spam appear in the Spam view.

Submission details

Open a submission to inspect fields, download uploaded files, and review spam analysis metadata.

Search

Search matches submitted field values and can include spam when you need to review everything.

CSV export

Export non-spam submissions from a form's settings page. CSV headers come from your submitted field names.

Extend a form with plugins

You can install the following plugins.

Plugin Use it when Plan
Email notifier You want an email when a form is submitted. Free and Pro
Custom redirect You want visitors to land on your own thank-you page. Free and Pro
CAPTCHA You want visitors to pass a Cloudflare Turnstile challenge before the submission is accepted. Free and Pro
Auto responder You want to send a confirmation email to the person who submitted the form. Pro
Zapier You want to send accepted submissions to a Zapier workflow. Pro

Plugins are applied on a per-form basis. If you have multiple forms, you'll need to configure plugins for each one separately.

Email notifications

Receive an email whenever someone submits a form. The Email notifier plugin is available on both Free and Pro plans.

  1. Open your form's plugins

    In the dashboard, open the form you want to monitor and select Plugins.

  2. Install Email notifier

    Select Email notifier from the available plugins.

  3. Choose the recipient inbox

    Enter the email address where you want to receive submissions, then install the plugin.

Notifications are configured per form. You can edit the plugin later to change the recipient address.

Automatic responses

Send a confirmation email to the person who submitted your form. The Auto responder plugin is available on the Pro plan.

  1. Add an email field to your form

    Your form needs a field that collects the visitor's email address, such as <input type="email" name="email">.

  2. Open your form's plugins

    In the dashboard, open the form and select Plugins, then choose Auto responder.

  3. Configure the email

    Enter the email field's name value, then set the sender name, subject, and message body. The submitted fields and uploaded filenames are included in the response.

  4. Install and test

    Install the plugin and submit your form once to confirm the response arrives as expected.

The email field name must exactly match your form's HTML name attribute. For example, use email for name="email".

Use the optional excluded fields setting to keep selected submitted values out of the response email.

Custom redirects

Send visitors to a page on your own site after they submit a form. This is useful for thank-you pages, confirmation screens, or a follow-up step in your flow.

  1. Open your form's plugins

    In the dashboard, open the form you want to configure and select Plugins.

  2. Install Custom redirect

    Select Custom redirect from the available plugins.

  3. Enter your destination URL

    Enter the full HTTP or HTTPS URL for the page visitors should see, then install the plugin.

Basilform adds success=true after an accepted submission and success=false when a submission cannot be completed. Use this parameter to tailor the message on your destination page.

Redirects are configured per form. Install the plugin on each form that should use a custom destination.

Send submissions to Zapier

The Zapier plugin sends each accepted Basilform submission to a Zapier webhook as a JSON request. It is available on the Pro plan and is configured separately for each form.

  1. Create the trigger in Zapier

    In the Zapier editor, create a new Zap and choose Webhooks by Zapier as the trigger app. Select Catch Hook, continue through the trigger setup, and copy the generated webhook URL.

  2. Configure the plugin in Basilform

    Open the form in Basilform, choose Plugins, select Zapier, and paste the webhook URL into the plugin configuration. Install the plugin.

  3. Send a test submission

    Submit the form once from your website. Return to the Zapier editor and use Test trigger to retrieve the submission sample.

  4. Add and publish the Zap

    Choose the action app and map the submitted fields from the sample, then publish the Zap. The submitted fields are in the data object of the sample. Future accepted submissions will trigger the workflow automatically.

Payload format. Basilform sends a JSON object that contains submissionId, submissionUuid, formId, formSlug, submittedAt, and a data object. The data object holds the submitted fields and values, and uses each field's HTML name as the key.
Delivery behavior. Deliveries run asynchronously and are retried when Zapier returns an error. Submissions classified as spam do not trigger plugin notifications.
Files. Uploaded file fields are included as a submitted file marker; use the Basilform dashboard when you need to access the files themselves.

Plans and limits

Feature Free Pro
Forms 2 forms Unlimited forms
Submissions 100 submissions Unlimited submissions
Files per submission 1 file 10 files
CSV export Included Included
Auto responder Not included Included

Basilform warns Free users as they approach the submission limit. Once the limit is reached, new public submissions are rejected until the account upgrades to Pro.

Troubleshooting

I do not see submissions in Basilform.

Confirm the form uses method="POST", the action points to your Basilform endpoint, and each field has a name attribute.

Uploads are not working.

Add enctype="multipart/form-data" to the form and check your plan's file count limit.

My form redirects to an error page.

The endpoint may be incorrect, the account may have reached its submission limit, the upload may be invalid, or CAPTCHA verification may have failed.

My notification or auto responder did not send.

Check that the plugin is installed, the submitted email field is valid for auto responders, and the submission was not classified as spam.

A submission is marked as spam.

Open the submission, review the spam analysis, and manually mark it as not spam if it is legitimate.

Need help? Drop us a line via email and we'll do our best to get back to you quickly.

Frequently asked questions

What exactly does Basilform do?

Basilform acts as the backend for your HTML or static forms. Once you create a form on our platform, you receive a unique endpoint URL. Simply point your HTML form's action attribute to this URL, and you can instantly collect submissions without writing a single line of server-side code.

Do I need any backend coding knowledge to use Basilform?

Not at all. You only need basic access to your website's HTML to update the form's action attribute with the URL provided by Basilform. No server-side programming or database management is required.

How quickly can I get a form up and running?

You can go live in seconds. The entire process - from signing up to generating your unique form URL - takes about one minute.

Can I use Basilform with my existing website?

Yes. Basilform is designed to integrate seamlessly with any existing static or HTML-based website.

Where do my form submissions go once they are collected?

All submissions are securely stored in your Basilform dashboard for easy management. Additionally, you can enable our Email Notifications plugin to receive submissions directly in your inbox the moment they are sent.

Does Basilform support file uploads?

Yes, we support file uploads. The Free plan includes support for 1 file per submission, while our PRO plan allows for up to 10 files per submission.

Is my form data secure?

Absolutely. We prioritize your data security by hosting all information on Hetzner's secure infrastructure and maintaining daily backups to ensure your submissions are never lost.

Can I customize the look and feel of my forms?

You have 100% control over the design. Basilform is a “headless” service - we do not inject any pre-built UI or styles. You retain full control over your HTML/CSS, so your forms will look exactly how you want them to.

Are there limits on how many submissions I can receive?

The Free plan includes a limit of 100 submissions per month across all your forms, and we will proactively notify you as you approach that limit. If you need more capacity, our PRO plan offers unlimited submissions.

How do I get started with the integration?

Integration is simple: it requires adding just one line of code to your existing HTML. You can find a step-by-step installation guide tailored to your specific form directly within your Basilform dashboard.

Advanced topics

HTML form contract

Submit forms to https://basilform.com/_/{form_slug} with method="POST". Regular forms can use default URL encoding. File upload forms should use enctype="multipart/form-data".

Honeypot spam field

Add this optional hidden field to improve spam detection. Keep it empty.

<input type="text" name="bf_hp_email" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px">

Redirect behavior

Without a custom redirect, successful submissions go to /_/success and failures go to /_/error. With a custom redirect plugin, Basilform appends success=true or success=false. Failure redirects can also include error_message.

CAPTCHA flow

The CAPTCHA plugin uses Cloudflare Turnstile. When installed, submissions are stored as pending until verification succeeds. Pending sessions expire after the configured CAPTCHA window, which defaults to 10 minutes.

Rate limits and file limits

Public submissions are rate limited by form slug and IP address. The default is 10 submissions per 10 minutes. The default per-file size limit is 10 MB. Free forms accept 1 file per submission; Pro forms accept 10 files per submission.

Spam classification

Submissions can be classified as clean, likely spam, or spam. Spam submissions are separated into the Spam view and notification emails are suppressed. CAPTCHA can reduce the spam score after a successful verification.

Auto responder details

Auto responders require a submitted field containing a valid recipient email address. The subject is limited to 200 characters, body to 4000 characters, from name to 30 characters, and recipient field name to 120 characters.

Search and export behavior

Search matches submitted field values and returns up to 100 results. CSV export includes clean and likely-spam submissions, excludes spam submissions, and uses submitted field names as headers.

Security note. Do not collect secrets, passwords, API keys, or highly sensitive information through public forms. Treat uploaded files carefully before opening them.