Skip to content

Analytics

CallRail
API integration

Ship Analytics features without building the integration. Full CallRail API access via Proxy and 50+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Talk to us
CallRail

Use Cases

Why integrate with CallRail

Common scenarios for SaaS companies building CallRail integrations for their customers.

01

Embed call attribution into marketing CRMs

Marketing CRMs and dashboards can pull CallRail calls, form submissions, and timeseries data to blend offline conversions with ad spend. This lets their customers prove true Cost Per Acquisition without manual CSV exports.

02

Automate agency client onboarding

Agency management platforms can chain company, tracker, and message flow creation to spin up a new client sub-account in CallRail without leaving the SaaS UI. This removes a repetitive setup task that agencies otherwise do by hand for every new client.

03

Power AI call coaching and QA

Sales enablement and conversation intelligence platforms can sync calls, pull recording URLs, and ingest audio to analyze rep performance. They avoid building VoIP infrastructure and get a steady feed of real customer conversations.

04

Close the loop on offline conversions

CRMs can push lead status, value, and tags back to CallRail when a deal progresses, so CallRail can forward those offline conversions to Google and Meta Ads. This turns the SaaS platform into the system of record that drives smarter ad bidding.

05

Unify communications in vertical CRMs

Field service, legal, and healthcare CRMs can embed CallRail calls, SMS threads, and form submissions directly on a contact record. Dispatchers and reps get full lead context without switching tabs.

What You Can Build

Ship these features with Truto + CallRail

Concrete product features your team can ship faster by leveraging Truto’s CallRail integration instead of building from scratch.

01

Attribution-enriched contact sync

Poll calls and form submissions to create or update CRM contacts with source, campaign, medium, and keyword attribution fields attached.

02

Click-to-call with tracking numbers

Trigger outbound bridge calls from your app using CallRail's call creation endpoint so reps dial through tracked numbers and get recordings automatically.

03

Agency client provisioning wizard

Create a CallRail company, provision trackers, and configure message flows in a single guided flow when a new client is added in your platform.

04

Omnichannel lead timeline embed

Render a chronological feed of calls, texts, and form submissions on any contact record using the leads timeline endpoint.

05

Two-way SMS inbox

List SMS threads and send outbound text messages so your users can text prospects from your UI while CallRail keeps the thread logged on the tracking number.

06

Call tagging and enrichment loop

Fetch call recordings, run your own AI or sentiment analysis, then bulk update CallRail calls with tags, lead status, and value based on your findings.

SuperAI

CallRail AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_call_rail_calls

List calls in a CallRail account, filterable by date range, direction, company, tracker, and tags. Returns: id, answered, business_phone_number, customer_city, customer_country, customer_name, customer_phone_number, customer_state, direction, duration, recording, recording_duration, start_time, tracking_phone_number, voicemail, agent_email, lead_status, note, tags, source, campaign, medium,…. Required: account_id.

call_rail_calls_list_page_views

List the web page views from the visitor session that generated a CallRail call. Returns page view records: page_url, referrer_url, created_at. Required: call_id, account_id.

call_rail_calls_get_recording

Get the recording for a CallRail call by id. Returns: url, page, per_page, total_pages, total_records. Required: call_id, account_id.

create_a_call_rail_call

Create an outbound call in CallRail. Returns the created call record: id, direction, customer_phone_number, tracking_phone_number, duration, start_time, recording. Required: account_id, caller_id, customer_phone_number, business_phone_number.

get_single_call_rail_call_by_id

Get details for a single call in CallRail by id. Returns: id, answered, business_phone_number, customer_city, customer_country, customer_name, customer_phone_number, customer_state, direction, duration, recording, recording_duration, recording_player, start_time, tracking_phone_number, voicemail, agent_email, milestones, keywords_spotted. Required: id, account_id.

call_rail_calls_bulk_update

Update a CallRail call's note, tags, lead status, customer name, or spam flag by id. Returns the updated call record: id, customer_name, direction, duration, start_time, recording. Required: id, account_id.

list_all_call_rail_companies

List all CallRail companies in an account. Returns a paginated array of company records including id, name, status, time_zone, created_at, dni_active, and script_url. Required: account_id.

create_a_call_rail_company

Create a new company in a CallRail account. Returns the created company object including its id, name, status, time_zone, and created_at. Required: account_id, name.

get_single_call_rail_company_by_id

Get a single CallRail company by id. Returns the company object including id, name, status, time_zone, created_at, dni_active, and script_url. Required: id, account_id.

call_rail_companies_bulk_update

Bulk update multiple CallRail companies at once — e.g. enable or disable external form tracking across the specified companies. Returns: updated_records, page, per_page, total_pages, total_records. Required: account_id, company_ids.

list_all_call_rail_tags

List all tags defined in a CallRail account. Returns a paginated array of tags including id, name, tag_level, color, background_color, company_id, status, and created_at. Required: account_id.

get_single_call_rail_tag_by_id

Get a single CallRail tag by id. Returns the tag object including id, name, tag_level, color, background_color, company_id, status, and created_at. Required: id, account_id.

create_a_call_rail_tag

Create a tag in a CallRail company or account. Returns the created tag object including id, name, tag_level, color, background_color, company_id, status, and created_at. Required: name, account_id. Account-level tags (tag_level=account) can only be created by administrators.

list_all_call_rail_trackers

List trackers (tracking phone numbers) in a CallRail account, both source trackers and session (number pool) trackers. Returns: id, name, type, status, destination_number, tracking_numbers, whisper_message, sms_enabled, sms_supported, company, call_flow, source, created_at, disabled_at. Required: account_id.

get_single_call_rail_tracker_by_id

Get a single CallRail tracker by id. Returns: id, name, type, status, destination_number, tracking_numbers, whisper_message, sms_enabled, sms_supported, company, call_flow, source, created_at, disabled_at. Required: account_id, id.

create_a_call_rail_tracker

Create a CallRail tracker in a company: either a source tracker (one number for a marketing source such as a billboard or Google organic) or a session tracker (a pool of numbers swapped per website visitor). Returns the created tracker: id, name, type, status, destination_number, tracking_numbers, company, call_flow, source, created_at. Required: account_id, type, name, company_id, call_flow.

call_rail_trackers_bulk_update

Update a single CallRail tracker by id (despite the method name, this updates one tracker). Change name, call_flow, source, sms_enabled, swap_targets, whisper_message, pool_size, campaign_name or replace the tracking number. Returns the updated tracker: id, name, type, status, destination_number, tracking_numbers, company, call_flow, source, created_at, disabled_at. Required: account_id, id.

list_all_call_rail_users

List all users in a CallRail account, optionally sorted alphabetically (e.g. by email). Returns each user's id, email, name, first_name/last_name, role, created_at, and the companies they belong to. Required: account_id.

get_single_call_rail_user_by_id

Get a single CallRail user by id. Returns: id, created_at, page, per_page, total_pages, total_records. Required: id, account_id.

call_rail_users_bulk_delete

Delete a user from a CallRail account by id. Only Account Administrators can perform this action. Returns an empty 204 response on success. Required: id, account_id.

list_all_call_rail_form_submissions

List all form submissions for a CallRail account. Returns: id, company_id, person_id, form_data, form_url, landing_page_url, referrer, referring_url, submitted_at, first_form, customer_phone_number, customer_name, customer_email, formatted_customer_phone_number, formatted_customer_name, source, keywords, campaign, medium, milestones. Required: account_id. Supports filtering by company_id,…

get_single_call_rail_form_submission_by_id

Get a single form submission in CallRail by id. Returns: id, page, per_page, total_pages, total_records. Required: id and account_id.

call_rail_form_submissions_list_ignored_fields

List the form fields CallRail is configured to ignore when capturing form submissions for the account's companies. Returns: field_names, company_ids. Required: account_id.

list_all_call_rail_sms_threads

List SMS thread summaries for a CallRail account, ordered newest threads first. Returns: id, notes, tags, value, lead_qualification, company_id, initial_tracker_id, current_tracker_id, customer_name, customer_phone_number, initial_tracking_number, current_tracking_number, state, company_time_zone. Required: account_id. Date filtering defaults to the last 7 days (date_range=recent); communication…

get_single_call_rail_sms_thread_by_id

Get a single CallRail SMS thread by id, including its full message exchange ordered most-recent first. Returns: id, page, per_page, total_pages, total_records. Required: id, account_id.

list_all_call_rail_text_messages

List all text message conversations for a CallRail account, ordered newest-first. Returns conversation objects with id, customer_name, customer_phone_number, state, last_message_at, and the two most recent recent_messages. Required: account_id.

create_a_call_rail_text_message

Send a text message from a CallRail tracking number to a customer, starting a new conversation or continuing an existing one. Returns the conversation object including id, company_id, customer_phone_number, state, and recent_messages. Required: account_id, customer_phone_number, tracking_number, content, and company_id.

get_single_call_rail_text_message_by_id

Get a single text message conversation in CallRail by id, with its messages ordered most recent first. Returns: id, page, per_page, total_pages, total_records. Required: account_id and id (the conversation id).

call_rail_text_messages_list_media

Download a media file attached to an MMS in a CallRail text conversation. Returns the raw media file content for immediate download rather than a JSON object; media locations are short-lived. Required: account_id, conversation_id, and media_number.

list_all_call_rail_integrations

List integrations (Webhooks, Custom, Google Analytics, Slack, etc.) configured for companies in a CallRail account. Returns: id, type, state, config. Required: account_id.

create_a_call_rail_integration

Create and activate an integration for a CallRail company. Only the Webhooks and Custom (cookie capture) types can be created through the API; a company can have one integration of each type. Returns: id, type, state, config, signing_key. Required: account_id, type, company_id, config.

get_single_call_rail_integration_by_id

Get a single CallRail integration by id. Returns: id, type, state, config. Required: account_id, id.

call_rail_integrations_bulk_delete

Disable a single CallRail integration by id (despite the method name, this acts on one integration). The integration is disabled rather than removed. Returns an empty 204 response on success. Required: account_id, id.

list_all_call_rail_integration_filters

List all integration filters (integration triggers) configured for a CallRail company. Returns each filter's id, company_id, integration_id, tracker_ids, call_type, min_duration, max_duration, lead_status, and associated integration. Required: company_id.

create_a_call_rail_integration_filter

Create a new integration filter that limits which calls activate an integration in a CallRail company. Returns the created filter with id, company_id, integration_id, tracker_ids, call_type, min_duration, max_duration, lead_status, and its associated integration.

get_single_call_rail_integration_filter_by_id

Get a single integration filter by id in a CallRail company. Returns: id, page, per_page, total_pages, total_records. Required: id.

call_rail_integration_filters_bulk_update

Update an existing integration filter by id, e.g. to change call_type or min_duration. Returns the updated filter with id, company_id, integration_id, tracker_ids, call_type, min_duration, max_duration, lead_status, and its associated integration. Required: id.

list_all_call_rail_notifications

List all notifications in a CallRail account. Returns paginated notification records including id, name, user_id, alert_type, company_id, tracker_id, call_enabled, sms_enabled, and the send_desktop/send_email/send_push delivery flags. Required: account_id.

create_a_call_rail_notification

Create a notification in CallRail that alerts a user about calls and/or text messages for a company or tracker. Returns the created notification including id, user_id, alert_type, company_id, company_name, tracker_id, tracker_name, call_enabled, sms_enabled, and the send_desktop/send_email/send_push delivery flags. Required: account_id.

call_rail_notifications_bulk_update

Update a notification's settings in CallRail by id. Only certain settings may be modified; to change the notification's scope or user, delete the record and create a new one. Returns the updated notification including id, user_id, alert_type, company_id, company_name, tracker_id, tracker_name, call_enabled, sms_enabled, and the send_desktop/send_email/send_push delivery flags. Required: id.

call_rail_notifications_bulk_delete

Delete a notification in CallRail by id. Returns an empty 204 response on success. Required: id.

list_all_call_rail_caller_ids

List outbound caller IDs (external phone numbers registered to show as caller ID on outbound calls) in a CallRail account. Returns: id, phone_number, name, verified, created_at, validation_code. Required: account_id.

create_a_call_rail_caller_id

Register an external phone number as an outbound caller ID for a CallRail company. CallRail immediately places a verification call to the number; the recipient must enter the returned validation_code on the keypad. Repeat the request if the call is missed. Returns: id, phone_number, name, verified, created_at, validation_code. Required: account_id, phone_number, name, company_id.

get_single_call_rail_caller_id_by_id

Get a single outbound caller ID by id. Returns: id, phone_number, name, verified, created_at, validation_code. Required: account_id, id.

delete_a_call_rail_caller_id_by_id

Delete an outbound caller ID by id. Returns an empty 204 response on success. Required: account_id, id.

list_all_call_rail_summary_emails

List summary email subscriptions (periodic daily, weekly or monthly activity emails sent to users) in a CallRail account. Non-administrator API keys only see their own subscriptions. Returns: id, scope, frequency, filters, config, user. Required: account_id.

create_a_call_rail_summary_email

Create a summary email subscription for a CallRail user, scoped to one company (company_id) or to every company the user can access. Only administrators can create subscriptions for other users. Returns: id, scope, frequency, filters, config, user. Required: account_id, user_id, frequency.

get_single_call_rail_summary_email_by_id

Get a single summary email subscription by id. Administrators can read any user's subscription; other users only their own. Returns: id, scope, frequency, filters, config, user. Required: account_id, id.

call_rail_summary_emails_bulk_update

Update a single summary email subscription by id (despite the method name, this acts on one subscription). Only frequency and config can change; to change the user or scope, delete and recreate. Returns: id, scope, frequency, filters, config, user. Required: account_id, id.

call_rail_summary_emails_bulk_delete

Delete a single summary email subscription by id, unsubscribing the user from future deliveries (despite the method name, this acts on one subscription). Returns an empty 204 response on success. Required: account_id, id.

list_all_call_rail_message_flows

List message flows (automated inbound text-message handling on registered 10DLC tracking numbers) in a CallRail account. Returns: id, name, updated_at, tracker_ids. Required: account_id.

get_single_call_rail_message_flow_by_id

Get a single CallRail message flow by id including its full step graph. Returns: id, name, updated_at, tracker_ids, initial_step_id, steps. Required: account_id, id.

create_a_call_rail_message_flow

Create a message flow for a CallRail company: a named graph of steps (schedule, sms_response, tag, forward_message, etc.) that runs when a tracking number receives an inbound text. Names must be unique in the company. Returns: id, name, updated_at, tracker_ids, initial_step_id, steps. Required: account_id, company_id, name, initial_step_id, steps.

call_rail_message_flows_bulk_delete

Delete a single CallRail message flow by id (despite the method name, this acts on one flow). Fails if the flow is still assigned to a tracker. Returns an empty 204 response on success. Required: account_id, id.

list_all_call_rail_leads

List leads (people identified across calls, forms and texts) in a CallRail account. All fields are returned by default; use fields to limit them. Returns: id, name, phone, email, created_at, company_id, company_name. Required: account_id.

call_rail_leads_list_timeline

Get the full chronological history of a single CallRail lead: every call, form submission, SMS thread, chat and milestone, plus a lead summary with first/last touch attribution, tags and AI Convert Assist insights. Returns timeline events: type, id, event_date and type-specific fields (direction, duration, answered, form_name, message_content, milestone_type). Required: agency_id, lead_id.

list_all_call_rail_accounts

List accounts. Returns: id, name, outbound_recording_enabled, hipaa_account, numeric_id.

list_all_call_rail_call_summaries

Call summary. Required: account_id.

list_all_call_rail_call_timeseries

Call timeseries. Required: account_id.

Why Truto

Why use Truto’s MCP server for CallRail

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with CallRail in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s CallRail account

Use Truto’s frontend SDK to connect your customer’s CallRail account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call CallRail

Truto’s Proxy API is a 1-to-1 mapping of the CallRail API. You call us, we call CallRail, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate CallRail’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about CallRail on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How does authentication work for CallRail through Truto?

CallRail uses API key authentication scoped to a user's account. Your end users connect through Truto's hosted auth flow, and Truto securely stores and injects the credentials on every request so you never handle API keys directly.

How do we handle agencies that manage multiple CallRail companies?

CallRail's model is Account to Company, and agencies often have many companies under one account. Use the list accounts and list companies endpoints to let your users select which company to sync, and scope all subsequent calls with the chosen account and company IDs to prevent cross-client data leakage.

Can we access call recordings and MMS media?

Yes. Use the get recording endpoint on calls to retrieve audio URLs for QA or AI analysis, and the list media endpoint on text messages to fetch MMS attachments.

How fresh is the data and can we react to new calls in near real time?

CallRail's API is poll-based through Truto. Most integrations list calls, form submissions, and SMS threads on a short interval (for example every 1 to 5 minutes) and page through results using Truto's normalized pagination to pick up new activity.

Can we write data back to CallRail, not just read?

Yes. The integration supports creating calls, text messages, companies, trackers, tags, caller IDs, message flows, integrations, and notifications, plus bulk updates on calls, companies, trackers, and other resources for closed-loop enrichment workflows.

What attribution fields are available for marketing analytics use cases?

Calls and form submissions include marketing attribution data such as source, campaign, medium, referrer URL, and keywords spotted. You can also pull aggregated call summaries and timeseries endpoints for dashboarding without reconstructing them client-side.

CallRail

Get CallRail integrated into your app

Our team understands what it takes to make a CallRail integration successful. A short, crisp 30 minute call with folks who understand the problem.