Forms & Data Collection

Collect form submissions, without writing the endpoint.

A form is a collection schema with a public endpoint: you define the fields in the console, and any page can submit to it without an API token. Each submission is stored as a record and fires form.submitted, so a workflow can send the confirmation email or post to Slack.

Your app is an organization in BuildBase. Your users sign in and work inside workspaces - one per team or customer.

You set up

In the console and the SDK

  • The form's fields, in the console
  • Your own form design, or the hosted form page
  • What happens next, like a confirmation email

Your users get

Inside their workspace

  • A form that works on any page, with no login needed
  • Clear errors when a field is missing or wrong
  • A reply or follow-up the moment they submit

A form backend you do not have to build

Storage, validation and the submit event are already there. You write the markup, or skip it and share the hosted page.

Fields in the Console

Define the fields and which ones are required once. Your form and the stored answers follow them.

Submit From Any Page

Anyone can submit, with no login and no API key, so it works on your marketing site as well as your app.

Your Design or Ours

Build the form with your own components, or share the hosted form page the console links to.

Checked Before Saved

Required fields, numbers, emails, links, dates and uploaded files are checked, and every problem comes back at once.

Act on Every Submission

Each submission can start a workflow, to send a confirmation email or post to Slack.

Answers in the Console

See every submission in a table, with a chart of how many arrive over time.

One POST, no token

The body is the data, keyed by field slug. A failed check returns every error at once.

components/contact-form.tsxTSX
'use client';

// Forms are plain HTTP: no SDK import needed.
const BASE = 'https://api.console.buildbase.app/api/forms/public';

export function ContactForm({ orgId, formId }: { orgId: string; formId: string }) {
  async function onSubmit(event: React.FormEvent<HTMLFormElement>) {
    event.preventDefault();
    const data = Object.fromEntries(new FormData(event.currentTarget).entries());

    const res = await fetch(`${BASE}/${orgId}/${formId}/submit`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(data),
    });

    if (!res.ok) {
      const body = await res.json();
      alert((body.errors ?? [body.message]).join('\n'));
    }
  }

  return (
    <form onSubmit={onSubmit}>
      <input name="email" type="email" required />
      <textarea name="message" />
      <button type="submit">Send</button>
    </form>
  );
}

Frequently Asked Questions

What people ask about Forms.

Do my users see this?

Yes. Anyone can fill in a form on any page, with no login.

Do I need the SDK?

No. Forms are plain HTTP: fetch the fields, post the answers. There is no SDK component for forms.

How do I stop spam?

Every form has a hidden bot trap, a duplicate guard and rate limits. Open a form’s Protect button to require a captcha, limit links, block words or throwaway emails, and cap submissions per day.

Does the captcha cost anything?

No. The default, Managed by BuildBase, is free with nothing to set up, and so is the built-in check. You can use your own Cloudflare Turnstile, hCaptcha or reCAPTCHA keys instead; only reCAPTCHA bills past 10,000 checks a month.

What happens to a submission that breaks a rule?

By default it is held: saved, but no webhook, workflow or email runs until you approve it on the form’s page. You can choose to reject it instead.

Can I put a form on my own website?

Yes. Copy the embed code from the form’s page. The captcha and rules come with it, so there is nothing else to install.

Where do submissions go?

Each one is stored as a record in the form’s collection, which you can read over the collections API.

Put a form on your site today

Build the form on a collection in the console, point your form at the submit endpoint, and add a workflow for the confirmation email.

7-day free trialNo credit card requiredCancel anytime