# How to track lead source in CallTrackingMetrics

Attribute every CallTrackingMetrics call to the marketing channel behind it. Connect with your API keys, point CTM's webhook at SourceLoop, and each call lands with source, UTMs, and the caller's full journey.

Source: https://sourceloop.ai/help/track-lead-source-in-calltrackingmetrics/
Updated: 2026-05-31

---

CallTrackingMetrics is built for teams that route, score, and report on a lot of calls. The one thing it usually can't tell you on its own is which marketing channel earned each call before your phone system ever picked it up.

SourceLoop adds that layer. Once connected, every call to a CTM tracking number becomes a lead carrying its first-touch and last-touch source, the UTMs, the landing page, and the caller's full path across your site. CTM differs from CallRail in one way: it has no API for registering call delivery, so you point its webhook at SourceLoop by hand after connecting. SourceLoop generates the exact address and payload for you, so it stays a copy-and-paste job.

Five steps, roughly ten minutes.

## What SourceLoop captures from CallTrackingMetrics

For every call to a CTM tracking number, SourceLoop records a lead with **Type: Call** that carries:

- **First-touch and last-touch source** of the calling visitor
- **UTM parameters** from the landing URL (source, medium, campaign, content, term)
- **The full pre-call journey**: pages browsed and ads clicked before the call, when the caller visited your site first
- **Caller details**: phone number, name, and city or state when CTM provides them
- **Call facts**: duration and call status
- **Recording and transcription links**, when CTM has them
- **Tag and status changes** you make to the call afterward in CTM

## Before you start

You'll need:

- A **SourceLoop workspace** ([free trial](https://app.sourceloop.ai/sign-up))
- The **SourceLoop tracker installed** on the pages where your CTM numbers appear
- A **CallTrackingMetrics account** with a tracking number live on your site
- Access to **CTM's API Integration settings** and permission to **add a webhook** in CTM
- **Admin** or **Owner** role in SourceLoop

## Step 1: Install the SourceLoop tracking script

Each call's attribution comes from the browsing session that preceded it, so the tracker has to be live wherever your CTM numbers show. Already installed it for form, meeting, or chat tracking? You're set, move to Step 2.

Otherwise, add the SourceLoop snippet across your site. See [Install the SourceLoop tracking pixel](/help/install-the-tracking-pixel/).

## Step 2: Get your API keys from CTM

1. In CallTrackingMetrics, open **Settings -> Account -> API Integration**.
2. Copy the **Access Key**.
3. Click **Show Secret Key** and copy the **Secret Key**.
4. If your account is one of several your login can reach, note your **Account ID** (the number after `/a/` in the CTM dashboard URL).

## Step 3: Connect CTM in SourceLoop

1. Sign in to [SourceLoop](https://app.sourceloop.ai/) and open **Setup -> Phone**.
2. Click **Connect** on the **CallTrackingMetrics** card.
3. Paste the **Access Key** and **Secret Key**, and the **Account ID** if you noted one.
4. Click **Connect**.

SourceLoop validates the keys against your CTM account. Once they check out, the card expands a **Setup required in CallTrackingMetrics** panel, your instructions for the next step.

## Step 4: Point CTM's webhook at SourceLoop

The **Setup required** panel gives you two things generated for your connection: a **webhook address** and a **recommended payload** that tells CTM which call fields to send.

Follow the numbered steps in that panel to add a webhook inside CTM, paste in the address, drop in the payload, and save. Because the values are specific to your workspace, copy them straight from the panel rather than typing them out.

> **Use the payload SourceLoop gives you**
> The recommended payload maps CTM's call fields to the ones SourceLoop expects. If you save the webhook with an empty or hand-built body, calls may arrive missing their caller details or attribution. Paste the panel's template as-is, then save.

> **Optional: forward the visitor ID for a perfect match**
> By default SourceLoop matches calls to web sessions with high accuracy using the analytics identifier CTM already captures. For a deterministic one-to-one match, configure CTM's custom-cookie option to also carry SourceLoop's visitor ID. The recommended payload already leaves a slot for it, so once CTM is sending that value, the match becomes exact. CTM's support team can confirm the custom-cookie syntax for your plan.

## Step 5: Verify it's working

Open your site in an **incognito window**, append `?utm_source=test&utm_medium=verify&utm_campaign=ctm-check` to the URL, then call the CTM tracking number shown on the page and stay connected for a few seconds.

Shortly after the call ends, it appears at the top of your **Contacts Hub** in SourceLoop with the three test UTM values, the landing page, the call duration, and the full session that led up to it. If it doesn't, recheck that the webhook in CTM is saved with the recommended payload and is firing on completed calls.

## Where to see CallTrackingMetrics calls in SourceLoop

### Contacts Hub

Every captured call becomes a contact row at [app.sourceloop.ai/contacts](https://app.sourceloop.ai/contacts). Open one to replay the caller's journey before they dialed, every page and every ad, so the follow-up starts with context instead of a cold callback.

![SourceLoop Contacts Hub showing a CallTrackingMetrics phone call lead with the caller's full pre-call journey](/help/screenshots/sourceloop-lead-journey-demo.webp)

### Attribution dashboard

At [app.sourceloop.ai/dashboards/traffic](https://app.sourceloop.ai/dashboards/traffic), calls are grouped by source, medium, and campaign next to your other conversions, so phone demand sits in the same channel report as everything else.

![SourceLoop attribution dashboard with CallTrackingMetrics calls grouped by source and campaign](/help/screenshots/sourceloop-attribution-dashboard.webp)

### Funnel reports

Build a funnel at [app.sourceloop.ai/funnels](https://app.sourceloop.ai/funnels/) that ends in a phone call, then slice by source or landing page to see which paths most reliably produce a call.

![SourceLoop funnel report ending in a CallTrackingMetrics phone call conversion step](/help/screenshots/sourceloop-funnel.png)

To make paid channels smarter, forward qualified calls back to **Google Ads, Meta, and LinkedIn as offline conversions**. [Connect your Google Ads account](/help/connect-google-ads/) walks through it.

Prefer a one-click connect with no manual webhook step? [CallRail](/help/track-lead-source-in-callrail/) registers call delivery for you. For enterprise conversation intelligence, see [Invoca](/help/track-lead-source-in-invoca/).

## Frequently Asked Questions

### Why does CallTrackingMetrics need a manual webhook step when CallRail doesn't?

CallRail exposes an API that lets SourceLoop register call delivery for you. CallTrackingMetrics doesn't, so after you connect your keys you paste SourceLoop's webhook address and a ready-made payload into CTM yourself. SourceLoop hands you the exact values and the steps on screen, so it's copy, paste, save. A few extra minutes, once.

### Where do I find my Access Key and Secret Key in CTM?

In CallTrackingMetrics, go to Settings, then Account, then API Integration. Your Access Key is shown directly, and the Secret Key appears after you click Show Secret Key. Paste both into the SourceLoop connection dialog.

### Do I need my CTM Account ID?

Only if your keys can reach more than one CTM account. If you have a single account, leave the field blank. When you do need it, the Account ID is the number in your CTM dashboard URL after /a/.

### What does the recommended payload template do?

It tells CTM which call fields to send SourceLoop so attribution lines up correctly, including the caller details, the call status, and the marketing parameters. SourceLoop generates it for your connection, so you paste it as-is rather than building it by hand.

### A call came from a number printed offline, with no website visit. Is it still captured?

Yes, it's recorded as a lead. With no web session behind it there's no journey to attach, so it appears as Direct. Calls that began on a tracked page carry full source and campaign detail.

### What happens when I change a call's tags or status in CTM later?

That update reaches the same SourceLoop lead through the webhook, updating the existing record rather than creating a second one, as long as the recommended payload is in place on the matching trigger.

### How fresh is the data?

Calls reach SourceLoop within seconds of CTM firing the webhook, which happens as the call wraps up. There's no batch import.

### How do I disconnect?

Click Disconnect on the CallTrackingMetrics card under Setup then Phone in SourceLoop, then remove the webhook you added inside CTM. After that no further calls are sent, and your already-captured leads stay in the Contacts Hub.
