“Great Copilots don’t do everything. They do the right few things—reliably.”
We’ll connect Copilot to Salesforce so reps can ask for things like “update the Opportunity stage,” “summarize this Case,” or “create a follow-up Task”—all in natural language. The trick is curating safe, well-scoped actions so Copilot helps without turning into a rogue admin. No tab-hopping; fewer clicks; more selling.
• Salesforce org with admin access
• Ability to create a Connected App (OAuth) and Named Credential if needed
• Copilot platform that supports custom actions/connectors
• A sandbox for testing (because production adrenaline is overrated)
No flowers, sorry, Einstein is just too cute. I need an Einstein Teddy Bear, donations welcome :)
Keep permissions tight: grant api and refresh_token scopes, and assign a profile/permission set that limits what Copilot can touch.
You can use standard REST endpoints (e.g., /services/data/vXX.X/sobjects) or expose a tiny Apex REST layer for exactly the verbs you want Copilot to perform.
The latter gives you guardrails, validation, and business rules in code.
// Apex REST: minimal "Case quick-create" endpoint
@RestResource(urlMapping='/copilot/cases')
global with sharing class CopilotCases {
global class CaseRequest { public String subject; public String contactEmail; public String origin; }
@HttpPost
global static Id createCase() {
RestRequest req = RestContext.request;
CaseRequest body = (CaseRequest) JSON.deserialize(req.requestBody.toString(), CaseRequest.class);
Case c = new Case(
Subject = body.subject,
Origin = String.isBlank(body.origin) ? 'Copilot' : body.origin
);
if (!String.isBlank(body.contactEmail)) {
Contact ct = [SELECT Id FROM Contact WHERE Email=:body.contactEmail LIMIT 1];
c.ContactId = ct.Id;
}
insert c;
return c.Id;
}
}
In Salesforce, set up a Connected App with OAuth 2.0 (Web Server flow). Add callback URL(s) from your Copilot platform. Allow scopes: api, refresh_token.
On the Copilot side, define an OAuth connection that stores/refreshes the token.
# (Example) Get token, then call your Apex REST
curl -X POST https://login.salesforce.com/services/oauth2/token \
-d 'grant_type=authorization_code' \
-d 'client_id=...CLIENT_ID...' \
-d 'client_secret=...CLIENT_SECRET...' \
-d 'redirect_uri=https://your-copilot/callback' \
-d 'code=...AUTH_CODE...'
curl -X POST https://your-instance.my.salesforce.com/services/apexrest/copilot/cases \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"subject":"Order not delivered","contactEmail":"alex@example.com"}'
Define action schema (name, description, parameters), bind it to your Salesforce endpoint, and map parameter types. Keep descriptions specific: “Creates a Case with subject and optional contact email. Do not update existing records.”
• Summarize a record: “Summarize Case {!CaseNumber} in 4 bullets with sentiment and next step.”
• Create follow-up: “Create a Task due tomorrow for {!OwnerName}: call {!ContactName} about {!OpportunityName}.”
• Update pipeline: “Set {!OpportunityName} to Proposal/Price Quote and add note ‘pricing sent via email.’”
• Use with sharing in Apex and field-level/security checks.
• Validate inputs server-side; reject unknown fields or risky free text.
• Log action name, user, parameters, and result (no PII in logs).
• Rate-limit actions by user/profile to prevent automation stampedes.
• Unit tests for Apex endpoints (positive/negative).
• Copilot action previews with sample payloads.
• UAT with a sales/service pilot group before org-wide rollout.
• 401/invalid_grant: callback URL mismatch or missing refresh_token scope.
• 403: profile/perm set missing API/object perms.
• 415: wrong Content-Type header.
• Nulls everywhere: your action param names don’t match your API schema—rename or map.
“Great Copilots don’t do everything. They do the right few things—reliably.”
“Scope the actions, lock the scopes, and your reps will think Copilot is magic—because it is (safely).”
“Natural language + strict APIs = productivity without panic.”
Next step: we can help you design action schemas, wire OAuth, and roll out a pilot in under a sprint—complete with audit logs and guardrails.