by Volodymyr Lukianenko
crm twenty-crm hubspot salesforce self-hosting

The CRM pricing trap

CRM pricing is designed to extract maximum revenue from growing companies. HubSpot starts “free,” but the moment you need:

  • Email sequences
  • Landing pages
  • Custom properties
  • Multiple users

You’re bumped to the €50/user/month tier. A 5-person team pays €250/month — for features you might use once a quarter.

Salesforce is worse. The “Small Business” plan is €25/user but requires annual billing and strips most features. Real Salesforce starts at €100-300/user/month.

What most small teams actually need

After 18 months of CRM usage at SheltSoft, here’s what we actually use:

  1. Contact management — names, emails, company, tags
  2. Pipeline tracking — lead → qualified → proposal → won/lost
  3. Task assignment — who’s following up with whom
  4. Email integration — send/receive from the CRM
  5. Notes and activity history

That’s it. No marketing automation, no predictive lead scoring, no revenue intelligence. Just the basics, done well.

Enter Twenty CRM

Twenty is an open-source CRM built with a modern stack (TypeScript, React, PostgreSQL). Self-hosting it costs:

  • VPS share: ~€5/month (on an existing server)
  • Setup time: 4-6 hours (one-time)
  • Maintenance: ~1 hour/month

Compare to HubSpot at €250/month for a 5-person team. Annual saving: €2,940.

How we deployed Twenty on Hostinger

Our docker-compose.yml:

services:
  twenty-server:
    image: twentycrm/twenty:latest
    container_name: twenty-server
    restart: unless-stopped
    env_file: .env
    networks: [proxy, internal]
    depends_on:
      twenty-db:
        condition: service_healthy

  twenty-worker:
    image: twentycrm/twenty:latest
    container_name: twenty-worker
    restart: unless-stopped
    env_file: .env
    networks: [internal]
    depends_on:
      twenty-db:
        condition: service_healthy

  twenty-db:
    image: postgres:16
    container_name: twenty-db
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=${PG_PASSWORD}
    volumes:
      - twenty_db:/var/lib/postgresql/data
    networks: [internal]
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s

  twenty-redis:
    image: redis:latest
    container_name: twenty-redis
    networks: [internal]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s

Four containers: server, worker, PostgreSQL, Redis. The server handles API + web UI. The worker handles background jobs (email sending, imports).

What Twenty does better than HubSpot

1. Modern UI

Twenty looks like Notion or Linear — clean, fast, keyboard-navigable. HubSpot’s UI feels like enterprise software from 2015.

2. GraphQL API

Everything in Twenty is accessible through a well-documented GraphQL API. HubSpot’s API is a sprawling mess of REST endpoints with inconsistent pagination and authentication.

3. Open-source

You can read the code, modify it, contribute back. When a feature is missing, you can build it. When HubSpot deprecates an API, you can’t do anything.

4. Data ownership

Your CRM data lives in your PostgreSQL database. Export it, back it up, query it directly with SQL. No vendor lock-in.

What Twenty still lacks

Be honest — Twenty is still maturing (we deployed v0.40):

  • No built-in email sequences — you’ll need n8n or manual campaigns
  • Limited reporting — custom dashboards are basic
  • No mobile app — mobile web works but isn’t native
  • Smaller community — fewer integrations, templates, and StackOverflow answers

These gaps are shrinking with every release. The team ships fast.

Should you switch?

If you’re paying for HubSpot/Salesforce but only using the basics, switch. The savings are immediate and the migration is straightforward — export CSV, import into Twenty, set up your pipeline.

If you rely on marketing automation, email sequences, or complex reporting, wait. Twenty will get there, but it’s not there yet.

We track every tool we deploy on TheStackTax. Our Twenty assessment includes exact costs, setup time, and a maintenance checklist.

Need a CRM migration? SheltSoft handles the whole process — export, deploy, configure, train your team.