Zapier Integration Guide
Zapier Integration Guide
Quick answer: Automate Surmado reports with Zapier workflows. Trigger on new email from hi@surmado.com, extract Intelligence Token with regex pattern, fetch JSON via Webhooks by Zapier, parse metrics, send to Google Sheets/Slack/Notion. No coding required. 5 common workflows included: quarterly tracking, competitive alerts, Slack notifications, client reporting, Notion dashboards. Works with Signal, Scan, and Solutions.
Reading time: 18 minutes
In this guide:
- Build quarterly tracking automation by triggering on Gmail (Subject contains “Signal Report”), extracting token with Code by Zapier regex (SIG-\d{4}-\d{2}-[A-Z0-9]{5}), fetching JSON via Webhooks GET (https://api.surmado.com/intelligence/{token}), calculating percentages with Formatter (multiply by 100), and creating Google Sheets row automatically (5 Zapier tasks per report)
- Create competitive alerts for weak positioning using Filter by Zapier to continue only when competitive rank > 3, calculating rank with Python code comparing your_rate vs competitors array, then sending Slack message with “Ranked #X, Top 3 competitors: [names + rates]” only when actionable (6 tasks when triggered)
- Set up Notion database integration for Scan reports by creating database with properties (Overall Score, Technical SEO, Performance, Accessibility, Security, Issues Count, Status), extracting SCAN-YYYY-MM-XXXXX token, counting issues by severity with Python, formatting top 5 issues text, and creating Notion page with scores + issues automatically (7 tasks per report)
- Send Solutions email digests to leadership by formatting top 3 recommendations as HTML with Python (action, rationale, impact, cost, risk for each), including risk assessment summary and model perspectives (CFO/Market Realist views), delivering executive summary within minutes of Solutions report vs manual copy/paste (5 tasks per report)
- Build multi-client agency dashboard populating master Google Sheet with all 20 clients’ metrics (Client Name, Date, Token, Presence Rate, Authority Score, Ghost Influence, Top Competitor, Competitive Gap, Status) plus conditional Slack alerts for at-risk clients (Presence Rate < 30%), saving 20 hours/month manual data entry for $50/month Professional plan (140-160 tasks monthly)
Cost: Zapier Starter plan ($20/month) supports these workflows
Prerequisites
What You Need
- Zapier account (Starter plan minimum for multi-step Zaps)
- Surmado reports (Signal, Scan, or Solutions with Intelligence Tokens)
- Gmail account receiving Surmado reports (or forwarding to Gmail)
- Destination app account (Google Sheets, Slack, Notion, etc.)
Zapier Plan Requirements
Free plan:
- 100 tasks/month
- Single-step Zaps only
- Not sufficient for Intelligence Token workflows (need multi-step)
Starter plan ($20/month):
- 750 tasks/month
- Multi-step Zaps (required)
- Recommended minimum
Professional plan ($50/month):
- Unlimited Zaps
- Paths (conditional logic)
- Recommended for agencies with multiple clients
Workflow 1: Quarterly Tracking to Google Sheets
Use Case
Every time you run Signal, automatically add Presence Rate + Authority Score to Google Sheets tracking dashboard.
Setup Steps
Step 1: Create Google Sheet
Sheet name: Signal Tracking
Columns:
- A: Date
- B: Token
- C: Presence Rate (%)
- D: Authority Score
- E: Top Competitor Rate (%)
- F: Competitive Rank
Example row:
2025-11-10 | SIG-2025-11-A1B2C | 42.0 | 78 | 54.0 | #3
Step 2: Create Zap
Trigger: Gmail - New Email
Configuration:
- From:
hi@surmado.com - Subject: Contains
Signal Report
Why Gmail: Surmado sends reports via email with Intelligence Token in subject line
Step 3: Extract Token with Code by Zapier
Action: Code by Zapier - Run Python
Input Data:
email_subject: (Gmail trigger output “Subject”)
Code:
import re
subject = input_data.get('email_subject', '')
# Extract token pattern: SIG-YYYY-MM-XXXXX
pattern = r'(SIG-\d{4}-\d{2}-[A-Z0-9]{5})'
match = re.search(pattern, subject)
if match:
output = {'token': match.group(1)}
else:
output = {'token': 'NOT_FOUND'}
Output:
token: Extracted Intelligence Token (e.g.,SIG-2025-11-A1B2C)
Step 4: Fetch JSON with Webhooks by Zapier
Action: Webhooks by Zapier - GET
Configuration:
- URL:
https://api.surmado.com/intelligence/{{token}}- (Use Step 3 output for
{{token}})
- (Use Step 3 output for
- Method: GET
- Headers: None required
- Query String Parameters: None
Test: Zapier will fetch JSON and show preview
Step 5: Parse JSON
Zapier automatically parses JSON response. You’ll see fields like:
metrics__presence_rate(note double underscore for nested fields)metrics__authority_scorecompetitors__0__presence_rate(first competitor)created_at
Step 6: Calculate Percentage
Action: Formatter by Zapier - Numbers - Perform Math Operation
Configuration:
- Input:
{{metrics__presence_rate}}(from Step 4) - Operation: Multiply
- Value:
100
Output: Presence Rate as percentage (0.42 becomes 42)
Repeat for competitors__0__presence_rate if needed
Step 7: Add to Google Sheets
Action: Google Sheets - Create Spreadsheet Row
Configuration:
- Spreadsheet:
Signal Tracking - Worksheet:
Sheet1
Column mapping:
- Date:
{{created_at}}(from Step 4) or{{zap_meta_human_now}} - Token:
{{token}}(from Step 3) - Presence Rate (%): (Step 6 output)
- Authority Score:
{{metrics__authority_score}}(from Step 4) - Top Competitor Rate (%): (Calculated from
competitors__0__presence_rate) - Competitive Rank: (Calculate with Code by Zapier if needed)
Step 8: Test and Enable
Test: Send yourself a test Signal report, verify Zap triggers and populates sheet
Enable: Turn on Zap
Result: Every Signal report → automatic tracking row in Google Sheets
Complete Workflow Summary
1. Gmail: New email from hi@surmado.com with "Signal Report" in subject
↓
2. Code by Zapier: Extract token with regex
↓
3. Webhooks by Zapier: GET https://api.surmado.com/intelligence/{token}
↓
4. Formatter: Convert presence_rate to percentage (× 100)
↓
5. Google Sheets: Add row with date, token, metrics
Zapier tasks used per report: 5 tasks (within Starter plan limits)
Workflow 2: Competitive Alerts to Slack
Use Case
When Signal shows you’re ranked below #3 in competitive Presence Rate, send alert to Slack channel.
Setup Steps
Steps 1-4: Same as Workflow 1
(Gmail trigger, extract token, fetch JSON, parse)
Step 5: Calculate Competitive Rank with Code by Zapier
Action: Code by Zapier - Run Python
Input Data:
your_rate:{{metrics__presence_rate}}(from Webhooks step)competitors:{{competitors}}(entire competitors array as JSON string)
Code:
import json
your_rate = float(input_data.get('your_rate', 0))
competitors_json = input_data.get('competitors', '[]')
try:
competitors = json.loads(competitors_json)
except:
competitors = []
# Calculate your rank
your_rank = 1
for comp in competitors:
if comp.get('presence_rate', 0) > your_rate:
your_rank += 1
output = {
'your_rank': your_rank,
'alert': your_rank > 3
}
Output:
your_rank: Your competitive ranking (1-N)alert:Trueif ranked below #3,Falseotherwise
Step 6: Filter (Only Continue If Alert)
Action: Filter by Zapier
Configuration:
- Continue only if:
{{alert}}(from Step 5) Exactly matchesTrue
Result: Zap stops here if you’re ranked #1-3 (no alert needed)
Step 7: Send Slack Message
Action: Slack - Send Channel Message
Configuration:
- Channel:
#marketing(or your team channel)
Message:
Competitive Presence Rate Alert
Your Signal report shows you're ranked *#{{your_rank}}* in competitive Presence Rate.
*Your Presence Rate*: {{presence_rate_percentage}}%
*Top 3 Competitors*:
• {{competitors__0__name}}: {{competitor_0_percentage}}%
• {{competitors__1__name}}: {{competitor_1_percentage}}%
• {{competitors__2__name}}: {{competitor_2_percentage}}%
<View full report: Intelligence Token {{token}}>
Consider running Solutions to get strategic recommendations for closing the gap.
Formatting notes:
- Use
*bold*for emphasis in Slack - Calculate percentages with Formatter before this step
- Link to token reference page or internal dashboard
Step 8: Test and Enable
Test: Use a Signal report where you’re ranked below #3
Enable: Turn on Zap
Result: Alerts only when competitive position is weak
Complete Workflow Summary
1. Gmail: New Signal report
↓
2. Extract token
↓
3. Fetch JSON
↓
4. Calculate competitive rank (Python)
↓
5. Filter: Continue only if rank > 3
↓
6. Slack: Send alert message with metrics
Zapier tasks used: 6 tasks (only when alert triggers)
Workflow 3: Scan Results to Notion Database
Use Case
Create Notion database page for every Scan report with overall score, category scores, and top 5 issues.
Setup Steps
Step 1: Create Notion Database
Database name: Scan Reports
Properties:
- Title (Title):
[Website] - [Date] - Token (Text): Intelligence Token
- Overall Score (Number): 0-100
- Technical SEO (Number): 0-100
- Performance (Number): 0-100
- Accessibility (Number): 0-100
- Security (Number): 0-100
- Issues Count (Number): Total issues
- Status (Select): Good / Needs Work / Critical
- Report Date (Date)
Steps 2-4: Same Pattern
- Gmail trigger (Subject contains “Scan Report”)
- Extract token (pattern:
SCAN-\d{4}-\d{2}-[A-Z0-9]{5}) - Webhooks GET
- Parse JSON
Step 5: Calculate Status with Formatter
Action: Formatter by Zapier - Text - Lookup Table
Input: {{overall_score}} (from Webhooks step)
Lookup Table:
0to60: Critical61to75: Needs Work76to100: Good
Output: Status text
Step 6: Count Issues
Action: Code by Zapier - Run Python
Input Data:
issues:{{issues}}(entire issues array as JSON string)
Code:
import json
issues_json = input_data.get('issues', '[]')
try:
issues = json.loads(issues_json)
issues_count = len(issues)
# Count by severity
high = len([i for i in issues if i.get('severity') == 'high'])
medium = len([i for i in issues if i.get('severity') == 'medium'])
low = len([i for i in issues if i.get('severity') == 'low'])
# Get top 5 issues (high severity first)
sorted_issues = sorted(issues, key=lambda x: {'high': 0, 'medium': 1, 'low': 2}.get(x.get('severity', 'low'), 3))
top_5 = sorted_issues[:5]
# Format for Notion
issues_text = '\n'.join([f"• [{i.get('severity', 'N/A').upper()}] {i.get('page', 'N/A')}: {i.get('issue', 'N/A')}" for i in top_5])
output = {
'issues_count': issues_count,
'high_count': high,
'medium_count': medium,
'low_count': low,
'top_5_text': issues_text
}
except:
output = {'issues_count': 0, 'top_5_text': 'Error parsing issues'}
Output:
issues_count: Total issueshigh_count,medium_count,low_count: Counts by severitytop_5_text: Formatted text for Notion
Step 7: Create Notion Page
Action: Notion - Create Database Item
Configuration:
- Database:
Scan Reports
Property mapping:
- Title:
{{website__url}} - {{created_at}} - Token:
{{token}} - Overall Score:
{{overall_score}} - Technical SEO:
{{category_scores__technical_seo}} - Performance:
{{category_scores__performance}} - Accessibility:
{{category_scores__accessibility}} - Security:
{{category_scores__security}} - Issues Count:
{{issues_count}}(from Step 6) - Status: (from Step 5)
- Report Date:
{{created_at}}
Page Content (Notion block):
## Top Issues
{{top_5_text}}
## Score Breakdown
Technical SEO: {{category_scores__technical_seo}}/100
Performance: {{category_scores__performance}}/100
Accessibility: {{category_scores__accessibility}}/100
Security: {{category_scores__security}}/100
## Intelligence Token
`{{token}}`
Use this token to fetch full JSON data via API: https://api.surmado.com/intelligence/{{token}}
Step 8: Test and Enable
Test: Run Scan, verify Notion page created with correct data
Enable: Turn on Zap
Result: Every Scan → automatic Notion database entry
Complete Workflow Summary
1. Gmail: New Scan report
↓
2. Extract token (SCAN-YYYY-MM-XXXXX)
↓
3. Fetch JSON from API
↓
4. Calculate status (Good/Needs Work/Critical)
↓
5. Count issues and format top 5
↓
6. Create Notion database page with scores + issues
Zapier tasks used: 7 tasks per Scan report
Workflow 4: Solutions to Email Digest
Use Case
When Solutions report delivered, send executive summary email to leadership team with top 3 recommendations.
Setup Steps
Steps 1-4: Standard Pattern
- Gmail trigger (Subject contains “Solutions Report”)
- Extract token (
SOLUTIONS-\d{4}-\d{2}-[A-Z0-9]{5}) - Webhooks GET
- Parse JSON
Step 5: Format Recommendations with Code by Zapier
Action: Code by Zapier - Run Python
Input Data:
recommendations:{{recommendations}}(JSON string)question:{{question__text}}
Code:
import json
recs_json = input_data.get('recommendations', '[]')
question = input_data.get('question', 'Strategic Question')
try:
recs = json.loads(recs_json)
# Top 3 recommendations
top_3 = recs[:3]
# Format as HTML
html = f"<h2>Question Analyzed</h2><p>{question}</p><h2>Top 3 Recommendations</h2>"
for idx, rec in enumerate(top_3, 1):
html += f"""
<h3>Option {idx}: {rec.get('action', 'N/A')}</h3>
<p><strong>Rationale:</strong> {rec.get('rationale', 'N/A')}</p>
<p><strong>Impact:</strong> {rec.get('estimated_impact', 'N/A')}</p>
<p><strong>Cost:</strong> {rec.get('estimated_cost', 'N/A')}</p>
<p><strong>Risk:</strong> {rec.get('risk', 'N/A').upper()}</p>
<hr>
"""
output = {'email_html': html}
except:
output = {'email_html': '<p>Error formatting recommendations</p>'}
Output: email_html (HTML-formatted recommendations)
Step 6: Send Email via Gmail
Action: Gmail - Send Email
Configuration:
- To:
leadership@yourcompany.com(or distribution list) - Subject:
Solutions Report: {{question__text}} - Body Type: HTML
Body:
<p>Your Surmado Solutions report has been delivered.</p>
{{email_html}}
<h2>Risk Assessment</h2>
<p><strong>Overall Risk:</strong> {{risk_assessment__overall_risk}}</p>
<p><strong>Key Risks:</strong></p>
<ul>
<li>{{risk_assessment__key_risks__0}}</li>
<li>{{risk_assessment__key_risks__1}}</li>
<li>{{risk_assessment__key_risks__2}}</li>
</ul>
<h2>Model Perspectives</h2>
<p><strong>CFO:</strong> {{model_perspectives__cfo__view}}</p>
<p><strong>Market Realist:</strong> {{model_perspectives__market_realist__view}}</p>
<p><a href="[link to full report PDF]">View Full Report</a></p>
<p><small>Intelligence Token: {{token}}</small></p>
Step 7: Test and Enable
Test: Run Solutions, verify email sent with correct formatting
Enable: Turn on Zap
Result: Leadership receives executive summary within minutes of Solutions report delivery
Complete Workflow Summary
1. Gmail: New Solutions report
↓
2. Extract token
↓
3. Fetch JSON
↓
4. Format top 3 recommendations as HTML
↓
5. Send email digest to leadership
Zapier tasks used: 5 tasks per Solutions report
Workflow 5: Multi-Client Agency Dashboard
Use Case
Agency running Signal for 20 clients monthly. Automatically populate master Google Sheet with all client metrics.
Setup Steps
Step 1: Create Master Sheet
Sheet name: Client Dashboard
Columns:
- A: Client Name
- B: Date
- C: Token
- D: Presence Rate (%)
- E: Authority Score
- F: Ghost Influence (%)
- G: Top Competitor
- H: Competitive Gap (%)
- I: Status
Example row:
Phoenix Cool Air | 2025-11-10 | SIG-2025-11-A1B2C | 42.0 | 78 | 28.0 | Competitor A | -12.0 | Needs Work
Steps 2-4: Standard Pattern
(Same as Workflow 1: Gmail trigger, extract token, fetch JSON)
Step 5: Extract Client Name from Email
Action: Formatter by Zapier - Text - Extract Pattern
Input: {{email_body}} (from Gmail trigger)
Pattern: Business: (.+) (assuming Surmado includes “Business: Phoenix Cool Air” in email body)
Alternative: Use a lookup table mapping tokens to client names
Step 6: Calculate Competitive Gap
Action: Code by Zapier - Run Python
Input Data:
your_rate:{{metrics__presence_rate}}top_competitor_rate:{{competitors__0__presence_rate}}
Code:
your_rate = float(input_data.get('your_rate', 0)) * 100
top_rate = float(input_data.get('top_competitor_rate', 0)) * 100
gap = your_rate - top_rate # Negative if you're behind
output = {
'competitive_gap': round(gap, 1),
'status': 'Leading' if gap > 0 else 'Behind'
}
Output:
competitive_gap: Percentage point difference (e.g., -12.0 means 12 points behind)status: Leading or Behind
Step 7: Add to Master Sheet
Action: Google Sheets - Create Spreadsheet Row
Configuration:
- Spreadsheet:
Client Dashboard - Worksheet:
Sheet1
Column mapping:
- Client Name: (from Step 5)
- Date:
{{created_at}} - Token:
{{token}} - Presence Rate (%): (calculated × 100)
- Authority Score:
{{metrics__authority_score}} - Ghost Influence (%): (calculated × 100)
- Top Competitor:
{{competitors__0__name}} - Competitive Gap (%):
{{competitive_gap}}(from Step 6) - Status:
{{status}}(from Step 6)
Step 8: Conditional Slack Alert for At-Risk Clients
Action: Filter by Zapier
Configuration:
- Continue only if:
{{metrics__presence_rate}}Less than0.3(30%)
Action: Slack - Send Channel Message
Message:
At-Risk Client Alert
*Client*: {{client_name}}
*Presence Rate*: {{presence_rate_percentage}}% (below 30% threshold)
*Competitive Gap*: {{competitive_gap}} points behind leader
Action needed: Schedule Solutions consultation or content optimization sprint.
<View report: {{token}}>
Step 9: Test and Enable
Test: Send test Signal reports for multiple clients
Enable: Turn on Zap
Result: All client Signal reports automatically populate master dashboard + alerts for at-risk clients
Complete Workflow Summary
1. Gmail: New Signal report (any client)
↓
2. Extract token
↓
3. Fetch JSON
↓
4. Extract client name from email
↓
5. Calculate competitive gap
↓
6. Add row to master Google Sheet
↓
7. [If Presence Rate < 30%] Send Slack alert
Zapier tasks used: 7-8 tasks per client report (depending on alert trigger)
For 20 clients/month: 140-160 tasks (within Professional plan limits)
Advanced Patterns
Pattern 1: Conditional Paths Based on Tier
Use case: Different workflows for Essential vs Pro reports
Setup:
- Fetch JSON
- Check
{{tier}}field - Use Paths by Zapier (Professional plan)
- Path A: If
tier=pro→ full dashboard update - Path B: If
tier=essential→ summary only
- Path A: If
Pattern 2: Historical Comparison
Use case: Compare current report to previous quarter
Setup:
- Fetch current report JSON
- Google Sheets - Lookup Spreadsheet Row (find previous quarter token)
- Webhooks GET for previous token
- Code by Zapier - Calculate delta (current - previous)
- Add comparison to sheet or email
Example output:
- Presence Rate: 42% (+8% vs Q3)
- Authority Score: 78 (+6 vs Q3)
Pattern 3: Multi-Destination Sync
Use case: Send same data to Google Sheets + Notion + Airtable
Setup:
- Gmail trigger
- Extract token
- Fetch JSON
- Google Sheets - Add row
- Notion - Create page
- Airtable - Create record
All destinations get same data (single API call, multiple outputs)
Pattern 4: Scheduled Competitive Monitoring
Use case: Weekly email with all competitors’ latest Presence Rates
Setup:
- Schedule by Zapier - Every Monday 9 AM
- Google Sheets - Lookup Rows (get all competitor tokens)
- Looping by Zapier - For each token:
- Webhooks GET
- Parse presence_rate
- Aggregate results
- Send email summary
Note: Requires Professional plan for Looping
Troubleshooting
Issue 1: Token Not Extracted
Symptom: Code by Zapier outputs NOT_FOUND
Causes:
- Email subject doesn’t contain token (check if Surmado email format changed)
- Regex pattern incorrect
Fix:
- Check email subject format
- Update regex pattern
- Test with actual email subject in Zapier test
Issue 2: Webhooks GET Returns 404
Symptom: Webhooks step fails with 404 Not Found
Causes:
- Token extracted incorrectly (extra spaces, wrong format)
- Token doesn’t exist (test report, not real)
Fix:
- Verify token format:
SIG-YYYY-MM-XXXXX(no spaces) - Test token in browser:
https://api.surmado.com/intelligence/{token} - Check token in original email vs extracted token
Issue 3: JSON Fields Not Mapping
Symptom: Google Sheets or Notion shows blank values
Causes:
- Field mapping uses single underscore instead of double (
metrics_presence_ratevsmetrics__presence_rate) - Field path incorrect (Zapier uses
__for nested JSON)
Fix:
- Use Zapier’s field picker (don’t type manually)
- Check JSON structure in Webhooks step output
- Nested fields always use double underscore:
metrics__presence_rate
Issue 4: Zap Triggers Too Many Times
Symptom: Duplicate rows in Google Sheets for same report
Causes:
- Multiple emails from Surmado (confirmation + report)
- Email forwarding creating duplicates
Fix:
- Add Filter step: Continue only if subject contains exact string “Your Signal Report”
- Use Gmail Label filter (only trigger on specific label)
- Add deduplication in Google Sheets (check if token already exists)
Issue 5: Percentage Calculations Wrong
Symptom: Presence Rate shows 0.42 instead of 42
Causes:
- Forgot to multiply by 100 (API returns 0-1 decimals)
Fix:
- Add Formatter step: Multiply by 100
- Or use Code by Zapier:
output = {'percentage': float(input_data['value']) * 100}
Best Practices
1. Use Consistent Naming
Zap names:
Signal → Google Sheets (Client Dashboard)Scan → Notion DatabaseSolutions → Email Leadership
Why: Easy to identify in Zapier dashboard (agencies with 50+ Zaps)
2. Add Error Notifications
Pattern: Add final step to all Zaps:
Action: Email or Slack
Condition: Only if previous steps failed
Message: Zap failed for token {{token}}. Check Zapier dashboard.
Why: Know immediately when automation breaks
3. Use Folders for Organization
Zapier folders (Professional plan):
Client Reporting(all client dashboard Zaps)Internal Monitoring(your own Signal/Scan Zaps)Alerts(competitive alerts, at-risk clients)
Why: Easier to manage at scale
4. Cache API Responses When Possible
Pattern: After fetching JSON, store in Google Sheets or Airtable
Why: Don’t re-fetch same token multiple times (faster, cleaner logs)
5. Test with Real Reports
Don’t use placeholder data when testing Zaps.
Do: Run actual Signal/Scan/Solutions report, use real token for testing
Why: Real data catches edge cases (null values, long text, special characters)
Zapier Task Estimation
Single report workflows:
- Simple tracking (Gmail → Sheets): 5 tasks
- With alerts (Gmail → Sheets + Slack): 7-8 tasks
- Complex (Gmail → Notion + email): 8-10 tasks
Agency dashboards (20 clients/month):
- Basic: 100-140 tasks/month
- With alerts: 140-180 tasks/month
Recommended plan:
- 1-5 clients: Starter ($20/month, 750 tasks)
- 5-20 clients: Professional ($50/month, unlimited)
- 20+ clients: Professional + folders + paths
Frequently Asked Questions
Can I trigger Zaps without email?
Not currently. Surmado delivers reports via email. Zapier triggers on email delivery. Future API webhook support may enable direct triggers.
Do I need to pay for both Zapier and Surmado?
Yes. Zapier is separate automation platform. Surmado provides reports + API. Zapier connects the two.
Can I share Zaps with clients?
Yes (Professional plan). Use Zapier Transfer to copy Zap to client’s Zapier account. They can customize for their needs.
What if Surmado email format changes?
Regex patterns may need updates. Intelligence Token format is stable (SIG-YYYY-MM-XXXXX), but email subject wording could change. We’ll notify users of format changes.
Can I use Zapier for bulk historical analysis?
Partially. You can manually trigger Zaps with old emails (forward from archive). For bulk token analysis, use Python script with Intelligence Token API (see API Integration Overview).
Does Zapier work with Scan Pro content gap analysis?
Yes. Scan Pro JSON includes content_gaps and competitor_benchmarks arrays. Parse these the same way as issues array (use Code by Zapier for complex formatting).
Need help setting up Zapier integrations? Contact hi@surmado.com with your use case, we can provide custom Zap templates or integration support.
Was this helpful?
Thanks for your feedback!
Have suggestions for improvement?
Tell us moreHelp Us Improve This Article
Know a better way to explain this? Have a real-world example or tip to share?
Contribute and earn credits:
- Submit: Get $25 credit (Signal, Scan, or Solutions)
- If accepted: Get an additional $25 credit ($50 total)
- Plus: Byline credit on this article