Setting up Salesforce

Updated by Andreea Oprea

Dreamdata needs to connect to your CRM system in order to work properly. This is used to collect data on your customer accounts and link it to the tracking data, thus being able to create attribution to touches in your customer journeys.

Note: It can take up to 48 hours for the data to appear in the Dreamdata app after a successful integration.

In this article, you will learn:

  • Step-by-step setting up guidance for Salesforce source.
  • What data is pulled, and how it is mapped to Dreamdata.
  • Common FAQs and troubleshooting guidance related to Salesforce.

Setup Instructions

  1. Navigate to: Data Platform > Sources
  2. Select Salesforce
    On the Sources page, find and click "Salesforce" either by clicking the "CRM" category or by searching for it.
  3. (Optional) Toggle "Use sandbox environment" for testing. Read more about sandbox implementation below.
  4. Click "Enable"
  5. Choose if Salesforce is your Primary CRM
    If you haven't selected a CRM system for your Dreamdata account yet, you will be prompted with the question: "Is Salesforce your Primary CRM?". Select the option that applies to you.
  6. Sign in to the Salesforce account with the required permissions.
    Make sure that the account used has access to the needed data, as detailed in the FAQ section below, and the “Approve Uninstalled Connected Apps” and "API Enabled" administrative permissions are enabled.
  7. Click Allow to grant access.
  8. You're all set 🔥
    It can take up to 24 – 48 hours before all the historical data available for your plan begins to appear. We retrieve all records updated within the last 10 years (based on SystemModStamp).
Sandbox Configuration

To test using your sandbox environment, please enable the "Use sandbox environment" option. We recommend limiting the amount of data in your sandbox to optimize the testing period.

Important Sandbox Constraints:

  • Static Data: Data is static from the moment of connection. New data added to the Sandbox after the connection is NOT automatically detected.
  • Data Removal: You must contact Dreamdata support to remove Sandbox data before connecting your Production environment to ensure a smooth process and avoid quota issues.
Note: Please email friends@dreamdata.io if you need to:
1. Retrieve new data added to your Sandbox after the initial connection.
2. Remove Sandbox data before switching to Production.

Data Mapping: Salesforce -> Dreamdata

Tip: To see a list of all Salesforce Objects and Fields that Dreamdata pulls, click here.
  • Account: Your accounts will be mapped to Companies in Dreamdata. This will enable you to see all of your sales and marketing activities for each company in one place.
  • Contact: Your contacts will be mapped to Contacts in Dreamdata. This will allow you to track the engagement of individual contacts across multiple channels.
  • Opportunity: Your opportunities will be mapped to Deals in Dreamdata. This will give you a clear picture of your sales pipeline, including the value of each deal and the stage of the sales process it's in.
  • Lead: Your leads can potentially be mapped to ContactsCompanies, and Deals in Dreamdata.
  • Contacts and unconverted leads: An object containing the union of your leads that did not convert and your contacts.
  • Task and Campaign Member: Your tasks and campaign members will be mapped to Events in Dreamdata. These events can then be linked to specific customer journeys and applied with attributions.
Note: Most Salesforce objects are included in the Free plan. The only exceptions are Task and Campaign Member, which are exclusive to Paid plans.
Can we include custom objects in Dreamdata?

If you have created a custom object in Salesforce and would like to use it in Dreamdata to build stage models based on it, you can do so by going to the Salesforce source page and adding your custom object.

After clicking the Add Custom Object button, you will be prompted to select the custom object you desire to include. To be able to map the custom object, you need to select one of the existing objects (Account, Contacts, or Leads) and select which property from your custom object represents the ID of an account, contact, or lead.

You can connect a custom object to either Account, Contacts, or Leads, or to both Contacts and Leads. We do not support a combination of Accounts and Contacts or Leads at the moment.

The custom object data will be available in Dreamdata within 24 hours. This feature is available for Advanced plans.

Event Mapping

Here you can find 6 types of events that Dreamdata automatically includes and links to relevant customer journeys after your Salesforce data is synced.

For the Task object:
  • meeting
    • Trigger: Type OR Task Subtype equals 'Meeting' AND Status equals 'Completed'.
    • Mapping: Channel: 'Meetings', Source: 'Meeting'.
    • Timestamp: Completed Date/Time.
  • phone_call
    • Trigger: Type OR Task Subtype OR SalesLoft Type equals 'Call' AND Status equals 'Completed'.
    • Mapping: Channel: 'Calls', Source: 'Call'.
    • Timestamp: Completed Date/Time.
For the Campaign Member object:
  • registered_event
    • Trigger: Campaign Type equals 'Event'
    • Mapping: Channel: 'Events', Source: 'Events'.
    • Timestamp: Campaign Member Created Date property.
  • attended_event
    • Trigger: Campaign Type equals 'Event'
    • Mapping: Channel: 'Events', Source: 'Events'.
    • Timestamp: Campaign Member First Responded Date property.
  • registered_webinar
    • Trigger: Campaign Type equals 'Webinar'
    • Mapping: Channel: 'Events', Source: 'Events'.
    • Timestamp: Campaign Member Created Date property.
  • attended_webinar
    • Trigger: Campaign Type equals 'Webinar'
    • Mapping: Channel: 'Events', Source: 'Events'.
    • Timestamp: Campaign Member First Responded Date property.
Can we include more events in customer journeys?

Absolutely! Dreamdata offers flexibility in terms of customising and including more events in customer journeys based on the Salesforce objects mentioned below:

  • Campaign Member
  • Task
  • Event
  • Contact
  • Account
  • Lead

To include additional events, you can collaborate with your dedicated customer success manager. They can guide you on the steps to follow and help you add or exclude the events as required. Dreamdata's ability to include custom events based on Salesforce objects enables businesses to capture more granular data and obtain a better understanding of customer behavior. With this valuable insight, you can optimize your customer journeys and improve your marketing and sales efforts.

FAQ

What specific access is required for the integration?
  • General User Permissions -> Access Activities
  • Administrative Permissions -> API Enabled, View All Users, and View Roles and Role Hierarchy
  • Standard Object Permissions -> View All access needed for: Accounts, Campaigns, Contacts, Leads, and Opportunities
  • Record Type Settings for: Accounts, Campaigns, Campaign Members, Contacts, Events, Leads, Opportunities, and Task

Field level permissions can also be used to give access to all the individual fields needed. It is important to keep the fields with permissions fixed to ensure all relevant data can be seen in Dreamdata reports.

What Salesforce objects do we pull?

By default, we pull all fields of the following objects:

  • Account
  • AccountHistory
  • Contact
  • ContactHistory
  • Campaign
  • CampaignMember
  • Lead
  • LeadHistory
  • Opportunity
  • OpportunityFieldHistory
  • OpportunityContactRole
  • User
  • UserRole
  • Event
  • Task
  • RecordType

To see the fields in detail under each of these objects, click here.

Does Dreamdata need both read and write access to Salesforce API? Can write access be restricted?
  • Dreamdata always prioritizes read-only access for integrations when this option is available. However, in the case of Salesforce, this capability is not provided by Salesforce. The scopes employed by Dreamdata, namely id, api, and refresh_token, ensure the identification of the person who connects Salesforce and the retrieval of necessary data. It's important to note that Dreamdata does not perform any data modification within Salesforce when using Salesforce as a source.
How does Dreamdata handle rate limits?
  • Dreamdata synchronizes your Salesforce data daily, at the time selected in the Data Modelling Schedule tab (under Data Hub). However, if 80% of the daily API quota limit has already been utilized before the data retrieval process, Dreamdata will not sync data on that particular day to prevent any disruption to your daily operations. Rest assured that any missing data will be retrieved and updated during the subsequent sync, ensuring a complete and accurate synchronization when there is sufficient daily API quota available.
How much data does Dreamdata retrieve?
  • If the API quota limit is not already utilized, we try to pull all the records that were created or updated since our last successful data retrieval. This process occurs in batches of 2000 records, ensuring that we stay within 80% of the API quota limit between each batch. If 80% of the API quota limit is reached, we stop further data retrieval. Each batch of 2000 records counts as one API call.
How does Dreamdata handle parent & child accounts?
  • Dreamdata does not use the Parent or Child hierarchy from Accounts at the moment. You can read more about it here.
What if an account has more than one domain?
  • Salesforce currently does not have native support for multiple domains per account.
When does Dreamdata pull an object?
  • When the systemModstamp field on an object changes, Dreamdata will flag the change and re-sync the object's data. If you update an object but the systemModstamp does not change, Dreamdata will not pull the new object information.
How does Dreamdata ingest calculated fields?
  • Dreamdata pulls all updated fields, which are flagged by a change in the systemModestamp field. However, Salesforce does not update the systemModstamp when a calculated field is updated. This means that the update to a calculated field will only be captured when a later change updates the systemModstamp. Possible workarounds are to build an automation that sets a fixed field value instead of a calculated, or trigger an update when a calculated field changes.
Does Dreamdata ingest relational record information?
  • Dreamdata will pull the API names of fields. Relational fields display as numbers in Dreamdata instead of the label name.
  • In order for our platform to present readable text instead of internal Salesforce IDs, you must create a custom formula field in your Salesforce org. that returns the text value (such as Name or Label) from the related object. This change must be made on your end.
How far back can Dreamdata retrieve Salesforce data?
  • Depending on your plan, you may get up to 3 years of historical user activity in your Dreamdata account.

Troubleshooting

Error: OAUTH_APP_BLOCKED this app is blocked by admin (visible in the URL)

The Dreamdata App has been blocked in your Salesforce account. You can resolve this by following these steps:

  1. In Salesforce, navigate to Setup
  2. Type Connected Apps into the Quick Find box
  3. Click on Connected Apps OAuth Usage
  4. Locate the Dreamdata App - The Action button for the app will likely be Unblock, which means the Dreamdata App has been blocked
  5. To allow access, click the Unblock action to unblock the app
  6. Try to connect again from Dreamdata - the access screen will now be shown
Error: app must be installed into org (visible in the URL)

The Dreamdata App needs to be installed in your Salesforce account. To be able to do so, the account used to connect needs to have the “Approve Uninstalled Connected Apps” and "API Enabled" administrative permissions enabled. The error appears when the permissions are missing. Contact your admin to receive these permissions for the account used to connect and try again.


How did we do?