Skip to main content
View as Markdown

Migrate from Airtable to Sovrium

You have an Airtable base and want to own it — self-hosted, config-as-code, no per-seat pricing. A base maps almost one-to-one onto a Sovrium table.

Map the field types

Export the base first (in Airtable: ... → Download CSV per table). Most Airtable field types have a direct Sovrium equivalent:

Airtable field Sovrium type
Single line text single-line-text
Long text long-text
Email / URL / Phone email / url / phone
Single select single-select
Multiple select multiple-select
Number / Currency number / currency
Date date
Checkbox checkbox
Attachment attachment
Link to another record relationship

Define the table

Declare each column as a Sovrium field. This contacts table is a complete, runnable app:

export default {
  name: 'contacts-app',
  version: '1.0.0',
  tables: [
    {
      name: 'contacts',
      fields: [
        { name: 'full_name', type: 'single-line-text', required: true },
        { name: 'email', type: 'email' },
        { name: 'company', type: 'single-line-text' },
        { name: 'status', type: 'single-select', options: ['lead', 'active', 'churned'] },
        { name: 'notes', type: 'long-text' },
      ],
    },
  ],
}

Run it

sovrium start app.ts

Verify

Open http://localhost:3000/api/tables/contacts/records — the table exists and is empty, ready for your CSV import via the records API.

What doesn't map

Airtable formulas, rollups, and automations are not columns you paste in — Sovrium has its own formula and rollup fields and a separate automations engine, so re-declare that logic rather than importing it. Airtable views become Sovrium page views.

Last updated July 21, 2026

This documentation was written with Claude Fable 5 (Anthropic), so errors or outdated content are possible. Sovrium is in beta — contributions and corrections are welcome.

Built with Sovrium