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

  1. UTM Parameters — If the visitor's session had utm_source/utm_medium tags, those take absolute priority. This is the most reliable attribution signal.
  2. CallRail source_name — The marketing source assigned by CallRail at the campaign/tracker level. This is the marketing intent label.
  3. 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 SourceNormalized Channel
google / organic, google organic, seoOrganic
google / cpc, google ads, adwords, ppcGoogle Ads
gmb, gbp, google business, google my businessGBP
lsa, local serviceGoogle LSA
facebook, instagram, meta, socialSocial
bing / cpc, microsoft adsBing Ads
direct, callrail, website pool, (empty)Direct
yelpYelp
emailEmail
referralReferral

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.