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:
- Contact management — names, emails, company, tags
- Pipeline tracking — lead → qualified → proposal → won/lost
- Task assignment — who’s following up with whom
- Email integration — send/receive from the CRM
- 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.