Sending Salesforce Contacts to Google Sheets
This guide walks you through the end-to-end process of integrating Salesforce contact data into a Google Sheet using Boomi. It is beginner-friendly and includes visual reference points for adding screenshots. By the end, you will be able to automate the export of Salesforce Contact records and load them into a shared Google Sheet for easy access and collaboration.
Use Case
Many teams need Salesforce contact data in a spreadsheet format for reporting, analytics, or collaboration. This process fetches contacts from Salesforce and appends them to a Google Sheet using a Service Account and HTTP API calls.
Prerequisites
- Boomi AtomSphere account
- Salesforce Developer Account with API access
- Google Cloud Project
- A Google Sheet with columns: FirstName, LastName, Email, Phone 5. A Google Service Account JSON Key file

Step 1: Set Up Google Cloud Project & Service Account
- Go to Google Cloud Console
- Create a new project
- Enable the Google Sheets API under APIs & Services > Library
- Navigate to IAM & Admin > Service Accounts
- Create a new Service Account (e.g., BoomiSheetsService)
- Grant it the role: Editor or Sheets API Editor
- Create a JSON key and download it
- Open your Google Sheet and share it with the client_email in your JSON

Step 2: Get Access Token (Outside Boomi)
Use the following Python script to generate an access token from your service account: import jwt
import time
import requests
# Load values from your JSON key
client_email = ‘[email protected]‘ private_key = ‘—–BEGIN PRIVATE KEY—–\n…\n—–END PRIVATE KEY—–\n’
audience = ‘https://oauth2.googleapis.com/token’;
issued_at = int(time.time())
expiration_time = issued_at + 3600
jwt_payload = {
‘iss’: client_email,
‘scope’: ‘https://www.googleapis.com/auth/spreadsheets’;, ‘aud’: audience,
‘iat’: issued_at,
‘exp’: expiration_time,
}
signed_jwt = jwt.encode(jwt_payload, private_key, algorithm=’RS256′)
response = requests.post(audience, data={
‘grant_type’: ‘urn:ietf:params:oauth:grant-type:jwt-bearer’, ‘assertion’: signed_jwt
})
access_token = response.json()[‘access_token’]
print(f”Access Token: {access_token}”)
Step 3: Build the Boomi Process
Process Name: Send_SF_Contacts_To_GoogleSheets 1. Start Shape
∙ Type: No Data or Scheduled
- Salesforce Connector
∙ Action: Query
∙ Object: Contact
∙ SOQL: SELECT LastName, FirstName, Phone, Email FROM Contact

- Map Shape
∙ Source Profile: Salesforce Contact
∙ Target Profile: JSON (Google Sheets format)
∙ Map fields: FirstName -> FirstName, etc.

- HTTP Client Connector
∙ Authentication: None (you handle the token manually)
∙ Headers:
o Authorization: Bearer {access_token}
o Content-Type: application/json
∙ Method: POST
∙ URL:
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{SheetName}!A1:ap pend?valueInputOption=RAW
∙ Payload example:
{
“values”: [
[“FirstName”, “LastName”, “Email”]
]
}

- Stop Shape
∙ Ends the process after HTTP request completes
Validation Checklist
Task Status
Google Cloud project configured ✅
Sheets API enabled ✅
Service account created ✅
Google Sheet shared with account ✅
Salesforce Connector set up ✅
Map and HTTP steps created ✅
Bonus Tips
∙ Schedule the process using a Scheduled trigger to run daily/weekly ∙ Add logging or Try/Catch for error handling
∙ Use Process Properties to store dynamic values like Sheet ID
Conclusion
This integration bridges Salesforce and Google Sheets, making it easier for teams to access CRM data in a collaborative, spreadsheet-based environment. With just a few shapes and external token generation, your Boomi process can automate contact exports from Salesforce to Google Sheets.
