Salesforceの受注内容を請求書の発行サービスへ送る連携
受注のあと、同じ内容を請求書の発行サービスの画面で入力し直していることがあります。Salesforce のフローには、外部の API を呼び出す HTTP コールアウトがあり、受注の内容を相手のサービスへ送れます。このページでは、送る仕組みの選び方と設定の進め方、気をつける点をまとめます。
このページは、ご依頼いただける開発の例の解説です。実際の導入事例ではありません。機能の説明は、末尾の Salesforce 公式の資料で確かめた内容です。
この内容で相談するこんなことで困っていませんか
- 商談が受注レコードトリガーフローで起動
- 非同期パス保存の確定後に処理
- HTTP コールアウト請求書サービスへ内容を送る
- 結果の書き戻し請求書の番号を商談に保存
本文の説明を図にしたものです。実際の構成は、組織の設定によって変わります。
なぜ起きるのか
Salesforce に受注までの情報があっても、請求書は別のシステムで作ることがあります。Salesforce のアーキテクト向けの資料も、注文の内容を Salesforce で集め、外部のシステムで注文を作る場面を例に挙げています。[11]
二つのシステムの間に仕組みがないと、片方の内容を人がもう片方へ写すことになります。同じ資料は、Salesforce から外部の処理を呼び、返ってきた番号と状況を Salesforce に書き戻す型を示しています。[11]
外部の API を呼ぶには、接続先と認証の設定が要ります。Salesforce では、接続先の URL と認証に必要な情報を、指定ログイン情報という一つの定義にまとめます。[14][4]
レコードを保存している最中は、外部への呼び出しを行えません。受注をきっかけに送るときは、保存が確定した後に動く非同期パスに処理を置く必要があります。[5]
直し方の選択肢
送る仕組みは、相手の API の形と、送る処理の中身に合わせて選びます。[11][1]
- 方法 1フローの HTTP コールアウトコードを書かずに、フローから外部の API を呼びます。設定すると、外部サービスの登録と Apex クラスが自動で作られます。[1]
- 方法 2外部サービス相手が RESTful なサービスで、API の定義が OpenAPI 2.0 または 3.0 などの形式で用意されている場合に、宣言型で呼び出せます。[11]
- 方法 3Apex のコールアウトコードで HTTP の要求を組み立てて呼び出します。2026年10月時点で、1 つのトランザクションで行えるコールアウトは最大 100 回です。[12]
- 方法 4送る内容の元商談と商談商品の数量・販売価格を使うほか、注文を有効にして注文から送る方法もあります。注文は、数量・価格・日付が決まった顧客との契約を表します。[8][9]
作業の流れ
- 送る項目を決める:取引先、金額、商談商品の数量や販売価格など、相手の API が求める項目と Salesforce の項目の対応を書き出します。[8][3]
- 認証を設定する:[設定] で、権限セット、外部ログイン情報、指定ログイン情報の順に作ります。外部ログイン情報は、[指定ログイン情報] の設定ページにある [外部ログイン情報] タブで作ります。[4]
- HTTP コールアウトを作る:フローに [アクション] 要素を追加し、[HTTP コールアウトを作成] をクリックします。メソッドと URL パスを入力し、JSON の要求と応答のサンプルを貼り付けます。[3]
- 起点のフローを作る:商談の更新で動くレコードトリガーフローを作り、エントリ条件で受注になったときだけ動くようにします。コールアウトは、開始要素で [非同期パスを追加] をオンにした非同期パスに置きます。[6][5]
- 結果を書き戻す:応答に含まれる請求書の番号などを、レコードを更新要素で商談の項目に保存します。アクションには障害パスを付けます。[1][2][7]
- Sandbox で試す:本番で有効化する前に、Sandbox でフローの動きを確かめます。[6][15]
気をつけること
- HTTP コールアウトでは、300 以上の応答状況コードがエラーとして返ります。障害パスで受け止め、管理者に知らせる流れを用意します。[2][7]
- 同じ受注が二度送られても、請求書が重ならない作り(べき等性)が勧められています。送る側が一意の ID を付け、受け手がそれで重複を見分ける方法が示されています。[11]
- フローをデバッグすると、コールアウトも実際に行われ、後から取り消されません。試す前に、送り先が本番の請求書かどうかを確かめます。[13]
- 要求ヘッダーはアクションの中では設定できません。API のキーやトークンは、ログイン情報の一部として設定します。[2]
- 非同期パスでは、決定要素などで ISCHANGED 演算子を使えません。受注になったかどうかは、エントリ条件で絞り込みます。[5][6]
- 接続先や JSON のサンプルを後から直すときは、[設定] の [外部サービス] ページでアクションを編集します。[16]
想定工数の目安
請求の情報を、請求書の発行サービスへ渡す16〜40時間
想定工数は、要件の確認から動作確認・本番反映の手順までを含む実働時間です。※Salesforce の環境(構築済みの仕組みや設定など、さまざまな要素)や、要件によって工数は大幅に前後するため、あくまでも目安です。
質問と答え
受注になったときだけ送るには、どうしますか。
レコードトリガーフローの開始要素で、レコードの更新時に動くよう設定し、エントリ条件を加えます。条件に一致したときだけフローが動くので、不要な実行を抑えられます。[6]
請求書の番号を Salesforce に戻せますか。
HTTP コールアウトでは、API の応答をフローの中で使えます。応答に含まれる番号を、レコードを更新要素で商談の項目に保存できます。相手のサービスから Salesforce を更新する場合は、外部 ID 項目と、連携ごとの専用のユーザーを用意する方法が案内されています。[1][10][17]
コードを書かずに作れますか。
相手の API の仕様が分かり、要求と応答の JSON のサンプルを用意できれば、フローの HTTP コールアウトで作れます。作るには「アプリケーションのカスタマイズ」権限が要ります。JSON の階層は 15 レベルまでです。[3][2]
送信に失敗したとき、気づけますか。
フローが失敗すると、そのフローを最後に変更した管理者に詳しいメールが送られます。障害パスに、メールの送信などの処理を足すこともできます。[7]
出典
- HTTP コールアウトを使用したコネクタなしの API への接続(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.flow_http_callout.htm&language=ja&type=5(2026-10-23 確認)
- HTTP コールアウトに関する考慮事項と制限(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.flow_http_callout_considerations.htm&language=ja&type=5(2026-10-23 確認)
- HTTP コールアウトアクションの設定(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.flow_http_callout_configure.htm&language=ja&type=5(2026-10-23 確認)
- HTTP コールアウトアクションの認証に関するガイドライン(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.flow_http_callout_guidelines_authenticating.htm&language=ja&type=5(2026-10-23 確認)
- レコードトリガーフローに関する考慮事項(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.flow_considerations_trigger_record.htm&language=ja&type=5(2026-10-23 確認)
- レコードトリガーフローの使用開始(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.automate_flow_build_get_started_record_triggered_flows.htm&language=ja&type=5(2026-10-23 確認)
- フローが失敗した場合の処理のカスタマイズ(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.flow_build_logic_fault.htm&language=ja&type=5(2026-10-23 確認)
- 商談商品の項目(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=sales.opportunity_product_fields.htm&language=ja&type=5(2026-10-23 確認)
- 注文(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=sales.order_overview.htm&language=ja&type=5(2026-10-23 確認)
- カスタム項目の属性(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.custom_field_attributes.htm&language=ja&type=5(2026-10-23 確認)
- Integration Patterns(Salesforce Developers)developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_intro_overview.htm(2026-10-23 確認)
- Callout Limits and Limitations(Apex Developer Guide)developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_callouts_timeouts.htm(2026-10-23 確認)
- Flow Builder デバッガーを使用したフローのテストまたはトラブルシューティング(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.flow_test_debug.htm&language=ja&type=5(2026-10-23 確認)
- 指定ログイン情報(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&language=ja&type=5(2026-10-23 確認)
- Sandbox の作成(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.data_sandbox_create.htm&language=ja&type=5(2026-10-23 確認)
- HTTP コールアウトアクションの管理(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.flow_http_callout_manage.htm&language=ja&type=5(2026-10-23 確認)
- インテグレーションユーザーへの API 限定アクセス権の付与(Salesforce ヘルプ)help.salesforce.com/s/articleView?id=platform.integration_user.htm&language=ja&type=5(2026-10-23 確認)