# Salesforce Pardot Export Integration Treasure Dataから直接Salesforce [Pardot](https://www.pardot.com/)にジョブ結果(見込み客またはリストメンバーシップの形式)を送信して、CRMデータを同期することができます。 Pardotは、マーケティングチームと営業チームがリードを見つけて育成し、より多くの取引を成約し、ROIを最大化するためのマーケティングオートメーションを提供します。 ## 前提条件 - Treasure Dataの基本知識 - Salesforce Pardotモデルの基本知識 - 稼働しているSalesforce Pardotアカウント - ビジネスユニットID ## サポート内容 Salesforce Pardotの見込み客またはリストメンバーシップへのデータ送信をサポートしています。 並列見込み客アップサートをサポートしています。並列タスクの数を増やしてジョブの実行を高速化したい場合は、この機能を使用してください。ただし、アカウントの同時呼び出し制限にご注意ください。 ## 要件と制限事項 コネクタを使用するには、適切なSalesforce Pardotプラン(ProまたはUltimate)が必要です。 **見込み客**については、APIの仕様上、Treasure DataはURIの長さを一定の長さまでしかサポートしていないため、**7500文字**を超えるデータを含む行(JSONとしてシリアライズ後)は無効なレコードと見なされます。 **リストメンバーシップ**については、見込み客のオプトアウトはサポートされていません。これは一方向のアクションであり、元に戻すことができないためです。 コネクタは、以下のすべてのPardot APIの制限に準拠しています。 - 日次Pardot API呼び出し制限と同時Pardot API呼び出し制限は、他のPardot API呼び出しと同様にImport API呼び出しにも適用されます。 エクスポート結果の列名は小文字である必要があり、各データオブジェクトのPardotフィールド名に厳密に従う必要があります(大文字と小文字を区別)。 ## PardotビジネスユニットIDの取得 PardotビジネスユニットIDを見つけるには、SalesforceのSetupを使用します。PardotビジネスユニットIDは「0Uv」で始まる18文字です。 Pardot Account Setupの情報にアクセスできない場合は、Salesforce管理者にPardotビジネスユニットIDの提供を依頼してください。[https://developer.pardot.com/kb/authentication/](https://developer.pardot.com/kb/authentication/) Pardotでの認証には、ビジネスユニットIDの入力が必要です。 1. Pardotへのログインに使用するのと同じアカウントを使用してSalesforceにログインします。 2. **Setup** > **Pardot** > **Pardot Account Setup**に移動します。または、Setupから「Quick Find」ボックスに「Pardot Account Setup」と入力します。 ![](/assets/image2021-3-31_13-33-35.6bd30abc12c713edb55401b576b622d0d37aff22a9e687ea168e0c7f416f3691.da0a80a2.png) 3. 複数のPardotビジネスユニットがある場合があります。PardotビジネスユニットIDは「0Uv」で始まる18文字です。 ## カスタム接続アプリの定義 Treasure Data内でPardot認証を定義するには、カスタム接続アプリ、適切な認可、およびリフレッシュトークンがすべて必要です。 このHTMLページの末尾にある[カスタム接続アプリの使用](/ja/int/salesforce-pardot-export-integration#h2__1765871400)の手順を参照してください。 ## 新しい接続の作成 TDコンソールでクエリを実行する前に、データ接続を作成して設定する必要があります。データ接続の一部として、以下の手順に従って統合にアクセスするための認証を提供します。 ![](/assets/salesforce-pardot-export-integration-2024-10-07-1.460b0e91901872734c88cfd8a06d5e0b7ec3b579cccfe826ff627b9b3e07a2b7.da0a80a2.png) 1. **TDコンソール**を開きます。 2. **Integrations Hub > Catalog**に移動します。 3. **Salesforce Pardot**を検索して選択します。 4. **Create Authentication**を選択し、以下で説明する統合の認証情報を入力します。 5. **Continue**を選択し、認証の名前を入力して**Done**を選択します。 ### 認証フィールド | フィールド | 説明 | | --- | --- | | Pardot Host | Productionアカウントを使用している場合は[https://pi.pardot.com](https://pi.pardot.com)です。Pardot Developer OrgまたはSandboxアカウントの場合は[https://pi.demo.pardot.com](https://pi.demo.pardot.com)です | | Pardot Business ID | PardotビジネスユニットID | | Connected App | - (デフォルト)Treasure Data Connected App:`OAuth connection`フィールドでOAuthを提供することで、TDアプリにデータのアップロードを認可します - Custom Connected App:`Client ID`、`Client Secret`、`Login URL`、`Refresh Token`を提供することで、独自の接続アプリを使用します | | OAuth connection | **Treasure Data Connected App**の場合、**Click here**を選択し、認可フローに従ってOAuthを提供します。続行するには、Integrations Hub Catalogに移動してSalesforce Pardotを検索する必要がある場合があります。 | | Client ID | **Custom Connected App**の場合、[こちら](/ja/int/salesforce-pardot-export-integration#h2__1765871400)を参照して接続アプリを作成し、対応するフィールドに`Client ID`、`Client Secret`、`Login URL`、`Refresh Token`を入力します | | Client Secret | 接続アプリのクライアントシークレット | | Login URL | SalesforceインスタンスのログインURL | | Refresh token | カスタムアプリの認可後に取得するリフレッシュトークン | ### エクスポート用のクエリ結果の設定 TDコンソールは、データをエクスポートする複数の方法をサポートしています。Data Workbenchからデータをエクスポートするには、以下の手順に従ってください。 1. **Data Workbench > Queries**に移動します 2. **New Query**を選択し、クエリを定義します 3. **Export Results**を選択してデータエクスポートを設定します 4. 既存のPardot認証を選択するか、上記のセクションに従って新しい認証を作成します 5. 以下で説明するエクスポートパラメータを設定し、**Done**を選択します ![](/assets/salesforce-pardot-export-integration-2024-10-07-3.a40359868c9799a3b7f1920a5557af09cb115db2d1d1bbdf5f45e4ea7f0d1714.da0a80a2.png) ### 設定パラメータ | **フィールド** | **説明** | | --- | --- | | Data Objects | `Prospects`(デフォルト)と`List Memberships`の間でターゲットデータオブジェクトを選択します | | Data Objects = **Prospects** | | | Prospect List Operation | デフォルトのアップロードモードは`Batch Upsert`です | | List ID | 見込み客が追加(または削除)されるリストID。単一のリストIDまたはカンマ区切りのリストID文字列を指定できます | | Prospect List Operation | 指定されたリストIDに見込み客を追加(または削除)するには、**Add**または**Remove**を選択します | | Data Objects = **List Memberships** | | | List Memberships Operation | **Upsert**または**Delete**を選択します。選択した操作が使用されます | ### 見込み客データオブジェクトの列メタデータ | 列名 | データ型 | 必須? | 説明 | 備考 | | --- | --- | --- | --- | --- | | id | Integer | ✅ | この見込み客のPardot ID | 新しい見込み客を挿入する場合はnullのままにする必要があります | | fid | String | ✅ | Salesforce Leadsと同期する場合のCRM FID | 新しい見込み客を挿入する場合はnullのままにする必要があります | | email | String | ✅ | 見込み客のメールアドレス | 新しい見込み客を挿入する場合は常に必須です | | campaign_id | Integer | | この見込み客に関連付けられたキャンペーンのPardot ID | | | salutation | String | | 見込み客の敬称 | | | first_name | String | | 見込み客の名 | | | last_name | String | | 見込み客の姓 | | | password | String | | 見込み客のパスワード | | | company | String | | 見込み客の会社名 | | | prospect_account_id | Integer | | 見込み客のアカウントID | | | website | String | | 見込み客のウェブサイトURL | | | job_title | String | | 見込み客の役職 | | | department | String | | 見込み客の部署 | | | country | String | | 見込み客の国 | | | address_one | String | | 見込み客の住所(1行目) | | | address_two | String | | 見込み客の住所(2行目) | | | city | String | | 見込み客の市区町村 | | | state | String | | 見込み客の米国州 | | | territory | String | | 見込み客の地域 | | | zip | String | | 見込み客の郵便番号 | | | phone | String | | 見込み客の電話番号 | | | fax | String | | 見込み客のFAX番号 | | | source | String | | 見込み客のソース | | | annual_revenue | String | | 見込み客の年間収益 | | | employees | String | | 見込み客の従業員数 | | | industry | String | | 見込み客の業種 | | | years_in_business | String | | 見込み客の創業年数 | | | comments | String | | この見込み客に関するコメント | | | notes | String | | この見込み客に関するメモ | | | score | Integer | | 見込み客のスコア | | | is_do_not_email | Boolean | | 値が1の場合、見込み客はメール送信を希望しません | | | is_do_not_call | Boolean | | 値が1の場合、見込み客は電話連絡を希望しません | | | is_reviewed | Boolean | | 値が1の場合、見込み客はレビュー済みです | | | is_starred | Boolean | | 値が1の場合、見込み客にスターが付いています | | | is_archived | Boolean | | 値が1の場合、見込み客はアーカイブされています | | サンプルクエリ - list_xxxに見込み客をアップサート ```sql SELECT 'xxx' as id FROM prospect_table -- Or SELECT email FROM prospect_table ``` ### リストメンバーシップデータオブジェクトの列メタデータ | 列名 | データ型 | 説明 | 必須? | | --- | --- | --- | --- | | prospect_id | Integer | 見込み客のID | ✅ | | list_id | Integer | リストのID | ✅ | サンプルクエリ ```sql SELECT list_id, prospect_id FROM (VALUES (xxx, yyyy)) AS table1(list_id, prospect_id); ``` ### Salesforce Pardotの統合パラメータ | Parameter | Values | Description | | --- | --- | --- | | client_id | xxxx | 接続アプリのコンシューマーキー | | client_secret | xxxx | 接続アプリのシークレットキー | | refresh_token | xxxx | 接続アプリを承認後に取得したリフレッシュトークン | | login_url | https://login.salesforce.com/ | SalesforceのログインURL | | pardot_domain | https://pi.pardot.com | Pardotのドメイン | | business_unit | 0Uv4xxxxx | ビジネスユニットID | | data_object | prospects | ターゲットデータオブジェクト。prospectsまたはlist_membershipsのいずれかでなければなりません | | skip_invalid_records | true | 失敗したレコードをスキップする場合は、この値をtrueに設定します | | prospect_operation | sync | Pardotにprospectデータを送信する操作。**sync**がサポートされています | | prospect_lists | xxxx | `data_object = prospects`の場合のprospectリストIDのカンマ区切り(文字列) | | prospect_list_operation | add | `prospect_lists`が設定されている場合にprospectを追加/削除する操作。`data_object = prospects`の場合に適用されます(enum(`add`, `remove`)、デフォルト: `add`) | | upsert_by_email | false | メールアドレスをキーとしてprospectをアップサートします | | parallel_tasks | 1 | Pardotにprospectデータを送信する際に並列実行するタスク数 | | max_payload | 5000 | Pardotにprospectデータを送信する際のペイロードサイズ。これは各Pardotインスタンスごとに異なる最大URI設定を持つため、微調整するためのパラメータです。prospectを送信する際に**414 Request-URI Too Long**エラーが発生した場合は、この値を下げてください。それ以外の場合は、デフォルト値で十分です。 | | list_membership_operation | upsert | Pardotにリストメンバーシップデータを送信する操作。**upsert**または**delete**でなければなりません | | maximum_retries | 5 | リクエストが失敗した場合の最大リトライ回数 | | initial_retry_wait | 1 | 最初のリトライ前の初期待機時間(秒) | | maximum_retry_wait | 120 | リトライの最大待機時間(秒) | | maximum_connection_timeout | 300 | Pardotへのリクエストの最大接続時間 | ### (オプション) Query Export ジョブをスケジュールする Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。 Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。 2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。 例えば、cron スケジュールが `'0 0 1 * 1'` の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。 #### TD Console を使用してジョブをスケジュールする 1. **Data Workbench > Queries** に移動します 2. 新しいクエリを作成するか、既存のクエリを選択します。 3. **Schedule** の横にある None を選択します。 ![](/assets/image2021-1-15_17-28-51.f1b242f6ecc7666a0097fdf37edd1682786ec11ef80eff68c66f091bc405c371.0f87d8d4.png) 4. ドロップダウンで、次のスケジュールオプションのいずれかを選択します: ![](/assets/image2021-1-15_17-29-47.45289a1c99256f125f4d887e501e204ed61f02223fde0927af5f425a89ace0c0.0f87d8d4.png) | ドロップダウン値 | 説明 | | --- | --- | | Custom cron... | [Custom cron... の詳細](#custom-cron-details)を参照してください。 | | @daily (midnight) | 指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。 | | @hourly (:00) | 毎時 00 分に実行します。 | | None | スケジュールなし。 | #### Custom cron... の詳細 ![](/assets/image2021-1-15_17-30-23.0f94a8aa5f75ea03e3fec0c25b0640cd59ee48d1804a83701e5f2372deae466c.0f87d8d4.png) | **Cron 値** | **説明** | | --- | --- | | `0 * * * *` | 1 時間に 1 回実行します。 | | `0 0 * * *` | 1 日 1 回午前 0 時に実行します。 | | `0 0 1 * *` | 毎月 1 日の午前 0 時に 1 回実行します。 | | "" | スケジュールされた実行時刻のないジョブを作成します。 | ``` * * * * * - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +---------- month (1 - 12) | | +--------------- day of month (1 - 31) | +-------------------- hour (0 - 23) +------------------------- min (0 - 59) ``` 次の名前付きエントリを使用できます: - Day of Week: sun, mon, tue, wed, thu, fri, sat. - Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec. 各フィールド間には単一のスペースが必要です。各フィールドの値は、次のもので構成できます: | フィールド値 | 例 | 例の説明 | | --- | --- | --- | | 各フィールドに対して上記で表示された制限内の単一の値。 | | | | フィールドに基づく制限がないことを示すワイルドカード `'*'`。 | `'0 0 1 * *'` | 毎月 1 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 | | 範囲 `'2-5'` フィールドの許可される値の範囲を示します。 | `'0 0 1-10 * *'` | 毎月 1 日から 10 日までの午前 0 時 (00:00) に実行するようにスケジュールを設定します。 | | カンマ区切りの値のリスト `'2,3,4,5'` フィールドの許可される値のリストを示します。 | `0 0 1,11,21 * *'` | 毎月 1 日、11 日、21 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 | | 周期性インジケータ `'*/5'` フィールドの有効な値の範囲に基づいて、 スケジュールが実行を許可される頻度を表現します。 | `'30 */2 1 * *'` | 毎月 1 日、00:30 から 2 時間ごとに実行するようにスケジュールを設定します。 `'0 0 */5 * *'` は、毎月 5 日から 5 日ごとに午前 0 時 (00:00) に実行するようにスケジュールを設定します。 | | `'*'` ワイルドカードを除く上記の いずれかのカンマ区切りリストもサポートされています `'2,*/5,8-10'` | `'0 0 5,*/10,25 * *'` | 毎月 5 日、10 日、20 日、25 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 | 1. (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。 ### クエリを実行する クエリに名前を付けて保存して実行するか、単にクエリを実行します。クエリが正常に完了すると、クエリ結果は指定された宛先に自動的にエクスポートされます。 設定エラーにより継続的に失敗するスケジュールジョブは、複数回通知された後、システム側で無効化される場合があります。 (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。 ## Audience Studio で Segment をアクティベートする Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。 1. **Audience Studio** に移動します。 2. parent segment を選択します。 3. ターゲット segment を開き、右クリックして、**Create Activation** を選択します。 4. **Details** パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。 5. **Output Mapping** パネルで activation 出力をカスタマイズします。 ![](/assets/ouput.b2c7f1d909c4f98ed10f5300df858a4b19f71a3b0834df952f5fb24018a5ea78.8ebdf569.png) - Attribute Columns - **Export All Columns** を選択すると、変更を加えずにすべての列をエクスポートできます。 - **+ Add Columns** を選択して、エクスポート用の特定の列を追加します。Output Column Name には、Source 列名と同じ名前があらかじめ入力されます。Output Column Name を更新できます。**+ Add Columns** を選択し続けて、activation 出力用の新しい列を追加します。 - String Builder - **+ Add string** を選択して、エクスポート用の文字列を作成します。次の値から選択します: - String: 任意の値を選択します。テキストを使用してカスタム値を作成します。 - Timestamp: エクスポートの日時。 - Segment Id: segment ID 番号。 - Segment Name: segment 名。 - Audience Id: parent segment 番号。 1. **Schedule** を設定します。 ![](/assets/snippet-output-connector-on-audience-studio-2024-08-28.a99525173709da1eb537f839019fa7876ffae95045154c8f2941b030022f792c.8ebdf569.png) - スケジュールを定義する値を選択し、オプションでメール通知を含めます。 1. **Create** を選択します。 batch journey の activation を作成する必要がある場合は、[Creating a Batch Journey Activation](/products/customer-data-platform/journey-orchestration/batch/creating-a-batch-journey-activation) を参照してください。 ## その他 - [スケジュールジョブ](https://docs.treasuredata.com/articles/pd/scheduling-jobs-using-td-console)と結果エクスポートを使用して、定期的にターゲット宛先にデータをアップロードできます - より高度なデータパイプラインの一部として、この統合を[TDワークフロー](/int/using-td-workflow-with-td-integrations)に組み込むことができます ## カスタム接続アプリの使用 Pardotアカウントに統合するには、[接続アプリ](https://help.salesforce.com/articleView?id=sf.connected_app_overview.htm&type=5)が必要です。TDは便利な接続アプリを用意していますが、独自に作成することもできます。Salesforceインスタンスにカスタムドメイン名を使用している場合、またはログインURLが`https://login.salesforce.com`でない場合は、カスタム接続アプリが必要です。 ### 接続アプリの定義 1. Salesforce Lightning Experienceにログインします。 2. `歯車`アイコンを選択します。 3. **設定**を選択します。 ![](/assets/screen-shot-2021-03-25-at-15.11.20.cf821f43f5944f9c884aba9e5d0a2c029b70481c03777d1ee0869a566a68a18a.da0a80a2.png) 1. **プラットフォームツール** > **アプリケーション**に移動します。 2. **アプリケーションマネージャー**を選択します。 ![](/assets/screen-shot-2021-03-25-at-15.15.38.c724dba603815a0c8d9b856aca5eed484ec417f56209d53fd03297326cc7b11e.da0a80a2.png) 1. **新規接続アプリケーション**を選択します。 ![](/assets/screen-shot-2021-03-25-at-15.16.28.82a23e565c1ac3a037c1a6048d3adac0badd24509b4af8c69f5c46b4463fa67a.da0a80a2.png) 1. **基本情報**に必要な情報を入力します ![](/assets/screen-shot-2021-03-25-at-15.18.00.3838a21b710346b674a14af89ea01916eba2360396404e689f9e001aec9a6b4c.da0a80a2.png) 1. **OAuth設定の有効化**を選択します。 ![](/assets/screen-shot-2021-03-25-at-15.20.51.3a0f1c97a434439970623e8bc16487dcd1db70cc6b7eccd8b3487cfe085ce056.da0a80a2.png) - **コールバックURL**に移動し、http://localhost:8080と入力します - **選択したOAuthスコープ**に移動し、`Access Pardot services (pardot_api)`と`Perform requests on your behalf at any time (refresh_token, offline_access)`を選択します - 最後までスクロールし、**保存**を選択してから**続行**を選択します 1. **コピー**を選択して、`コンシューマーキー`と`コンシューマーシークレット`をコピーします。これらはそれぞれ`クライアントID`と`クライアントシークレット`に使用されます。 ### Salesforce Pardotアカウントにアクセスするためのアプリの承認 1. Webブラウザを開き、以下を入力します: `https://{YOUR_SALESFORCE_LOGIN_URL}/services/oauth2/authorize?client_id={YOUR_CONSUMER_KEY}&redirect_uri=http://localhost:8080&response_type=code` - YOUR_SALESFORCE_LOGIN_URL: {SalesforceログインURL - 例:https://login.salesforce.com} - YOUR_CONSUMER_KEY: {接続アプリ作成手順で取得したコンシューマーキー} 完全なURLの例:https://login.salesforce.com/services/oauth2/authorize?client_id=xxxxxx&redirect_uri=http://localhost:8080&response_type=code 1. アカウントにログインし、**許可**を選択します ![](/assets/screen-shot-2021-03-25-at-15.40.47.973cc4413bf2b0db897430160dde9eaa29fc521084fccb22b08a2421c9acd87c.da0a80a2.png) 1. 存在しないページにリダイレクトされます。URLを選択し、**code=**の後のテキストをコピーし、**%3D**を**=**に置き換えます 例えば、URL `http://localhost:8080/?code=xxxx%3D%3D`の場合、`**xxxx==`**が次のステップでリフレッシュトークンを取得するためのコードです。 ### リフレッシュトークンの取得 上記のステップで取得した**code**を使用して、ターミナルでCURLを使用してリフレッシュトークンをリクエストします ```bash curl --request POST \ 'https://{your_salesforce_login_url}/services/oauth2/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=authorization_code' \ --data-urlencode 'code=your_code' \ --data-urlencode 'client_id=client_id' \ --data-urlencode 'client_secret=client_secret' \ --data-urlencode 'redirect_uri=http://localhost:8080' ``` リクエストを送信すると、以下のようなレスポンスが返されます ```json { "access_token": "xxxxx", "refresh_token": "xxxx", "signature": "xxxx", "scope": "refresh_token pardot_api", "instance_url": "xxxx", "id": "xxx", "token_type": "Bearer", "issued_at": "1616662486135" } ``` **refresh_token**の値が、**認証**画面で使用する**リフレッシュトークン**です。