Skip to main content

CallRail - Calls

๐Ÿ“– Overviewโ€‹

The CallRail calls module provides comprehensive call tracking and analytics capabilities. It supports retrieving call lists with advanced filtering, accessing call recordings, generating summary analytics, and timeline-based analytics for tracking call volume patterns. This is the core functionality for monitoring and analyzing inbound call data.

Source Files:

  • Controller: external/Integrations/Callrail/Controllers/calls.js
  • Provider: external/Integrations/Callrail/Providers/calls-api.js
  • Routes: external/Integrations/Callrail/Routes/calls.js

External APIs:

  • CallRail API v3 - /calls, /calls/summary, /calls/timeseries

๐Ÿ—„๏ธ Collections Usedโ€‹

integrations.callrail.keyโ€‹

  • Operations: Read
  • Usage: Retrieve API key for authentication
  • See Authentication for full schema

analytics.callrail.userconfigโ€‹

  • Operations: Read
  • Usage: Get configured account/company IDs
  • See Authentication for full schema

๐Ÿ”„ Data Flowโ€‹

Call Listing Flowโ€‹

sequenceDiagram
participant Client as DashClicks Frontend
participant Controller as Calls Controller
participant Provider as Calls API Provider
participant CallRail as CallRail API v3
participant KeysDB as MongoDB (keys)

Client->>Controller: GET /v1/e/callrail/calls?company_id=com_abc123
Controller->>KeysDB: Find API key for account
KeysDB-->>Controller: Return api_key

Controller->>Provider: getCalls(api_key, accountId, params)
Provider->>CallRail: GET /v3/a/{account}/calls.json
CallRail-->>Provider: Call list with pagination

Provider-->>Controller: Formatted call data
Controller-->>Client: {calls: [...], total_pages, total_records}

Call Recording Flowโ€‹

sequenceDiagram
participant Client as DashClicks Frontend
participant Controller as Calls Controller
participant Provider as Calls API Provider
participant CallRail as CallRail API v3
participant KeysDB as MongoDB (keys)

Client->>Controller: GET /v1/e/callrail/calls/recording?id=call_12345
Controller->>KeysDB: Find API key for account
KeysDB-->>Controller: Return api_key

Controller->>Provider: getRecording(api_key, accountId, callId)
Provider->>CallRail: GET /v3/a/{account}/calls/{call_id}/recording.json
CallRail-->>Provider: Recording URL and details

Provider-->>Controller: Recording metadata
Controller-->>Client: {recording_url, duration, transcription}

Summary Analytics Flowโ€‹

sequenceDiagram
participant Client as DashClicks Frontend
participant Controller as Calls Controller
participant Provider as Calls API Provider
participant CallRail as CallRail API v3
participant KeysDB as MongoDB (keys)

Client->>Controller: GET /v1/e/callrail/calls/summary?start_date=2023-10-01
Controller->>KeysDB: Find API key for account
KeysDB-->>Controller: Return api_key

Controller->>Provider: getSummary(api_key, accountId, params)
Provider->>CallRail: GET /v3/a/{account}/calls/summary.json
CallRail-->>Provider: Aggregated call statistics

Provider-->>Controller: Summary data
Controller-->>Client: {total_calls, missed_calls, average_duration, ...}

๐Ÿ”ง Business Logic & Functionsโ€‹


Call Listing Functionsโ€‹

getCalls(req, res, next)โ€‹

Purpose: Retrieve paginated list of calls with advanced filtering

Source: Controllers/calls.js

External API: GET https://api.callrail.com/v3/a/{account_id}/calls.json

Authentication: Bearer token (API key)

Parameters:

  • req.query.company_id (String, required) - CallRail company ID
  • req.query.page (Number, optional) - Page number (default: 1)
  • req.query.per_page (Number, optional) - Results per page (default: 10, max: 250)
  • req.query.start_date (String, optional) - Filter by date range start (ISO 8601)
  • req.query.end_date (String, optional) - Filter by date range end (ISO 8601)
  • req.query.tracking_number (String, optional) - Filter by tracking number
  • req.query.source (String, optional) - Filter by traffic source
  • req.query.answered (Boolean, optional) - Filter answered/unanswered calls
  • req.query.first_call (Boolean, optional) - Filter first-time callers
  • req.query.sort (String, optional) - Sort field (e.g., "start_time", "-duration")
  • req.auth.account_id (ObjectId) - DashClicks account ID

Returns: JSON response with calls array

{
"success": true,
"message": "SUCCESS",
"data": {
"calls": [
{
"id": "call_12345",
"company_id": "com_abc123",
"customer_phone_number": "+15551234567",
"customer_name": "John Doe",
"tracking_phone_number": "+15559876543",
"duration": 180,
"start_time": "2023-10-01T14:30:00Z",
"answered": true,
"first_call": true,
"recording": "https://api.callrail.com/recordings/rec_12345.mp3",
"source": "google",
"keywords": "plumber near me",
"lead_status": "good_lead",
"value": "high"
}
],
"page": 1,
"per_page": 10,
"total_pages": 25,
"total_records": 245
}
}

Business Logic Flow:

  1. Validate Account Access

    • Call checkAccountAccess(req) to verify account permissions
  2. Retrieve Configuration

    • Query database for CallRail API key
    • Get user config to retrieve account_id
  3. Validate Required Fields

    • Check that company_id query parameter provided
    • Return 400 if missing
  4. Build Query Parameters

    • Extract all filter parameters from query string
    • Apply defaults (page: 1, per_page: 10)
    • Format date parameters for API
  5. Call CallRail API

    • Provider makes GET request to /v3/a/{account}/calls.json
    • Pass all query parameters for filtering
  6. Format Response

    • Extract calls array and pagination metadata
    • Include call details (customer info, duration, source, etc.)
    • Return formatted data

Request Example:

GET /v1/e/callrail/calls?company_id=com_abc123&start_date=2023-10-01&end_date=2023-10-31&answered=true&page=1&per_page=20
Authorization: Bearer {jwt_token}

Success Response:

{
"success": true,
"message": "SUCCESS",
"data": {
"calls": [
{
"id": "call_12345",
"company_id": "com_abc123",
"customer_phone_number": "+15551234567",
"customer_name": "John Doe",
"tracking_phone_number": "+15559876543",
"duration": 180,
"start_time": "2023-10-01T14:30:00Z",
"answered": true,
"first_call": true,
"recording": "https://api.callrail.com/recordings/rec_12345.mp3",
"recording_duration": "00:03:00",
"recording_player": "https://app.callrail.com/calls/call_12345",
"source": "google",
"medium": "cpc",
"campaign": "fall-promotion",
"keywords": "plumber near me",
"referring_url": "https://google.com",
"landing_page_url": "https://example.com/services/plumbing",
"lead_status": "good_lead",
"value": "high",
"note": "Customer needs emergency service",
"tags": ["urgent", "residential"]
}
],
"page": 1,
"per_page": 20,
"total_pages": 13,
"total_records": 245
}
}

Error Response (Missing company_id):

{
"success": false,
"errno": 400,
"message": "Company ID is required to fetch calls."
}

Filtering Options:

ParameterTypeDescriptionExample
start_dateISO 8601Filter calls after this date2023-10-01T00:00:00Z
end_dateISO 8601Filter calls before this date2023-10-31T23:59:59Z
tracking_numberStringFilter by specific tracking number+15559876543
sourceStringFilter by traffic sourcegoogle, facebook, direct
answeredBooleanFilter answered/missed callstrue, false
first_callBooleanFilter first-time callerstrue, false
lead_statusStringFilter by lead qualitygood_lead, qualified
sortStringSort field (prefix with - for desc)start_time, -duration

Error Handling:

  • Invalid Account: Returns 400 with INVALID_ACCOUNT_ID
  • No API Key: Returns 400 with descriptive message
  • Missing company_id: Returns 400 with specific message
  • Invalid Date Format: CallRail returns validation error
  • CallRail API Error: Propagated to error middleware

Example Usage:

// Fetch answered calls for October 2023
const response = await fetch(
'/v1/e/callrail/calls?company_id=com_abc123&start_date=2023-10-01&end_date=2023-10-31&answered=true',
{ headers: { Authorization: `Bearer ${token}` } },
);

const { calls, total_records } = await response.json();

// Fetch first-time callers
const firstTimers = await fetch('/v1/e/callrail/calls?company_id=com_abc123&first_call=true', {
headers: { Authorization: `Bearer ${token}` },
});

Side Effects:

  • โ„น๏ธ Database Read: Queries API key and config
  • โ„น๏ธ External API Call: CallRail API usage

Call Recording Functionsโ€‹

getRecording(req, res, next)โ€‹

Purpose: Retrieve call recording URL and metadata

Source: Controllers/calls.js

External API: GET https://api.callrail.com/v3/a/{account_id}/calls/{call_id}/recording.json

Authentication: Bearer token (API key)

Parameters:

  • req.query.id (String, required) - CallRail call ID
  • req.auth.account_id (ObjectId) - DashClicks account ID

Returns: JSON response with recording details

{
"success": true,
"message": "SUCCESS",
"data": {
"id": "call_12345",
"recording": "https://api.callrail.com/recordings/rec_12345.mp3",
"recording_duration": "00:03:00",
"recording_player": "https://app.callrail.com/calls/call_12345",
"transcription": "Hello, this is John from...",
"transcription_available": true
}
}

Business Logic Flow:

  1. Validate Account Access

    • Verify account permissions
  2. Retrieve Configuration

    • Query database for CallRail API key
    • Get user config for account_id
  3. Validate Required Fields

    • Check that id query parameter provided
    • Return 400 if missing
  4. Call CallRail API

    • Provider makes GET request to recording endpoint
    • Include call ID in path
  5. Return Recording Details

    • Include recording URL (MP3 file)
    • Include duration and player URL
    • Include transcription if available

Request Example:

GET /v1/e/callrail/calls/recording?id=call_12345
Authorization: Bearer {jwt_token}

Success Response:

{
"success": true,
"message": "SUCCESS",
"data": {
"id": "call_12345",
"recording": "https://api.callrail.com/recordings/rec_12345.mp3",
"recording_duration": "00:03:00",
"recording_player": "https://app.callrail.com/calls/call_12345",
"transcription": "Hello, this is John from Acme Services. How can I help you today?...",
"transcription_available": true,
"formatted_tracking_phone_number": "(555) 987-6543",
"formatted_customer_phone_number": "(555) 123-4567"
}
}

Error Response (Missing call ID):

{
"success": false,
"errno": 400,
"message": "Call ID is required to fetch recording."
}

Recording Availability:

  • Recordings available if account has recording enabled
  • Recording may take up to 5 minutes after call ends to process
  • CallRail returns 404 if recording doesn't exist
  • Transcription requires additional CallRail feature

Error Handling:

  • Invalid Account: Returns 400 with INVALID_ACCOUNT_ID
  • No API Key: Returns 400 with descriptive message
  • Missing call ID: Returns 400 with specific message
  • Recording Not Found: CallRail returns 404 error
  • Recording Not Available: Returns null recording field

Example Usage:

// Get recording for call
const response = await fetch('/v1/e/callrail/calls/recording?id=call_12345', {
headers: { Authorization: `Bearer ${token}` },
});

const { recording, transcription } = await response.json();

// Play recording in browser
const audio = new Audio(recording);
audio.play();

Side Effects:

  • โ„น๏ธ Database Read: Queries API key and config
  • โ„น๏ธ External API Call: CallRail API usage
  • โ„น๏ธ Recording Access: Generates temporary access URL

Analytics Functionsโ€‹

getSummary(req, res, next)โ€‹

Purpose: Retrieve aggregated call statistics for date range

Source: Controllers/calls.js

External API: GET https://api.callrail.com/v3/a/{account_id}/calls/summary.json

Authentication: Bearer token (API key)

Parameters:

  • req.query.company_id (String, optional) - Filter by company
  • req.query.start_date (String, required) - Summary start date (ISO 8601)
  • req.query.end_date (String, required) - Summary end date (ISO 8601)
  • req.query.group_by (String, optional) - Group results by field
  • req.auth.account_id (ObjectId) - DashClicks account ID

Returns: JSON response with summary statistics

{
"success": true,
"message": "SUCCESS",
"data": {
"total_calls": 245,
"missed_calls": 12,
"answered_calls": 233,
"first_time_callers": 89,
"average_duration": 180,
"leads": 156,
"good_leads": 134,
"qualified_leads": 98,
"total_talk_time": 41940,
"by_source": {
"google": 145,
"facebook": 56,
"direct": 44
}
}
}

Business Logic Flow:

  1. Validate Account Access

    • Verify account permissions
  2. Retrieve Configuration

    • Query database for CallRail API key
    • Get user config for account_id
  3. Validate Required Fields

    • Check that start_date and end_date provided
    • Return 400 if missing
  4. Build Query Parameters

    • Extract date range and grouping options
    • Format dates for API
  5. Call CallRail API

    • Provider makes GET request to summary endpoint
    • Pass date range and filters
  6. Format Response

    • Include aggregated statistics
    • Include grouping breakdowns if requested
    • Return formatted data

Request Example:

GET /v1/e/callrail/calls/summary?company_id=com_abc123&start_date=2023-10-01&end_date=2023-10-31&group_by=source
Authorization: Bearer {jwt_token}

Success Response:

{
"success": true,
"message": "SUCCESS",
"data": {
"total_calls": 245,
"missed_calls": 12,
"answered_calls": 233,
"first_time_callers": 89,
"average_duration": 180,
"total_duration": 41940,
"leads": 156,
"good_leads": 134,
"qualified_leads": 98,
"by_source": {
"google": {
"total_calls": 145,
"leads": 92,
"average_duration": 195
},
"facebook": {
"total_calls": 56,
"leads": 38,
"average_duration": 165
},
"direct": {
"total_calls": 44,
"leads": 26,
"average_duration": 210
}
}
}
}

Error Response (Missing dates):

{
"success": false,
"errno": 400,
"message": "Start date and end date are required for summary analytics."
}

Grouping Options:

  • source - Group by traffic source (google, facebook, etc.)
  • campaign - Group by campaign name
  • medium - Group by marketing medium (cpc, organic, etc.)
  • tracking_number - Group by tracking phone number

Metrics Included:

MetricDescription
total_callsTotal number of calls in date range
missed_callsCalls not answered
answered_callsCalls answered
first_time_callersUnique first-time callers
average_durationAverage call duration in seconds
total_durationTotal talk time in seconds
leadsCalls marked as leads
good_leadsCalls marked as good quality leads
qualified_leadsCalls marked as qualified for sales

Error Handling:

  • Invalid Account: Returns 400 with INVALID_ACCOUNT_ID
  • No API Key: Returns 400 with descriptive message
  • Missing Dates: Returns 400 with specific message
  • Invalid Date Format: CallRail returns validation error
  • Date Range Too Large: CallRail may limit max range

Example Usage:

// Get summary for October 2023
const response = await fetch(
'/v1/e/callrail/calls/summary?company_id=com_abc123&start_date=2023-10-01&end_date=2023-10-31',
{ headers: { Authorization: `Bearer ${token}` } },
);

const { total_calls, good_leads, average_duration } = await response.json();

// Get summary grouped by source
const sourceBreakdown = await fetch(
'/v1/e/callrail/calls/summary?company_id=com_abc123&start_date=2023-10-01&end_date=2023-10-31&group_by=source',
{ headers: { Authorization: `Bearer ${token}` } },
);

Side Effects:

  • โ„น๏ธ Database Read: Queries API key and config
  • โ„น๏ธ External API Call: CallRail API usage

getTimeline(req, res, next)โ€‹

Purpose: Retrieve time-series call analytics for trend visualization

Source: Controllers/calls.js

External API: GET https://api.callrail.com/v3/a/{account_id}/calls/timeseries.json

Authentication: Bearer token (API key)

Parameters:

  • req.query.company_id (String, optional) - Filter by company
  • req.query.start_date (String, required) - Timeline start date (ISO 8601)
  • req.query.end_date (String, required) - Timeline end date (ISO 8601)
  • req.query.group_by (String, optional) - Time interval (hour, day, week, month)
  • req.auth.account_id (ObjectId) - DashClicks account ID

Returns: JSON response with time-series data

{
"success": true,
"message": "SUCCESS",
"data": {
"timeseries": [
{
"date": "2023-10-01",
"total_calls": 12,
"answered_calls": 11,
"missed_calls": 1,
"leads": 8
},
{
"date": "2023-10-02",
"total_calls": 15,
"answered_calls": 14,
"missed_calls": 1,
"leads": 10
}
],
"start_date": "2023-10-01",
"end_date": "2023-10-31",
"group_by": "day"
}
}

Business Logic Flow:

  1. Validate Account Access

    • Verify account permissions
  2. Retrieve Configuration

    • Query database for CallRail API key
    • Get user config for account_id
  3. Validate Required Fields

    • Check that start_date and end_date provided
    • Return 400 if missing
  4. Build Query Parameters

    • Extract date range and grouping interval
    • Default group_by to "day"
    • Format dates for API
  5. Call CallRail API

    • Provider makes GET request to timeseries endpoint
    • Pass date range and interval
  6. Format Response

    • Return array of data points with timestamps
    • Include metrics for each time interval
    • Return formatted data

Request Example:

GET /v1/e/callrail/calls/timeline?company_id=com_abc123&start_date=2023-10-01&end_date=2023-10-31&group_by=day
Authorization: Bearer {jwt_token}

Success Response:

{
"success": true,
"message": "SUCCESS",
"data": {
"timeseries": [
{
"date": "2023-10-01T00:00:00Z",
"total_calls": 12,
"answered_calls": 11,
"missed_calls": 1,
"first_time_callers": 4,
"leads": 8,
"average_duration": 185
},
{
"date": "2023-10-02T00:00:00Z",
"total_calls": 15,
"answered_calls": 14,
"missed_calls": 1,
"first_time_callers": 6,
"leads": 10,
"average_duration": 192
}
],
"start_date": "2023-10-01T00:00:00Z",
"end_date": "2023-10-31T23:59:59Z",
"group_by": "day",
"total_intervals": 31
}
}

Error Response (Missing dates):

{
"success": false,
"errno": 400,
"message": "Start date and end date are required for timeline analytics."
}

Grouping Intervals:

  • hour - Hourly breakdown (for short date ranges)
  • day - Daily breakdown (default)
  • week - Weekly breakdown
  • month - Monthly breakdown

Use Cases:

  • Trend Visualization: Chart call volume over time
  • Peak Hour Analysis: Identify busiest call times (hourly)
  • Monthly Comparison: Compare month-over-month performance
  • Seasonal Trends: Identify patterns across months

Error Handling:

  • Invalid Account: Returns 400 with INVALID_ACCOUNT_ID
  • No API Key: Returns 400 with descriptive message
  • Missing Dates: Returns 400 with specific message
  • Invalid Date Format: CallRail returns validation error
  • Invalid Interval: CallRail returns validation error

Example Usage:

// Get daily call timeline for October
const response = await fetch(
'/v1/e/callrail/calls/timeline?company_id=com_abc123&start_date=2023-10-01&end_date=2023-10-31&group_by=day',
{ headers: { Authorization: `Bearer ${token}` } },
);

const { timeseries } = await response.json();

// Create chart
const chartData = timeseries.map(point => ({
date: point.date,
calls: point.total_calls,
leads: point.leads,
}));

// Get hourly breakdown for one day
const hourly = await fetch(
'/v1/e/callrail/calls/timeline?company_id=com_abc123&start_date=2023-10-01T00:00:00Z&end_date=2023-10-01T23:59:59Z&group_by=hour',
{ headers: { Authorization: `Bearer ${token}` } },
);

Side Effects:

  • โ„น๏ธ Database Read: Queries API key and config
  • โ„น๏ธ External API Call: CallRail API usage

Provider Functionsโ€‹

getCalls(apiKey, accountId, params)โ€‹

Purpose: Call CallRail API to retrieve calls

Source: Providers/calls-api.js

External API: GET https://api.callrail.com/v3/a/{account_id}/calls.json

Parameters:

  • apiKey (String) - CallRail API key
  • accountId (String) - CallRail account ID
  • params (Object) - Query parameters (filters, pagination)

Returns: Promise<Object> - API response data

HTTP Request:

GET /v3/a/470306151/calls.json?company_id=com_abc123&start_date=2023-10-01&page=1&per_page=20
Host: api.callrail.com
Authorization: Bearer {api_key}

Example Usage:

const calls = await callsApi.getCalls(apiKey, '470306151', {
company_id: 'com_abc123',
start_date: '2023-10-01',
end_date: '2023-10-31',
answered: true,
page: 1,
per_page: 20,
});

Side Effects:

  • โ„น๏ธ External API Call: CallRail API request

getRecording(apiKey, accountId, callId)โ€‹

Purpose: Call CallRail API to retrieve recording

Source: Providers/calls-api.js

External API: GET https://api.callrail.com/v3/a/{account_id}/calls/{call_id}/recording.json

Parameters:

  • apiKey (String) - CallRail API key
  • accountId (String) - CallRail account ID
  • callId (String) - CallRail call ID

Returns: Promise<Object> - Recording details

HTTP Request:

GET /v3/a/470306151/calls/call_12345/recording.json
Host: api.callrail.com
Authorization: Bearer {api_key}

Example Usage:

const recording = await callsApi.getRecording(apiKey, '470306151', 'call_12345');
// Returns: { recording: 'https://...', transcription: '...' }

Side Effects:

  • โ„น๏ธ External API Call: CallRail API request

getSummary(apiKey, accountId, params)โ€‹

Purpose: Call CallRail API to retrieve summary analytics

Source: Providers/calls-api.js

External API: GET https://api.callrail.com/v3/a/{account_id}/calls/summary.json

Parameters:

  • apiKey (String) - CallRail API key
  • accountId (String) - CallRail account ID
  • params (Object) - Query parameters (date range, filters)

Returns: Promise<Object> - Summary statistics

HTTP Request:

GET /v3/a/470306151/calls/summary.json?start_date=2023-10-01&end_date=2023-10-31&group_by=source
Host: api.callrail.com
Authorization: Bearer {api_key}

Example Usage:

const summary = await callsApi.getSummary(apiKey, '470306151', {
start_date: '2023-10-01',
end_date: '2023-10-31',
group_by: 'source',
});

Side Effects:

  • โ„น๏ธ External API Call: CallRail API request

getTimeline(apiKey, accountId, params)โ€‹

Purpose: Call CallRail API to retrieve time-series analytics

Source: Providers/calls-api.js

External API: GET https://api.callrail.com/v3/a/{account_id}/calls/timeseries.json

Parameters:

  • apiKey (String) - CallRail API key
  • accountId (String) - CallRail account ID
  • params (Object) - Query parameters (date range, interval)

Returns: Promise<Object> - Time-series data

HTTP Request:

GET /v3/a/470306151/calls/timeseries.json?start_date=2023-10-01&end_date=2023-10-31&group_by=day
Host: api.callrail.com
Authorization: Bearer {api_key}

Example Usage:

const timeline = await callsApi.getTimeline(apiKey, '470306151', {
start_date: '2023-10-01',
end_date: '2023-10-31',
group_by: 'day',
});

Side Effects:

  • โ„น๏ธ External API Call: CallRail API request

๐Ÿ”€ Integration Pointsโ€‹

Campaign Attributionโ€‹

Call Source Tracking:

  • Calls include source, medium, campaign, keywords
  • Links calls to marketing campaigns automatically
  • Enables ROI calculation for paid advertising

Attribution Data:

{
"source": "google",
"medium": "cpc",
"campaign": "fall-promotion",
"keywords": "plumber near me",
"referring_url": "https://google.com/search?q=...",
"landing_page_url": "https://example.com/services/plumbing"
}

Lead Scoringโ€‹

Automatic Lead Classification:

  • CallRail uses AI to classify call quality
  • Lead statuses: not_lead, lead, good_lead, qualified
  • Value ratings: low, medium, high

Integration with CRM:

  • Lead status used for filtering and reporting
  • High-value leads can trigger automated workflows
  • Lead data synced to DashClicks campaigns

๐Ÿงช Edge Cases & Special Handlingโ€‹

Recording Availabilityโ€‹

Issue: Recordings may not be immediately available

Handling:

  • Check recording field for null value
  • Recording processing takes up to 5 minutes
  • Retry logic recommended for automation

Date Range Limitsโ€‹

Issue: CallRail limits max date range for performance

Handling:

  • Use pagination for large date ranges
  • Break queries into smaller time windows
  • Monitor API response times

First-Time Caller Trackingโ€‹

Issue: Identifying unique callers across numbers

Handling:

  • CallRail tracks callers by phone number
  • first_call flag indicates first interaction
  • Use for new customer acquisition metrics

Call Duration Filteringโ€‹

Issue: Short calls may not be meaningful

Handling:

  • Filter by minimum duration (e.g., >30 seconds)
  • Combine with answered filter
  • Use for quality lead analysis

โš ๏ธ Important Notesโ€‹

  • ๐Ÿ“ž Call Data: Comprehensive information including customer details, source, duration
  • ๐ŸŽ™๏ธ Recordings: MP3 format with optional transcription
  • ๐Ÿ“Š Analytics: Summary and timeline data for reporting
  • ๐Ÿ” Filtering: Advanced filtering by date, source, status, caller type
  • ๐Ÿ“ˆ Attribution: Full marketing attribution data (source, medium, campaign)
  • ๐Ÿท๏ธ Lead Scoring: AI-powered lead quality classification
  • ๐Ÿ“… Time Series: Hourly, daily, weekly, monthly grouping options
  • ๐Ÿ” API Key: Required for all operations (Bearer token)
  • โฑ๏ธ Recording Delay: Recordings available 5 minutes after call ends
  • ๐Ÿ“ Transcription: Optional feature requiring additional CallRail plan

๐Ÿ’ฌ

Documentation Assistant

Ask me anything about the docs

Hi! I'm your documentation assistant. Ask me anything about the docs!

I can help you with:
- Code examples
- Configuration details
- Troubleshooting
- Best practices

Try asking: How do I configure the API?
09:30 AM