Many-to-many relations let you connect multiple records on both sides. For example: many People can work on many Projects, and each Project can have many People.Documentation Index
Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
Use this file to discover all available pages before exploring further.
This feature also requires Advanced mode to be enabled (toggle at the bottom right of Settings).
When to Use Many-to-Many
Use many-to-many when both sides of a relationship can have multiple connections:| Relationship | Example |
|---|---|
| People ↔ Projects | A person works on multiple projects; a project has multiple team members |
| Companies ↔ Tags | A company can have multiple tags; a tag can apply to multiple companies |
| Products ↔ Orders | A product can be in multiple orders; an order contains multiple products |
How It Works
Twenty uses a junction object pattern for many-to-many relations. A junction object sits between two objects and holds the connections:- A relation to People (many-to-one)
- A relation to Projects (many-to-one)
Prerequisites
- Enable Junction Relations in Lab: Go to Settings → Updates → Lab and enable Junction Relations
- Enable Advanced mode: Toggle on Advanced mode at the bottom right of the Settings sidebar
- Plan your data model:
- Which two objects are you connecting?
- What should the junction object be called?
Step 1: Create the Junction Object
First, create the intermediate object that will hold the connections.- Go to Settings → Data Model
- Click + New object
- Name it descriptively (e.g., “Project Assignment”, “Team Member”, “Product Order”)
- Toggle “Skip creating a Name field” on

- Click Save
Step 2: Create Relations Between Objects and the Junction
Add relation fields from each of your two objects to the junction object.First Relation (Object A → Junction)
- Select your first object in Settings → Data Model
- Click + Add Relation
- Select the junction object (e.g., “Project Assignments”)
- Set the relation type to One-To-Many (one person can link to many assignments)
- Name the fields:
- Field on People: e.g., “Project Assignments”
- Field on junction: e.g., “Person”
- Click Save
Second Relation (Object B → Junction)
- Select your second object in Settings → Data Model
- Click + Add Relation
- Select the junction object (e.g., “Project Assignments”)
- Set the relation type to One-To-Many (one project can link to many assignments)
- Enable “This is a relation to a Junction Object”

- Name the fields:
- Field on junction: e.g., “Project”
- Field on Projects: e.g., “Team Members”
- Click Save
Step 3: Configure the Junction Relation Display
Now configure the source objects to display linked records directly, skipping the intermediate junction object.- Go to Settings → Data Model
- Select the first object (e.g., “People”)
- Find the relation field pointing to the junction object (e.g., “Project Assignments”)
- Click to edit the field
- Enable “This is a relation to a Junction Object”
- Select the Target relation (e.g., “Project” — the field on the junction that points to the other side)
- Click Save
Result
After configuration:- On a Person record, the “Project Assignments” field displays Projects directly (not assignment records)
- On a Project record, the “Team Members” field displays People directly
Example: People ↔ Projects
Here’s a complete walkthrough:Create the Junction Object
- Name: Project Assignment
- Description: “Links people to projects they work on”
Add Relations
-
People → Project Assignment
- Type: One-to-Many
- Field on People: “Project Assignments”
- Field on Assignment: “Person”
-
Projects → Project Assignment
- Type: One-to-Many
- Field on Projects: “Team Members”
- Field on Assignment: “Project”
Configure Junction Display
-
On People object:
- Edit “Project Assignments” field
- Enable junction toggle
- Target: “Project”
-
On Projects object:
- Edit “Team Members” field
- Enable junction toggle
- Target: “Person”
Use It
- Open a Person record → See their Projects directly
- Open a Project record → See team members directly
- Create new connections from either side
Adding Extra Data to Connections
Since the junction object is a real object, you can add custom fields to store information about the relationship:- Role: “Developer”, “Designer”, “Manager”
- Start Date: When they joined the project
- Hours Allocated: Weekly hours on this project
Limitations
- CSV Import/Export: Importing many-to-many relations directly is not supported. Import records to the junction object instead.
- Filters: Filtering by many-to-many relations may have limited options.
Related
- Relation Fields — relation types explained
- Create Custom Objects — how to create objects
- Create Relation Fields — basic relation setup