The Box for Salesforce integration is available at no extra charge for joint Box Enterprise/Salesforce customers. To get the integration, contact your Box Customer Success Manager or visit the Box for Salesforce integration page on the Salesforce App Exchange.
- Get the most recent available version of the Box for Salesforce integration.
- How to upgrade and ensure you’re on the most recent version.
New to the Box for Salesforce integration? Follow the instructions below to implement the integration for the first time.
Note:
To use Box Sign features after installing the Box for Salesforce integration, you will also need to Create the Box Sign button in Salesforce.
- Installation and Initial Setup
- User Settings
- Related Links
- Feedback
Installation and Initial Setup
Before you Install
You must have two Box accounts before you can install the Box for Salesforce integration:
- A Box service account, This can be any managed user, unless you have enabled the Restrict Content Creation enterprise setting. If you've enabled this setting, the service account must be either:
- the primary admin, or
- a co-admin with either the manage groups OR manage users permission.
If you don’t already have a Box service account, create one -- that is, add boxforsalesforce@example.com as a managed user. It's best to reserve this account exclusively for integration purposes, and that you not assign it to any individual user. In addition, this account:
- "owns" the Salesforce content on Box
- makes API calls from Salesforce to Box for the entire enterprise
- A Box user account, to link an individual's Salesforce and Box accounts.
Note
The service account and user account must be discrete accounts, and both also must be managed users in your enterprise. You cannot log in with the same account in both places.
You also must have two Salesforce accounts to access the Box for Salesforce integration:
- a Salesforce Admin Account for installing packages in Salesforce and linking the installed packages to the Box Service Account. This account can be a regular user of Box for Salesforce integrations.
- a Salesforce User Account to link to a Box User Account and access Box content.
The Salesforce license must be a standard user license.
Installing Box for Salesforce
- Log into Salesforce as a Salesforce Admin.
- Go to the Box listing on the Salesforce App Exchange, and click on Get It Now.
- Follow the prompts to install either in production or in a sandbox.
- When choosing who to install the App for, choose Install for Admin only.
- At separate points during the installation, the installer prompts you to:
- accept and Approve Third-Party Access for remote settings.
- Grant access to all users.
- Click Next or Continue in other screens to complete the installation.
Settings and Configuration
- Log into Salesforce as a Salesforce Admin.
- From the App Launcher on the top left, search and click on Box Settings to configure the Box Admin settings below.
Note
Both the system administrator and Salesforce license holders have access to the Box Settings tab. However, only the system administrator can view the Box Admin Settings section within this tab. If you do not see an admin section on the Box Settings page, you are not the admin.
Box Admin Settings
The following Settings are only available to the system administration:
1. Service Account Authentication
Connect the Box Service Account credentials, following the prompts (see the Before you Install, above).
Changing the Box Service Account
As a best practice, create a standalone service account that is not tied to a specific individual. To change the Box service account:
- From the top right of your window, go to Your Name > Developer Console to launch the Developer Console
- Go to Debug > Open Execute Anonymous Window
- Run the following command: box.Toolkit.deleteServiceUserAssociation();
Note
Only change the service account during initial setup (if the wrong Box user was configured as the service account) or if the service account was deleted. Transfer folder ownership of the Salesforce root folder to the new service account.
2. Content Settings
Set a Root Folder
Specify a a name for your Root Folder (such as Salesforce-<Org Identifier> and click Save.
- If you need help, please follow the steps in our Troubleshooting article.
Convert Lead Folder (Optional)
You can initiate the Box for Salesforce integration on any record type, including Leads. The Convert Lead Folder customization enables you to specify whether to move the record-specific folder when a lead converts. The default options include Account, Contact, and Opportunity.
When you select an object to convert lead folders, the record-specific folder automatically moves and inherits the new object naming convention. For example, a Lead converts to a Contact.
If you click Do not move folders, the existing lead folder remains as a private folder within the Salesforce root-level folder. (In this context, "private folder" means the record folder linked to the original lead record is no longer referenced or viewable within Salesforce.)
Enabling the Box Enterprise sub-domain (As applicable)
If you use a sub-domain for your Box enterprise (for example, cloud.app.box.com instead of app.box.com), you must enter your sub-domain on the Box Settings tab. Specifically, if your sub-domain is cloud.app.box.com enter cloud.)
This prevents issues that could occur when you use various Send with options on files within Box. In Box, navigate to Admin Console > Enterprise Settings > Custom Setup, enter your sub-domain, and save your changes.
If you need assistance, please contact Box Product Support.
3. Permissions
Sync Salesforce and Box Permissions
This setting enables you to use Salesforce access as a model whenever you update access to record-specific folders. This removes collaborators who gain access to record content through the integration via Box despite losing access to a given record in Salesforce.
As the administrator, you can run the process by clicking Sync Now. This removes collaborators who could use their Box folder access to gain access to the record in Salesforce (either by visiting the record or by using an invitation to collaborate).
Note
Clicking Sync Now does not affect any collaborations you may have added manually in Box.
Schedule Jobs
To schedule a regular cleanup, click Schedule New Job. You must:
- select a frequency (Weekly/Monthly)
- select a cadence
- for a Weekly frequency, select the day(s)
- for a Monthly frequency, select the occurrence day
- choose a preferred start time
Then save your selection. Once created, you can also edit or remove the job.
Do you observe many records being retained in the BOSS Exception custom object (API name: BOSS_Exception__c)? Then from the setup menu (as shown below) you can run the BatchErrorScheduler scheduled process. You do not need to run the process often; it runs as part of your scheduled BOSS process every time. Instead, you can use this as a one-time cleanup.
Example: The Sales team has a closed Salesforce instance in which only the account owner can access the Account record. If the sales territories change, you can update access to Box company-wide.
Note
If you neither run the cleanup job nor manually schedule it, any user permissions deleted via Salesforce remain in Box.
4. Seamless Login
Enabling Seamless Login Organization-Wide
This feature provides seamless login to Box from within Salesforce. When you enable this feature, your people see the Seamless Login setting in the Box Settings tab. They can then enable/disable seamless login for their own accounts. If individuals enable seamless login for their own accounts, they're prompted to log into their Box accounts once (during setup).
Seamless Login (Org-Wide) is enabled by default. If you disable it, the system prompts Box accountholders to log into Box any time they access Box content within Salesforce in a new browsing session.
Embedding Box in Standard Objects
Next, you should add Box functionality to Salesforce objects. The Box for Salesforce integration supports the following Salesforce standard objects in both Classic and Lightning:
- Accounts
- Cases
- Opportunities
- Contacts
- Leads
Lightning Experience
- Go to the page of the Salesforce object in which you want to embed Box. In this example we'll use the Salesforce Account.
- On the Account page, click the Gear icon, and from the drop-down menu that displays, click Edit Page. This opens the Edit mode where you can add the Box module to the page layout.
- On the left panel, search or scroll down to find Box under Custom - Managed components.
- Drag and drop it wherever you want on the page layout, or create a tab for it.
- (Optional) Add a label (i.e., "Box") you can optionally display
- (Optional) Adjust the component height by entering a numerical value (minimum: "700")
- (Optional) Add Filters to adjust component visibility
- Click Save on the top right.
- Click Activation on the top right and update activation properties if desired.
- Redisplay the Account page. The Box section now displays inside the page.
Salesforce Classic
Use the following procedure for any of the above standard objects that require a Box Embed addition as part of the page layout:
- From the Salesforce menu, in the top right corner click Setup.
- From the lefthand navigation, go to Build > Customize to find the object you want (Leads, Opportunities, and so on, or any custom object).
- Expand the object's menu and click Page Layouts.
- Locate the page layout in which to add Box Embed, and click Edit.
- From the [Object] Layout > Field menu find Section.
- Click and drag Section into the page layout in the desired position where you want Box displayed.
- Change the Section parameters:
- Assign a name for the section (for example, Box Files).
- Make the section 1-Column.
- Click OK.
- Add the newly-created Visualforce Page to the Page Layout:
- From the [Object] Layout menu, click Visualforce Pages.
- Drag [object_name]BoxSection into your newly created Section.
- Click the wrench on the [object_name]BoxSection Visualforce page.
- For best viewing, set the height to 600 pixels (minimum).
- Click Save.
Note
Box permissions mirror Salesforce permissions. That means your access to Box content depends on your access to the Salesforce record.
Embedding Box in Custom Objects
- Log into Salesforce as a Salesforce Admin.
- Create a new Visualforce page for your custom object (see Salesforce help for more details on creating Visuaforce pages).
- Copy the following Visualforce code and paste it in your newly-created Visualforce page.
<apex:page standardController="Custom_Object__c" extensions="box.DisplayWidget" action="{!getLoginToken}" showHeader="false" sidebar="false" standardStylesheets="false">
<apex:stylesheet value="{!URLFOR($Resource.box__BoxEmbed, 'BoxEmbed/style.css')}"/>
<apex:variable var="isClassic" value="{!AND($User.UIThemeDisplayed != 'Theme4d', $User.UIThemeDisplayed != 'Theme4t')}" />
<!-- LOGIN or CREATE FOLDER or JOIN FOLDER -->
<apex:iframe id="classicBoxSection" src="/apex/box__BOXSection?id={!Custom_Object__c.Id}¶m=Custom_Object_Box_Section" rendered="{!AND(displayBoxSection, isClassic)}" html-allowfullscreen="true" html-webkitallowfullscreen="true" html-msallowfullscreen="true" />
<apex:iframe id="lightningBoxSection" src="/apex/box__BOXSection?id={!Custom_Object__c.Id}¶m=Custom_Object_Box_Section" rendered="{!AND(displayBoxSection, NOT(isClassic))}" html-allowfullscreen="true" html-webkitallowfullscreen="true" html-msallowfullscreen="true" />
<!-- /LOGIN or CREATE FOLDER or JOIN FOLDER -->
<!-- BOX EMBED WIDGET -->
<apex:iframe id="classicBoxWidget" src="{!folderShareLink}" rendered="{!AND(displayBoxWidget, isClassic)}" html-allowfullscreen="true" html-webkitallowfullscreen="true" html-msallowfullscreen="true" scrolling="true" />
<apex:iframe id="lightningBoxWidget" src="{!folderShareLink}" rendered="{!AND(displayBoxWidget, NOT(isClassic))}" html-allowfullscreen="true" html-webkitallowfullscreen="true" html-msallowfullscreen="true" scrolling="true" />
<!-- /BOX EMBED WIDGET -->
</apex:page>
Some parameters found in the above Visualforce code that you just copied and pasted need to be changed to match your enterprise setup. As an example, we'll say you've created a custom object called Sales Request that has an API name of Sales_Request__c and you named your Visualforce page BoxLegalRequestFiles.
- Custom_Object__c: Change this variable to the API name of your custom object.
- Example: Sales_Request__c
- Custom_Object__c.Id: Change this variable to the API name of your custom object ID field.
- Example: Sales_Request__c.Id
- Custom_Object_Box_Section: Change this variable to the API name of your Visual Force page.
- Example: BoxLegalRequestFiles
Sample Code Snippet
Continuing with the above example of a custom object called Sales Request that has an API name of Sales_Request__c and a Visualforce page named BoxLegalRequestFiles, this is what your final code would look like:
<apex:page standardController="Sales_Request__c" extensions="box.DisplayWidget" action="{!getLoginToken}" showHeader="false" sidebar="false" standardStylesheets="false">
<apex:stylesheet value="{!URLFOR($Resource.box__BoxEmbed, 'BoxEmbed/style.css')}"/>
<apex:variable var="isClassic" value="{!AND($User.UIThemeDisplayed != 'Theme4d', $User.UIThemeDisplayed != 'Theme4t')}" />
<!-- LOGIN or CREATE FOLDER or JOIN FOLDER -->
<apex:iframe id="classicBoxSection" src="/apex/box__BOXSection?id={!Sales_Request__c.Id}¶m=BoxLegalRequestFiles" rendered="{!AND(displayBoxSection, isClassic)}" html-allowfullscreen="true" html-webkitallowfullscreen="true" html-msallowfullscreen="true" />
<apex:iframe id="lightningBoxSection" src="/apex/box__BOXSection?id={!Sales_Request__c.Id}¶m=BoxLegalRequestFiles" rendered="{!AND(displayBoxSection, NOT(isClassic))}" html-allowfullscreen="true" html-webkitallowfullscreen="true" html-msallowfullscreen="true" />
<!-- /LOGIN or CREATE FOLDER or JOIN FOLDER -->
<!-- BOX EMBED WIDGET -->
<apex:iframe id="classicBoxWidget" src="{!folderShareLink}" rendered="{!AND(displayBoxWidget, isClassic)}" html-allowfullscreen="true" html-webkitallowfullscreen="true" html-msallowfullscreen="true" scrolling="true" />
<apex:iframe id="lightningBoxWidget" src="{!folderShareLink}" rendered="{!AND(displayBoxWidget, NOT(isClassic))}" html-allowfullscreen="true" html-webkitallowfullscreen="true" html-msallowfullscreen="true" scrolling="true" />
<!-- /BOX EMBED WIDGET -->
</apex:page>
Using your newly-created Visualforce Page to embed Box in your record
Via Salesforce Lightning
To embed Box in your record, in the Page Details section:
- Click the Gear icon.
- From the drop-down menu that displays, click Setup.
- From the lefthand navigation, go to Objects and Fields and click Object Manager.
- Click your custom object name under the Label column.
- Click Page Layouts.
- Locate the page layout in which you want to add Box Embed and click its name under Page Layout Name to edit the layout.
- Jump to Step 5 in the above Embedding Box in Standard Objects - Salesforce Classic section.
To embed Box anywhere other than the Page Details section on the record:
- On the Visualforce Page you created above, enable the setting titled Available for Lightning Experience, Lightning Communities, and the mobile app.
- Click Save.
- Jump to Step 1 in the above Embedding Box in Standard Objects - Lightning Experience section.
Via Salesforce Classic
To embed Box in your record:
- In the Salesforce menu, in the top right corner click Setup.
- From the lefthand navigation, go to Build > Customize and click Objects.
- Click your custom object name under the Label column.
- Scroll to the Page Layouts section, locate the page layout in which you want to to add Box Embed and click Edit.
- Jump to Step 5 in the above Embedding Box in Standard Objects - Salesforce Classic section.
Creating Record-Specific Folders
Now that you can embed Box within standard and custom objects, your team can create record-specific folders in Box.
Embedding Box in Custom Tabs
You can also embed specific Box folders into Salesforce as custom Web tabs.
To add a custom Box Embed Web tab
- Locate the Box folder you want to embed in Salesforce. Then follow these instructions to generate an embed code. Keep this window or tab open in your browser; later on you will need to copy and paste it.
-
Create a Web tab in Salesforce. To do this, go to Setup > App Setup > Create > Tabs. In the section labeled Web Tabs, click New.
-
Click a Full page width Web tab, and then click Next.
-
For Tab Type, click URL.
-
Create a name for the tab that relates well to the content you are embedding.
-
Click a Tab Style, and then click Next.
- Copy the embed code you generated in step 1, and paste it under the Button or Link URL field. Modify the link to follow this structure (remove the iframe portions): https://app.box.com/embed_widget/s/ SHARED_LINK_VAL
UE ?CUSTOMIZATION_PARAMETERS width="WIDTH" height="HEIGHT" frameborder="0"
- (Optional) Include customization parameters for your Box embed tab. For example, you can hide the breadcrumb to All Files for visual simplicity, or remove comments and tasks. Additionally, you can promote OpenBox actions such as Post to Chatter. For a full list of customization parameters and step-by-step instructions, see developers.box.com/box-embed.
- On the New Web Tab setup page, click the user profiles and custom apps to which you want to add the tab. Then click Save.
Enabling Salesforce (Mobile)
To enable Box integrations for the Salesforce mobile application:
- From the Salesforce menu, in the top right corner, click Setup.
- Navigate to App Setup > Customize, and click the object you want to add the Box Embed interface. Supported objects include:
- Accounts
- Cases
- Opportunities
- Contacts
- Leads
Note
The Box for Salesforce mobile interface does not support custom objects.
-
-
- Click Edit.
- Go to Object > Page Layouts to display the page layout to which you want to add Salesforce .
- Drag the [ObjectName] MobileBox into your Mobile Cards (Salesforce only) section.
- For best viewing, set the height to 600 pixels (minimum).
- Click Save.
-
Granting Access After Installing
If you did not grant access to the package components to everyone during the installation, or if you have new profiles that require access to the Box for Salesforce integration, you can use permission sets to grant access to individuals or profiles. A permission set is a collection of settings and permissions that give account holders access to various tools and functions.
More information: Standard Salesforce documentation on assigning Permission Sets.
When to use Box for Salesforce Permission Sets
Use permission sets when:
- you do not want to grant access to All Users when installing the package, instead preferring to grant package component access to specified profiles or individuals.
- you create a new profile after the installation and want to grant access to the package components to that newly-created group.
- you have a custom system admin profile and do not see the administrative settings in the Box Settings tab.
Types of Box for Salesforce Permission Sets
- Box Admin: Grant this permission to people who will administer the integration; the installation does not enable you to grant admin access to customized system administrator profiles.
- Box Admin (All Licenses): Same as the Admin permission sets, but allows for Admins to use any Salesforce License with the integrations.
- Box Standard: Grant this permission to anyone using the integration.
- Box Standard (All Licenses): Same as the Standard permission sets, but allows use with any Salesforce License for the integrations.
- Box Sign: Grant this permission to anyone who will use Box Sign features in the integration.
Granting Permission Sets
When you first install Box for Salesforce, you get the option to grant package access to All Users. You can decline this option. But if you do decline, then to administer and use the integration you may still need to grant the Admin and Standard permissions sets.
To grant permission sets
- In Salesforce, click the Setup gear symbol.
- In the lefthand navigation, click Permission Sets.
- On the Permission Sets page, select which permission sets you'd like to use.
- Click Manage Assignments.
- Click Add Assignments.
- Click the user name(s) you want and then click Assign.
- Grant the permission set for each individual and save your settings.
Note
Generally you can only assign permission sets to one person at a time. To add users and grant permission sets in bulk, use the free Permissioner app.
The managed package setup is now complete. Your users can now log in to Salesforce and link Box and Salesforce accounts.
Box User Settings
Within the User Settings Tab, your users can control the following settings for their own Box for Salesforce instance:
If the system administrator enables Seamless Login (Org-Wide), account holders can enable/disable seamless login for their accounts. For more details, see the Admin Settings section.
Enabling Auto-Collab for a User
When you enable auto-collab, the system automatically adds people as collaborators to a record's Box folder when they view the record page. If you disable auto-collab, the system gives people the option of adding themselves to the folder by clicking Collaborate on Folder. For more details, see the Admin Settings Seamless Login section.
Account holders must contact their Salesforce Administrator to delete their association with Salesforce.
- Specify your company's subdomain. For example, if you log into Box at cloud.app.box.com, your subdomain is "cloud".
- Navigate to the Permissions Tab.
- Navigate to the Seamless Login Tab.
- Enable or disable Seamless Login and Auto-Collab.
- We recommend enabling these settings.
Related Links
Feedback
We look forward to receiving feedback about the installation process and the integration through Salesforce AppExchange.