Skip to main content

Tables

View implementation guide ›
The Tables app gives each workspace a managed SQL database for storing structured data alongside your documents. Create tables, load them from your own SQL or from other steps in a workflow, browse and query them from a built-in editor, and move data in and out of your GOBL documents as part of any workflow.Each workspace that enables Tables gets a single database, backed by Turso (a managed libSQL/SQLite service). Inside it you create tables with typed columns and constraints (primary keys, UNIQUE, NOT NULL, defaults). Every table automatically includes an auto-incrementing id primary key and an optional silo_entry_id column that links a row back to the GOBL document it came from.Data moves between tables and documents using JQ queries that you configure on each workflow step, so you control exactly how columns map onto GOBL fields and back. You can test your queries in the online JQ playground before saving them.To get started quickly, Tables ships with ready-made templates that create invoice tables: from a single flat table (one row per invoice), to one row per line item with an aggregating view, to a fully normalized set of supplier, customer, invoice, and line-item tables with a view that reassembles them. Each template comes with a suggested import query and an ordering_code uniqueness constraint to keep rows idempotent.

Key features

  • Workflow automation: Import, export, merge, and batch actions plug into your workflows as steps, moving data between tables and GOBL documents automatically.
  • Managed SQL database: Each workspace gets its own libSQL/SQLite database, with no infrastructure to run or maintain.
  • Flexible mapping with JQ: Map table columns onto GOBL fields, and GOBL fields back onto columns, with JQ queries you can test and refine.
  • Built-in SQL editor: Browse tables, inspect schemas, and run ad-hoc SQL queries directly from the app.
  • Table templates: Start from prebuilt invoice schemas (flat, multi-row, or normalized multi-table), each with a suggested import query.
  • Bulk processing: Fan out a workflow over every row in a table, running one job per row for high-volume imports.
  • Direct access: Generate database credentials to connect and load data from your own tools.
Make sure to check out our Tables guide for step-by-step instructions on creating tables, loading data, and wiring the actions into your workflows.

Participate in our community

Ask and answer questions about the Tables app →