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

# PracSuite Integration

> Connect your PracSuite account to Routiq using PracSuite's official v1 REST API. Built for AU and UK multi-location clinics.

<Info>
  **Why this matters.** PracSuite (by Smartsoft) is the practice
  management system trusted by larger AU and UK allied-health clinics
  with multi-location operations. Routiq's PracSuite integration is
  built directly against the official v1 REST API and uses the
  approved partner credentials, so your clinic's connection is fully
  supported by Smartsoft.
</Info>

## What Robyn can do with PracSuite

* **Read patients** — recognise returning callers by phone, look up history, capture new-patient records
* **Read availability** — pulled from per-practitioner appointment-type configurations across all your locations
* **Book, reschedule, cancel** — Robyn writes appointments straight into PracSuite
* **Read practitioners and businesses** — for routing decisions and per-practitioner escalations
* **Read appointment history** — server-side filterable for fast lookups (`q[]=...`)
* **Multi-location aware** — designed for clinics with multiple businesses under one PracSuite account

## How auth works

PracSuite uses a **two-key model** that's different from most other PMSes:

| Header      | What it is                                                                      | Who provides it                |
| ----------- | ------------------------------------------------------------------------------- | ------------------------------ |
| `x-api-key` | **Vendor key** — identifies Routiq as an approved Smartsoft integration partner | Routiq (already configured)    |
| `a-api-key` | **Account key** — identifies your clinic and authorises access to your data     | You generate this in PracSuite |

You only need to generate the **account key**. Routiq's vendor key is managed by us (it doesn't change unless Smartsoft rotates it).

## Before you start

You'll need:

* **Administrator access** to your PracSuite account
* The locations and practitioners Robyn should book into

## Setup

<Steps>
  <Step title="Generate a PracSuite account API key">
    1. Log into PracSuite as an administrator
    2. Go to **Settings** → **API** (your menu may differ slightly by PracSuite version)
    3. Click **Create API Key**
    4. Name it `Routiq Integration`
    5. Copy the key — store it somewhere safe immediately

    <Warning>
      The account key gives full access to your clinic data. Treat it like a password. Use a separate key for each integration so you can revoke individually.
    </Warning>
  </Step>

  <Step title="Connect in Routiq">
    1. In Routiq: **Setup** → **Connect PracSuite** (or **Settings** → **Integrations** → **PracSuite**)
    2. Paste your account API key
    3. Confirm your **practice timezone** (used for converting appointment times — PracSuite returns most timestamps in UTC, except `app_time` which is in tenant-local time)
    4. Click **Connect and Sync**

    Routiq sends a verification request using both keys (vendor + account), confirms the connection, and starts the initial sync.
  </Step>

  <Step title="Wait for the initial sync">
    Sync time depends on database size:

    | Practice size        | Estimated time |
    | -------------------- | -------------- |
    | \< 500 patients      | 2–3 minutes    |
    | 500–2,000 patients   | 7–12 minutes   |
    | 2,000–5,000 patients | 15–25 minutes  |
    | > 5,000 patients     | 25–40 minutes  |

    PracSuite paginates at 50 records per page (max 200). Sync respects rate limits and uses server-side filtering (`q[]`) where possible to minimise API calls.
  </Step>

  <Step title="Verify the connection">
    Once sync completes:

    1. Go to **Patients** in Routiq — your PracSuite patient list should appear
    2. Check that locations and practitioners match
    3. Try a test booking from the **Test Robyn** screen

    <Check>PracSuite is connected. Robyn can now book, reschedule, and identify patients across all your PracSuite locations.</Check>
  </Step>
</Steps>

## What gets synced

<CardGroup cols={2}>
  <Card title="Patient data">
    `client_id`, name, email, phone, DOB, gender, address, status
  </Card>

  <Card title="Appointment data">
    Appointment ID, `app_time` (clinic timezone), practitioner, business, appointment type, status, duration
  </Card>

  <Card title="Practice data">
    All businesses (locations) under your account, practitioners, appointment types, schedules
  </Card>

  <Card title="Filtering">
    Server-side `q[]` filters — fast lookups by phone, DOB, last-modified, date range
  </Card>
</CardGroup>

## Sync schedule

* **Initial sync** on connect — full pull of patients, appointments (last 24 months), practitioners, businesses, appointment types
* **Incremental sync** every 15 minutes — uses `last_modified` filtering to fetch only changed records
* **Daily reconciliation sync** at 02:00 in your practice timezone — full re-sync to catch anything incremental missed

PracSuite's API doesn't currently support push webhooks, so changes made in PracSuite reach Routiq with up to 15 minutes' delay (vs. seconds for Cliniko's webhook-based integration).

## Rate limits and quotas

PracSuite enforces both a per-second rate limit and a daily quota, applied per vendor key (Routiq's). Routiq stays well under both by:

* Caching availability lookups for short windows
* Using `last_modified` filtering for incremental sync
* Using `q[]` server-side filtering instead of client-side pagination scans

If you ever see persistent slow responses, contact us — we can request a quota increase from Smartsoft.

## Troubleshooting

<AccordionGroup>
  <Accordion title="'Invalid API key' or 401 Unauthorized">
    Double-check the account key in PracSuite (Settings → API). If it was recently revoked or rotated, generate a new one and update Routiq via Settings → Integrations → PracSuite → Update API Key.
  </Accordion>

  <Accordion title="403 Forbidden on a specific business or practitioner">
    Your account API key may not have access to that business. Some PracSuite accounts scope keys per business — check the key's scope in PracSuite settings.
  </Accordion>

  <Accordion title="Appointments showing in the wrong timezone">
    PracSuite returns most timestamps in UTC, except `app_time` which is in your clinic's tenant-level timezone. Check that the timezone configured in Routiq matches the timezone in your PracSuite account settings.
  </Accordion>

  <Accordion title="429 Too Many Requests during sync">
    Rare — Routiq is rate-limit-aware. If you see this, the daily quota may be temporarily exhausted (e.g. after a bulk import). Wait until the quota resets (next day) or contact us to request a quota increase.
  </Accordion>

  <Accordion title="Bookings aren't appearing in PracSuite">
    Verify the practitioner and appointment type exist on the location Robyn is booking into. If you've recently added a new business or practitioner, trigger a manual sync (Settings → Integrations → PracSuite → Sync Now) so Robyn picks up the new records.
  </Accordion>
</AccordionGroup>

## Managing the integration

### Rotating the account key

1. Generate a new key in PracSuite
2. In Routiq: **Settings** → **Integrations** → **PracSuite** → **Update API Key**
3. Paste, save
4. Revoke the old key in PracSuite

### Disconnecting

<Warning>
  Disconnecting PracSuite stops Robyn from booking, halts all outbound sequences, and pauses every active recall campaign for this integration.
</Warning>

**Settings** → **Integrations** → **PracSuite** → **Disconnect**. Patient data is retained for 30 days post-disconnect for compliance and recovery, then deleted.

### Manual resync

**Settings** → **Integrations** → **PracSuite** → **Sync Now** — useful after a bulk import or reconciling a large data change.

## Next

<CardGroup cols={2}>
  <Card title="Set up the calls channel" icon="phone" href="/channels/calls">
    Forward your clinic line to Robyn and start handling calls.
  </Card>

  <Card title="Turn on lapsed-patient reactivation" icon="rotate-right" href="/outbound/lapsed-patient-reactivation">
    Bring dormant PracSuite patients back with multi-touch sequences.
  </Card>
</CardGroup>
