Strategy · November 5, 2026 · 8 min read
How to Tell If Your SEO Agency Is Doing Real Work
The most reliable test is not the report but whether your site changed. Diff your sitemap and Search Console Pages list against the date you signed. It takes about twenty minutes.
By FluxWriter
How to tell if your SEO agency is working takes about twenty minutes and needs nothing but Search Console, your own sitemap and the Wayback Machine. The reliable signal is not the monthly report. It is whether the site changed at all, because real work leaves URLs behind and a month that produced no new or materially rewritten pages is very hard to hide. This walks through the checks, which quiet months are legitimate, and the three questions to ask before you decide anything.
Real Work Leaves URLs Behind
Search work produces a short list of things. New pages. Existing pages rewritten. Titles, headings and internal links changed. Templates and markup adjusted. Technical fixes to speed, redirects or indexing. Links earned from other sites. That is close to the whole set, and every item but the last leaves a mark on a property you control.
This matters because a report is not a deliverable. A report describes work. It is produced after the fact, by the same people whose performance it describes, from data you already own. A month can go entirely into producing one, and the document will still look busy. Twelve slides of charts is not twelve slides of output.
So the question to start with is not "are the rankings up." It is "what exists on my site now that did not exist last month." If the honest answer is nothing, three months running, you are paying a retainer for observation.
One fair caveat. Off-site work does not touch your site, and outreach has a long lag between effort and result. That is the one category where an empty month can still be an honest one.
Search Console Is Where The Audit Starts
Open Search Console, go to Performance, and set the date range to start on the day the contract began and end today. Switch to the Pages tab and export the list. Then run the same report for an equal-length window ending the day before you signed, and export that too.
Any URL that appears in the first list and not the second is a page that started picking up impressions after the engagement started. That is not a perfect proxy for "created since", because a page can exist for weeks before it collects a single impression, but it catches the case you are worried about, which is an empty set.
Two limits to know. Search Console holds roughly 16 months of performance data, so an older contract cannot be compared in one view. And this report counts impressions, not existence: a new page that has not been seen yet is invisible here but perfectly real, which is why the sitemap check below is the second half of the job.
Then open the Indexing report and its Pages view. The total indexed count and its trend line tell you whether the site is growing, flat or shrinking. That chart covers roughly the last three months, so flat across the whole of it on a content retainer is the clearest tell available to you, and it takes ten seconds to read.
Impressions Move Before Rankings Do
Most reports lead with rankings because rankings are easy to flatter. A rank tracker reports one keyword, on one day, from one location, often on one device. Choose the keywords carefully and almost any month looks like progress.
Impressions are harder to dress up. They count every time one of your URLs appeared in results for anything at all. New pages that are working show up first as a widening set of queries, usually long and specific ones, before anything you would think to track moves. As a rough rule, assume a new page needs weeks rather than days before its impression count means anything.
Average position is the number to trust least. It blends every query a page appears for, so a page that starts ranking for fifty new low-volume terms can show a worse average position while doing better. If a report leads with average position going up and impressions flat, that is a signal worth asking about.
Clicks are the number that pays you, but they lag impressions and move with seasonality, so one month of clicks reads as noise.
Count The Pages, Then Check Whether They Actually Changed
Save a copy of your sitemap.xml today. Then pull the archived version from around the date you signed using the Wayback Machine, where coverage is uneven enough that you may need to try a nearby date. Diff the two URL lists. This is the check that survives a page having no impressions yet.
The lastmod dates in a sitemap are worth a glance and no more. Some content systems update that field on any save, including a typo fix. Others never touch it. Treat it as a hint, not evidence.
For anything the agency describes as "optimised" or "refreshed", open three of those pages and read them against the archived copy from before the work. A rewritten page reads differently. A page where the title was shortened and one paragraph reworded is a twenty-minute job billed as a deliverable, and you will know which you are looking at within a minute.
The figures below are illustrative and assume a content-led retainer where writing is the main line item, and that a substantial page costs somewhere between $300 and $600 to deliver once briefing, writing, editing and account management are counted. Your own numbers will differ. The point is a rough shape to compare your invoices against.
| Monthly retainer | Rough share going to pages | Pages that implies | The trace it should leave |
|---|---|---|---|
| $500–$1,000 | most of it | 1–2 | New URLs in the sitemap, appearing in Performance within weeks |
| $1,500–$2,500 | around two thirds | 2–5 | New URLs plus visible title, heading and internal link changes |
| $3,000–$5,000 | around half | 3–8 | The above, plus template or markup changes and some referring domains you did not have |
| $6,000+ | around half | 5–12 | The above, at a pace you can see in the indexed-page trend line |
| Technical-only month | none | 0 new | Redirects, removed or consolidated URLs, index count moving |
Some Quiet Months Are Genuinely Legitimate
A migration eats a month and produces no new pages. So does consolidating two hundred thin pages into forty good ones, which shrinks your indexed count while making the site better. Fixing a template that renders headings wrong across every product page is real work with no new URLs attached. Judge those months on artefacts: redirect maps, a list of merged URLs, a before-and-after of the rendered page source.
The other common case is that the work exists and you are the bottleneck. Drafts sitting unapproved in an inbox, dev tickets nobody actioned, access requested in March and granted in June. Agencies are often bad at escalating this, and owners are often surprised to find the retainer bought work parked waiting on them. Check your own inbox before you write the cancellation email.
So the tell is not one empty month. It is three consecutive months with no URLs created, no URLs changed, and no artefact you can open other than a report.
Three Questions That Expose A Report-Only Month
First: "Send me the list of URLs you created or changed last month." Anyone doing the work has that list already. A long answer to a short question is the answer.
Second: "For each one, what changed and what was it before?" This separates work from activity. Deliverables have objects: a page, a title, a redirect, a link from a named site. Activities do not: audited, monitored, optimised, reviewed, tracked. A month described entirely in verbs with no objects attached was probably a month of reporting.
Third: "What will exist at the end of next month that does not exist now?" This is the most useful of the three because it gives a good agency an easy win. They will name pages, fixes and targets, and you get something concrete to check in thirty days.
Before any of that, read what your own agreement lists as the monthly deliverable. Plenty of retainers are scoped as advisory rather than production, and expecting four posts a month from a contract that never mentioned any is a mismatch rather than a failure. That is a question for whoever signed it, and worth settling before you accuse anyone of anything.
FAQ
Can an agency be doing real work with no new pages at all?
Yes, and it is more common than owners expect. Technical fixes, migrations, consolidation work and link outreach can all fill a month without adding a single URL. The difference is that each still produces something you can open and read: a redirect map, a list of merged pages, a new referring domain. Ask for the artefact rather than the page count.
How long should I wait before expecting anything in Search Console?
Assume weeks rather than days for a new page to register meaningful impressions, and longer again for clicks. A useful review point is around 90 days, because by then a content-led engagement has produced enough pages for the pattern to be visible rather than anecdotal. A single month is mostly noise.
Should I hand Search Console over to the agency?
Give them access, but do it from an account you control rather than letting them verify the property themselves. Staying the property owner means you decide who has access and you are not locked out of your own data when the relationship ends. It is a two-minute change under Settings, then Users and permissions.
The Practical Takeaway
Block twenty minutes this week and run the three checks in order: export the Performance Pages list for the contract period and for the equal window before it, read the indexed-page trend in the Indexing report, then diff today's sitemap against the archived copy from the month you signed. If all three come back empty, send the three questions and give it a fortnight. If they come back full and revenue still is not moving, the problem is targeting rather than effort, which is a different and much more fixable conversation. Start with the Performance export: two clicks, and it settles the question faster than any report will.
If the diff shows the retainer mostly bought two posts a month, that line is replaceable with a FluxWriter plan, and on Pro and Agency its Search Console connection shows clicks and impressions for each post it published, drawn from the same data you just exported.