Overview
Clio is a legal practice management platform – matters, contacts, billing, documents, tasks, and calendar. The Automize Clio connector integrates with the Clio Manage REST API (v4) so you can automate matter intake, contact sync, time/expense entry, and invoicing from inside an RPA process.
- Regions: US (app.clio.com), UK (eu.app.clio.com), CA (ca.app.clio.com), AU (au.app.clio.com). Region is inferred from the subdomain you select when connecting.
- Plans: All paid Clio Manage plans expose the REST API. Document Automation and Clio Grow live on separate APIs not covered by this connector.
Setting up the connection
Auth type: OAuth 2.0 (Authorization Code).
- Sign in to Clio as an administrator.
- Go to Settings → Developer Applications and click "Add".
- Name the app (e.g. "Automize"), set the Redirect URI shown in the Automize Clio connector dialog, and enable the scopes listed below.
- Copy the Client ID and Client Secret.
- In Automize, open Settings → Connectors → Clio → Add connection. Paste the credentials and pick your Clio region.
- Click "Connect with Clio", approve the consent screen. The connection is ready.
Scopes required:
matterscontactsactivitiesbillsdocumentstaskscalendar
Find your credentials at https://app.clio.com/settings/developer_applications.
Rate limits
Clio enforces a soft rate limit of roughly 100 requests per minute per user token, plus burst headroom. The connector reads X-RateLimit-Remaining / Retry-After headers and automatically backs off and retries up to 3 times on a 429. Sustained heavy reads should page (limit=200) rather than poll.
Data model
Matters are the central object – every billable activity, document, task,
bill, or contact relationship ultimately threads back to a Matter.
Matter ─┬─ Contacts (client + related parties)
├─ Activities (time + expense entries)
├─ Tasks
├─ Documents
└─ Bills ─── Activities (the line items)
A Contact can exist independently and later be linked to a Matter; a Bill
always belongs to one Matter and groups the Activities billed on it.Available operations
14 operations available. Click any row to jump to its detail.
| Operation | Category | What it does |
|---|---|---|
| Create Activity | General | Create a new activity |
| Create Bill | General | Create a new bill |
| Create Contact | General | Create a new contact |
| Create Matter | General | Create a new matter |
| Create Task | General | Create a new task |
| Get Contact | General | Get a contact by ID |
| Get Matter | General | Get a matter by ID |
| List Activities | General | List all activities |
| List Bills | General | List all bills |
| List Contacts | General | List all contacts |
| List Documents | General | List all documents |
| List Matters | General | List all matters |
| List Tasks | General | List all tasks |
| Update Matter | General | Update an existing matter |
Operations
Create Activity
Create a new activity
| Parameter | Required | Type | Description |
|---|---|---|---|
Data data | Yes | textarea |
Tips
- type is required – TimeEntry or ExpenseEntry.
- For time entries, quantity_in_hours is required and accepts decimals (e.g. 1.5 = 1h30).
- non_billable=true records work without billing the client.
Errors
MATTER_REQUIRED– Activities must be linked to a Matter via matter_id.
Create Bill
Create a new bill
| Parameter | Required | Type | Description |
|---|---|---|---|
Data data | Yes | textarea |
Tips
- Bills are normally generated from unbilled Activities. Pass activity_ids[] to include specific entries.
- Set state=draft first to allow edits, then transition to pending to lock.
Create Contact
Create a new contact
| Parameter | Required | Type | Description |
|---|---|---|---|
Data data | Yes | textarea |
Tips
- For a Person, send type=Person + first_name + last_name. For an org, send type=Company + name.
- email_addresses is an array of {name, address, default_email}. The first becomes the default if none flagged.
- phone_numbers follows the same shape – {name, number, default_number}.
Errors
DUPLICATE– Clio detected an existing contact with the same email or phone. Use Get Contact first and update if needed.
Create Matter
Create a new matter
| Parameter | Required | Type | Description |
|---|---|---|---|
Data data | Yes | textarea |
Tips
- client_id (a Contact ID) is required. Create the Contact first if it doesn't exist.
- practice_area_id is optional but recommended – it drives Clio's reporting buckets.
- display_number is auto-assigned if omitted; provide one to match an external system.
Errors
UNPROCESSABLE_ENTITY– One or more fields failed validation. The response body lists the offending field(s).CLIENT_NOT_FOUND– The client_id does not match any Contact in your Clio account.
Create Task
Create a new task
| Parameter | Required | Type | Description |
|---|---|---|---|
Data data | Yes | textarea |
Tips
- name and assignee_id are typically required. Assignees must be Clio users in your account.
- Set due_at to an ISO 8601 datetime – UTC is fine, Clio renders in the user's timezone.
Get Contact
Get a contact by ID
| Parameter | Required | Type | Description |
|---|---|---|---|
Contact Id contact_id | Yes | text |
Tips
- Use fields=id,name,primary_email_address,custom_field_values to reduce payload.
Get Matter
Get a matter by ID
| Parameter | Required | Type | Description |
|---|---|---|---|
Matter Id matter_id | Yes | text |
Tips
- Use fields=id,display_number,description,status,client{id,name} to limit the payload.
List Activities
List all activities
No input parameters.
Tips
- Activities are time + expense entries. Filter by type=TimeEntry or type=ExpenseEntry.
- Date filters use date[gte] / date[lte] (inclusive).
- Pass matter_id=... to scope to one matter.
List Bills
List all bills
No input parameters.
Tips
- Filter by state (draft, pending, awaiting_payment, paid).
- issued_at[gte] / issued_at[lte] for date ranges.
List Contacts
List all contacts
No input parameters.
Tips
- type=Person or type=Company to filter by contact kind.
- Search by email with query=foo@bar.com – case insensitive, substring match.
List Documents
List all documents
No input parameters.
Tips
- Documents are metadata only – content download needs a separate Clio API call (not exposed by this connector yet).
- Filter by matter_id or contact_id to scope.
List Matters
List all matters
No input parameters.
Tips
- Pass status=open (or pending, closed) to filter. Default returns all statuses.
- Pagination uses page + limit. Max limit is 200. Iterate until meta.paging.next is null.
- Use the fields parameter to project only the columns you need – full Matter payloads are heavy.
List Tasks
List all tasks
No input parameters.
Tips
- status=pending or complete. Default returns both.
- due_at[gte] / due_at[lte] for due-date ranges.
Update Matter
Update an existing matter
| Parameter | Required | Type | Description |
|---|---|---|---|
Data data | Yes | textarea | |
Matter Id matter_id | Yes | text |
Tips
- PATCH-style – only fields you send are updated. Empty strings will clear values.
- Status transitions (open → closed) trigger Clio's billing reconciliation, so close after final invoicing.
FAQ
- I get UNAUTHORIZED after about three months – why?
- Clio refresh tokens expire after 90 days of inactivity. Reconnect the connector in Settings → Connectors → Clio.
- How do I attach a custom field value?
- Pass custom_field_values as an array of {custom_field: {id: <id>}, value: <value>}. Find the custom field IDs by calling the Clio API directly during setup, then store them in connector data.
- Does this connector support Clio Grow?
- No. Clio Grow uses a separate API. This connector covers Clio Manage only.
- Why does List Matters miss some matters I can see in the UI?
- Clio scopes API access to the matters the connected user can view. Use a Clio user with firm-wide access if you need to see everything.