Salesforce Push Topic
A Salesforce Push Topic is a supported Sync Source that you can use in your Cinchy data syncs. The below documentation will refer to the parameters necessary to set up your Push Topic as part of your sync configuration.
You can use a Push Topic already configured in Salesforce, or have Cinchy Event Listener create the Push Topic for you.
Cinchy will compare the JSON with the properties on the push topic in Salesforce by name. If the attributes match, the listener will start listening on the push topic.
Cinchy will compare the JSON with the properties on the push topic in Salesforce by name. If any of the attributes do not match, Cinchy will sync the push topic from Salesforce into Cinchy and disable the listener.
If the Push Topic name does not exist in Salesforce, Cinchy will attempt to create the Push Topic. If it is successful, it will sync in the Id from Salesforce and start listening on the push topic.
To set up an Stream Source, you must navigate to the Listener Config table and insert a new row for your data sync (Image 1). Most of the columns within the Listener Config table persist across all Stream Sources, however exceptions will be noted. You can find all of these parameters and their relevant descriptions in the tables below.

Image 1: The Listener Config table
General Parameters
Topic
Connection Attributes
The following column parameters can be found in the Listener Config table:
Parameter | Description | Example |
---|---|---|
Name | Mandatory. Provide a name for your Listener Config. | SF Push Topic Real-Time Sync |
Event Connector Type | Mandatory. Select your Connector type from the drop down menu. | Salesforce Push Topic |
Topic | Mandatory. This field is expecting a JSON formatted value specific to the connector type you are configuring. | See the Topic tab. |
Connection Attributes | Mandatory. This field is expecting a JSON formatted value specific to the connector type you are configuring. | See the Connection Attributes tab. |
Status | Mandatory. This value refers to whether your listener config/real-time sync is turned on or off. Make sure you keep this set to Disabled until you are confident you have the rest of your data sync properly configured first. | Disabled |
Data Sync Config | Mandatory. This drop down will list all of the data syncs on your platform. Select the one that you want to use for your real-time sync. | Salesforce Data Sync |
Subscription Expires On | This value is only relevant for Salesforce Stream Sources. This field is a timestamp that is auto-populated when it has successfully subscribed to a topic. | |
Message | Leave this value blank when setting up your configuration. This field will auto-populate during the running of your sync with any relevant messages. For instance "Cinchy listener is running", or "Listener is disabled". | |
Auto Offset Reset | Earliest, Latest or None.
In the case where the listener is started and either there is no last message ID, or when the last message ID is invalid (due to it being deleted or it's just a new listener), it will use this column as a fallback to determine where to start reading events from.
Earliest will start reading from the beginning on the queue (when the CDC was enabled on the table). This might be a suggested configuration if your use case is recoverable or re-runnable and if you need to reprocess all events to ensure accuracy.
Latest will fetch the last value after whatever was last processed. This is the typical configuration.
None will not read start reading any events.
You are able to switch between Auto Offset Reset types after your initial configuration through the below steps:
1. Navigate to the Listener Config table.
2. Re-configure the Auto Offset Reset value.
3. Set the "Status" column of the Listener Config to "Disabled".
4. Navigate to the Event Listener State table.
5. Find the column that pertains to your data sync's Listener Config and delete it.
6. Navigate back to the Listener Config table.
7. Set the "Status" column of the Listener Config to "Enabled" in order for your new Auto Offset Reset configuration to take effect. | Latest |
The below table can be used to help create your Topic JSON needed to set up a real-time sync.
Parameter | Description | Example |
---|---|---|
Id | | |
Name | Mandatory. Descriptive name of the PushTopic. Note that there is a 25 character limit on this field. | LeadsTopic |
Query | Mandatory. The SOQL query statement that determines which record changes trigger events to be sent to the channel. Note that there is a 1,300 character limit on this field. | SELECT Id, Name, Email FROM Lead |
ApiVersion | Mandatory. The API version to use for executing the query specified in Query. It must be an API version greater than 20.0. If your query applies to a custom object from a package, this value must match the package's ApiVersion. | 47.0 |
NotifyForOperationCreate | Set this to true if a create operation should generate a notification, otherwise, false. Defaults to true. | true |
NotifyForOperationUpdate | Set this to true if an update operation should generate a notification, otherwise, false. Defaults to true. | true |
NotifyForOperationUndelete | Set this to true if an undelete operation should generate a notification, otherwise, false. Defaults to true. | true |
NotifyForOperationDelete | Set this to true if a delete operation should generate a notification, otherwise, false. Defaults to true. | true |
NotifyForFields | Specifies which fields are evaluated to generate a notification. Possible values are:
| Referenced |
Example Topic JSON
{
"Id": "",
"Name": "LeadsTopic",
"Query": "SELECT Id, Name, Email FROM Lead",
"ApiVersion": 47.0,
"NotifyForOperationCreate": true,
"NotifyForOperationUpdate": true,
"NotifyForOperationUndelete": true,
"NotifyForOperationDelete": true,
"NotifyForFields": "Referenced"
}
The below table can be used to help create your Connection Attributes JSON needed to set up a real-time sync.
Parameter | Description | Example |
---|---|---|
ApiVersion | Mandatory. Your Salesforce API Version. Note that this needs to be an exact match; for instance "47.0" cannot be written as simply "47". | 47.0 |
GrantType | This value should be set to "password". | password |
ClientId | The encrypted Salesforce Client ID. You can encrypt this value using the Cinchy CLI. | Bn8UmtiLydmYQV6//qCL5dqfNUMhqchdk959hu0XXgauGMYAmYoyWN8FD+voGuMwGyJa7onrc60q1Hu6QFsQXHVA== |
ClientSecret | The encrypted Salesforce Client Secret. You can encrypt this value using the Cinchy CLI. | DyU1hqde3cWwkPOwK97T6rzwqv6t3bgQeCGq/fUx+tKI= |
Username | The encrypted Salesforce username. You can encrypt this value using the Cinchy CLI. | dXNlcm5hbWVAZW1haWwuY29t |
Password | The encrypted Salesforce password You can encrypt this value using the Cinchy CLI. | cGFzc3dvcmRwYXNzd29yZA== |
InstanceAuthUrl | The authorization URL for Salesforce instance. |
{
"ApiVersion": 47.0,
"GrantType": "password",
"ClientId": "Bn8UmtiLydmYQV6//qCL5dqfNUMhqchdk959hu0XXgauGMYAmYoyWN8FD+voGuMwGyJa7onrc60q1Hu6QFsQXHVA==",
"ClientSecret": "DyU1hqde3cWwkPOwK97T6rzwqv6t3bgQeCGq/fUx+tKI=",
"UserName": "dXNlcm5hbWVAZW1haWwuY29t",
"Password": "cGFzc3dvcmRwYXNzd29yZA=="
"InstanceAuthUrl": "https://login.salesforce.com/services/oauth2/token"
}
Last modified 4mo ago