Skip to main content
Twenty is an open-source CRM (Customer Relationship Management) platform for managing contacts, companies, and sales pipelines. It is fully customizable: besides the standard objects (people, companies, opportunities, notes, tasks), every workspace can define its own custom objects and fields. This connector extracts them all — the streams and columns you get mirror exactly how your Twenty workspace is modeled.

1. Add your Twenty access

  1. In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Twenty option from the list of connectors.
  2. Click Next and you’ll be prompted to add your access.
    • API Key: a workspace-scoped API key. In Twenty, go to Settings -> API & Webhooks and click Create key. The key is shown only once, so copy it right away. For more information, check the official documentation.
    • API URL (advanced): leave the default https://api.twenty.com if you use Twenty Cloud. If you self-host Twenty, enter your instance’s base URL (e.g. https://crm.mycompany.com), without any trailing path.
    • Objects (advanced): optionally restrict which Twenty objects to sync by listing their plural API names (e.g. people, companies, myCustomObjects). Leave empty to sync every active non-system object in the workspace, including custom objects.
    • Start Date (advanced): earliest updated_at timestamp to sync for incremental streams.
  3. Click Next.

2. Select your Twenty streams

  1. The next step is letting us know which streams you want to bring. You can select entire groups of streams or only a subset of them.
    Tip: The stream can be found more easily by typing its name.
If you don’t see a stream you were expecting to find, check that the corresponding object is active in your Twenty workspace and that it isn’t restricted by the “Objects” setting. If that’s not the issue, feel free to get in touch and we’ll help you out!
  1. Click Next.

3. Configure your Twenty data streams

  1. Customize how you want your data to appear in your catalog. Select a name for each table (which will contain the fetched data) and the type of sync.
  • Layer: companies in the Growth plan can choose in which layer the tables with the extracted data will be placed.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: depending on the data you are bringing to the lake, you can choose between INCREMENTAL and FULL_TABLE. Read more about Sync Types here.
  1. Click Next.

4. Configure your Twenty data source

  1. Describe your data source for easy identification within your organization. You can inform things like what data it brings, to which team it belongs, etc.
  2. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).
  3. Optionally, you can define some additional settings (if available).
  • Configure Delta Log Retention and determine for how log we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.

Check your new source!

  1. Click Next to finalize the setup. Once completed, you’ll receive confirmation that your new source is set up!
  2. You can view your new source on the Sources page. Now, for you to be able to see it on your Catalog, you have to wait for the pipeline to run. You can now monitor it on the Sources page to see its execution and completion. If needed, manually trigger the pipeline by clicking on the refresh icon. Once executed, your new table will appear in the Catalog section.
If you encounter any issues, reach out to us via Slack, and we’ll gladly assist you!

Available streams

Streams are discovered dynamically from your workspace’s data model: the connector creates one stream per active, non-system Twenty object — standard and custom objects alike. Stream slugs are the snake_case version of the object’s plural API name (e.g. the custom object emailTrackings becomes email_trackings). The standard objects present in every workspace: Any other object in your workspace (e.g. workflows, dashboards, or objects you created yourself) shows up as an additional stream automatically. About the columns you’ll see in the Catalog:
  • Column names are the snake_case version of the Twenty field names (e.g. jobTitle becomes job_title).
  • Every stream has id as its primary key and updated_at as the incremental replication key.
  • Composite Twenty field types (full name, emails, phones, links, currency, address, rich text) arrive as JSON strings, ready to be parsed in a Query or Notebook.
  • Relations to other objects arrive as the related record’s UUID (e.g. a person’s company_id), so streams can be joined together by id.

Skills for agents

Download Twenty skills file

Twenty connector documentation as plain markdown, for use in AI agent contexts.