Overview
Salesforce Automotive Cloud is an industry-specific CRM layer built on the Salesforce Platform. It extends the standard Salesforce data model with automotive-specific objects — Vehicle, WorkOrder, ServiceAppointment — that map directly to the workflows your service department runs every day.
When Bayworks connects to your Salesforce org, it can read customer records, vehicle history, open work orders, and booked appointments in real time — and write new service appointments back into Salesforce when customers book through Bayworks. Your CRM stays the system of record. Bayworks reads from it and writes to it; it doesn't maintain a parallel copy.
The integration uses Salesforce's standard REST API — the same API your other connected apps use. No custom Apex, no managed packages beyond the Automotive Cloud license itself.
How it works
Bayworks authenticates with your Salesforce org using a Connected App configured with the OAuth 2.0 Client Credentials flow — the server-to-server pattern Salesforce recommends for system integrations that don't require a user to log in. Once authenticated, Bayworks queries the REST SObject API on demand.
POST https://<your-org>.my.salesforce.com/services/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=<connected_app_id>
&client_secret=<connected_app_secret>{
"access_token": "00D3a000004iV7s!...",
"instance_url": "https://yourorg.my.salesforce.com",
"token_type": "Bearer",
"scope": "api"
}The instance_url in the token response is the base for all subsequent API calls. Bayworks stores it per-org — so multi-org dealership groups route correctly without manual configuration.
Note
The data flow for a customer interaction:
- Customer sends a message to Bayworks (text, phone, or chat)
- Bayworks identifies the intent — e.g., "what's the status on my car?" or "I need to book a service appointment"
- Bayworks queries the relevant Salesforce SObject via the REST API
- The response is parsed and surfaced to the customer in plain language, within the same conversation
The data model
Salesforce Automotive Cloud adds three objects that Bayworks reads for service workflows. These are standard Salesforce objects — they behave like any other SObject and are queryable through the same REST API endpoints.
Vehicle
The Vehicle object stores the physical asset — VIN, make, model, year, and current mileage. It links to an Account or Contact as the owner. Bayworks uses it to identify which vehicle a customer is asking about and to pre-populate work order details.
WorkOrder
WorkOrder is Salesforce's repair order equivalent. It tracks the work being performed: subject, status, assigned technician, labor lines, parts, estimated duration, and promise time. Bayworks reads open work orders to answer mid-service status questions.
ServiceAppointment
ServiceAppointment represents a booked service slot. It links to a WorkOrder (or a parent record directly) and carries the scheduled start and end times, status, and the assigned service resource. Bayworks creates ServiceAppointment records when customers book through the AI agent.
Tip
WorkOrder and ServiceAppointment are shared objects. Your existing Field Service configuration — service territories, resource skills, operating hours — carries over directly into Bayworks scheduling.What Bayworks surfaces
With Salesforce Automotive Cloud connected, Bayworks can handle the following customer interactions without advisor involvement. Each capability maps to a specific REST API operation.
Vehicle & customer lookup
When a customer contacts Bayworks, it looks up their vehicle record by VIN or by linking through the customer's Contact record. This gives Bayworks the vehicle context needed to answer service questions accurately.
GET https://<instance>.my.salesforce.com/services/data/v66.0/query
?q=SELECT+Id,Name,VehicleIdentificationNumber,Make,Model,Year,CurrentMileage
+FROM+Vehicle
+WHERE+VehicleIdentificationNumber='1HGBH41JXMN109186'{
"totalSize": 1,
"done": true,
"records": [
{
"Id": "0vC3a000000CaAbEAK",
"Name": "2022 Honda Civic",
"VehicleIdentificationNumber": "1HGBH41JXMN109186",
"Make": "Honda",
"Model": "Civic",
"Year": 2022,
"CurrentMileage": 34200
}
]
}Repair order (WorkOrder) status
Customers asking for a mid-service update trigger a WorkOrder lookup. Bayworks reads the current status, the work being performed, and the promise time — and translates Salesforce's status picklist values into plain language for the customer.
GET https://<instance>.my.salesforce.com/services/data/v66.0/sobjects/WorkOrder/0WO3a000000CaAbEAK{
"Id": "0WO3a000000CaAbEAK",
"WorkOrderNumber": "WO-00001234",
"Status": "In Progress",
"Subject": "Brake inspection — front axle",
"Duration": 2.5,
"DurationType": "Hours",
"StartDate": "2026-05-23T09:00:00.000Z",
"EndDate": "2026-05-23T11:30:00.000Z",
"Description": "Customer reports grinding noise when braking"
}Note
WorkOrder statuses are configurable picklist values per org. Bayworks maps your org's status values to plain language during onboarding — so "In Progress," "New," or whatever your team uses all resolve to clear customer-facing language.Appointment scheduling
When a customer books a service appointment through Bayworks, it first checks available slots using Salesforce's Scheduler API, then writes a ServiceAppointment record back into your org. The appointment is visible to your advisors in Salesforce immediately — no sync delay, no manual entry.
GET https://<instance>.my.salesforce.com/services/data/v66.0/scheduling/getAppointmentSlotsPOST https://<instance>.my.salesforce.com/services/data/v66.0/sobjects/ServiceAppointment{
"ParentRecordId": "0WO3a000000CaAbEAK",
"SchedStartTime": "2026-05-27T09:00:00.000Z",
"SchedEndTime": "2026-05-27T11:30:00.000Z",
"Status": "Scheduled",
"Description": "Customer reports grinding noise when braking — front axle",
"Vehicle__c": "0vC3a000000CaAbEAK"
}{
"id": "08p3a000000CaAbEAK",
"success": true,
"errors": []
}A successful 201 Created response returns the new ServiceAppointment ID. Bayworks sends the confirmation — date, time, and what's being serviced — back to the customer in the same conversation.
Architecture & security
The integration uses Salesforce's OAuth 2.0 Client Credentials flow — a server-to-server pattern that issues short-lived Bearer tokens without any user session. Tokens are refreshed automatically by Bayworks; your team never handles credentials directly.
Access is scoped to a dedicated Salesforce Connected App with the minimum permissions needed: api scope (REST API access) and the specific object permissions granted to the integration user. Bayworks operates as a named integration user in your org — its access is auditable in Salesforce's standard setup and login history.
The integration is read-only for vehicle and work order data by default. ServiceAppointment write access is enabled separately and requires your explicit sign-off during onboarding.
Tip
Get started
The Salesforce integration requires Salesforce Automotive Cloud (or at minimum, Field Service + a Salesforce org with the Vehicle object). If you're not sure which license you have, your Salesforce admin can confirm in Setup under Installed Packages.
Setup involves creating a Connected App in your Salesforce org, granting the integration user the correct object permissions, and sharing the client ID and secret with Bayworks during onboarding. The whole process typically takes one session — no engineering resources required on your side.