Salesforce Pardot Reader
The Salesforce Pardot reader reads data from an instance of the Salesforce Pardot marketing automation tool using the Account Engagement API (see Get Started with Account Engagement API).
Feature summary and supported objects
The Striim Salesforce Pardot Reader supports the following features:
Salesforce Pardot Object API versions 3 and 4.
Salesforce Pardot sObjects.
OAuth authentication.
Reading from multiple Pardot objects with column filtering and exclusion.
Preserving existing operations and operation metadata.
Starting data capture from a specified initial timestamp.
Recovering data after a pipeline or system failure.
The Striim Salesfort Pardot Reader supports the following objects:
Name | Supported modes | Supported operations |
---|---|---|
Account | Initial Load | Insert |
Campaign | Initial Load | Insert |
CustomField | All | Insert |
CustomRedirect | All | Insert, Update |
DynamicContent | All | Insert, Update |
Initial Load | Insert | |
EmailClicks | All | Insert |
EmailTemplate | Initial Load | Insert |
Form | All | Insert, Update |
LifecycleHistory | All | Insert |
LifecycleStage | Initial Load | Insert |
ListMembership | All | Insert |
List | All | Insert, Update |
Opportunity | All | Insert |
Prospect | All | Insert, Update |
ProspectAccount | Initial Load | Insert |
Tag | All | Insert, Update |
TagObject | All | Insert |
User | All | Insert |
Visit | InitialLoad | Insert |
Visitor | All | Insert, Update |
VisitorActivity | All | Insert |
Verifying the Salesforce Pardot Reader configuration
Use the following cURL commands (see Using cURL in the REST Examples and curl.haxx.se) to verify your configuration and get information about available resources and sObjects.
Get an access token using the Salesforce login URL.
curl https://login.salesforce.com/services/oauth2/token -d "grant_type=password" \ -d "client_id=<your consumer key>" -d "client_secret=<your consumer secret>" \ -d "username=<your username>" -d "password=<your password>"
Using the access token returned by that command, test the REST API URL for your organization. The instance is typically the first part of the URL you see in your browser when logged into Salesforce, such as "mycompany" in mycompany.salesforce.com. Alternatively, ask your Salesforce technical administrator for access to a connected app. (For more information, see Understanding the Username-Password OAuth Authentication Flow.)
If you do not have a proxy server:
curl https://<your Salesforce instance>.salesforce.com/services/data/ \ -H 'Authorization: Bearer <token>'
If you have a proxy server (change the proxy server URL to match yours):
curl -x http://mycompany.proxy.server.com:8080/ \ https://<your Salesforce instance >.salesforce.com/services/data/ \ -H 'Authorization: Bearer <token>'
List available REST resources and sObjects (see List Available REST Resources and Get a List of Objects).
curl https://<your Salesforce instance>.salesforce.com/services/data/v41.0 \ -H 'Authorization: Bearer <token>' curl https://<your Salesforce instance>.salesforce.com/services/data/v41.0/sobjects \ -H 'Authorization: Bearer <token>'
For additional information, see Salesforce's REST API Developer Guide .
Configuring OAuth for Salesforce Pardot Reader
Authenticating Striim to Salesforce Pardot requires an active Salesforce account, a license for Salesforce Pardot, and a Striim app connected to Salesforce. Add the pardot_api
OAuth scope to the connected app.
Configuring OAuth for automatic authentication token renewal
From the connected app, get the values of the Consumer Key and Consumer Secret.
In the Salesforce Pardot Reader, set the values of the Consumer Key and Consumer Secret.
Generate a security token following the instructions in Salesforce documentation.
In the Salesforce Pardot Reader, set the value of the Security token.
Configuring OAuth for manual authentication token renewal
Generate an authentication token using the following command:
curl https://login.salesforce.com/services/oauth2/token -d "grant_type=password"\ -d "client_id=<your consumer key>"\ -d "client_secret=<your consumer secret>"\ -d "username=<your username>"\ -d "password=<your password>"
In the Salesforce Pardot Reader, set the value of the authentication token.
Generate a security token following the instructions in Salesforce documentation.
In the Salesforce Pardot Reader, set the value of the Security token.
Salesforce Pardot Reader properties
property | type | default value | notes |
---|---|---|---|
Auth Token | com.webaction. security.Password | If autoAuthTokenRenewal is set to false , specify your Salesforce access token (see Set Up Authorization on developer.salesforce.com: the first section, "Setting Up OAuth 2.0," explains how to create a "connected app"; the second section, "Session ID Authorization," explains how to get the token using When Auto Auth Token Renewal is | |
Auto Auth Token Renewal | Boolean | False | With the default value of False, when the specified Auth Token expires the application will halt and you will need to modify it to update the auth token before restarting. This setting is recommended only for development and testing, not in a production environment. When this property is False, you must specify Auth Token, Password, and Username. Set to True to renew the auth token automatically. In this case, leave Auth Token blank and set the Consumer Key, Consumer Secret, Password, Security Token, and Username properties. |
Business Unit ID | String | Specify the Account Engagement instance from which the adapter will read (see Find my Account Engagement Account ID). | |
Connection Retry Policy | String | retryInterval=30, maxRetries=3 | With the default setting, if a connection attempt is unsuccessful, the adapter will try again in 30 seconds ( |
Consumer Key | String | If Auto Auth Token Renewal is set to true, specify the Consumer Key (see Set Up Authorization on developer.salesforce.com). | |
Consumer Secret | String | If Auto Auth Token Renewal is set to true, specify the Consumer Key (see Set Up Authorization on developer.salesforce.com). When Auto Auth Token Renewal is | |
Custom Params | String | This property optionally enables overrides for individual source parameters while fetching records. Salesforce documentation provides a complete list of parameters for different objects. The parameter format is | |
Exclude Objects | String | Optionally, specify a list of objects, separated by semicolons, to be excluded from any wildcard selection specified in sObjects. This property does not support wildcards. | |
Export Status Check interval | String | 120s | This property specifies how often, in seconds, Striim will check the status of a bulk export job. Higher values result in fewer API calls and directly affect the performance of an export job. When Use Bulk Export is False, this property is ignored and does not appear in Flow Designer. |
JWT Certificate Name | String | When Auto Auth Token is False or OAuth Authorization Flows is PASSWORD, this property is ignored and not visible in the Flow Designer. | |
JWT Keystore Password | com.webaction. security.Password | When Auto Auth Token is False or OAuth Authorization Flows is PASSWORD, this property is ignored and not visible in the Flow Designer. | |
JWT Keystore Path | String | When Auto Auth Token is False or OAuth Authorization Flows is PASSWORD, this property is ignored and not visible in the Flow Designer. | |
Migrate Schema | Boolean | False | Do not change this setting. It is reserved for use by applications created using Auto Schema Conversion wizards (see Using Auto Schema Conversion). |
Mode | Enum | InitialLoad | This setting controls the basic behavior or the adapter. Use the default value of InitialLoad to read all existing data and stop. Set to IncrementalLoad to read all new data continuously. |
OAuth Authorization Flows | enum | PASSWORD | This property selects the authorization method the adapter will use. With the default value of PASSWORD, Salesforce Writer will authorize using OAuth 2.0 username and password (see Salesforce Help> Docs> Identify Your Users and Manage Access > OAuth 2.0 Username-Password Flow for Special Scenarios). In this case, you must specify values for the Consumer Key, Consumer Secret, Password, Security Token, and Username properties. Set to JWT_BEARER to authorize using OAuth 2.0 JWT bearer tokens instead (see Salesforce Help> Docs> Identify Your Users and Manage Access > OAuth 2.0 JWT Bearer Flow for Server-to-Server Integration). In this case, you must specify the Consumer Key, JWT Certificate Name, JWT Keystore Password, JWT Keystore Path, and Username properties. |
Objects | See sObjects. | ||
Pardot API Version | Enum | V4 | With the default value of V4, the reader will use Salesforce Pardot API version 4. Set to V3 to use API version 3. |
Password | com.webaction. security.Password | When Auto Auth Token Renewal is set to true, specify the password for the specified Username (see Encrypted passwords). When Auto Auth Token Renewal is False or OAuth Authorization Flows is JWT_BEARER, this property is ignored and not visible in the Flow Designer. | |
Polling Interval | String | 120s | This property controls how often the adapter reads from the source. By default, it checks the source for new data every two minutes (120 seconds). If there is new data, the adapter reads it and sends it to the adapter's output stream. If you encounter Salesforce REQUEST_LIMIT_EXCEEDED errors, you may need to increase this value or contact Snowflake to raise your API limits (see Salesforce Developer Limits and Allocations Quick Reference). When Mode is InitialLoad, this property is ignored and not displayed in the Flow Designer. |
Security Token | com.webaction. security.Password | When Auto Auth Token Renewal is set to When Auto Auth Token Renewal is False or OAuth Authorization Flows is JWT_BEARER, this property is ignored and not visible in the Flow Designer. | |
sObjects | String | Specify which standard objects to be read from Salesforce Pardot. To read all objects, use the In the Flow Designer this property is shown as Objects. For more information, see Account Engagement API / Get Started / Object Field References. | |
Start Timestamp | String | By default, Salesforce Pardot Reader reads only new events. Optionally, specify the time (based on LastModifiedDate) from which to start reading older events in the format | |
Thread Pool Count | Integer | 0 | With the default value of 0, the reader uses a single thread in the Striim JVM. Set this number to match the number of concurrent transactions for your Account Engagement API (see Get Started with Account Engagement API > Rate Limits). |
Use Bulk Export | Boolean | False | When Mode is InitialLoad, this controls which API the adapter will use. (When Mode is IncrementalLoad, this property is ignored and not displayed in the Flow Designer.) With the default value of False, the reader uses the Account Engagement API. Set to true to use the asynchronous bulk export API (see Version 4 Docs / Export / Export API Overview) during initial load. The following objects support bulk export:
Bulk export is limited to one year of historical data. Use the When Use Bulk Export is True, the Export Status Check Interval property is enabled. |
Username | String | If Auto Auth Token Renewal is set to true, specify an appropriate username (see Add a Single User on help.salesforce.com). When Auto Auth Token Renewal is |
The output type is WAEvent.
Sample TQL for Salesforce Pardot Reader
The following TQL will perform an initial load (since the default Mode is InitialLoad):
CREATE SOURCE PardotIL USING SalesforcePardotReader ( autoAuthTokenRenewal: true, OAuthAuthorizationFlows: 'PASSWORD', ThreadPoolCount: '5', securityToken: '<user_security_token>', UserName: '<username>', BusinessUnitId: '<pardot_business_unit_id>', consumerKey: '<connected_app_consumer_key>', consumerSecret: '<connected_app_consumer_secret>', SObjects: '%', Password: '<user_password>' ) OUTPUT TO PardotIL_OutputStream;
Salesforce Pardot reader limitations
The Account Engagement API supports up to five concurrent transactions (see Get Started with Account Engagement API > Rate Limits). Exceeding this limit may cause your application to terminate.
When an object does not support incremental load, all records for that object are synced at each poll. To avoid duplicate records, enable Merge mode for the targets of such objects.
When an object does not have a createAt or updatedAt field and Striim can not otherwise determine a timestamp for the object, it will be duplicated in the target at every polling interval.