Attribution Model
The source attribution priority chain that assigns every lead to the correct marketing channel — Organic, Google Ads, GBP, Direct, and more.
TL;DR:Despora uses a three-tier priority chain (UTM → source_name → source) to assign every lead to a canonical channel label. Raw source strings like “google / organic” or “Website Pool” are normalized into clean labels: Organic, Google Ads, GBP, Direct, etc.
The Attribution Priority Chain
- UTM Parameters — If the visitor's session had utm_source/utm_medium tags, those take absolute priority. This is the most reliable attribution signal.
- CallRail source_name — The marketing source assigned by CallRail at the campaign/tracker level. This is the marketing intent label.
- CallRail source — Fallback to the tracker-level source type (e.g., “web”, “direct”). Less specific but always present.
Source Normalization
Raw source strings from CallRail and GA4 are messy. Despora normalizes them into canonical labels:
| Raw Source | Normalized Channel |
|---|---|
| google / organic, google organic, seo | Organic |
| google / cpc, google ads, adwords, ppc | Google Ads |
| gmb, gbp, google business, google my business | GBP |
| lsa, local service | Google LSA |
| facebook, instagram, meta, social | Social |
| bing / cpc, microsoft ads | Bing Ads |
| direct, callrail, website pool, (empty) | Direct |
| yelp | Yelp |
| referral | Referral |
What CallRail Misses
CallRail provides accurate source attribution — it correctly identifies whether a call came from Google Organic, Google Ads, GBP, or any other channel. That part works. The problem is what happensafter the source is identified. CallRail has four critical gaps that Despora fills:
1. No Lead Grouping
When the same person calls three times, submits a form, and sends an SMS, CallRail shows those as five separate interactions. There's no unified lead record. This makes it impossible to answer the basic question: “How many real leadsdid we get this month?” Despora automatically groups interactions by phone number and email into a single lead, giving you an accurate lead count.
2. No Lead Valuation
CallRail tells you a call happened — but not what it's worth. A 2-minute call about a $200 drain cleaning looks identical to a 2-minute call about a $15,000 kitchen remodel. Despora's AI identifies the service being discussed and estimates revenue based on your pricing catalogue, so every lead has a dollar value attached.
3. Limited Lead Qualification
CallRail can tag calls as “qualified” — but only if a human manually listens and tags each one, or if you set basic duration-based rules (e.g., calls over 60 seconds). Despora's Gemini AI analyzes the actual conversation content and scores each lead for genuine purchase intent, automatically filtering out spam, job seekers, wrong numbers, and tire-kickers.
4. No Agent Performance Metrics
CallRail records calls but provides no insight into how your team handles them. Despora rates every agent on professionalism (0–10), listening skills (0–10), and closing ability (0–10) — automatically extracted from the AI's analysis of the conversation. This closes the loop: you can see not just whether marketing is driving leads, but whether your team is converting them.
Batch Sync vs. Real-Time Attribution
- Batch Sync — Uses CallRail's list API which provides clean, reliable attribution data. This is the most accurate path.
- Real-Time (Webhook) — Uses the webhook payload which prioritizes source_name over source to avoid pool-name masking.
- Reanalysis — Fetches the CallRail detail API and applies intelligent pool-name filtering to recover accurate attribution.
