Treasure Dataから直接Salesforce Pardotにジョブ結果(見込み客またはリストメンバーシップの形式)を送信して、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を見つけるには、SalesforceのSetupを使用します。PardotビジネスユニットIDは「0Uv」で始まる18文字です。
Pardot Account Setupの情報にアクセスできない場合は、Salesforce管理者にPardotビジネスユニットIDの提供を依頼してください。https://developer.pardot.com/kb/authentication/
Pardotでの認証には、ビジネスユニットIDの入力が必要です。
Pardotへのログインに使用するのと同じアカウントを使用してSalesforceにログインします。
Setup > Pardot > Pardot Account Setupに移動します。または、Setupから「Quick Find」ボックスに「Pardot Account Setup」と入力します。

複数のPardotビジネスユニットがある場合があります。PardotビジネスユニットIDは「0Uv」で始まる18文字です。
Treasure Data内でPardot認証を定義するには、カスタム接続アプリ、適切な認可、およびリフレッシュトークンがすべて必要です。
このHTMLページの末尾にあるカスタム接続アプリの使用の手順を参照してください。
TDコンソールでクエリを実行する前に、データ接続を作成して設定する必要があります。データ接続の一部として、以下の手順に従って統合にアクセスするための認証を提供します。

- TDコンソールを開きます。
- Integrations Hub > Catalogに移動します。
- Salesforce Pardotを検索して選択します。
- Create Authenticationを選択し、以下で説明する統合の認証情報を入力します。
- Continueを選択し、認証の名前を入力してDoneを選択します。
| フィールド | 説明 |
|---|---|
| Pardot Host | Productionアカウントを使用している場合はhttps://pi.pardot.comです。Pardot Developer OrgまたはSandboxアカウントの場合はhttps://pi.demo.pardot.comです |
| Pardot Business ID | PardotビジネスユニットID |
| Connected App |
|
| OAuth connection | Treasure Data Connected Appの場合、Click hereを選択し、認可フローに従ってOAuthを提供します。続行するには、Integrations Hub Catalogに移動してSalesforce Pardotを検索する必要がある場合があります。 |
| Client ID | Custom Connected Appの場合、こちらを参照して接続アプリを作成し、対応するフィールドにClient ID、Client Secret、Login URL、Refresh Tokenを入力します |
| Client Secret | 接続アプリのクライアントシークレット |
| Login URL | SalesforceインスタンスのログインURL |
| Refresh token | カスタムアプリの認可後に取得するリフレッシュトークン |
TDコンソールは、データをエクスポートする複数の方法をサポートしています。Data Workbenchからデータをエクスポートするには、以下の手順に従ってください。
- Data Workbench > Queriesに移動します
- New Queryを選択し、クエリを定義します
- Export Resultsを選択してデータエクスポートを設定します
- 既存のPardot認証を選択するか、上記のセクションに従って新しい認証を作成します
- 以下で説明するエクスポートパラメータを設定し、Doneを選択します

| フィールド | 説明 |
|---|---|
| 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のままにする必要があります |
| 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に見込み客をアップサート
SELECT
'xxx' as id
FROM
prospect_table
-- Or
SELECT
email
FROM
prospect_table| 列名 | データ型 | 説明 | 必須? |
|---|---|---|---|
| prospect_id | Integer | 見込み客のID | ✅ |
| list_id | Integer | リストのID | ✅ |
サンプルクエリ
SELECT
list_id,
prospect_id
FROM (VALUES (xxx, yyyy)) AS table1(list_id, prospect_id);| 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へのリクエストの最大接続時間 |
Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。
Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。
2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。
例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。
Data Workbench > Queries に移動します
新しいクエリを作成するか、既存のクエリを選択します。
Schedule の横にある None を選択します。

ドロップダウンで、次のスケジュールオプションのいずれかを選択します:

ドロップダウン値 説明 Custom cron... Custom cron... の詳細を参照してください。 @daily (midnight) 指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。 @hourly (:00) 毎時 00 分に実行します。 None スケジュールなし。

| 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) に実行するようにスケジュールを設定します。 |
- (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。
クエリに名前を付けて保存して実行するか、単にクエリを実行します。クエリが正常に完了すると、クエリ結果は指定された宛先に自動的にエクスポートされます。
設定エラーにより継続的に失敗するスケジュールジョブは、複数回通知された後、システム側で無効化される場合があります。
(オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。
Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。
- Audience Studio に移動します。
- parent segment を選択します。
- ターゲット segment を開き、右クリックして、Create Activation を選択します。
- Details パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
- Output Mapping パネルで activation 出力をカスタマイズします。

- 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 番号。
- + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
- Schedule を設定します。

- スケジュールを定義する値を選択し、オプションでメール通知を含めます。
- Create を選択します。
batch journey の activation を作成する必要がある場合は、Creating a Batch Journey Activation を参照してください。
Pardotアカウントに統合するには、接続アプリが必要です。TDは便利な接続アプリを用意していますが、独自に作成することもできます。Salesforceインスタンスにカスタムドメイン名を使用している場合、またはログインURLがhttps://login.salesforce.comでない場合は、カスタム接続アプリが必要です。
Salesforce Lightning Experienceにログインします。
歯車アイコンを選択します。設定を選択します。

プラットフォームツール > アプリケーションに移動します。
アプリケーションマネージャーを選択します。

- 新規接続アプリケーションを選択します。

- 基本情報に必要な情報を入力します

- OAuth設定の有効化を選択します。

- コールバックURLに移動し、http://localhost:8080と入力します
- 選択したOAuthスコープに移動し、
Access Pardot services (pardot_api)とPerform requests on your behalf at any time (refresh_token, offline_access)を選択します - 最後までスクロールし、保存を選択してから続行を選択します
- コピーを選択して、
コンシューマーキーとコンシューマーシークレットをコピーします。これらはそれぞれクライアントIDとクライアントシークレットに使用されます。
- 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
- アカウントにログインし、許可を選択します

- 存在しないページにリダイレクトされます。URLを選択し、code=の後のテキストをコピーし、%3Dを**=**に置き換えます
例えば、URL http://localhost:8080/?code=xxxx%3D%3Dの場合、**xxxx==**が次のステップでリフレッシュトークンを取得するためのコードです。
上記のステップで取得したcodeを使用して、ターミナルでCURLを使用してリフレッシュトークンをリクエストします
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'リクエストを送信すると、以下のようなレスポンスが返されます
{
"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の値が、認証画面で使用するリフレッシュトークンです。