Twenty CRMは「SalesforceのオープンソースAI代替」を標榜するCRMツールだ。TypeScript/NestJS/ReactをベースにGraphQL APIを中心に設計されており、セルフホストなら完全無料で動かせる。GitHubで20,000を超えるスターを獲得し、スタートアップから技術系SMBまで導入が広がっている。

この記事ではセットアップから日常運用、料金の実態、そしてカスタマイズに何が必要かを掘り下げる。

この記事はCRMおよびビジネス自動化ツールに特化して解説します。AI自動化ツール全般の比較はAI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較をご覧ください。

Twenty CRMとは——Salesforce代替OSSとしてのポジション

Twenty CRMは2022年にフランスのスタートアップ「Motin SAS」が開発を始めたオープンソースのCRMプラットフォームだ。プロジェクトの出発点は「なぜCRMはこれほど高くて、硬くて、気持ち悪いのか」という問いにある。Salesforceの導入コスト、HubSpotのロックイン、どちらにも不満を持つ開発者チームが自分たちの手で作り直した。

リポジトリの説明文は “The open-source CRM designed for your team” と一言。コードベースはTypeScript/React/NestJSで統一され、データはPostgreSQL・キャッシュはRedisというシンプルな構成だ。

AGPLv3ライセンスで公開されており、フォークや改変は自由だが、改変版の公開時はソースの開示が必要になる。商用利用はセルフホストで問題ないが、SaaSとして再提供する場合はライセンス条件を要確認だ。

Twenty CRMのアーキテクチャの中核はメタデータAPIにある。ユーザーが作成したカスタムオブジェクト・フィールド・リレーションシップは、すべてメタデータとしてPostgreSQLに保存される。GraphQLスキーマはこのメタデータをリアルタイムで反映するため、カスタムオブジェクト「Projects」を追加した瞬間、APIドキュメントにもPlaygroundにも「projects」クエリが出現する。この設計は他のCRMにはなかった開発者体験を生み出している。

graph TB subgraph フロントエンド A["Twenty UI
(React + Recoil)"] end subgraph バックエンド B["NestJS API
(GraphQL + REST)"] C["メタデータエンジン
(カスタムオブジェクト定義)"] D["ワークフローエンジン
(Webhook / 自動化)"] end subgraph データ層 E["PostgreSQL
(データ + メタデータ)"] F["Redis
(セッション + キャッシュ)"] G["オブジェクトストレージ
(S3 / MinIO)"] end A -->|GraphQL| B B --> C B --> D C --> E B --> E B --> F D --> G

GitHubスターの推移を見ると、2024年後半から急加速した。HubSpotが2024年に価格改定を行い、既存の無料枠を縮小したことが引き金の一つになったとみられている。技術スタートアップのコミュニティで「自前のCRMを持つ」選択肢としてTwentyが急速に注目を集めた時期と一致する。

セルフホスト vs クラウドの料金差——どこまで無料で行けるか

Twenty CRMの料金体系は比較的シンプルだ。まずクラウド版から確認しよう。

クラウド版の料金(2026年4月時点)

プラン 月額(年払い) 主な内容
Free(試用) $0 機能制限あり、データ制限あり
Pro $9/ユーザー/月 無制限レコード、カスタムオブジェクト、GraphQL API、Webhooks、メール連携
Enterprise 要問合せ SSO、SLA、専任サポート

月払いの場合は若干割高になる。Proプランは個人や小規模チームには手頃だが、ユーザー数が増えると月額が積み上がる。10名で年払いすると年間1,080ドル(約16万円)だ。

セルフホストの実際のコスト

ソフトウェアのコストはゼロだが、インフラコストがかかる:

コスト種別 目安
VPS(2GB RAM、50GB SSD) 月10〜20ドル
Railway(最小構成) 月20〜40ドル
Elestio マネージドセルフホスト 月14ドル〜
管理者工数(アップデート・バックアップ) 月数時間
結論:10名チームで試算すると クラウドPro(年払い):月90ドル / セルフホスト(VPS):月15〜25ドル。年間換算で600〜900ドルの差。技術担当者がいるチームならセルフホストの節約効果は大きい。担当者がいない場合は管理コスト込みで考えると、クラウドの方がトータルで安くなるケースもある。

競合との料金比較

ツール 月額/ユーザー セルフホスト 備考
Salesforce Starter $25〜 不可 Enterprise: $165〜
HubSpot Starter $15 不可 CRMのみ無料枠あり
Pipedrive Essential $14 不可
Twenty Cloud Pro $9 年払い
Twenty セルフホスト $0(インフラ別) 完全無料 AGPL
Odoo CRM $0(CE) ERP統合型

TwentyはクラウドCRMの中でも安価な部類に入り、セルフホストなら最安値圏になる。ただし機能の完成度でいえばSalesforce・HubSpotに比べてまだ発展途上の部分もある。

Docker Composeで構築するセルフホスト環境

最小要件は2GB RAM・1vCPUだ。メモリが不足するとNestJSプロセスがサイレントクラッシュするため、1GBの安価なVPSは避けた方がいい。

環境準備

# 前提: Docker & Docker Compose インストール済み
# ディレクトリ作成
mkdir twenty && cd twenty

# 公式 docker-compose.yml を取得
curl -LO https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml

# 環境変数ファイルを作成
curl -LO https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/.env.example
cp .env.example .env

最低限の設定(.env

# PostgreSQL パスワード(特殊文字を避けること)
POSTGRES_ADMIN_PASSWORD=your_secure_password

# アプリのシークレット(openssl rand -base64 32 で生成)
APP_SECRET=your_app_secret_here

# 外部公開する場合は SERVER_URL を変更
SERVER_URL=http://localhost:3000

起動

docker compose up -d
# http://localhost:3000 でUIにアクセス

初回起動時にデータベースのマイグレーションが自動実行される。完了まで2〜3分かかることがある。docker compose logs -f でリアルタイムに状況確認できる。

よくあるトラブルポイント
  • PostgreSQLパスワードに@!などの特殊文字を含めると接続文字列のパースが失敗する。英数字とハイフンのみ推奨
  • メモリ不足(1GB以下)だとワーカープロセスがクラッシュしてUIが起動しない
  • 外部公開時はSERVER_URLをhttps://ドメイン名に変更しないとCSRFエラーが発生する

アップデートの方法

docker compose pull
docker compose up -d

Twenty側でデータベースマイグレーションが必要なアップデートの場合も、docker compose up -d で自動的にマイグレーションが走る設計になっている。ただし本番環境ではバックアップを取ってからアップデートすることを強く推奨する。

データのバックアップ

# PostgreSQL のダンプ
docker compose exec twenty-postgres pg_dump -U postgres default > backup_$(date +%Y%m%d).sql

バックアップはcronで自動化し、S3やバックブレイズ等の外部ストレージに保存するのがベターだ。データパイプラインの自動化については Apache Airflow:データパイプラインをコードで管理するOSS が参考になる。

実際の使い方——リード管理からパイプライン運用まで

初期セットアップ:ワークスペース作成

初回アクセス時にワークスペース名・管理者メールアドレスを設定する。その後、チームメンバーをメール招待できる。UIはNotionに近い感覚で、テーブルビュー・カードビュー・カレンダービューを切り替えられる。

Twentyのデフォルトオブジェクトは「People(連絡先)」「Companies(会社)」「Opportunities(商談)」の3つ。この3点セットだけでB2Bセールスの基本フローはカバーできる。

リード管理の実際

Peopleオブジェクトに新しい連絡先を作成する際、標準フィールド(名前・メール・電話・会社・役職)はデフォルトで用意されている。カスタムフィールドを追加したい場合は「Settings → Data model」から追加する。テキスト・数値・日付・選択式・リレーションシップなど多様な型に対応している。

一括インポートはCSVで行える。Salesforce・HubSpot・Pipedrive等からエクスポートしたCSVを読み込む際、フィールドのマッピング画面が出るため、既存CRMからの移行は比較的スムーズだ。

パイプライン管理

OpportunitiesオブジェクトにはKanbanビューが用意されており、ステージ(「New」「Qualified」「Proposal」「Negotiation」「Won/Lost」等)ごとにカードを動かせる。ステージ名はカスタマイズ可能で、SaaSなら「Trial」「Conversion」「Onboarding」のように業態に合わせて変更できる。

各Opportunityに対してタスク・メモ・メール・活動履歴を紐付けられる。「次回フォローアップは○月○日」というタスクを作成し、カレンダービューで全体の稼働状況を把握する使い方が典型的だ。

メール連携

クラウド版はGmailとOutlookのOAuth連携が組み込まれており、連絡先との過去のメールのやり取りをCRM内で閲覧できる。セルフホスト版ではSMTP設定が必要になる。受信メールの自動同期にはIMAPとOAuth2の設定が必要で、現時点では若干の設定工数がかかる。

Gmail連携の設定手順(クラウド版) Settings → Accounts → Connected accounts → Gmail から行う。Google OAuthの画面でTwentyに「メール読み取り」権限を付与すると、過去のメール履歴がPeople/Companiesオブジェクトに自動紐付けされる。

タスク管理とカレンダー

Tasksオブジェクトで個人・チームのアクションアイテムを管理できる。Opportunityに紐付いたタスク、Personに紐付いたフォローアップタスクなど、どのオブジェクトからでもタスクを作成できる。カレンダービューで週次の活動を俯瞰するのに使いやすい。

ただし、Twenty CRMはGoogleカレンダーやOutlookカレンダーとのリアルタイム双方向同期には現時点で対応していない。スケジュール管理の中心をTwentyに移すのは現実的ではなく、あくまで「CRM内の活動記録ツール」として使うのが現状に合っている。

カスタマイズと技術スタック——何ができて何が必要か

UIレベルのカスタマイズ(コーディング不要)

カスタマイズ内容 操作場所 難易度
カスタムオブジェクト追加 Settings → Data model ★☆☆
カスタムフィールド追加 Settings → Data model ★☆☆
オブジェクト間のリレーション設定 Settings → Data model ★★☆
カスタムビュー(フィルター・ソート) 各オブジェクト画面 ★☆☆
ワークフロー(自動化ルール) Settings → Automation ★★☆
Webhookの設定 Settings → Webhooks ★★☆

カスタムオブジェクトの作成は直感的だ。たとえば「Projects」オブジェクトを作り、「Budget(数値型)」「Deadline(日付型)」「Status(選択型)」「AssignedTo(PersonへのRelation型)」フィールドを追加すれば、プロジェクト管理のミニモジュールとして機能する。この操作はすべてUIから5分程度でできる。

flowchart LR A["カスタムオブジェクト作成
Settings → Data model"] --> B["フィールド追加
(テキスト/数値/日付/選択/リレーション)"] B --> C["リレーション設定
(People・Companies等と連結)"] C --> D["GraphQL APIに自動反映
(即座にAPIから操作可能)"] D --> E["Webhookで外部連携
(Slack通知・n8n連携等)"]

APIレベルのカスタマイズ(TypeScript/GraphQL)

Twenty CRMはGraphQL APIとREST APIの両方を提供している。エンドポイントはどちらも {SERVER_URL}/api 配下にある。認証はBearerトークン(ワークスペースのAPIキー)で行う。

GraphQL APIの基本クエリ例

# 全Opportunityを取得
query GetOpportunities {
  opportunities {
    edges {
      node {
        id
        name
        amount {
          amountMicros
          currencyCode
        }
        stage
        closeDate
        pointOfContact {
          name {
            firstName
            lastName
          }
          emails {
            primaryEmail
          }
        }
      }
    }
  }
}

カスタムオブジェクト「Projects」を追加した場合は、projects クエリが自動生成される。スキーマを取得することで、ワークスペース固有のAPIドキュメントを動的に確認できる。

Webhooksの活用

SettingsのWebhooks設定でURLとトリガーイベントを指定する。イベントは createdupdateddeleted の3種類がオブジェクトごとに設定できる。

// Webhook ペイロード例(Opportunity更新時)
{
  "targetUrl": "https://your-app.example.com/webhook",
  "eventType": "opportunity.updated",
  "record": {
    "id": "uuid-xxxx",
    "name": "Deal with Acme Corp",
    "stage": "Won",
    "amount": { "amountMicros": 50000000, "currencyCode": "JPY" },
    "updatedAt": "2026-04-26T10:00:00.000Z"
  }
}

このWebhookをn8nやMake(旧Integromat)のトリガーに設定することで、「商談がWonになったらSlackに通知」「新規リードが登録されたらメールを自動送信」といったワークフロー自動化を外部ツールで構築できる。

コードレベルのカスタマイズ(フルスタック開発)

リポジトリをフォークして自前でビルドする場合、必要な技術スタックは以下の通りだ。

レイヤー 技術 習熟が必要なスキル
フロントエンド React 18、Recoil(状態管理)、Emotion(CSS-in-JS) React、TypeScript
バックエンド NestJS、TypeORM、Apollo GraphQL TypeScript、NestJS、GraphQL
データベース PostgreSQL、マイグレーション管理 SQL、TypeORM
インフラ Docker、docker-compose、nginx DevOps基礎
テスト Jest、Playwright(E2E) テスト設計

フロントエンドの状態管理にRecoilを採用しているのは特徴的だ。ReduxやZustandではなく、Atom/Selector モデルによるfine-grainedな状態管理を選んでいる。UIの独自コンポーネントを追加する場合はこのRecoilのパターンを理解する必要がある。

バックエンドはNestJSのモジュール構造に沿っており、新しいリゾルバー・サービスを追加する際の足場は整っている。GraphQL APIの拡張は比較的しやすい設計だ。ただしメタデータエンジン周りのコードは複雑で、学習コストが高い部分がある。

ローカル開発環境の構築には公式のlocal-setupガイドがあり、Nodeのバージョン管理(nvmまたはvolta推奨)とYarnを使うフローが標準だ。

Salesforce・HubSpot・Twentyの機能比較

実際に採用を検討する際に参照できる機能比較表を整理した。

カテゴリ Salesforce HubSpot Twenty
コスト Enterprise $165+/user/月 Starter $15/user/月 $0(セルフホスト)〜$9/user/月
セルフホスト 不可 不可 可(AGPL)
カスタムオブジェクト ✅(有料プランのみ)
GraphQL API △(REST中心) △(REST中心) ✅(コア設計)
REST API
Webhooks
メール連携 ✅(Gmail/Outlook)
マーケティング機能 別売(Pardot等) ✅(統合済み)
レポーティング ✅(高機能) △(基本的)
モバイルアプリ ❌(2026年4月時点)
サポート ✅(有償) コミュニティ/有償
エコシステム ★★★(AppExchange) ★★★ ★(発展途上)
学習コスト 高い(認定資格文化) 中程度 低〜中(標準的なWeb技術)
AI機能 Einstein AI(有償) Breeze AI 開発中
選択の判断フロー 「マーケティングオートメーションが必要か?」→ YES → HubSpot(マーケティング機能の完成度が高い) 「エンタープライズ規模のカスタマイズ・SLAが必要か?」→ YES → Salesforce 「開発チームがいて、コストを最小化したいか?」→ YES → Twenty セルフホスト 「SaaSで手軽に使いたいが予算は抑えたいか?」→ Twenty クラウドPro($9/user/月)

向いているチーム・向いていないチーム

Twenty CRMが最も力を発揮するケース

技術スタートアップ・開発チーム: TypeScript/Reactエンジニアがいれば、GraphQL APIをフル活用した独自連携をゼロから構築できる。独自の顧客管理データ構造が必要な場合、カスタムオブジェクトの柔軟性は他のCRMを上回る。

コスト圧縮を優先するチーム: シリーズAまでの段階でCRMにまだ大きな予算を割けないチームには、セルフホストの「ソフトウェア無料」は実質的なメリットになる。インフラ担当がいれば月15〜25ドルで運用できる。

プライバシー・データ主権を重視する組織: 顧客データを自社サーバーに置きたい医療・法律・金融系チームにとって、セルフホストの選択肢があることは重要だ。

ワークフロー自動化と組み合わせるチーム: n8nやMakeと組み合わせることで、TwentyのWebhookをトリガーにした自動化フローを組めるサービスである。ワークフロー自動化ツールの比較については Kestra:ワークフロー自動化ツールの基礎 も参照してほしい。

Twenty CRMが向いていないケース

大規模マーケティング自動化が必要なケース: メールキャンペーン、ランディングページ管理、リードスコアリングといったマーケティング機能はTwentyには現時点でない。この用途にはHubSpotが依然として優位だ。

モバイルでの営業活動が中心のケース: 2026年4月時点でネイティブモバイルアプリは提供されていない。外出先でスマホからCRMを操作したい営業チームには実用的ではない。

専任IT管理者がいない非技術系チーム: セルフホストはDocker・PostgreSQLのトラブルシューティング能力が必要だ。技術担当者がいない場合はクラウド版を使うか、あるいはより管理が簡単なHubSpot無料枠から始める方が現実的だ。

Salesforceエコシステムへの依存が深いケース: AppExchangeで特定のISVツールと統合している場合、Twentyへの移行は大幅な設定変更を伴う。

制限事項——現時点でのギャップ

Twenty CRMは機能面でまだ発展途上だ。2026年4月時点での主な制限を把握しておく必要がある。

既知の制限事項
  • モバイルアプリ未提供:iOSおよびAndroidのネイティブアプリは開発中だが未リリース
  • レポーティング機能が基本的:Salesforceのようなカスタムダッシュボードや高度な分析機能はまだ限定的
  • メール送信機能の制限:メール閲覧・記録はできるが、CRM内から一括メール送信する機能はない
  • AIアシスト機能は開発段階:「AI for CRM」機能はロードマップ上にあるが、まだ実用レベルではない
  • エコシステムの薄さ:Salesforce AppExchangeのような成熟したサードパーティ連携エコシステムはない
  • AGPLライセンス制約:Twenty CRMをベースにSaaSプロダクトを構築・販売する場合は商用ライセンス要確認

逆に言えば、これらの制限が問題にならないユースケース——「シンプルなリード・パイプライン・メモ管理」に割り切るなら、Twentyの軽快さと無料コストは大きなアドバンテージになる。

データパイプラインや定期的なデータ連携を組む場合は、Prefect:データパイプラインの実行管理OSS との組み合わせも選択肢になる。

Twenty CRMのロードマップと今後の方向性

公式GitHubのProjectsページとDiscordコミュニティを追うと、主要な開発優先事項が見える。2026年前半に注力されている領域は以下だ:

  • モバイルアプリ(iOS/Android): 最も要望が多い機能として開発中
  • AI CRM機能: メール自動要約・次のアクション提案・リードスコアリングのAI化
  • メール送信機能: CRM内からのメール一括送信・シーケンス設定
  • 高度なレポーティング: カスタムダッシュボードと分析ウィジェット
  • 外部連携の拡充: Zapier/Make公式連携の充実

GitHubのコントリビューター数は400名を超えており、コミュニティ主導の開発ペースは速い。バグ修正は週次でリリースされ、主要機能のリリースは月次程度の頻度だ。

AGPLライセンスを選んでいることは、VC資金調達後も「オープンソースとしての持続性」にコミットするシグナルと読み取れる。Hashicorp(Terraform)やElastic(Elasticsearch)のようにライセンス変更に踏み切るリスクはゼロとは言えないが、現時点ではコミュニティとの信頼関係を重視した路線が続いている。

まとめ——Twenty CRMを採用すべき判断基準

Twenty CRMをひとことで評すると「開発者に優しく、コストに厳しいチームのためのCRM」だ。SalesforceやHubSpotの高コスト・ロックインに抵抗を感じているチームの中で、TypeScript/Reactスキルセットを持つ開発者がいる場合、Twentyはほぼ間違いなく検討する価値がある。

セルフホストで完全無料、GraphQL APIでどんなシステムとも連携でき、カスタムオブジェクトでデータ構造を自由に拡張できる。この三点セットは、既存のSaaS CRMが「できるけど有料オプション」として隠している機能を、Twentyはデフォルトで開放している。

一方、マーケティングオートメーション・モバイル営業・大規模エンタープライズ要件を持つチームには、現時点でのTwentyは力不足だ。HubSpotの無料枠から始めるか、予算があればSalesforceの方が実用的になる。

「CRMに月数万円払っているが、使いこなせていない」「顧客データを自社で管理したい」「APIで自社システムと連携したい」——これらの課題を持つチームには、Twenty CRMのセルフホストを実際に試してみることを強く勧める。Docker Composeで15分あれば動く。

参照ソース