Skip to main content

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

Email

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.

  1. 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>"
    
  2. 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>'
  3. 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
  1. From the connected app, get the values of the Consumer Key and Consumer Secret.

  2. In the Salesforce Pardot Reader, set the values of the Consumer Key and Consumer Secret.

  3. Generate a security token following the instructions in Salesforce documentation.

  4. In the Salesforce Pardot Reader, set the value of the Security token.

Configuring OAuth for manual authentication token renewal
  1. 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>"
  2. In the Salesforce Pardot Reader, set the value of the authentication token.

  3. Generate a security token following the instructions in Salesforce documentation.

  4. 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 curl).

When Auto Auth Token Renewal is True, this property is ignored and does not appear in Flow Designer.

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 (retryInterval. If the second attempt is unsuccessful, in 30 seconds it will try a third time (maxRetries). If that is unsuccessful, the adapter will fail and log an exception. Negative values are not supported.

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 False, this property is ignored and does not appear in Flow Designer.

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 <Object_name>=<param1>:<param1_value>|<param2>:<param2_value>. Separate multiple objects with the ; character. For example, when Use Bulk Export is True,, Prospect=created_after:2021-01-01; VisitorActivity=created_before:2023-01-01. The date format must be YYYY-MM-DD.

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

See Salesforce Help> Docs> Identify Your Users and Manage Access > OAuth 2.0 JWT Bearer Flow for Server-to-Server Integration.

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

See Salesforce Help> Docs> Identify Your Users and Manage Access > OAuth 2.0 JWT Bearer Flow for Server-to-Server Integration.

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

See Salesforce Help> Docs> Identify Your Users and Manage Access > OAuth 2.0 JWT Bearer Flow for Server-to-Server Integration.

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 true, specify the security token for the specified username (see Reset Your Security Token on help.salesforce.com).

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 % wildcard. Alternatively, list multiple objects separated by semicolons.

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 yyyy-MM-dd HH:mm:ss. If the Salesforce organization's time zone is not the same as Striim's, convert the Salesforce start time to UTC (GMT+00:00) and include a Z at the end of the string. See SimpleDateFormat for more information.

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:

  • ExternalActivity

  • ListMembership

  • Prospect

  • ProspectAccount

  • Visitor

  • VisitorActivity

Bulk export is limited to one year of historical data. Use the created_after and created_before in the Custom Params property to specify a custom export window (see Version 4 Docs / Export / Export API Overview / Query).

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 False, this property is ignored and does not appear in Flow Designer.

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.