Track AI Citations in Salesforce Attribution Reports
Direct answer: Set up a “Generative AI” source category in Salesforce, add custom fields to Lead, Contact, and Campaign Member records, put UTM parameters on URLs you publish in AI-readable formats, capture referrer and query data into hidden form fields, and report on AI-assisted pipeline through Salesforce Campaigns or a custom report type. That keeps ChatGPT, Perplexity, Google AI Overviews, Copilot, and Gemini clicks from showing up as Direct or generic Google/Organic.
Why Standard Salesforce Attribution Misses AI Citations
Salesforce attribution is straightforward when someone clicks a paid ad or an email link carrying UTM parameters. Answer engines don’t play by those rules:
- ChatGPT usually strips referrer data or shows only
chatgpt.com, with no query detail. - Perplexity can send a referrer, but without UTM values Salesforce lumps it under Direct or Web.
- Google AI Overviews often surfaces as Google/Organic because the click comes from a Google domain.
- Copilot and Gemini may show up as Bing, Google, or Direct depending on which interface the user clicked through.
Some of this is a measurement issue; the rest is a visibility issue. If answer engines never cite your brand, there’s nothing to attribute. So treating this as part of a broader generative engine optimization (GEO) effort makes more sense than calling it a Salesforce admin task.
The Salesforce Fields to Create
You’ll want these fields on Campaign Member at minimum. Add them to Lead, Contact, and Opportunity too if you need first-touch or account-level reporting.
| Field Label | API Name | Type | Purpose |
|---|---|---|---|
| AI Platform | AI_Platform__c | Picklist | ChatGPT, Perplexity, Google AI Overview, Microsoft Copilot, Gemini, Other |
| AI Query | AI_Query__c | Text(255) | Prompt or search term, when captured |
| AI Citation URL | AI_Citation_URL__c | URL | Exact page the answer engine cited |
| AI Answer Date | AI_Answer_Date__c | Date | Date of the citation or click |
| AI Model | AI_Model__c | Text(100) | Model or version, such as GPT-4o or Gemini 1.5 |
Step 1: Add AI-Safe UTM Parameters
Put consistent UTM values on every URL you publish in formats answer engines read: llms.txt, help center snippets, schema markup, public glossaries. A workable set:
?utm_source=chatgpt&utm_medium=ai_answer_engine&utm_campaign=geo
?utm_source=perplexity&utm_medium=ai_answer_engine&utm_campaign=geo
?utm_source=google_ai_overview&utm_medium=ai_answer_engine&utm_campaign=geo
?utm_source=copilot&utm_medium=ai_answer_engine&utm_campaign=geo
?utm_source=gemini&utm_medium=ai_answer_engine&utm_campaign=geo
Answer engines sometimes canonicalize or strip query parameters from organic citations, so don’t lean on UTMs alone. For URLs in an llms.txt file you control, point to the tracking-enabled version as the primary reference. The UpGeo LLMs.txt generator can produce a clean file with the right pages, and the llms.txt guide helps you avoid syntax or discovery mistakes.
Step 2: Capture AI Source on Form Submissions
Salesforce web-to-lead forms usually stop at standard UTM fields. Add hidden fields for AI_Platform__c, AI_Query__c, and AI_Citation_URL__c, then use a small browser-side script to fill them when the referrer or UTM source points to an AI answer engine.
const params = new URLSearchParams(location.search);
const ref = document.referrer.toLowerCase();
const utmSource = params.get('utm_source') || '';
const pairs = [
['chatgpt', 'ChatGPT'],
['chat.openai.com', 'ChatGPT'],
['perplexity', 'Perplexity'],
['google_ai_overview', 'Google AI Overview'],
['copilot', 'Microsoft Copilot'],
['gemini', 'Gemini']
];
const platform = pairs.find(([key]) => utmSource.includes(key) || ref.includes(key))?.[1] || '';
const platformField = document.querySelector('input[name="AI_Platform__c"]');
if (platform && platformField) {
platformField.value = platform;
}
const queryField = document.querySelector('input[name="AI_Query__c"]');
if (queryField) {
queryField.value = params.get('utm_term') || '';
}
If you’re on Pardot, FormAssembly, or a native Salesforce form, map the hidden fields to the Salesforce API names in the form handler.
Step 3: Record AI Touchpoints as Campaign Members
Campaigns are the cleanest way to get multi-touch attribution. Build the structure once, then let Salesforce Flow handle the repetitive parts.
- Add AI Answer Engine as a Campaign Type picklist value.
- Create separate campaigns like
AI - ChatGPT Q3 2025orAI - Perplexity. - Set up a record-triggered Flow that fires when
AI_Platform__cis populated on a Lead or Contact. - In that Flow, add a Campaign Member with Status
CitedorResponded. - When an Opportunity is created, copy the first AI source into
AI_First_Touch__cso it shows up in pipeline reporting.
Step 4: Build the Salesforce Report
Create a custom report type that joins Campaigns, Campaign Members, and Opportunities. If you only care about volume, reporting on Leads with the AI Platform fields is enough.
- Report Type: Campaigns with Campaign Members and Opportunities
- Filters: Campaign Type equals AI Answer Engine, Campaign Member Status equals Responded, Opportunity Created Date equals THIS QUARTER
- Group by: AI Platform
- Summary formula:
SUM(Opportunity.Amount)
For a first-touch view at the Opportunity level, create a formula field that returns the amount only when AI was involved:
IF(NOT(ISBLANK(AI_First_Touch__c)), Amount, 0)
That way you can compare AI-assisted pipeline with paid search, email, and organic without tearing apart your attribution model.
Step 5: Validate and Avoid Double Counting
Treat AI attribution as directional, not exact. Someone might click a citation, come back days later through branded search, and submit a form with no AI referrer at all. Don’t overwrite earlier AI fields once they’re set unless the new source is obviously stronger.
- Use “fill only if blank” logic for first-touch AI fields.
- For multi-touch, add another Campaign Member record rather than overwriting a field.
- Salesforce AI numbers won’t match GA4; session attribution and CRM attribution answer different questions.
- After 90 days, if AI-sourced pipeline is still zero while you can see your content cited in answer engines, check form field mapping, Flow, and AI crawler accessibility.
Once this is in place, Salesforce no longer buries AI-influenced revenue inside Direct or Google/Organic. You can report AI answer engine citations as a real pipeline source, compare platforms, and shift your GEO content work toward pages that actually drive revenue.
UpGeo gets your brand cited across ChatGPT, Perplexity and Google AI.
See plans