Set Up Source Mapping
Source mapping lets you normalize the diverse source labels from your integrations into a consistent set of canonical source names. This is critical for accurate marketing attribution across calls, leads, and sales.
Why Source Mapping Matters
Different integrations use different names for the same marketing channel:
| Integration | Raw Value | Actual Source |
|---|---|---|
| CallRail | "Google PPC" | Paid Search |
| Google Ads | "google_cpc" | Paid Search |
| eLead | "INTERNET - GOOGLE" | Paid Search |
| CallRail | "Organic Google" | Organic Search |
| Website | "direct" | Direct |
Without source mapping, your analytics would show these as five separate sources. With source mapping, they all roll up to "Paid Search" and "Organic Search".
Step 1: Create Canonical Sources
Navigate to Settings > Source Mapping in the dashboard. Create your canonical source categories:
| Canonical Source | Description |
|---|---|
| Paid Search | Google Ads, Bing Ads, paid keywords |
| Organic Search | SEO traffic from Google, Bing, etc. |
| Direct | Direct visits, typed URLs |
| Social Paid | Facebook Ads, Instagram Ads |
| Social Organic | Organic social media posts |
| Referral | Third-party websites, review sites |
| Email campaigns, newsletters | |
| Display | Banner ads, retargeting |
| Offline | TV, radio, print, events |
Or via the API:
POST /api/v1/source-mappings/sources
{
"name": "Paid Search",
"description": "All paid search advertising",
"color": "#4285F4"
}Step 2: Map Raw Values
For each raw source value that comes in from your integrations, map it to a canonical source:
POST /api/v1/source-mappings
{
"rawValue": "Google PPC",
"canonicalSource": "Paid Search",
"pluginSlug": "callrail"
}Step 3: Bulk Mapping
For large numbers of unmapped values, use the bulk mapping endpoint:
POST /api/v1/source-mappings/bulk
{
"mappings": [
{ "rawValue": "Google PPC", "canonicalSource": "Paid Search" },
{ "rawValue": "google_cpc", "canonicalSource": "Paid Search" },
{ "rawValue": "INTERNET - GOOGLE", "canonicalSource": "Paid Search" },
{ "rawValue": "Organic Google", "canonicalSource": "Organic Search" },
{ "rawValue": "direct", "canonicalSource": "Direct" }
]
}Step 4: Review Unmapped Values
The dashboard shows a list of unmapped raw values along with their frequency. Address high-volume unmapped values first:
GET /api/v1/source-mappings/unmappedResponse:
{
"unmapped": [
{ "rawValue": "FB_Spring_Sale", "count": 45, "firstSeen": "2026-02-01" },
{ "rawValue": "billboard_i35", "count": 12, "firstSeen": "2026-01-20" }
]
}Marketing Campaign Attribution
Once source mapping is configured, all Carfluence analytics endpoints respect it:
- •
GET /api/v1/calls/stats— calls grouped by canonical source - •
GET /api/v1/leads/stats— leads grouped by canonical source with cost-per-lead - •
GET /api/v1/sales/stats— sales attributed to the original lead source
This gives you a unified view of marketing performance across all channels and data types.