Daily AI search vs organic traffic log in Google Sheets
Every morning at 6am, yesterday's traffic from AI answer engines lands in the same workbook as your Google search clicks, ready to chart.
Every morning at 6am, log yesterday's AI search traffic right next to my organic search traffic in a single Google Sheets workbook, so I can finally see whether AI answers are sending me visits or quietly replacing them. Use a cron trigger. This is a deterministic data sync: no summarizing, no commentary, no ranking, and no AI generated text anywhere in the output. Just a dependable daily append that a dashboard or a weekly report can sit on top of.
Target day. At the start of the run, compute the previous complete UTC day and use that one date for all three sources, so every tab lines up on the same date. Profound interprets a bare YYYY-MM-DD date as Eastern Time, so do not pass bare dates: pass explicit UTC instants, YYYY-MM-DDT00:00:00Z for the start and YYYY-MM-DDT23:59:59Z for the end of that day. Profound v2 report ranges are inclusive at both ends. The v2 referral and bot reports aggregate hourly in UTC, so scoping to a complete UTC day is exactly what keeps partial-day rows out of the sheet.
Step 1, referral traffic from AI answer engines. Call Profound's Get Referrals Report V2 for the target day to get visits arriving from AI answer engines. These reports use cursor pagination and default to a page size of 10, so send the maximum page size and keep passing info.next_cursor back as cursor until no cursor comes back. Collect every row before writing anything.
Step 2, AI crawler activity. Call Profound's Get Bots Report V2 over the same UTC window to get bot and crawler visits, citations, indexing, and training broken down per bot and bot type. Paginate the same way, collecting all rows.
Step 3, organic search. Call Google Search Console's Search Analytics Query for my verified property with the same target day as both startDate and endDate, requesting the date dimension so the returned row carries the day, and capture clicks, impressions, ctr, and position. Use the siteUrl string exactly as Search Console reports it, since an inexact match silently returns empty data instead of erroring. Search Console lags two to three days and keeps revising its most recent days, so set dataState to "all", read metadata.firstIncompleteDate, and record whether the target day was final or still incomplete in its own column rather than dropping the row. If Search Console returns no rows at all for that day, still append a row of zeros marked incomplete so the tab never develops gaps.
Step 4, write to Google Sheets. One workbook, three tabs, one per source, each with a fixed column layout and the date in the first column. Use these layouts and keep them identical on every run. AI Referrals: date, source, visits, one row per answer engine. AI Crawlers: date, bot, bot type, visits, citations, indexing, training, one row per bot. Organic Search: date, clicks, impressions, ctr, average position, data state, one row for the day. If a metric is missing from a response, write 0 rather than leaving the cell blank or letting the columns shift.
Write safely. On the first run, if a tab does not exist, create it and write its header row. Before appending to a tab, read that tab's date column and skip it if the target date is already present, so a retry or a manual re-run cannot double append. Write with Append Values using USER_ENTERED so the dates and numbers land as real dates and numbers that a chart can read, and INSERT_ROWS so nothing below the table gets overwritten.
Keep it boring on purpose. Do not add a summary step, do not interpret the movement, and do not reorder or editorialize the rows. If one source fails, append the rows that did succeed and let the run surface the failure rather than writing partial or invented values.
Example output
What does this prompt do?
- Every morning at 6am, logs yesterday's traffic from AI answer engines and your Google search performance into one workbook.
- Separately tracks AI crawler activity on your site, so you can see which AI systems are reading your pages and how often.
- Gives each source its own tab with a fixed column layout and the date in the first column, so every tab stacks into a clean trendline.
- Appends only, with no summaries or commentary, so a dashboard or a weekly report can sit on top of it without surprises.
What do I need to use this?
- A Profound account on a plan that includes API access
- A Google account that can see the Search Console property you want to track, already verified
- A Google Sheets workbook where the daily rows should land
- The website address you report on, matching the property name Search Console uses
How can I customize it?
- Move the 6am run to whatever time fits your morning, or switch it to weekly if daily is too granular.
- Shift the Google search day back by two or three days if you would rather log fully settled numbers, since Google keeps revising its most recent days.
- Add columns or extra tabs, point it at a different Search Console property, or run one copy per site you own.
FAQs
Will this actually tell me if AI search is replacing my organic traffic?
Why do yesterday's Google search numbers look low?
Do I need a paid Profound plan?
What happens if it runs twice on the same day?
Can I track more than one website?
Related templates
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
Keep a spreadsheet of your most important senders, and every email from one gets labeled, posted to your team channel, and logged automatically.
The moment an order is fulfilled, we register it with Yotpo so the review request is timed off real delivery, and we log every sync so failures never go unnoticed.
Every night at 11pm we compare the day's Shopify orders with your Zoho Books invoices and payments, and flag only what does not match.
Stop guessing whether AI answers are costing you traffic.
Get both numbers landing in the same sheet every morning, without anyone remembering to pull them.