> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Twenty as a data source

> Bring data from Twenty CRM to Nekt.

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](https://app.nekt.ai/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](https://docs.twenty.com/developers).
   * **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.

<Info>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!</Info>

2. 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](https://docs.nekt.com/get-started/core-concepts/catalog-layers) 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](https://docs.nekt.com/get-started/core-concepts/types-of-sync).

2. 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](https://docs.nekt.com/runs/scheduling-and-triggers), 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](https://docs.nekt.com/get-started/core-concepts/resource-control).
* Determine when to execute an **Additional [Full Sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#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](https://app.nekt.ai/sources) page. Now, for you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you have to wait for the pipeline to run. You can now monitor it on the [Sources](https://app.nekt.ai/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:

| Stream        | Slug            | Description                                                                         |
| ------------- | --------------- | ----------------------------------------------------------------------------------- |
| People        | `people`        | Contacts stored in the workspace, with their emails, phones, and any custom fields. |
| Companies     | `companies`     | Companies (accounts) and their attributes.                                          |
| Opportunities | `opportunities` | Sales opportunities with stage, amount, and close date.                             |
| Notes         | `notes`         | Notes created in the workspace.                                                     |
| Tasks         | `tasks`         | Tasks with title, body, due date, and status.                                       |

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

<Snippet file="agent-skills-intro.mdx" />

<Card title="Download Twenty skills file" icon="wand-magic-sparkles" href="/sources/twenty.md">
  Twenty connector documentation as plain markdown, for use in AI agent contexts.
</Card>
