Integration Guides
DMS IntegrationMay 2026 · 6 min read

Bayworks + CDK Drive Integration

Bayworks connects to CDK Drive through Fortellis — CDK's official API marketplace — to read live repair order data, job codes, and estimated durations. Here's how the integration works and what it enables.

Overview

CDK Drive is one of the most widely deployed Dealer Management Systems in North America. It holds your repair orders, dispatch codes, customer records, and service history. Bayworks integrates directly with CDK Drive to read that data in real time — so your AI service agent can answer customer questions with the same information your advisors use, not a cached copy or an estimate.

The integration is read-only by default and connects through Fortellis, CDK's official API marketplace. No custom middleware, no screen scraping, no third-party data brokers.

How it works

Fortellis is CDK Global's API gateway — it's the channel CDK recommends for all third-party integrations with CDK Drive. When Bayworks is connected to your dealership, it authenticates with Fortellis using OAuth 2.0 and queries the CDK Drive Workshop Management API on demand.

Every query is scoped to your dealership's Fortellis subscription. Bayworks can only access the data your subscription grants — nothing outside your own DMS instance is reachable.

Note

Queries happen in real time, on demand — Bayworks does not cache or store a copy of your CDK data. When a customer asks about their repair order, Bayworks fetches it fresh from the CDK Drive API at that moment.

The data flow looks like this:

  • Customer sends a message to Bayworks (text, phone, or chat)
  • Bayworks identifies the intent — e.g., "what's the status of my car?" or "how long will a brake job take?"
  • Bayworks queries the relevant CDK Drive endpoint through Fortellis
  • The response is parsed and surfaced to the customer in plain language, in the same conversation

Dispatch codes

One of the most useful data sources Bayworks reads is CDK Drive's Workshop Management dispatch codes. Dispatch codes are the job codes your service advisors use when writing a repair order — each one maps to a specific type of work and carries an estimated duration for that job at your dealership.

When a customer asks how long a service will take, Bayworks queries the /dispatch-codes endpoint in real time. A typical response looks like this:

CDK Drive — dispatch codes response
{
  "items": [
    {
      "dispatchCodeId": "S102",
      "estimatedDuration": 2.5,
      "description": "General diagnostics"
    },
    {
      "dispatchCodeId": "S104",
      "estimatedDuration": 1.5,
      "description": "Computer diagnostics"
    }
  ]
}

The estimatedDuration field is in hours and reflects the estimate your shop has set in CDK — not an industry average. This matters: Bayworks quotes your numbers to your customers, not a generic benchmark that may not reflect how your service lane actually operates.

Tip

If your CDK dispatch code durations are out of date, updating them in CDK Drive is all that's needed. Bayworks reads them live, so the corrected estimates reach customers immediately — no changes needed on the Bayworks side.

What Bayworks surfaces

With CDK Drive connected, Bayworks can handle the following customer interactions without advisor involvement. Each capability maps to a specific Fortellis API endpoint.

Service time estimates

When a customer asks how long a specific job takes, Bayworks queries the Workshop Management API and matches the request to the relevant dispatch code. The customer gets the actual duration your shop has set in CDK — not a generic industry estimate.

GET dispatch codes
GET https://api.fortellis.io/service/cdk-drive/v1/workshop-management/dispatch-codes
response
{
  "items": [
    {
      "dispatchCodeId": "S102",
      "estimatedDuration": 2.5,
      "description": "General diagnostics"
    },
    {
      "dispatchCodeId": "S104",
      "estimatedDuration": 1.5,
      "description": "Computer diagnostics"
    }
  ]
}

Bayworks reads estimatedDuration (in hours) and description to answer questions like "how long will my brake inspection take?" — and uses the same dispatchCodeId when writing appointments back to CDK (see below).

Repair order status

Customers asking for a mid-service update trigger a lookup against the Repair Order API. Bayworks can query by customerId, vehicleId, or serviceAdvisorId depending on what's available in the conversation context.

GET repair orders
GET https://api.fortellis.io/service/cdk-drive/v2/repair-orders/?customerId=800245
response (trimmed)
{
  "items": [
    {
      "repairOrderId": "123",
      "status": {
        "code": "I93",
        "description": "PREASSIGNED"
      },
      "serviceLineSummary": [
        {
          "serviceRequest": "CUSTOMER STATES THERE IS A CLUNKING SOUND IN FRONT END OVER BUMPS",
          "estimatedDuration": 1.5
        }
      ],
      "promiseDateTime": "2018-08-12T20:17:45",
      "customerContactInfo": "8302852330"
    }
  ]
}

The fields Bayworks surfaces to the customer: the RO status.description (where the vehicle is in the workflow), the serviceRequest (what work is being done), and promiseDateTime (when the vehicle is expected to be ready). If the RO has comments from the advisor, those are included where relevant.

Note

CDK Drive's RO status codes (like I93 — PREASSIGNED) are internal DMS codes. Bayworks translates these into plain language before surfacing them to customers.

Appointment scheduling

When a customer books a service appointment through Bayworks, it writes the appointment directly into CDK Drive using the Service Appointment Management API. The dispatch code from the Workshop Management API flows through into the appointment payload — so the job type, estimated duration, and labor lines are pre-populated in the RO from the moment the appointment is created.

POST appointment
POST https://api.fortellis.io/cdk/drive/service-appointment-mgmt/v2/
request body (key fields)
{
  "apptDate": "2023-03-03T00:00:00.000Z",
  "apptTime": "09:00:00",
  "promiseDate": "2023-03-03T00:00:00.000Z",
  "vehicle": {
    "vehicleId": "HD240056",
    "model": "ENVISION",
    "modelYear": 2017
  },
  "customer": {
    "partyId": { "id": "19420" },
    "name": { "fullName": "TESSIE BLANKES" },
    "contactInfo": "4002224567"
  },
  "lines": [
    {
      "dispatchCode": "S1000",
      "estDuration": 0.5,
      "serviceRequest": "CUSTOMER STATES THEY HEAR NOISE WHEN PUTTING CAR IN REVERSE"
    }
  ]
}
response
{
  "apptId": "1234",
  "apptDate": "2023-03-03T00:00:00.000Z",
  "apptTime": "09:00:00"
}

A successful 201 Created response returns an apptId — the DMS record ID for the new appointment. Bayworks sends this confirmation back to the customer and logs it against the conversation.

Note

Appointment write-back requires the Department-Id header, which identifies the specific service department within the dealership. Bayworks configures this per-rooftop during onboarding — multi-department dealerships can route appointments to the correct department automatically.

Architecture & security

The integration runs over HTTPS and authenticates through Fortellis using OAuth 2.0 Bearer tokens. Tokens are short-lived and scoped to your dealership's Fortellis subscription — they grant access only to the CDK Drive data your subscription covers.

Bayworks does not store CDK credentials. Token refresh is handled automatically. Your CDK data never passes through any Bayworks persistence layer — queries go out, responses come in, the relevant fields are returned to the customer conversation, and nothing is retained.

The integration is read-only by default. If you want Bayworks to write appointments back into CDK Drive, that requires explicit setup as a separate step — it isn't on by default and requires your sign-off.

Get started

Setting up the CDK Drive integration requires a Fortellis subscription for the CDK Drive Workshop Management API. If your dealership doesn't already have one, your Bayworks onboarding team handles the subscription setup — you don't need a CDK developer account or any engineering resources on your side.

Once connected, we run a test query against your live CDK instance to confirm the integration is reading your dispatch codes correctly. The whole process typically takes one onboarding session.

Book a 30-minute setup call →