Twenty: The Open-Source CRM Built for Modern Teams
Salesforce is comprehensive and expensive. HubSpot is powerful and increasingly expensive. Notion CRM templates are flexible but require significant setup and don't scale well. Twenty is a self-hosted CRM that aims to hit the middle: flexible data model, clean UI, and useful out-of-the-box — without enterprise pricing.
Photo by Vitaly Gariev on Unsplash
It's inspired by Notion's approach to data modeling but purpose-built for sales and relationship workflows. Each record type (people, companies, deals, opportunities) can be extended with custom fields and linked to other objects.
What Twenty Provides
- People and Companies: Core contact database with full relationship linking
- Opportunities and Pipeline: Deal pipeline with stage tracking and revenue forecasting
- Tasks and Activities: Activity logging with calendar integration
- Custom Objects: Add new record types (e.g., "Investors", "Vendors") with custom fields
- Email Integration: Sync Gmail or other email clients to log interactions automatically
- Kanban and Table Views: Multiple view modes for the same data
- API: Full GraphQL API for custom integrations
Docker Deployment
Twenty requires PostgreSQL and Redis:
services:
postgres:
image: postgres:16-alpine
container_name: twenty-db
restart: unless-stopped
environment:
POSTGRES_USER: twenty
POSTGRES_PASSWORD: change-this
POSTGRES_DB: twenty
volumes:
- twenty-postgres:/var/lib/postgresql/data
redis:
image: redis:7-alpine
container_name: twenty-redis
restart: unless-stopped
volumes:
- twenty-redis:/data
twenty-server:
image: twentycrm/twenty:latest
container_name: twenty-server
restart: unless-stopped
depends_on:
- postgres
- redis
environment:
NODE_ENV: production
FRONT_BASE_URL: https://twenty.yourdomain.com
SERVER_URL: https://twenty.yourdomain.com
PG_DATABASE_URL: postgres://twenty:change-this@postgres:5432/twenty
REDIS_URL: redis://redis:6379
SIGN_IN_PREFIXED_WITH_PLUS_ENABLED: "false"
AUTH_PASSWORD_ENABLED: "true"
ACCESS_TOKEN_SECRET: change-this-random-secret
LOGIN_TOKEN_SECRET: change-this-random-secret
REFRESH_TOKEN_SECRET: change-this-random-secret
ports:
- "3000:3000"
volumes:
twenty-postgres:
twenty-redis:
Navigate to http://your-server:3000 and create an admin account on first visit.
Core Concepts
Workspaces
Twenty uses workspaces — isolated environments for different companies or use cases. In a self-hosted instance, you typically use a single workspace for your organization.
Standard Objects
Out of the box:
- People: Individual contacts with company relationships
- Companies: Organizations with people, deals, and activities linked
- Opportunities: Deals with stage, amount, and close date
- Notes: Rich-text notes linked to any object
- Tasks: To-dos with assignment and due dates
- Calendar Events: Linked to contacts and companies
Custom Objects
Extend Twenty's data model with new object types:
- Go to Settings → Data Model → Add Object
- Define the object name and its fields
- Create relationships to existing objects
Example custom objects: Investors, Vendors, Recruits, Projects.
Like what you're reading? Subscribe to Self-Hosted Weekly — free weekly guides in your inbox.
People and Companies
The People/Companies relationship mirrors how business relationships actually work. A person can belong to multiple companies (especially useful for consultants and board members), and a company has multiple people.
Add context to contacts:
- Job title and department
- LinkedIn and social profiles
- Communication channel preferences
- Linked opportunities and activities
Companies track:
- Industry and company size
- Website and LinkedIn
- All associated people and their roles
- Revenue from linked opportunities
- Open tasks and recent activities
Pipeline Management
Opportunities flow through customizable stages:
- Qualified
- Meeting Scheduled
- Proposal Sent
- Negotiation
- Closed Won / Closed Lost
Each stage can have custom fields and required steps. The pipeline view shows cards with deal amount, close date, and assigned user. Switch to table view for bulk editing.
The pipeline is one of Twenty's strongest features — it's clean, fast, and doesn't require 20 clicks to move a deal.
Email Integration
Twenty can sync with Gmail to automatically log emails as activities on the relevant contact records:
- Settings → API & Webhooks → Connect Gmail
- Authorize the Google OAuth connection
- Emails to/from your contacts appear in their activity timeline
This eliminates the need to manually log every email interaction — a significant time saver for active salespeople.
API and Integrations
Twenty exposes a GraphQL API for custom integrations. The schema mirrors the data model, making it straightforward to:
- Import contacts from another system
- Export pipeline data for reporting
- Trigger Twenty actions from external workflows
- Sync data with n8n or other automation tools
Access the API via the API Keys section in Settings → API & Webhooks.
Twenty vs. Monica vs. Other Self-Hosted CRMs
| CRM | Target use case | Complexity | Team features |
|---|---|---|---|
| Twenty | Business/sales teams | Medium | Yes |
| Monica | Personal relationships | Low | Basic |
| SuiteCRM | Enterprise replacement | High | Full |
| Odoo CRM | ERP + CRM | Very high | Full |
| EspoCRM | SMB CRM | Medium | Yes |
Twenty vs. Monica: Monica is for personal relationship management (friends, family, professional contacts). Twenty is for business CRM workflows with pipelines and revenue tracking.
Twenty vs. SuiteCRM/EspoCRM: Twenty has a more modern UI and is easier to customize but is less mature. SuiteCRM and EspoCRM are more feature-complete for complex sales processes.
Mobile Access
Twenty is a web application with a responsive design. It works on mobile browsers. A native mobile app is on the roadmap.
For field sales where a native app is critical, Twenty may not be the right choice yet. For desk-based teams or occasional mobile access, the web app is sufficient.
When Twenty Makes Sense
- Small to medium teams (2-50 people) who want a CRM without enterprise pricing
- Organizations that need custom data models (the Notion-inspired flexibility is genuine)
- Teams with technical users comfortable with Docker deployment
- Organizations needing a self-hosted option for data sovereignty
Twenty is at twentyhq/twenty with active development. The project moves quickly and the Discord community is active.
