> ## Documentation Index
> Fetch the complete documentation index at: https://docs.recepta.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Field-service CRM

> Jobber, Housecall Pro, and ServiceTitan — booking, customer recognition, and write-back.

If you run a field-service CRM, connecting it is the highest-value integration available. It turns the agent from something that takes messages into something that books jobs into the system your crews already work from.

## Supported

<AccordionGroup>
  <Accordion title="Jobber" icon="screwdriver-wrench">
    Client sync, job booking, and quote follow-up. Connect via OAuth from **Integrations**.
  </Accordion>

  <Accordion title="Housecall Pro" icon="house">
    Client sync plus job history, next scheduled visit and assigned tech, and account balance — so the agent can answer "when are you coming" and "what do I owe" without a callback.
  </Accordion>

  <Accordion title="ServiceTitan" icon="clock">
    Customer sync, job booking, and membership reactivation.

    <Note>
      Not yet connectable — partner app approval is pending. It appears in the dashboard as coming soon and will become available once approved.
    </Note>
  </Accordion>
</AccordionGroup>

## What connecting gets you

<Columns cols={2}>
  <Card title="Customer recognition" icon="user-check">
    An existing customer calling in is identified from their number. The agent can reference their history instead of asking questions you already know the answers to.
  </Card>

  <Card title="Real availability" icon="calendar-check">
    Booking runs against your actual schedule, so the agent can't offer a slot your crew is already on.
  </Card>

  <Card title="Write-back" icon="pen-to-square">
    Jobs booked on a call land in the CRM. No re-keying, and dispatch sees them immediately.
  </Card>

  <Card title="Follow-up material" icon="file-invoice-dollar">
    Unsold quotes and dormant customers become campaign lists — the highest-return [outbound](/outbound/overview) you can run.
  </Card>
</Columns>

## One at a time

<Warning>
  Only one write-capable field-service CRM can be connected per workspace. Connecting a second is rejected with a message telling you to disconnect the first.
</Warning>

The reason is correctness, not licensing. Booking write-back dispatches to exactly one system by fixed precedence, while appointment context can be tagged by whichever provider produced it. With two write-capable CRMs connected, a reschedule or cancellation can be routed to the system that doesn't hold the job — and the customer's change silently goes nowhere.

If you're genuinely migrating between CRMs, disconnect the old one first and confirm bookings are landing correctly in the new one before you send real traffic.

## Connecting

<Steps>
  <Step title="Authorize">
    From **Integrations**, choose your CRM and complete the OAuth flow. Use an account with permission to read customers and create jobs, and one that won't be deactivated when someone leaves.
  </Step>

  <Step title="Check the sync">
    Confirm customers are appearing as [contacts](/outbound/contacts) and the connection shows a recent sync time.
  </Step>

  <Step title="Book a test job">
    Call your own number, book an appointment, and verify it lands in the CRM with the right customer, service, time, and duration.
  </Step>

  <Step title="Test a reschedule">
    Move the test booking and confirm the change propagates. This is the path that breaks quietly if something is misconfigured.
  </Step>
</Steps>

## If the connection breaks

Usually revoked access or a password change on the CRM side. Reconnect from **Integrations** — fresh credentials are issued and your configuration is preserved. Check the last sync time whenever bookings seem to be missing from the CRM.
