Skip to content
BotServBotServ
TwentyCRMSalesforceSelf-HostingOpen SourceVentasGestión de clientes

Twenty CRM auto-hospedado: Alternativa a Salesforce

Twenty self-hosted: CRM de código abierto como alternativa a Salesforce. Instalación, configuración, API e integración de IA.

S

schutzgeist

4 min read
Twenty CRM auto-hospedado: Alternativa a Salesforce

Twenty CRM autohospedado: alternativa a Salesforce para pymes

Qué cubre este artículo

  • Qué es Twenty: CRM moderno de código abierto, “Salesforce para desarrolladores”.
  • Instalación con Docker y configuración inicial.
  • Modelo de datos: Companies, People, Opportunities, Workflows.
  • API REST/GraphQL para integraciones.
  • Integración de IA: Lead scoring y seguimientos con Ollama.

Introducción

Twenty es el CRM de código abierto más serio y joven del momento, construido explícitamente como “alternativa a Salesforce amigable con desarrolladores”. Frontend en React, backend en NestJS, Postgres de base de datos. Interfaz moderna, API limpia, activamente mantenido.

Para pequeñas y medianas empresas que desean alojar sus datos de clientes internamente (RGPD), Twenty es la opción más pragmática: significativamente más ligero que Salesforce o SuiteCRM, pero completamente funcional para ventas.

Casos de uso típicos

  • Pipeline de ventas: deals, etapas, actividades, CRM clásico.
  • Gestión de leads: leads desde formularios web → Twenty → IA califica.
  • Cliente 360: todas las interacciones por cliente en un único lugar.
  • Seguimientos asistidos por IA: Ollama redacta borradores de seguimiento para deals abiertos.
  • Exportación de newsletters: exportar segmentos para workflows de correo.

Instalación: Docker

services:
  twenty:
    image: twentycrm/twenty:latest
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      - PG_DATABASE_URL=postgres://twenty:geheim@db:5432/twenty
      - SERVER_URL=https://crm.deine-domain.de
      - FRONT_URL=https://crm.deine-domain.de
      - ACCESS_TOKEN_SECRET=langer-zufaelliger-string
      - LOGIN_TOKEN_SECRET=langer-zufaelliger-string-2
      - REFRESH_TOKEN_SECRET=langer-zufaelliger-string-3
      - FILE_STORAGE_TYPE=local
    volumes: [twenty_data:/app/packages/twenty-server/.local-storage]
    depends_on: [db]
    restart: always

  db:
    image: postgres:16
    environment:
      POSTGRES_USER: twenty
      POSTGRES_PASSWORD: geheim
      POSTGRES_DB: twenty
    volumes: [pg_data:/var/lib/postgresql/data]
    restart: always

volumes:
  twenty_data:
  pg_data:

Después del inicio: http://localhost:3000 → registrarse → crear el primer workspace.

Modelo de datos

  • Companies: empresas.
  • People: contactos (vinculados a Companies).
  • Opportunities: deals con pipeline de etapas (Kanban).
  • Tasks/Notes: actividades.
  • Custom Objects: tipos de objeto personalizados.

El modelo sigue intencionalmente la estructura de Salesforce, lo que facilita la migración y el pensamiento.

API para integraciones

Twenty ofrece REST y GraphQL. Genera la API key en Settings → APIs:

# Listar companies
curl -H "Authorization: Bearer DEIN_API_KEY" \
  "https://crm.deine-domain.de/rest/companies"

# Crear person
curl -X POST -H "Authorization: Bearer DEIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":{"firstName":"Max","lastName":"Mustermann"},
       "emails":{"primaryEmail":"max@firma.de"}}' \
  "https://crm.deine-domain.de/rest/people"

Integración de IA: Lead scoring y seguimientos

import requests
import ollama

TWENTY = "https://crm.deine-domain.de"
HEADERS = {"Authorization": "Bearer DEIN_API_KEY"}
client = ollama.Client(host="http://ollama:11434")

# Opportunities abiertas sin actividad en los últimos 7 días
deals = requests.get(f"{TWENTY}/rest/opportunities",
    headers=HEADERS).json()["data"]

for deal in deals["opportunities"]:
    prompt = f"""Deal: {deal['name']}
Stage: {deal['stage']}
Betrag: {deal.get('amount',{}).get('amountMicros',0)/1e6}€
Letzte Aktivität: {deal.get('updatedAt')}

Schreibe einen kurzen, freundlichen Follow-up-E-Mail-Entwurf (3-4 Sätze)."""

    draft = client.chat(model="llama3.1:8b",
        messages=[{"role":"user","content":prompt}])["message"]["content"]

    # Als Task/Note an den Deal hängen
    requests.post(f"{TWENTY}/rest/notes", headers=HEADERS, json={
        "title": "KI-Follow-up-Vorschlag",
        "body": draft,
        "targets": [{"opportunityId": deal["id"]}],
    })

Integración con n8n

Twenty dispone de webhooks (Settings → Webhooks → HTTP call en eventos de objeto). Flow típico:

Twenty-Webhook: nuevo lead
    │
    ▼
Ollama: enriquecer datos del lead (estimar industria, prioridad)
    │
    ▼
Twenty-API: actualizar campos + crear task para ventas
    │
    ▼
Si score > X → alerta en Slack/Telegram al equipo de ventas

Seguridad

  • Secrets: los tres secretos de token en .env deben ser largos y aleatorios.
  • HTTPS: proxy inverso (Caddy): el CRM contiene datos sensibles de clientes.
  • API keys: generar una key por integración, revocable en Twenty.
  • RGPD: autohospedado = sin necesidad de contrato de procesamiento de datos con proveedores estadounidenses, gran ventaja respecto a Salesforce/HubSpot.

Twenty vs. alternativas

CRMFortalezaDebilidad
TwentyUI moderno, código abierto, amigable con devsJoven, menos features que SuiteCRM
SuiteCRMMaduro, potenteUI antiguo, pesado
HubSpotIntegración de marketingCloud, caro, datos con proveedor estadounidense
SalesforceEstándar de la industriaCaro, complejo, cloud
NocoDBMás ligero que CRMNo es un modelo CRM verdadero

Enlaces útiles

  • IRC-Coding.de: tutoriales de programación en GraphQL, REST APIs.
  • NocoDB: para hubs de datos más ligeros.
  • Chatwoot: contraparte de servicio al cliente.
  • n8n: automatización de workflows.
  • Docker: fundamentos de contenedores.

Puntos clave:

  • Twenty = CRM de código abierto moderno, “Salesforce amigable con desarrolladores”.
  • Docker + Postgres, API REST/GraphQL limpia, pipeline Kanban.
  • Autohospedado → amigable con RGPD sin contrato de procesamiento.
  • Integración de IA: lead scoring, borradores de seguimiento, enriquecimiento de datos.
  • La mejor opción de CRM de código abierto para entrar en el mercado de pymes.

FAQ

¿Es Twenty apto para producción?

Para ventas en pymes, sí: las funciones core (Companies, People, Pipeline, Tasks) son estables. Es más joven que SuiteCRM, así que tiene menos features para casos especiales, pero está en desarrollo activo.

¿Puedo migrar desde Salesforce/HubSpot?

Sí, mediante importación CSV (interfaz) o API. El modelo de datos es similar al de Salesforce, lo que simplifica la migración. Para migraciones grandes: script con API.

¿Integración de correo electrónico?

Sí: Twenty puede integrar Gmail/Outlook vía OAuth y asignar automáticamente los correos al contacto correspondiente. La sincronización de calendario también está disponible.

¿Campos/objetos personalizados?

Sí: los campos personalizados y objetos personalizados son una feature central. Permite utilizar Twenty para casos de uso no estándar (gestión de partners, proyectos, etc.).

¿Requisitos de recursos?

Aproximadamente 1-1,5 GB de RAM para la app + Postgres. Funciona sin problemas junto a otros servicios autohospedados en un VPS o mini PC.

¿Aplicación móvil?

La interfaz web responsiva funciona en dispositivos móviles, pero no hay app nativa aún, que es uno de los gaps conocidos respecto a Salesforce.

Fuentes y lecturas complementarias

Volver al blog
Share:

Entradas relacionadas