外部サービス連携

Heroku ConnectでSalesforceを同期する設定

HerokuのアプリからSalesforceのデータを直接使いたいとき、コードを書かずに同期できるのがHeroku Connectです。設定の流れと双方向同期の仕組み、2026年9月時点の状況とSalesforce側の代替手段をまとめます。

2023.02.14

なぜHeroku Connectを使うのか

HerokuのWebアプリやバッチ処理からSalesforceのデータを使いたいとき、そのつどAPIを呼び出すコードを書く方法もあります。ただし対象のオブジェクトや件数が増えると、呼び出す側のコードで整合性を保つ手間が増えます。Heroku Connectは、SalesforceのオブジェクトをHeroku Postgresのテーブルとして複製し、変更を自動で反映するアドオンです。Heroku側のアプリは、複製されたテーブルへ通常のSQLを実行するだけで、Salesforceのデータを読み書きできます。

同期の向きと双方向の仕組み

既定の状態では、SalesforceからHeroku Postgresへの一方向です。Postgres側からSalesforceへ書き戻すには、マッピングごとに「Write database updates to Salesforce」を有効にします。

書き戻しを有効にするには、そのテーブルにSalesforceの外部ID項目と対になる一意の識別子(Unique Identifier)が必要です。Postgresの自動採番(シーケンス)をそのまま使うと、再同期のときに重複を招く恐れがあるため、公式ドキュメントはuuid_generate_v4()などで生成したUUIDを使うことを勧めています。

同期の検知には2つの方式があります。

方式内容
標準ポーリング決まった間隔でSalesforceに問い合わせます。間隔は1分単位で2分〜60分の範囲で選べます
Accelerated PollingSalesforceの変更をStreaming APIまたはChange Data Captureで検知し、変更があった時だけポーリングします。10秒以内に複数の変更が来た場合は1回にまとめます

⚠️ Accelerated Pollingはベストエフォートです。通知が届かない場合は標準ポーリングの間隔にフォールバックします。「ほぼリアルタイム」であって、常に即時ではありません。

Postgres側からSalesforceへの書き戻しは、書き戻しを有効にしたテーブルを2分ごとにポーリングして変更を検知し、Salesforceへ反映する仕組みです。

設定の手順

  1. Heroku PostgresとHeroku Connectを追加する

    HerokuダッシュボードでアプリのResourcesタブを開き、Heroku Postgresを追加します。続けてHeroku Connectアドオンも追加します。

  2. Setup Connectionでデータベースを選ぶ

    Heroku Connectのダッシュボードで「Setup Connection」を押し、接続するPostgresデータベースとスキーマ名(既定はsalesforce)を選びます。

  3. Salesforce環境を選び認証する

    本番かSandboxか、SalesforceのAPIバージョンを選び、「Authorize」からSalesforceの認可画面へ進みます。ログインして許可すると接続が完了します。

  4. Create Mappingでオブジェクトを選ぶ

    同期したいSalesforceオブジェクト(例えば取引先)を選び、同期する項目にチェックを付けて保存します。

  5. MappingsとExplorerで結果を確認する

    「Mappings」タブで同期の状態を、「Explorer」タブで実際に複製されたレコードを確認します。

⚠️ 認証はSalesforce自身の認可画面で行います。IDとパスワードをHeroku Connectに預けるものではありませんが、権限の強い管理者アカウントではなく、Heroku Connect専用の統合ユーザーを使うことが公式に勧められています。

いまの提供状況

Heroku Connectは、2026年9月時点でも提供が続いています。help.salesforce.comにも案内があり、対応エディションはDeveloper・Enterprise・Performance・Unlimitedです。プランはお試し用の無料プラン(同期できる行数は10,000行まで、ポーリング間隔は10分固定)と、契約ベースの上位プランに分かれています。上位プランの月額料金は公開の定額表がなく、見積りが必要です。

Salesforce側の代替

Heroku Postgresのデータを使う方法は、Heroku Connectだけではありません。

方法向いている場面
Salesforce Connect(外部オブジェクト)Heroku Postgresにデータを置いたまま、Salesforce内から参照・軽い書き込みをしたい場合。ODataの外部データソースとしてつなぎ、外部オブジェクトのレイアウトで表示します
Data 360(旧Data Cloud)のHeroku Postgres Connector分析やセグメント作成のために、まとまった量のデータをData 360へ取り込みたい場合。1つの接続で最大1億行または50GBまで同期できます

Salesforce Connectでつなぐ場合は、Heroku Connectの「Heroku External Objects」が公開するODataのエンドポイントを、外部データソースとして登録します。Data 360のコネクタは、Heroku Connectとは別の経路でHeroku Postgresへ直接JDBC接続します。

ここで間違えやすい

間違い何が起きるか
書き戻しを有効にしただけで外部ID項目を設定しない同期が始まりません。専用の一意識別子項目が必要です
Postgresの自動採番をUnique Identifierに使う再同期のときにレコードが重複する恐れがあります
Accelerated Pollingにすれば常に即時反映されると思い込むベストエフォートのため、通知が来ないときは標準ポーリングの間隔まで遅れます
権限の強い管理者アカウントでAuthorizeする個人アカウントの無効化や権限変更で同期が止まります。専用ユーザーを使います

確認した環境

  • 2026年9月時点のdevcenter.heroku.comとhelp.salesforce.comの公式ドキュメントで、同期方式・ポーリング間隔・対応エディション・代替手段を確認しています

まとめ

  • Heroku Connectは、SalesforceとHeroku Postgresの間でデータを複製し、双方向にも同期できるアドオンです
  • 既定は読み取り専用で、双方向にするには外部ID項目とWrite database updates to Salesforceの設定が必要です
  • 同期の検知は標準ポーリング(2〜60分)とAccelerated Polling(Streaming API/CDC、ベストエフォート)の2種類です
  • 2026年9月時点でも提供は続いており、無料プランと契約ベースの上位プランがあります
  • Postgres上のデータをSalesforceで参照したいだけならSalesforce Connect、分析用途で取り込みたいならData 360のHeroku Postgres Connectorという選択肢もあります

Salesforceの導入・運用についてご相談ください

導入前の検討から、お使いの環境の改修・運用、AIとの連携まで承ります。状況を伺ったうえで、進め方をご提案します。