Feature

Your schema, not just extra fields.

Define object types per tenant — a slug, a label, the fields you actually track — then store records and associate them with contacts, companies, deals, or other custom types.

Field kinds that match real data

Custom fields can hang off a custom type or off contact, company, and deal. Soft-deleted types and fields stay out of the live list.

Scalars

  • text, number, date, bool
  • url
  • enum (fixed options)

Structure

  • relation (point at another type)
  • required flag per field
  • associations to contacts, companies, deals, or other custom records
// types

Object types you name

Each type has a slug, singular/plural labels, and lives under your tenant. Properties, campaigns, listings, patients — whatever the business actually tracks.

// records

Instances with your fields

Create, list, and fetch records for a type. Field values are stored on the record, not jammed into a contact note.

// linked

Associate to core CRM rows

Tie a custom record to a contact, company, deal, or another custom object so pipeline work and your domain model stay connected.

// tenant-scoped

Your types, your tenant

Types, fields, records, and associations all carry tenant id. Soft-delete hides them without a hard wipe.

// for integrations

A model webhooks can sit next to

Core contact/deal/task changes still go out over signed webhooks. Custom objects are for the shapes those events do not cover.

Stop bending contacts into everything else.

Start free