Overview
CallRail records every call to your firm's tracking numbers, along with texts and website form submissions, and attributes each one to the marketing source that produced it. Through LawLink you can read calls (with recordings and transcripts where your plan includes them), text conversations, form submissions and leads, see call counts by source and campaign, and text or call a person back.
Note: calls, texts and form submissions also appear in LawLink's universal communications, next to calls logged in your practice-management system. CallRail captures calls automatically, but only calls to numbers it tracks.
Integration Steps
Create a CallRail API key
In CallRail, open Integrations and, under Data Access, choose API Keys. Create a new v3 key and copy it straight away — CallRail shows it only once.
🔑 The key sees what its user sees. A CallRail API key belongs to the CallRail user who created it and can read only the companies that user can access. Create it as a user with access to every company you want in LawLink — an Admin user if you want them all. Keys do not expire; deleting the key in CallRail is how you revoke it.
Connect CallRail in LawLink
In LawLink, open Integrations, find the CallRail plate and click Connect. Paste the key into API Key and click Connect.
✅ Validation: LawLink checks the key against CallRail before saving it, so a successful connect confirms the key works.
Several CallRail accounts? If your key can see more than one
account (common for agencies), the first attempt turns Account ID
into a list of those accounts. Choose one and click Connect again. You can also type
the account in up front — either its ID (ACC…) or the nine-digit number after
/a/ in your CallRail dashboard URL.
Authentication
LawLink stores the key encrypted, per user and per organization, and attaches it to every
CallRail request. All CallRail calls go to https://api.callrail.com/v3.
# Upstream headers LawLink sends to CallRail
Authorization: Token token="YOUR_CALLRAIL_KEY"
Request-From: lawlink
# Key is validated on connect against:
GET https://api.callrail.com/v3/a.json
One account at a time: a connection reads and acts on one CallRail account. If your key can see several, switch between them from the Account list on the CallRail page in LawLink — the stored key is reused, so you don't paste it again. Switching changes the account for every request through this connection, including your AI assistant, and can only be done in the LawLink web app.
Disconnecting: remove the connection any time from the CallRail plate. Admins can disconnect CallRail for another user in their organization.
What You Can Do
Dates are read as UTC. A list without a start date covers everything CallRail still holds (25 months), not CallRail's own 7-day default. The in-app API explorer lists every endpoint.
Calls
List and open calls with direction, answered / missed / voicemail, source, campaign and UTM tags; fetch the recording; see the pages a caller viewed.
GET /api/v1/callrail/calls?date_from=2026-09-01&answer_status=missed
GET /api/v1/callrail/calls/{call_id}
GET /api/v1/callrail/calls/{call_id}/recording
What "missed" covers: CallRail's answer_status=missed
includes calls that went to voicemail and abandoned calls, where the caller hung up
within a few seconds. Abandoned calls are often most of them, so read a missed-call
count as an upper bound, not a count of lost callers. A voicemail call is reported
with answered: true and voicemail: true.
Transcripts and call summaries are returned only on CallRail plans with Premium Conversation Intelligence. On other plans they are empty even when CallRail transcribed the call.
Attribution
Call counts grouped by source, campaign, keyword, referrer, landing page or company, and call volume per day.
GET /api/v1/callrail/calls/summary?group_by=source
GET /api/v1/callrail/calls/timeseries
GET /api/v1/callrail/forms/summary?group_by=source
Texts, forms and leads
Text conversations, website form submissions, and each lead's full timeline of calls, texts, forms and attribution touchpoints.
GET /api/v1/callrail/texts
GET /api/v1/callrail/form-submissions
GET /api/v1/callrail/leads/{lead_id}/timeline
Text or call someone back
Send one text from a CallRail tracking number, or place an outbound call that rings your phone first and then dials the customer.
POST /api/v1/callrail/texts
POST /api/v1/callrail/calls
⚠️ These reach a real person. CallRail allows person-to-person messages only — no automated or bulk texting — and texting requires your business's text-messaging registration in CallRail. Identify yourself in the message; on a first text CallRail adds opt-out wording (e.g. "Reply STOP") itself. Through an AI assistant, LawLink shows a preview and sends only after you approve it. Outbound calls work for US and Canadian numbers only.
Annotate records
Set notes, tags, lead status and value on calls, form submissions and SMS threads, and manage tags.
PUT /api/v1/callrail/calls/{call_id}
PUT /api/v1/callrail/form-submissions/{form_submission_id}
PUT /api/v1/callrail/sms-threads/{thread_id}
A field sent as null clears it. Marking a call as spam cannot be undone
through the API and removes it from CallRail's reports and billing.
Account settings
Manage CallRail users, companies, notifications, webhook integrations and their filters, outbound caller IDs, summary emails and automated text-reply flows. Tracking numbers can be read but not bought or changed through LawLink.
⚠️ These change your CallRail account. A webhook integration sends call data to the URL you give it, and a message flow texts leads automatically. Changing a user's email is not offered — CallRail requires that user's password, which LawLink does not handle.
Limits
CallRail limits each account to 1,000 requests an hour and 10,000 a day, plus 150 texts and 100 outbound calls an hour. CallRail deletes calls, texts and form submissions after 25 months.
⚠️ Best practices:
- Use the summary and timeseries endpoints for counts instead of paging through every call.
- On HIPAA CallRail accounts, recording links expire in about a day — fetch a fresh one when needed and never store it.
Troubleshooting
"CallRail rejected the API key"
Re-copy the key (no surrounding spaces). If it was deleted in CallRail, create a new one.
"This API key can see several CallRail accounts"
Choose the account from the Account ID list that appears and click Connect again. To change it later, use the Account list on the CallRail page.
Form submissions: "You do not have permission"
CallRail refuses the form submission list to some users even when the form summary works. Give the key's CallRail user access to form data, or connect with a key created by an Admin user.
Some calls or companies are missing
The key only sees what its CallRail user can see. Give that user access to the missing companies, or connect with a key created by an Admin user.
"Rate limit exhausted"
The account's hourly CallRail limit was reached. It resets on the hour; CallRail support can raise it.