Why Attribution Matters
You're running ads on Google, LinkedIn, Meta, Reddit, and X. Leads convert after multiple touchpoints. Which channel deserves credit?
Without clear attribution, you're flying blind: over-investing in low-ROI channels, under-funding winners, and guessing at budget allocation.
Synter's AttributionService uses last-touch attribution as a clear, deterministic default—and lets you query it with AI.
Last-Touch Attribution: Simple, Explainable
Last-touch gives 100% credit to the final click before conversion. Why this model?
- Deterministic: No black-box ML weighting; every conversion ties to a UTM
- Actionable: Pause low-ROAS campaigns immediately
- Platform-consistent: Matches how Google Ads and Meta report conversions
- Easy to explain: Finance and leadership understand it
We track UTM parameters (utm_source,utm_campaign,utm_medium) and platform click IDs (GCLID, FBCLID, li_fat_id) to tie conversions back to campaigns.
API: /api/attribution/dashboard
Fetch attribution metrics with filters:
GET /api/attribution/dashboard
Authorization: Bearer <token>
Query params: ?startDate=2025-10-01&endDate=2025-11-01&platform=google_ads
Response:
{
"summary": {
"totalConversions": 342,
"totalRevenue": 185400,
"totalSpend": 42100,
"roas": 4.4,
"cac": 123
},
"byPlatform": [
{
"platform": "google_ads",
"conversions": 145,
"revenue": 82500,
"spend": 18200,
"roas": 4.53,
"cac": 125
},
{
"platform": "linkedin_ads",
"conversions": 89,
"revenue": 58900,
"spend": 14800,
"roas": 3.98,
"cac": 166
}
// ...
],
"byCampaign": [
{
"campaignId": "camp_123",
"campaignName": "Enterprise SaaS - Search",
"platform": "google_ads",
"conversions": 67,
"revenue": 45200,
"spend": 8900,
"roas": 5.08
}
// ...
]
}AI Tools: Natural Language Queries
Instead of writing SQL or navigating dashboards, ask Synter directly:
Example queries:
- →"Which campaigns drive the most sales?"
- →"Show me ROAS by platform for Q4"
- →"What's my CAC on LinkedIn vs Google Ads?"
- →"Find campaigns with ROAS below 2.5"
Tool: queryCampaignPerformance
The AI calls queryCampaignPerformance() to fetch conversion, revenue, and spend metrics filtered by date range, platform, and campaign.
// AI tool call
queryCampaignPerformance({
startDate: "2025-10-01",
endDate: "2025-11-01",
platform: "linkedin_ads"
})
// Returns
[
{
campaignName: "Enterprise Outbound",
conversions: 23,
revenue: 18500,
spend: 4200,
roas: 4.4
}
// ...
]Tool: queryPlatformAttribution
For platform-level comparisons, the AI uses queryPlatformAttribution():
// AI tool call
queryPlatformAttribution({
startDate: "2025-11-01",
endDate: "2025-11-15"
})
// Returns
[
{ platform: "google_ads", conversions: 89, cac: 118, roas: 4.9 },
{ platform: "linkedin_ads", conversions: 45, cac: 172, roas: 3.8 },
{ platform: "meta_ads", conversions: 34, cac: 95, roas: 5.2 }
]UTM Consistency: The Foundation
Attribution only works if your UTMs are consistent. Synter enforces:
- Auto-tagging: Campaigns launched via Synter get standardized UTMs (
utm_source=google_ads,utm_campaign=camp_id) - Click ID tracking: GCLID, FBCLID, li_fat_id captured in session data
- Fallback logic: If UTM missing, use click ID → platform; else "direct"
Integration with Growth Dashboard
Attribution metrics power the Growth Dashboard:
- ROAS KPI: Calculated from attributed conversions / spend
- CAC by channel: Platform-level CAC in the ChannelPerformance table
- Conversion funnel: Last-touch platform shown in funnel drop-offs
View live attribution data: /growth
Ask Synter About Your Attribution
Connect your ad platforms and ask: "Which campaigns drive the most sales?"