← All articles
Two people stand outside with an "open" sign.

Twenty: The Open-Source CRM Built for Modern Teams

Productivity 2026-03-04 · 4 min read twenty crm sales open-source self-hosted docker notion salesforce alternative
By Selfhosted Guides Editorial TeamSelf-hosting practitioners covering open source software, home lab infrastructure, and data sovereignty.

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

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:

Custom Objects

Extend Twenty's data model with new object types:

  1. Go to Settings → Data Model → Add Object
  2. Define the object name and its fields
  3. 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:

Companies track:

Pipeline Management

Opportunities flow through customizable stages:

  1. Qualified
  2. Meeting Scheduled
  3. Proposal Sent
  4. Negotiation
  5. 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:

  1. Settings → API & Webhooks → Connect Gmail
  2. Authorize the Google OAuth connection
  3. 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:

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

Twenty is at twentyhq/twenty with active development. The project moves quickly and the Discord community is active.

Get free weekly tips in your inbox. Subscribe to Self-Hosted Weekly