You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/connections/destinations/catalog/braze/index.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -284,7 +284,7 @@ The `inAppMessages` parameter will be an array of [`appboy.ab.InAppMessage`](htt
284
284
285
285
#### iOS
286
286
287
-
1. Follow the directions to register for push at in [Segment's iOS library](/docs/connections/sources/catalog/libraries/mobile/ios/) docs.
287
+
1. Follow the directions to register for push at in [Segment's iOS library](/docs/connections/sources/catalog/libraries/mobile/ios/ios-faqs/#how-do-i-use-push-notifications) docs.
288
288
2. Add the following to your application:didFinishLaunchingWithOptions
Copy file name to clipboardExpand all lines: src/connections/destinations/catalog/salesforce/index.md
+31-25
Original file line number
Diff line number
Diff line change
@@ -3,24 +3,27 @@ title: Salesforce Destination
3
3
strat: salesforce
4
4
---
5
5
6
+
> info ""
7
+
> Segment is aware of Salesforce's plans to enforce multi-factor authentication in 2022, and is evaluating solutions to ensure uninterrupted connectivity with your Salesforce account.
6
8
7
9
Segment's Salesforce destination allows you to identify leads without using SOAP APIs.
8
10
9
11
### API Access
10
12
11
-
You'll need to provide API access to Segment using a Salesforce user credentials. Since we use Salesforce's SOAP API, you'll need to provide an email, password, and security token to get access to their API.
13
+
Segment uses the Salesforce SOAP API to connect. This API requires the following credentials of a registered Salesforce user:
14
+
- email
15
+
- password
16
+
- security token
12
17
13
-
Since we don't want to ask for the password of one of your actual user accounts, we recommend you create a new Salesforce user account for Segment. We realize an extra user account costs money, so feel free to use an existing account if you wish.
18
+
Segment recommends that you create a separate user account specifically for this destination, if possible.
14
19
15
-
If you decide to create a new user account for the Segment API, create this user by going to *Setup > Administration set up > Users > New User*, and creating a new user with a System Administrator profile. This profile is required to give us enough permissions to access the API.
20
+
If you decide to create a new user account for the Segment API, create this user by going to *Setup > Administration set up > Users > New User*, and creating a new user with a System Administrator profile. This profile is required to give Segment enough permissions to access the API.
16
21
17
-
Also make sure that IP Security is disabled in this Salesforce user account. This is because our servers often change and its hard to predict their IPs.
18
-
19
-
- - -
22
+
Also make sure that IP Security is disabled in this Salesforce user account. This is because Segment's servers often change and its hard to predict their IPs.
20
23
21
24
## Identify
22
25
23
-
Our destination makes it simple to integrate Salesforce. This destination supports the most important pain point for Salesforce users: getting your prospective customers into Salesforce as Leads from your website or mobile app. Creating/updating Leads is the default behavior of `identify` events. If you would like to customize this you can do so leveraging[Actions](#custom-actions)
26
+
This destination supports the most important pain point for Salesforce users: getting your prospective customers into Salesforce as Leads from your website or mobile app. Creating/updating Leads is the default behavior of `identify` events. If you would like to customize this you can do so using[Actions](#custom-actions)
Additionally, if you're using another destination, like Intercom, that requires the company trait to be an object, you can pass the name of the company as follows and our destination will still map it as expected.
53
+
Additionally, if you're using another destination, like Intercom, that requires the company trait to be an object, you can pass the name of the company as follows and the destination still maps it as expected.
51
54
52
55
Also, you can send the address data in a object as well.
When you call `identify`, we'll check to see if this Lead exists based on the `email` trait. If it does, we'll update the Lead with the traits you've passed in your `identify` call, otherwise we'll create a Salesforce Lead.
80
+
When you call `identify`, Segment checks to see if this Lead exists based on the `email` trait. If it does, Segment updates the Lead with the traits you've passed in your `identify` call, otherwise Segment creates a Salesforce Lead.
78
81
79
-
**IMPORTANT**: If you're planning to update custom fields in Salesforce with Segment, you need to make sure you create the custom Lead Field inside Salesforce *prior* to sending the data. The [Salesforce API for Leads](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_lead.htm) requires `lastName` and `company`. If either of this fields are not present in a server-side request we will automatically append the string `'n/a'` to each of those fields even if you have provided those fields in a previous request.
82
+
> warning ""
83
+
> If you're planning to update custom fields in Salesforce with Segment, you need to make sure you create the custom Lead Field inside Salesforce *prior* to sending the data. The [Salesforce API for Leads](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_lead.htm) requires `lastName` and `company`. If either of this fields are not present in a server-side request Segment appends the string `'n/a'` to each of those fields even if you have provided those fields in a previous request.
80
84
81
-
For example, if you want to collect a custom trait in Segment called `testProp`, you can create a Field Label called `testProp` which will generate an API Name as `testProp__c`. We will append the `__c` to any custom traits so you don't need to worry about that. Make sure to stay consistent with your casing. If you create custom fields in camelCase, make sure you send `traits` to Segment in camelCase. If you are creating custom fields in SFDC as `snake_case`, then be sure to send your `traits` in the same format.
85
+
For example, if you want to collect a custom trait in Segment called `testProp`, you can create a Field Label called `testProp` which will generate an API Name as `testProp__c`. Segment appends the `__c` to any custom traits so you don't need to worry about that. Make sure to stay consistent with your casing. If you create custom fields in camelCase, make sure you send `traits` to Segment in camelCase. If you are creating custom fields in SFDC as `snake_case`, then be sure to send your `traits` in the same format.
82
86
83
-
**NOTE**: Our Salesforce destination requires **every event to include a 'Salesforce': true in an integrations object**. Segment will not attempt to send any events to Salesforce that do not include this in their payload. The Salesforce SOAP API has very strict API limits so to prevent users from unintentionally hitting their limits, we require this in all events.
87
+
> info ""
88
+
> The Salesforce destination requires **every event to include a 'Salesforce': true in an integrations object**. Segment will not attempt to send any events to Salesforce that do not include this in their payload. The Salesforce SOAP API has very strict API limits so to prevent users from unintentionally hitting their limits, Segment requires this in all events.
84
89
85
-
By default we do not send identify calls to Salesforce, given their strict API limits, which is why we ask you to explicitly define which identify calls are sent to Salesforce.
90
+
By default Segment does not send identify calls to Salesforce, given their strict API limits.
86
91
87
92
## Group
88
93
89
-
`.group()` calls will now create or update **Account Objects** inside Salesforce. When we receive a group call, similar to the `.identify()` call, we will first check using the `groupId` to see if the Account Object already exists in your SF account. Depending on the response, we will update that object or create a new one. Creating/updating Accounts is the default behavior of `group` events. If you would like to customize this you can do so leveraging[Actions](#custom-actions)
94
+
`.group()` calls create or update **Account Objects** inside Salesforce. When Segment receives a group call, similar to the `.identify()` call, it first checks using the `groupId` to see if the Account Object already exists in your Salesforce account. Depending on the response, Segment updates that object or create a new one. Creating/updating Accounts is the default behavior of `group` events. If you would like to customize this you can do so using[Actions](#custom-actions)
90
95
91
96
Take this sample `.group()` call that you might send to Segment:
92
97
@@ -129,26 +134,27 @@ The above call will be sent like the following, in accordance with [Salesforce's
129
134
}
130
135
```
131
136
132
-
*NOTE*: By default we will map `address` to the Account's **billing** address. If you'd like to map the address to the Account's **shipping** address, you can do so inside your Salesforce settings in Segment. You can also opt to map it to *both* billing and shipping.
137
+
> info ""
138
+
> By default Segment maps `address` to the Account's **billing** address. To map the address to the Account's **shipping** address, you can do so inside your Salesforce settings in Segment. You can also opt to map it to *both* billing and shipping.
133
139
134
140
#### Required Steps
135
141
136
142
- You must be using V2 of this destination.
137
143
- You must pass in `traits.name` as this is a required field imposed by Salesforce for Account Objects.
138
144
- You must pass `{ 'Salesforce': true }` in the `options`.
139
-
- You must include `AccountNumber` as part of your page layout for us to be able to look up for the Account Objects using `groupId`:
145
+
- You must include `AccountNumber` as part of your page layout for Segment to be able to look up for the Account Objects using `groupId`:
140
146
- Log into your Salesforce account and go to `setup`
141
147
- Go to `Build` > `Customize` > `Accounts` > `Page Layout`
142
148
- Drag the `Account Number` Field to the `Account Detail`
143
149
- Click `Save`
144
150
145
151
#### Custom traits
146
152
147
-
In order to send custom traits, you must do the same steps as you had done for the `.identify()` call. You have to **predefine** them inside Salesforce. We will send any custom traits by appending `__c`.
153
+
In order to send custom traits, you must do the same steps as you had done for the `.identify()` call. You have to **predefine** them inside Salesforce. Segment appends `__c` to any custom traits.
148
154
149
155
## Trait Validation
150
156
151
-
Salesforce has documented strict validations on their semantic traits. We will trim all of those traits if they go over the limit. Refer to their docs for [Account Objects](https://developer.salesforce.com/docs/atlas.en-us.200.0.api.meta/api/sforce_api_objects_account.htm#topic-title) and [Lead Objects](https://developer.salesforce.com/docs/atlas.en-us.200.0.api.meta/api/sforce_api_objects_lead.htm) to make sure you are sending the trait values under these limits if you do not want to see them trimmed off.
157
+
Salesforce has documented strict validations on their semantic traits. Segment trims those traits if they go over the limit. Refer to their docs for [Account Objects](https://developer.salesforce.com/docs/atlas.en-us.200.0.api.meta/api/sforce_api_objects_account.htm#topic-title) and [Lead Objects](https://developer.salesforce.com/docs/atlas.en-us.200.0.api.meta/api/sforce_api_objects_lead.htm) to make sure you are sending the trait values under these limits if you do not want to see them trimmed off.
152
158
153
159
## Custom Actions
154
160
If you need to manually configure how your Segment events interact with Salesforce resources, you can do so using the [Actions](#actions) setting. This setting allows you to trigger standard CRUD operation (Create, Read, Update/Upsert, Delete) on your internal SFDC resources in response to your Segment events. You can configure as many of these actions as you would like. Each action must be associated with either a specific `track` event or **all**`identify` events. Actions can be further configured to map event properties to SFDC fields. Here's an example action configuration that will create a new Case in Salesforce in response to an **Issue Submitted**`track` event:
@@ -160,15 +166,15 @@ Upsert actions either create or update a resource in Salesforce. For these to wo
In this example, we creating or updating a Contact in Salesforce based on whether or not the `userId` property in `identify` events maps to a Contact with a custom `UserId__c` field value in SFDC. Additionally, the Salesforce Contact record field values `Email` and `Phone` are populated by the Segment event `traits.email` and `traits.phone` respectively.
169
+
In this example, creating or updating a Contact in Salesforce based on whether or not the `userId` property in `identify` events maps to a Contact with a custom `UserId__c` field value in SFDC. Additionally, the Salesforce Contact record field values `Email` and `Phone` are populated by the Segment event `traits.email` and `traits.phone` respectively.
164
170
165
171
## Troubleshooting
166
172
167
173
### Creating Other Resources
168
174
169
-
To reduce the complexity of our API, our Salesforce destination intentionally only supports creating leads using the `identify` call. We make it extremely easy to create and update leads with our destination.
175
+
To reduce the complexity of the API, the Salesforce destination intentionally only supports creating leads using the `identify` call.
170
176
171
-
To create resources of other types, such as Accounts or custom objects, we recommend integrating with Salesforce directly
177
+
To create resources of other types, such as Accounts or custom objects, Segment recommends that you integrate with Salesforce directly
172
178
173
179
174
180
### Sandbox Mode
@@ -177,11 +183,11 @@ To enable an integration with a Salesforce Sandbox instance, toggle the Sandbox
177
183
178
184
### API Call Limits
179
185
180
-
Salesforce limits both the concurrent amount of requests and the total amount of daily requests we can make to their API on your behalf. Check [these limits](https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm). They vary per edition and your number of bought user licenses.
186
+
Salesforce limits both the concurrent amount of requests and the total amount of daily requests Segment can make to their API on your behalf. Check [these limits](https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm). They vary per edition and your number of bought user licenses.
181
187
182
-
We make two API requests per `identify`. The first request is a SQL query to determine whether this object already exists. The second is to either update or create that object.
188
+
Segment makes two API requests per `identify`. The first request is a SQL query to determine whether this object already exists. The second is to either update or create that object.
183
189
184
-
Also, every thirty minutes, our servers make two queries: one to renew our connection's sessionId and another to describe your Salesforce object model so to determine which Salesforce objects are available.
190
+
Also, every thirty minutes, Segment's servers make two queries: one to renew the connection's sessionId and another to describe your Salesforce object model so to determine which Salesforce objects are available.
185
191
186
192
187
193
### How can I check how many Salesforce API calls I have left today?
@@ -196,7 +202,7 @@ You can either decrease the amount of Salesforce calls Segment makes using conte
196
202
197
203
### Lookup Fields
198
204
199
-
You can add whatever lookup fields you want to help us find the object you want to update.
205
+
You can add whatever lookup fields you want to help Segment find the object you want to update.
0 commit comments