Perplexity to Google Sheets, Slack GEO scorecards
Your brand can look “fine” in AI search one day, then quietly slip the next. No alert. No changelog. Just a different answer in Perplexity that a prospect or journalist might take as fact.
SEO specialists run into this first, honestly. But brand managers and marketing leads feel it too, especially when leadership asks, “How are we showing up in AI?” This Perplexity GEO tracking automation gives you a daily, written record and a simple scorecard you can share.
You’ll see how the workflow generates queries, captures real Perplexity-style answers, stores them in Google Sheets, and posts a graded GEO scorecard to Slack so changes stop slipping by.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Perplexity to Google Sheets, Slack GEO scorecards
flowchart LR
subgraph sg0["Scheduled Daily Flow"]
direction LR
n0@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Structured Output", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Create sheet", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "add headers", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter1", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Get Company data", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Company data analyzer", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Define Headers", pos: "b", h: 48 }
n9@{ icon: "mdi:database", form: "rounded", label: "Store Extracted Data", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Retrieve Stored Data", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Send Message to Team on Slack"]
n12@{ icon: "mdi:cog", form: "rounded", label: "Run GEO Results & Rank Track..", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split AI-Generated Questions", pos: "b", h: 48 }
n14@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Daily", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "Generate Search Queries", pos: "b", h: 48 }
n16@{ icon: "mdi:cog", form: "rounded", label: "Aggregate Google Sheet Rows", pos: "b", h: 48 }
n0 -.-> n15
n0 -.-> n1
n5 -.-> n7
n4 --> n6
n3 --> n8
n8 --> n4
n2 --> n10
n2 --> n12
n14 --> n3
n6 --> n15
n1 -.-> n15
n10 --> n16
n9 --> n2
n7 --> n11
n15 --> n13
n16 --> n7
n13 --> n2
n12 --> n9
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n14 trigger
class n1,n7,n15 ai
class n0,n5 aiModel
class n3,n4,n6,n9,n10 database
classDef customIcon fill:none,stroke:none
class n11 customIcon
The Problem: AI Search Mentions Change Without Warning
AI answer engines don’t behave like traditional search. You can rank well on Google, still get an unflattering (or flat-out wrong) summary in Perplexity. And because the answers are generated, the wording can drift day to day based on sources, model updates, or what the engine decides is “most helpful” that morning. The frustrating part is the visibility gap: you only notice the change after someone forwards a screenshot. By then, you’re reacting instead of managing your narrative.
It adds up fast. Here’s where it breaks down in real teams.
- Checking Perplexity manually turns into a daily “someone should do it” task that never gets owned.
- Without an archive of exact answers, it’s hard to prove when a claim started or what shifted.
- Ad hoc monitoring misses the queries that actually shape perception, like comparisons and “is it legit?” validations.
- Reporting becomes vibes-based, which means stakeholders lose trust in GEO as a channel.
The Solution: Daily Perplexity GEO Tracking Logged and Scored
This n8n workflow turns AI visibility into something you can actually track. It runs on a daily schedule, creates a fresh dated tab in Google Sheets, and pulls your company name and category from a simple “Main Sheet.” From there, an AI agent generates three strategic queries (discovery, comparison, validation) that reflect how real buyers and analysts search. The workflow then uses BrowserAct to simulate the searches on an AI answer engine like Perplexity, captures the full raw responses, and logs them to the new sheet tab. Finally, a second AI agent reviews what came back, grades your visibility (green/yellow/red), and posts a clean GEO scorecard to Slack for your team.
The workflow starts with a schedule trigger and a new Google Sheets tab for the day. It then generates and splits your queries, runs them through BrowserAct, and appends each AI answer as a row. Once all rows are stored, the analyzer agent summarizes and sends a Slack report your team can act on.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you track 3 core queries per day (discovery, comparison, validation). Manually, a careful check is usually about 10 minutes per query once you run the search, copy the answer, paste it into a sheet, and write a quick summary, so call it 30 minutes daily. With this workflow, you spend maybe 2 minutes maintaining your company details in the “Main Sheet,” then the scheduled run collects answers and posts the scorecard automatically. That’s roughly 2 hours back every week, plus you get a searchable archive.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets to store daily Perplexity answers.
- Slack to deliver the GEO scorecard to a channel.
- BrowserAct API key (get it from your BrowserAct dashboard).
- OpenRouter (or compatible LLM) to generate queries and scoring.
Skill level: Intermediate. You’ll connect credentials, pick the right Google Sheet in a few nodes, and tweak prompts if you want more specific grading.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A daily schedule kicks it off. n8n runs once per day, then creates a new dated worksheet in Google Sheets so each run has its own clean log.
Your company details are pulled from a “Main Sheet.” The workflow reads your company name and working category, which keeps query generation grounded in your actual market.
AI generates and runs GEO queries. The first agent produces three query types, then BrowserAct executes them on an AI answer engine like Perplexity. Each result is captured as raw text, then appended to the sheet as “Search” and “Result.”
A second AI agent grades the day and posts to Slack. After results are stored and aggregated, the analyzer reviews what came back and sends a Green/Yellow/Red-style scorecard to your chosen Slack channel.
You can easily modify the query types or grading criteria to match your positioning goals. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set the workflow to run daily so it creates a new report worksheet and processes company records automatically.
- Add and open Daily Schedule Trigger.
- In Rule, keep the default Interval and adjust the schedule as needed for daily execution.
Step 2: Connect Google Sheets
These nodes create a new worksheet per run, set headers, fetch company data, and store results. There are 5 Google Sheets nodes, so connect credentials across all of them.
- Open Create Worksheet and set Title to
={{ $json["Readable date"] }}and Document ID to your spreadsheet (replace[YOUR_ID]). - Credential Required: Connect your googleSheetsOAuth2Api credentials to Create Worksheet, Append Column Headers, Fetch Company Records, Append Result Rows, and Load Stored Rows.
- In Set Header Fields, keep the assignments for Search and Result as empty strings to define the column headers.
- In Append Column Headers, set Sheet Name to
={{ $('Create Worksheet').first().json.sheetId }}. - In Fetch Company Records, set Sheet Name to
gid=0and keep Range Definition asspecifyRangeif you want to limit the data range. - In Load Stored Rows, set Sheet Name to
={{ $('Create Worksheet').first().json.sheetId }}and keep Execute Once enabled for aggregation.
[YOUR_ID] placeholders with real Google Sheets IDs, otherwise the workflow will fail at runtime.Step 3: Set Up AI Query Generation
This segment generates three search queries per company using an LLM and structures the output for downstream processing.
- Open LLM Router Hub and set Model to
google/gemini-3-pro-preview. - Credential Required: Connect your openRouterApi credentials to LLM Router Hub.
- In Compose Search Queries, set Text to
=Company name : {{ $json["Company name"] }}, Working Category :{{ $json["Worknig category"] }}and keep Prompt Type as define. - Open Structured Output Parser and keep Auto Fix enabled with the JSON schema example provided.
- In Split Generated Queries, set Field to Split Out to
output.
Step 4: Configure BrowserAct Search Runs and Batch Handling
Each generated query is run through BrowserAct, and the results are appended back into the worksheet.
- Open Iterate Batch Items to batch each query for processing.
- In Launch BrowserAct Run, set Type to
WORKFLOWand Workflow ID to[YOUR_ID]. - In Launch BrowserAct Run → Workflow Config, map input-Inputs to
={{ $json.output }}. - Credential Required: Connect your browserActApi credentials to Launch BrowserAct Run.
- In Append Result Rows, map Search to
={{ $('Iterate Batch Items').item.json.output }}and Result to={{ $json.output.string }}, and set Sheet Name to={{ $('Create Worksheet').first().json.sheetId }}.
input-Inputs field, or your runs may fail with missing input errors.Step 5: Configure Analysis and Slack Notification
Aggregate all results, analyze them with an LLM, and send a formatted report to Slack.
- In Aggregate Sheet Rows, set Aggregate to
aggregateAllItemData. - Open LLM Router Hub 2 and set Model to
google/gemini-3-pro-preview. - Credential Required: Connect your openRouterApi credentials to LLM Router Hub 2.
- In Analyze Company Results, set Text to
=Date : {{ $('Daily Schedule Trigger').first().json["Readable date"] }}, Company name : {{ $('Fetch Company Records').first().json["Company name"] }}, Working Category :{{ $('Fetch Company Records').first().json["Worknig category"] }} question and answers : {{ $json.data }}. - In Slack Team Notification, set Text to
={{ $json.output }}and choose your target Channel. - Credential Required: Connect your slackApi credentials to Slack Team Notification.
Step 6: Test and Activate Your Workflow
Run a full test to confirm worksheet creation, query generation, BrowserAct results, and Slack reporting work end-to-end.
- Click Execute Workflow to run a manual test from Daily Schedule Trigger.
- Verify a new worksheet is created with the date title and that headers Search and Result appear.
- Confirm rows are appended in the worksheet with each query and BrowserAct result.
- Check that Slack Team Notification posts a formatted report to the selected channel.
- When everything looks correct, toggle the workflow to Active for daily runs.
Common Gotchas
- Google Sheets permissions matter more than people expect. If the workflow can’t create the dated tab, check the connected Google account in n8n credentials and confirm it has edit access to that spreadsheet.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- BrowserAct and LLM credentials can silently expire or hit limits. If runs start failing, look at BrowserAct run history first, then confirm your OpenRouter (or model) key is still active and allowed for your chosen model.
Frequently Asked Questions
About 45 minutes if your accounts are ready.
No coding required. You’ll mostly connect accounts and select the right spreadsheet and Slack channel.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in BrowserAct usage and LLM costs from OpenRouter (often a few cents per day at this volume).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes. Change the Daily Schedule Trigger to run weekly, then tweak the Slack message text in the “Slack Team Notification” node to reflect a weekly summary. Common customizations include generating more than three queries, adding a competitor list into the prompt for “Compose Search Queries,” and adjusting the grading instructions inside “Analyze Company Results.”
Usually it’s the wrong Google account or missing edit permission on the target spreadsheet. Reconnect Google Sheets credentials in n8n, then re-select the spreadsheet inside nodes like “Create Worksheet” and “Append Result Rows” because copied workflows sometimes keep old IDs. If it fails only on new tabs, check that the spreadsheet isn’t protected and that your account can create worksheets.
Plenty for most small teams: three queries per day is trivial, and even 30 per day is usually fine if your BrowserAct and LLM limits allow it.
Often, yes, because this workflow isn’t just “send data from A to B.” You’re generating queries, splitting items, looping through runs, storing results, aggregating rows, then grading with an agent. n8n handles that kind of branching and batching cleanly without turning into a pile of separate Zaps or scenarios. The self-hosted option is also a big deal if you want lots of executions without cost surprises. Zapier or Make can still be fine for lightweight alerts, but this is closer to a monitoring system than a simple integration. If you want help picking the right approach, Talk to an automation expert.
Once this is running, AI visibility stops being a guessing game. You get receipts in Google Sheets and a Slack scorecard your team will actually read.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.