Collections & Custom Data

Custom data with a schema, versioned so old records keep their meaning.

Define fields in the console, publish them as a version, and store records against it. Your backend reads the records by collection slug over a token-authenticated REST API, and every form submission lands here as a record.

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 fields you want to store, in the console
  • A new version when those fields change
  • One fetch from your server to read the data

You get

For you and your team

  • Structured data without building a database table
  • Old records that keep their meaning after you change fields
  • Every form submission stored for you

A schema you can change without breaking old data

Versions keep yesterday's records readable while you publish tomorrow's fields.

Fields as Versions

Your fields are saved as a version. Change them by publishing a new version, and old records stay readable.

Locked When Live

A published version cannot be edited, so nothing already stored changes meaning underneath you.

Common Field Types

Text, rich text, number, yes or no, date, color, link and email, each with a default and a required flag.

Read by Name

Fetch records by the collection's name, so the same code works in every environment.

Where Forms Save

Every form submission becomes a record in its collection.

Private by Default

Reading data needs your API token, so records never become public by accident.

Read records by slug from your backend

Collections are API-first. There is no SDK method, so call the records API with an org token, ideally from a background job.

jobs/sync-contact-requests.tsTSX
const res = await fetch(
  'https://api.console.buildbase.app/api/collections/data/contact-requests?latest=true',
  { headers: { Authorization: process.env.BUILDBASE_TOKEN! } }
);

// Every record for the resolved version, unpaginated.
const records: {
  _id: string;
  versionId: string;
  data: Record<string, unknown>;
  createdAt: string;
}[] = await res.json();

Frequently Asked Questions

What people ask about Collections.

Do my users see this?

Not directly. Collections store data for your app, and your server decides what to show.

Can I use it as a public CMS?

No. Every read needs your API token, so there is no public read path.

How do I change the fields?

Publish a new version. A published version cannot be edited, so records already stored keep their meaning.

Is there an SDK for collections?

No. Collections are read over the REST API from your server.

Define your first collection

Create a collection in the console, add fields to a version and publish it. Your backend reads the records by slug.

7-day free trialNo credit card requiredCancel anytime