Creating a Sales Meeting Preparation agent with OAuth 2.0
The Customer Meeting Preparation agent uses delegated authorization to review upcoming customer meetings and gather opportunity information to help the sales team prepare for meetings and close deals. It analyzes the deal stage and opportunity information to provide suggestions on how to engage effectively with the client.
You’ll use the following service in the Boomi Platform to build an AI agent:
Agentstudio
Prerequisites
Ensure you have the following services before building the agent:
- a Calendar API, such as Google Calendar
- a CRM (Customer Relationship Management) system with opportunity data, such as Salesforce
Agent overview
You can create AI agents that leverage delegated authorization, enabling agents to access personal data for productivity workflows when a user grants permission.
In this example, you can build an AI agent that:
- Analyzes your calendar events, including any customer meetings for the current day
- Queries your CRM and pulls opportunities
- Provides details on opportunities for any customers you are meeting with that day
- Provides suggestions for next steps based on the current deal stage

Step 1: Configure OAuth Client ID and Secret for an External Client App in Salesforce
- In the Salesforce Setup menu, add an External Client App. Refer to Salesforce documentation on creating an external app.
- Configure settings for your app. In this example, we've applied the following settings:
- Plugin policies: Set to All users can self-authorize.
- OAuth Flows and External Client App Enhancements: Select Enable Client Credentials Flow.
- Callback URL: Set to
https://ai-agent-garden.datalake-prod.boomi.com/api/v1/oauth/callback. - OAuth Scopes: Set the following scopes:
- Manage user data via APIs (
api) - Perform requests at any time (
refresh_token,offline_access) - Access Headless Registration API (
user_registration_api) - Access the Salesforce API Platform (
sfap_api)
- Manage user data via APIs (
- Flow Enablement:
- Select Enable Client Credentials Flow.
- Select Enable Authorization Code and Credentials Flow.
- Security:
- Select Require secret for Web Server Flow
- Select Require Secret for Refresh Token Flow
- Select Require Proof Key for Code Exchange extension for Supported Authorization Flows
- Copy the Client ID and Secret to enter later in the API tool in Agentstudio.
Step 2: Configure OAuth Client ID and Secret for Google Calendar
- In Google Cloud Console, create a project for your AI agent. Refer to Google documentation on creating projects.
- Enable the Calendar API for your project. Refer to Enable APIs.
- Configure the OAuth consent screen and choose scopes. Refer to Configure OAuth Consent. In this example, we're using the following scopes:
/calendar.events.freebusy/calendar.freebusy/calendar.calendarlist.readonly/calendar.readonly/calendar.calendarlist/calendar.calendars.readonly/calendar.events.readonly
- Create an OAuth 2.0 Client ID as a Web application type. Refer to Create credentials.
- In Authorized Javascript origins, enter
https://ai-agent-garden.datalake-prod.boomi.com. - In Authorized redirect URIs, enter
https://ai-agent-garden.datalake-prod.boomi.com/api/v1/oauth/callback. - Copy the Client ID and Secret to enter in the API tool in Agentstudio.
Step 3: Build a meeting preparation agent
-
Navigate to Agentstudio > Agent Garden > Agent Designer.
-
Import the Meeting Preparation agent using a YAML file. This imports all the settings for the agent, including tools, personality, temperature, tasks, instructions, and guardrails. You can edit as needed to fit your business requirements. Refer to Importing an agent. Here is the YAML configuration to create the YAML file:
Agent YAML for import
metadata:
exported_at: '2025-10-28T18:58:46Z'
schema_version: '1.0'
agents:
- objective: Correlate calendar events with Salesforce opportunities to provide sales reps
with comprehensive meeting preparation insights
name: SalesSync
personality_traits:
voice_tone: Professional
creativity: 50
decisiveness: 90
clarity: 95
confidence: 85
engagement: 88
profile_picture:
role: Default
colour: Sunset
image_id: img_location
conversation_starters:
- Can you help me prepare for my upcoming customer meetings?
- What Salesforce opportunities are related to my today's calendar events?
- Show me the details of potential deals for my scheduled meetings
- What revenue potential exists for my current prospect meetings?
tasks:
- name: Retrieve Calendar Events
objective: Fetch user's calendar events for the current day
instructions:
- Access user's calendar system
- Extract all meetings scheduled for today
- Collect customer names and meeting details
tools:
- name: CalendarEventsFinder
type: OpenAPI
requires_approval: false
response_passthrough: false
unique_name: calendareventsfinder_8186
- name: Query Salesforce Opportunities
objective: Retrieve open Salesforce opportunities
instructions:
- Connect to Salesforce CRM system
- Filter opportunities to show only open/active deals
- Extract account names, opportunity details, and potential revenue
tools:
- name: 'Get Salesforce Opportunity Info '
type: OpenAPI
requires_approval: false
response_passthrough: false
unique_name: get_salesforce_opportunity_info_copy_8187
- name: Correlate Calendar and Opportunities
objective: Match calendar meetings with corresponding Salesforce opportunities
instructions:
- Compare calendar customer names with Salesforce account names
- Identify matching opportunities for each meeting
- Gather detailed opportunity information
tools: []
- name: Prepare Meeting Insights
objective: Generate comprehensive meeting preparation report
instructions:
- Compile opportunity details for each matched meeting
- Include potential revenue information
- Summarize key opportunity insights
- Present a concise preparation brief for the sales representative
tools: []
guardrails:
blocked_message: 'Sorry, I can only provide your calendar meeting information, customer
account information, and opportunity sales information, including potential revenue. '
system: false
policies:
- name: Legal Advice
type: denied_topic
configuration:
description: Legal advice about contracts and sales agreements. Information about
laws and what is legal or illegal.
sample_phrases:
- Can you draft a legal document or contract for me?
- Can you draft a legally binding contract for me?
- Can you provide a detailed legal strategy for my case?
- Can you tell me if this specific action would be considered legal?
agent_mode: conversational
custom_variables:
inference_configuration:
performance_config:
processing_mode: standard
agent_io_schema_version: 1
unique_name: salessync_6968
tools:
OpenAPI:
- name: CalendarEventsFinder
description: Retrieve Google Calendar events for a specific date with OAuth authentication
input_parameters:
- name: timeMin
description: 'Start time for calendar events (format: YYYY-MM-DDTHH:MM:SSZ)'
required: true
type: string
- name: timeMax
description: 'End time for calendar events (format: YYYY-MM-DDTHH:MM:SSZ)'
required: true
type: string
base_url: https://www.googleapis.com/calendar/v3
path: /calendars/primary/events
method: GET
query_parameters:
- name: timeMin
input_parameter_name: timeMin
- name: timeMax
input_parameter_name: timeMax
- name: singleEvents
static_value: 'true'
- name: orderBy
static_value: startTime
path_parameters: []
headers: []
authentication:
type: oauth
config:
grant_type: authorization_code
authorization_server_url: https://accounts.google.com/o/oauth2/v2/auth
authorization_server_request_params: []
access_token_url: https://oauth2.googleapis.com/token
access_token_request_params: []
client_id: ''
client_secret: ''
scopes: https://www.googleapis.com/auth/calendar
unique_name: calendareventsfinder_8186
- name: 'Get Salesforce Opportunity Info '
description: 'Get Salesforce opportunity information using OAuth 2.0 authentication. '
input_parameters: []
base_url: https://enteryourinstancehere.my.salesforce.com/services/data/v64.0
path: /query/
method: GET
query_parameters:
- name: q
static_value: SELECT+Id, Name, Account.Name, StageName, Amount, CloseDate FROM Opportunity
WHERE IsClosed = false ORDER BY CloseDate DESC LIMIT 200
path_parameters: []
headers: []
authentication:
type: oauth
config:
grant_type: authorization_code
authorization_server_url: https://enteryourinstancehere.my.salesforce.com/services/oauth2/authorize
authorization_server_request_params: []
access_token_url: https://enteryourinstancehere.my.salesforce.com/services/oauth2/token
access_token_request_params: []
client_id: ''
client_secret: ''
unique_name: get_salesforce_opportunity_info_copy_8187
sources: {} -
In Tasks, edit the existing attached API tools by adding your OAuth Client ID and Secret.
-
Test your agent in the test window with a conversation starter. For example, enter 'Can you help me prepare for my upcoming customer meetings?' The agent will ask you to sign in to your Google Calendar account and Salesforce account.
-
Click Save & Continue.
-
Select Deploy Agent. Start using the agent in the conversational user interface.
Here's an example of a possible output:
