Skip to main content

Call Tracking Metrics - Trackers

📖 Overview

Tracking numbers (called "sources" in CTM API) are phone numbers that track incoming calls and attribute them to marketing campaigns. This module manages tracker CRUD operations with pagination support.

Source Files:

  • Controller: external/Integrations/CallTrackingMetrics/Controllers/trackers.js
  • Provider: external/Integrations/CallTrackingMetrics/Providers/trackers-api.js
  • Routes: external/Integrations/CallTrackingMetrics/Routes/trackers.js

External APIs:

  • GET /api/v1/accounts/:id/numbers.json - List trackers
  • GET /api/v1/accounts/:id/numbers/:numberId - Get tracker
  • POST /api/v1/accounts/:id/sources - Create tracker
  • PATCH /api/v1/accounts/:id/sources/:id - Update tracker
  • DELETE /api/v1/accounts/:id/sources/:id - Delete tracker

🔧 Key Functions

getTrackersList(req, res, next)

Purpose: Retrieve paginated list of tracking numbers

Endpoint: GET /v1/e/calltrackingmetrics/:tokenId/accounts/:accountId/trackers

Parameters:

  • page (Number) - Page number
  • per_page (Number) - Results per page

Returns: Paginated tracker list

{
"success": true,
"message": "SUCCESS",
"data": [
{
"id": "num_123",
"name": "Google Ads Campaign",
"number": "+15559876543",
"formatted_number": "(555) 987-6543",
"type": "source"
}
],
"pagination": {
"current_page": 1,
"total_pages": 3,
"total_items": 25
}
}

getTracker(req, res, next)

Purpose: Get specific tracker details

Endpoint: GET /v1/e/calltrackingmetrics/:tokenId/accounts/:accountId/trackers/:trackerId

Returns: Tracker details

{
"success": true,
"message": "SUCCESS",
"data": {
"id": "num_123",
"name": "Google Ads Campaign",
"number": "+15559876543",
"type": "source",
"destination": "+15551234567"
}
}

postTracker(req, res, next)

Purpose: Create new tracking number

Endpoint: POST /v1/e/calltrackingmetrics/:tokenId/accounts/:accountId/trackers

Parameters:

  • req.body (Object) - Tracker configuration
    • name (String) - Tracker name
    • destination (String) - Forwarding number
    • Other CTM-specific fields

Returns: Created tracker

{
"success": true,
"message": "SUCCESS",
"data": {
"id": "src_new123",
"name": "New Campaign",
"number": "+15551112222",
"type": "source"
}
}

putTracker(req, res, next)

Purpose: Update tracker configuration

Endpoint: PUT /v1/e/calltrackingmetrics/:tokenId/accounts/:accountId/trackers/:trackerId

Parameters:

  • req.body (Object) - Fields to update

Returns: Updated tracker

{
"success": true,
"message": "SUCCESS",
"data": {
"id": "src_123",
"name": "Updated Campaign Name"
}
}

deleteTracker(req, res, next)

Purpose: Delete tracking number

Endpoint: DELETE /v1/e/calltrackingmetrics/:tokenId/accounts/:accountId/trackers/:trackerId

Returns: Success confirmation

{
"success": true,
"message": "SUCCESS",
"data": {}
}

⚠️ Important Notes

  • 📞 Terminology: CTM calls trackers "sources" in API
  • 🔢 Listing Endpoint: Uses /numbers.json endpoint
  • ✏️ CRUD Endpoints: Uses /sources endpoint for create/update/delete
  • 🔐 Authentication: Uses Basic Auth with stored credentials
  • 📊 Pagination: Support for page and per_page parameters
  • 🗑️ Deletion: Permanently removes tracker and releases number

💬

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