Salesforce
[Financial] Execute a read-only SOQL query against Salesforce via the REST API
Salesforce is where your revenue data lives. Delphi connects via OAuth2, queries your org through SOQL and the REST API, and turns pipeline, accounts, and forecast data into answers your team can act on. Read-only by default, with every query audit-logged and scoped to the dashboards each user is permitted to see.
What you can ask Delphi
- “Which accounts have opportunities stalled in Negotiation for more than 30 days?”
- “Show me the top 20 closed-won deals this quarter with their owners and amounts”
- “Compare pipeline coverage for the EMEA region versus last quarter”
- “Which reps have the highest average deal size in the last 90 days?”
Use cases
Pipeline health monitoring
Delphi watches your Salesforce pipeline and surfaces stalled deals, coverage gaps, and forecast risks in natural language — no more hand-built dashboards.
Territory performance analysis
Ask Delphi to compare territories, rep performance, or product lines across any time window. It joins Salesforce data with the rest of your business context automatically.
Technical details
Authentication ▾
- api
- refresh_token
Ingestion ▾
Tools exposed (3) ▾
[Financial] Execute a read-only SOQL query against Salesforce via the REST API. Returns CRM records: Opportunities, Accounts, Contacts, Leads, Forecasts, etc. Automatically handles OAuth2 authentication and pagination. Use for sales pipeline analysis, customer data, account health, and CRM reporting.
[Financial] Convert Salesforce pipeline into weighted FTE demand projections. Queries Opportunities, applies stage-weighted probability, and computes demand by role and month. Configurable stage weights, custom demand fields, and revenue-per-FTE heuristic. Output feeds into assess_resource_sufficiency for capacity planning.
[Financial] Create or update a recurring Salesforce data connector that polls for changed records using SystemModstamp filtering. Streams changed CRM records (Opportunities, Accounts, Contacts, etc.) into Delphi via OAuth2 client credentials auth. Use this to keep Delphi dashboards in sync with live Salesforce data.
Inputs ▾
enterprise/query_salesforce
| Name | Type | Required | Description |
|---|---|---|---|
| dashboardId | string | no | Target dashboard/initiative ID. Omit to use the current dashboard. |
| soqlQuery | string | yes | SOQL SELECT query to execute. Read-only: no UPDATE, DELETE, INSERT, UPSERT, or MERGE. Examples: "SELECT Id, Name, Amount, StageName, CloseDate FROM Opportunity WHERE StageName = 'Closed Won' AND CloseDate = THIS_QUARTER" "SELECT Id, Name, Industry, AnnualRevenue FROM Account WHERE AnnualRevenue > 1000000" "SELECT Id, Name, Email, AccountId FROM Contact LIMIT 200" |
| objectType | string | no | Primary Salesforce object being queried — helps the agent understand the data context. Examples: "Opportunity" for pipeline data, "Account" for customer data, "Contact" for people. Opportunity Account Contact Lead Forecast Campaign Task Event Custom |
| maxRecords | number | no | Max records to return across paginated results. Default: 200. |
enterprise/salesforce_demand_model
| Name | Type | Required | Description | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dashboardId | string | no | Target dashboard ID. Omit to use the current dashboard. | ||||||||||||||||||||||||
| stageWeights | object | no | Override stage-to-probability weights. Default: Closed Won=1.0, Commit=0.8, Best Case=0.5, Pipeline=0.2, Upside=0.1. Add custom stage names as additional keys. | ||||||||||||||||||||||||
Nested schema for stageWeights
| |||||||||||||||||||||||||||
| revenuePerFte | number | no | Revenue per FTE for heuristic sizing. Default: 200000. Used when no custom demand fields are present. | ||||||||||||||||||||||||
| demandField | string | no | Custom Opportunity field name for FTE demand (e.g., "Required_FTE__c"). When set, uses this field directly instead of the revenue-based heuristic. | ||||||||||||||||||||||||
| roleField | string | no | Custom Opportunity field name for the role associated with the demand (e.g., "Required_Role__c"). When set, groups demand by this field. | ||||||||||||||||||||||||
| soqlFilter | string | no | Additional SOQL WHERE clause to append (e.g., "AND Type = 'New Business'"). Do NOT include "WHERE" — it is added automatically. | ||||||||||||||||||||||||
schedule_stream_salesforce
| Name | Type | Required | Description |
|---|---|---|---|
| dashboardId | string | no | Target dashboard/initiative ID. Omit to use the current dashboard. |
| soqlQuery | string | yes | SOQL SELECT query to poll for changed records. The pipeline will inject a SystemModstamp filter automatically — include all desired fields and any static WHERE clauses. Example: "SELECT Id, Name, Amount, StageName, CloseDate, OwnerId FROM Opportunity WHERE IsClosed = false" |
| objectType | string | no | Primary Salesforce object being polled. Opportunity Account Contact Lead Forecast Campaign Task Event Custom |
| pollingInterval | string | no | How often to poll Salesforce for changes. Default: "5m". Use ISO 8601 durations or polling format: "1m", "5m", "15m", "1h". |
| connectorId | string | no | If provided, updates the existing connector instead of creating a new one. |
| description | string | no | Human-readable description of what this connector monitors. Shown to analysts in future sessions. |
| idExpression | string | no | expression for the deduplication key. Default: "this.Id" (Salesforce record ID). Use "this.Id" to deduplicate records by Salesforce ID. |