VolunteerLocal integrates with Salesforce by authenticating through an External Client App (Connected App) using OAuth (API). You can push both volunteer records (create, update) and shift records (event, job, date, hours, etc).
If your organization uses Volunteers for Salesforce (link), this integration can push data to Volunteers for Salesforce objects so you can retain your reporting and structure in Salesforce, but upgrade the volunteer user experience.
After a connection is established, the following article can assist to establish your Contact and Job/shift/hours sync:
Salesforce Integration: Contact sync and hours sync via Custom Object or Volunteers for Salesforce
1) In Setup, navigate to Apps >> External Client Apps >> External Client App Manager
Click the button for "New External Client App"
2) "Basic information"
Complete the form's required fields, be sure to select "Local" for the "Distribution State" option:
The other fields can be VolunteerLocal information or your own. It does not impact authentication.
3) "API (Enable OAuth Settings)"
Check the first box, labeled "Enable OAuth" and use the following settings:
Callback URL:
https://app.volunteerlocal.com/api/oauth/salesforce.php
OAuth Scopes (learn more about scopes):
- Access the identity URL service (id, profile, email, address, phone)
- Manage user data via APIs (api)
- Perform requests at any time (refresh_token, offline_access)
Flow Enablement:
- CHECK: Enable Client Credentials Flow
Security:
- CHECK: Require secret for Web Server Flow
- CHECK: Require secret for Refresh Token Flow
The other sections can be left as-is (unchecked).
Click the (blue) "Create" button anchored to the bottom of the screen.
NOTE: You should now be taken to the "main" page for the newly created External Client App.
If not, navigate to Apps >> External Client Apps >> External Client App Manager and click the name of the newly created External Client App.
4) Ensure you are within the "Policies" section of the newly created External Client App and click the "Edit" button on the right:
Under the "OAuth Policies" header (click to expand), scroll to the "OAuth Flows and External Client App Enhancements" section.
Check the box labeled "Enable Client Credentials Flow" and enter the email address of the "Run As" user:
Under "App Authorization" you can set the token refresh policy as you see fit. Everything else on this page can be left as-is.
Click the (blue) "Save" button anchored to the bottom of the screen.
There are a variety of options for the "Run As" user in terms of license and permissions; here is the recommended setup:
(a) "Salesforce Integration" User License
(b) profile set to "Minimum Access - API Only Integrations" ("API Enabled" and "Api Only User" checked)
(c) a permission set that provides access to the Contact object (and appropriate fields*) as well as the custom object(s) the store the Hours/Shift data. If you are using Volunteers for Salesforce, the permission set needs to include the Campaign object (read-only), including the IsActive and Status fields.
*The FLS should reflect the fields you actually want to push to Salesforce.
5) Navigate to the "main" page for your External Client App and click the "Settings" section header:
Scroll down to the "OAuth Settings" header (click to expand) and now you will see a button/link to reveal the "Consumer Key and Secret"
You will go through a user re-verification process to visit/view this page.
The Consumer Key and Consumer Secret are necessary to establish the API connection in VolunteerLocal. Copy them or keep this page open/available for the next step.
6) In VolunteerLocal, navigate to Account -> Salesforce Integration and scroll to the bottom of the page.
Paste the Consumer Key and Consumer Secret copied in step (5), along with the Host URL.

Note: The Host URL is the URL you use to access your Salesforce.com account, it is typically in this format:
https://{YOUR-SUBDOMAIN}.my.salesforce.com
Click the button to "Save Salesforce Connected App" and you should be connected - congrats!
This can be verified by the color of the "Connected as..." button at the top of the Integrations page (GREEN = Connected).