Call Tracking Attribution Workflow¶
Track phone calls with UTM attribution and update CRM automatically
Overview¶
This intermediate workflow demonstrates how to capture incoming phone calls, match them to existing leads, attribute calls to marketing sources using UTM parameters, and log all call activity in your CRM.
What You'll Build: - Capture incoming call notifications - Match caller to existing contact - Extract UTM attribution from call source - Update CRM with call details and source - Calculate marketing ROI
Real-World Applications: - Marketing attribution tracking - Lead source analysis - Call center automation - Sales performance monitoring - ROI calculation
Workflow Diagram¶
graph LR
A[Call Tracking<br/>TRIGGER] --> B[Match to Client<br/>Find by Phone]
B --> C[Variable<br/>Extract UTM Data]
C --> D[Edit Client<br/>Update Attribution]
D --> E[Workflow Note<br/>Log Call]
E --> F{If Statement<br/>Source=Google Ads?}
F -->|Yes| G[Google Ads<br/>Upload Conversion]
F -->|No| H[End]
G --> H Tasks Used¶
| Order | Task Type | Purpose | Difficulty |
|---|---|---|---|
| 1 | Call Tracking Trigger | Capture call events | ⭐⭐ Intermediate |
| 2 | Match to Client | Find contact by phone | ⭐ Beginner |
| 3 | Variable | Parse UTM parameters | ⭐⭐ Intermediate |
| 4 | Edit Client | Update attribution fields | ⭐ Beginner |
| 5 | Workflow Note | Log call activity | ⭐ Beginner |
| 6 | If Statement | Check call source | ⭐ Beginner |
| 7 | Google Ads | Track conversion | ⭐⭐⭐ Advanced |
Total Setup Time: 30 minutes
Skill Level: Intermediate
Prerequisites: Call tracking numbers configured, UTM tracking active, Google Ads connection (optional)
Step-by-Step Setup¶
Step 1: Configure Call Tracking Numbers¶
Before building workflow, set up tracking numbers:
- Go to Settings → Call Tracking
- Click Add Tracking Number
- Configure:
- Number: +1-555-TRACK-01
- Forward To: Main business line
- Call Whisper: "This call is from Google Ads campaign"
- Recording: Enabled
- Repeat for each marketing source
Example Numbers: - Google Ads: +1-555-GOOGLE - Facebook Ads: +1-555-FACEBOOK - Organic Search: +1-555-ORGANIC - Direct Mail: +1-555-DIRECT
Step 2: Create Workflow¶
- Go to Settings → Automation
- Click Add Workflow
- Configure:
- Name:
Call Tracking Attribution - Description:
Track calls and update CRM with attribution - Click Create Workflow
Step 3: Add Call Tracking Trigger¶
- Click Add Task on canvas
- Select Call Tracking Trigger
- Configure:
- Trigger Event: Call Completed
- Tracking Numbers: All (or select specific numbers)
- Minimum Call Duration: 30 seconds (filter out wrong numbers)
- Call Status: Answered (exclude missed calls)
- Task Name:
Call Received
Output Variables:
{{task_1001_caller_phone}} // Caller's phone number
{{task_1001_caller_name}} // Caller ID name (if available)
{{task_1001_tracking_number}} // Which number was called
{{task_1001_call_duration}} // Call length in seconds
{{task_1001_call_recording_url}} // Recording URL
{{task_1001_call_timestamp}} // When call occurred
{{task_1001_utm_source}} // UTM source parameter
{{task_1001_utm_medium}} // UTM medium
{{task_1001_utm_campaign}} // Campaign name
{{task_1001_utm_content}} // Ad content/variation
{{task_1001_utm_term}} // Search term (PPC)
{{task_1001_gclid}} // Google Click ID
{{task_1001_call_status}} // answered/missed/voicemail
![]()
Step 4: Match Caller to Contact¶
- Click Add Task after trigger
- Select Match to Client
- Configure:
- Parent Task:
Call Received - Match by: Phone
- Phone Field:
{{task_1001_caller_phone}} - Name Field:
{{task_1001_caller_name}} - Create if not found: ✅ Yes (create new lead from cold call)
- Initial Status: "Lead" (for new contacts)
- Initial Tags:
Phone Inbound - Task Name:
Find or Create Contact
What This Does: - Searches for existing contact by phone number - Creates new lead if first time calling - Associates call with customer record - Tags new leads as phone inquiries
Output:
{{task_1002_client_id}} // Contact ID
{{task_1002_is_new_client}} // true/false
{{task_1002_client_name}} // Contact name
{{task_1002_client_phone}} // Formatted phone
Step 5: Parse and Store UTM Attribution¶
- Click Add Task after Match to Client
- Select Variable
- Configure:
- Parent Task:
Find or Create Contact - Variable Name:
attribution_data - Value Type: Object/JSON
- Calculation:
// Extract and clean UTM parameters const source = '{{task_1001_utm_source}}' || 'Direct'; const medium = '{{task_1001_utm_medium}}' || 'phone'; const campaign = '{{task_1001_utm_campaign}}' || 'none'; const content = '{{task_1001_utm_content}}' || ''; const term = '{{task_1001_utm_term}}' || ''; const gclid = '{{task_1001_gclid}}' || ''; // Determine attribution channel let channel = 'Direct'; if (source.toLowerCase().includes('google')) { channel = medium === 'cpc' ? 'Google Ads' : 'Google Organic'; } else if (source.toLowerCase().includes('facebook')) { channel = 'Facebook Ads'; } else if (source.toLowerCase().includes('bing')) { channel = 'Bing Ads'; } else if (medium === 'referral') { channel = 'Referral'; } // Calculate attribution value (example: call value $50) const callValue = 50.00; return { source: source, medium: medium, campaign: campaign, content: content, term: term, gclid: gclid, channel: channel, call_value: callValue, attribution_date: '{{task_1001_call_timestamp}}' }; - Task Name:
Parse Attribution Data
Output:
{{task_1003_source}} // Cleaned source
{{task_1003_medium}} // Medium
{{task_1003_campaign}} // Campaign name
{{task_1003_channel}} // Attribution channel
{{task_1003_gclid}} // Google Click ID
{{task_1003_call_value}} // Assigned value

Step 6: Update Contact with Attribution¶
- Click Add Task after Variable
- Select Edit Client
- Configure:
- Parent Task:
Parse Attribution Data - Client ID:
{{task_1002_client_id}} - Action: Update Custom Fields
- Custom Fields:
first_call_source={{task_1003_source}}(only if new)first_call_channel={{task_1003_channel}}(only if new)last_call_date={{current_date}}last_call_source={{task_1003_source}}last_call_campaign={{task_1003_campaign}}total_calls={{existing_total + 1}}gclid={{task_1003_gclid}}
- Tags: Add
Inbound Call, {{task_1003_channel}} - Task Name:
Update Attribution Fields
Field Strategy: - First Touch: Capture initial attribution (never overwrite) - Last Touch: Track most recent source - Call Count: Increment total call counter - GCLID: Store for Google Ads conversion tracking
Step 7: Log Call in Timeline¶
- Click Add Task after Edit Client
- Select Workflow Note
- Configure:
- Parent Task:
Update Attribution Fields - Client ID:
{{task_1002_client_id}} - Note Type: Call
- Note:
📞 Inbound Call Received **Call Details:** - Duration: {{task_1001_call_duration}} seconds - Tracking Number: {{task_1001_tracking_number}} - Status: {{task_1001_call_status}} - Recording: {{task_1001_call_recording_url}} **Attribution:** - Source: {{task_1003_source}} - Channel: {{task_1003_channel}} - Campaign: {{task_1003_campaign}} - Medium: {{task_1003_medium}} - Search Term: {{task_1003_term}} **Caller Information:** - Phone: {{task_1001_caller_phone}} - Name: {{task_1001_caller_name}} - New Contact: {{task_1002_is_new_client}} Call Value: ${{task_1003_call_value}} - Attachments:
{{task_1001_call_recording_url}} - Task Name:
Log Call Activity

Step 8: Check if Google Ads Call¶
- Click Add Task after Workflow Note
- Select If Statement
- Configure:
- Parent Task:
Log Call Activity - Condition Type: Text comparison
- Field 1:
{{task_1003_channel}} - Operator: Equals
- Field 2:
Google Ads - Task Name:
Check if Google Ads
What This Does: - Identifies calls from Google Ads campaigns - Enables conversion tracking back to Google - Allows for ROI calculation
Step 9: Upload Conversion to Google Ads (Optional)¶
- Click Add Task on TRUE branch
- Select Google Ads
- Configure:
- Parent Task:
Check if Google Ads(TRUE) - Action: Upload Offline Conversion
- App Connection: Select Google Ads connection
- Customer ID: Your Google Ads customer ID
- Conversion Action: Phone Call Lead (configured in Google Ads)
- GCLID:
{{task_1003_gclid}} - Conversion Date/Time:
{{task_1001_call_timestamp}} - Conversion Value:
{{task_1003_call_value}} - Currency: USD
- Task Name:
Track Google Ads Conversion
Prerequisites: - Google Ads offline conversion tracking enabled - Conversion action "Phone Call Lead" created - GCLID parameter in tracking URLs
What This Does: - Reports phone call as conversion to Google Ads - Enables accurate ROI tracking - Feeds data back into Google's optimization algorithms - Links call to original ad click

Step 10: Test Workflow¶
Test with Sample Call:¶
- Place test call to tracking number
- Stay on line for 30+ seconds
- Check workflow execution
Expected Results:
- ✅ Call captured with all details
- ✅ Contact matched/created
- ✅ UTM parameters parsed correctly
- ✅ Attribution fields updated in CRM
- ✅ Call logged in timeline
- ✅ Google Ads conversion tracked (if applicable)
Verify: - Check contact record for new call log - Verify custom fields updated - Confirm tags added - Listen to call recording - Check Google Ads conversions (24-hour delay)
Expected Output¶
For Each Inbound Call:¶
- ✅ Call details captured in real-time
- ✅ Contact created/matched within 1 second
- ✅ Attribution updated with source data
- ✅ Timeline logged with call recording
- ✅ Conversion tracked in ad platform
- ✅ Marketing ROI calculable
Marketing Insights: - Which channels drive most calls - Cost per call by source - Call-to-conversion rate - Campaign performance comparison
Common Issues & Solutions¶
Issue: UTM parameters showing as empty¶
Cause: Tracking URL not configured with UTM parameters
Solution: 1. Add UTM parameters to all marketing URLs:
2. Verify call tracking script passes UTM to webhook 3. Test by clicking URL with UTMs before calling 4. Check browser cookies for UTM storageIssue: Duplicate contacts being created¶
Cause: Phone number formatting mismatch
Solution: 1. Use Phone Formatter task before Match to Client:
2. Standardize all existing phone numbers in CRM 3. Enable "Match by Phone" with fuzzy matchingIssue: GCLID not captured¶
Cause: GCLID not in tracking URL or expired
Solution: 1. Add {gclid} parameter to Google Ads destination URLs 2. Store GCLID in cookie (90-day retention) 3. Pass GCLID through contact form submissions 4. Verify call tracking script extracts GCLID from session
Issue: Google Ads conversion not showing¶
Cause: Conversion action not properly configured
Solution: 1. Verify conversion action exists in Google Ads 2. Check conversion action is "importable" 3. Wait 24 hours for processing (Google delay) 4. Verify GCLID is valid (not expired >90 days) 5. Check Google Ads conversion upload logs
Issue: Call value incorrect¶
Cause: Static value assigned to all calls
Solution: Use dynamic call value calculation:
// In Variable task
let callValue = 0;
// High-value keywords get higher attribution
if ('{{task_1003_term}}'.includes('enterprise')) {
callValue = 500;
} else if ('{{task_1003_term}}'.includes('pricing')) {
callValue = 100;
} else {
callValue = 50; // Default
}
// Longer calls more valuable
if ({{task_1001_call_duration}} > 300) {
callValue *= 1.5;
}
return { call_value: callValue };
Workflow Enhancements¶
Add Call Recording Transcription¶
Use Speech to Text task after call:
Action: Transcribe Recording
Audio URL: {{task_1001_call_recording_url}}
Output: {{task_XXXX_transcription}}
Then use AI Prompt to analyze transcript:
- Extract customer intent
- Identify product interest
- Detect urgency level
- Suggest follow-up actions
Add Multi-Touch Attribution¶
Track entire customer journey:
Custom Fields:
- touch_1_source, touch_1_date
- touch_2_source, touch_2_date
- ...
- touch_n_source, touch_n_date
Each interaction adds new touch point
Final conversion credits all touches
Add SMS Follow-Up¶
Send SMS after missed calls:
If {{task_1001_call_status}} equals missed:
Send SMS:
"Sorry we missed your call! Reply here or
call us back at {{business_number}}. - Company Name"
Add Google Sheets Logging¶
Log all calls to spreadsheet for analysis:
Google Sheets task:
Action: Append Row
Values:
{{current_date}}, {{task_1001_caller_phone}},
{{task_1001_call_duration}}, {{task_1003_source}},
{{task_1003_campaign}}, {{task_1003_call_value}}
Creates call attribution report
Add Lead Scoring¶
Assign points based on call behavior:
Lead Score Calculation:
- First call: +10 points
- Call > 2 minutes: +20 points
- From paid ad: +15 points
- Multiple calls: +5 per call
- Business hours call: +10 points
Related Workflows¶
- Lead Capture to CRM - Form attribution
- AI Email Routing - Multi-channel routing
- Payment to Invoice - Conversion tracking
Related Tasks¶
- Call Tracking Trigger - Call events
- Match to Client - Contact matching
- Variable - Data parsing
- Edit Client - Attribution update
- Google Ads - Conversion tracking
- Workflow Note - Call logging
Next Steps¶
✅ You've built a complete call attribution system!
Try these enhancements: 1. Add call recording transcription and AI analysis 2. Create attribution reports in Google Sheets 3. Set up multi-touch attribution modeling 4. Build lead scoring based on call behavior 5. Track full customer journey from ad to call to purchase
Need help? Check Call Tracking Guide or Attribution Best Practices