26 Google Sheets Templates for Common SEO Tasks

Copy 26 Google Sheets SEO templates for research, content, technical checks and reporting, with example rows, useful formulas and clear data limits.

Editorial policy

Google Sheets SEO templates are useful when each row leads to a clear decision: which page to improve, which link to repair, or which change to investigate. A spreadsheet cannot collect reliable search data or make those decisions just because its headers look complete.

These 26 starter templates give you copyable tables for research, content, technical checks and reporting. Each includes an example and explains what to do with the result. The layouts use manual inputs and ordinary spreadsheet formulas; they require no paid add-on to use as shown. Your chosen data source may have its own access limits or costs.

All sample URLs, businesses, dates and metrics below are fictional. Replace them with your own evidence before acting.

Set up your SEO workbook

Start with the task you need, rather than creating all 26 tabs. The groups below help you choose a starting point.

Your immediate task Templates Useful output
Decide what to research or write 1-5 Evidence, a destination and a usable brief
Manage content and links 6-10 Assigned work with a verification step
Investigate technical issues 11-16 Observations separated from intended behavior
Review on-page details and experience 17-21 Specific fixes tied to a page or component
Explain performance and local accuracy 22-26 Comparable measurements and checked business details

Each code block is tab-separated text. Copy a whole block into cell A1 of a blank tab. If it remains in one column, save it as a .tsv file and use File > Import, selecting the Tab separator. Google's import instructions explain the available import locations. Choose a new sheet rather than replacing existing work.

The first line becomes the headers. Keep the example temporarily so you can check the column positions, then replace it. Freeze the header and apply filters to the complete table. Sort whole rows together; sorting only a metric column disconnects values from their URLs.

Add a Readme tab containing the property or hostname, source, export timestamp, date range, country, device, search type and applied filters. Keep original exports in separate Raw_ tabs. Analysis tabs should reference those inputs instead of overwriting them with decisions.

Preserve URL paths, identifiers and locale codes as text. Store real dates consistently and record the timezone. Google Sheets' locale settings affect date and number formatting; the formulas here use English function names and comma arguments. Your locale may require different argument separators.

A blank metric means unavailable, not zero. Where that distinction affects a decision, add data_state with values such as available, not exported or not measured. Keep observed values separate from proposed changes. For team use, append owner, status, evidence_ref and observed_on where the template does not already include them.

Do not paste untrusted imported text as executable formulas. Review values beginning with formula characters, keep raw imports as text where appropriate, and limit sharing to the people who need the underlying data.

Research and planning templates

1. URL inventory

Use one row per exact URL to establish which pages exist before planning changes. Combine URLs from your CMS, sitemap and crawl, retaining the source of each observation. A sitemap alone should not be treated as a complete inventory of every accessible page.

TSV
url	page_type	discovery_source	observed_on	status_observed	owner	next_action
https://example.com/desks/	category	crawl-01	2026-10-20	200	Mina	Review category purpose

Add a separate row when a query string or path case differs; decide later whether it represents equivalent content. Do not silently lowercase every URL or remove parameters just to simplify matching.

The output is a reconciled list with gaps to investigate. For example, a CMS page absent from a crawl may be unlinked, excluded from that crawl's scope, or inaccessible. Check which explanation applies before labeling it an orphan or deleting it. Keep the original URL and any proposed normalized key in different columns.

2. Keyword evidence register

Use one row per phrase, market and evidence source. This prevents an autocomplete suggestion from quietly becoming a measured search-volume estimate.

TSV
phrase	market	language	source	observed_on	monthly_volume	data_state	next_action
oak desk dimensions	US	en	autocomplete observation	2026-10-20		not measured	Review the current results

Collect phrases from genuine customer questions, your site's Search Console data or another identified source. If a metric is supplied, add its source, units, market and measurement period. Different sources can describe different populations; do not merge their numbers without understanding them.

Here, the useful next action is to investigate what a searcher needs to measure. The blank volume is deliberate. The row can justify research without claiming demand has been quantified. Remove phrases that do not fit the business even if they sound popular.

3. Keyword-to-page assignment

Use one row per query cluster and intended destination within a defined market. Unlike the evidence register, this tab records an editorial choice.

TSV
cluster_id	reader_task	target_url	url_state	decision	evidence_ref	owner
K001	Choose an oak desk size	https://example.com/guides/desk-size/	existing	Review current guide	serp-review-01	Mina

Compare the existing page with the task before assigning it. Several related phrases may fit one destination. Two URLs receiving impressions for related wording are a reason to investigate their purposes, not automatic proof that one must be removed.

The row should finish with a specific decision: retain the assignment, improve the existing page, investigate a gap, or hold. Our keyword mapping templates add fields for ecommerce, local services, documentation and other site types when this basic structure is insufficient.

4. Search-result intent review

Use one row per inspected result for a query and search context. Record what the page actually helps someone do, rather than inferring everything from its title.

TSV
query	market_device	observed_on	result_url	page_format	reader_outcome	useful_gap
choose desk size	US desktop	2026-10-20	https://example.org/desk-guide/	measurement guide	Measure room and legroom	No small-room example

Open relevant results and compare their substance, examples and limitations. Preserve the query, location and observation date because results can vary. A single captured result set is not a stable ranking benchmark.

Use the gap column to make a defensible brief, such as adding an illustrated small-room measurement example. Do not combine every competitor heading into your outline. Some sections may serve a different audience, repeat an idea, or make unsupported claims that your page should avoid.

5. Content brief

Use one row per commissioned page. The brief connects the reader task to the evidence and deliverable the writer must supply.

TSV
brief_id	working_title	reader_outcome	required_example	source_needed	existing_page_check	owner
B001	How to Measure for a Desk	Choose a fitting desk	Small-room measurement walkthrough	Verified dimensions	Compare desk-size guide	Mina

Link longer source notes or an outline from additional columns instead of forcing paragraphs into every cell. Specify what is outside scope and what would make the draft unacceptable. In this example, a list of desk styles would not replace the promised measurement procedure.

Before commissioning a new URL, resolve the existing-page check. The brief may become an update to the current guide. A spreadsheet approval records a handoff; it does not establish that product dimensions, quotations or other consequential facts have been verified.

6. Editorial calendar

Use one row per content deliverable, whether it is a new page or an update. Keep the intended publication date separate from its actual live date.

TSV
deliverable_id	brief_id	content_action	owner	due_date	status	live_url	actual_live_date
E001	B001	Update desk-size guide	Mina	2026-11-03	Drafting		

Link the brief rather than retyping its requirements. Use a short set of statuses your team understands, such as planned, drafting, reviewing and published. Agree on who can move work between them.

The example is still drafting, so its live fields are empty. After publication, record the real canonical URL and verify that the expected content appears there. A CMS save or scheduled date is not evidence that readers can access the finished page. Filter by owner and due date to expose blocked work without mistaking a full calendar for completed output.

7. Content audit decision log

Use one row per page under review. Bring together its purpose, relevant evidence and proposed action, rather than using low traffic as an automatic removal rule.

TSV
url	reader_task	performance_scope	content_finding	proposed_action	evidence_ref	approval_state
https://example.com/guides/desk-size/	Measure for a desk	Last complete 28 days	Missing depth measurements	Update example	audit-note-01	Needs review

Read the page as well as its metrics. A support reference, seasonal page or newly published article may serve a useful purpose despite few search visits. Add business importance and technical observations when they affect the choice.

The output should explain why to keep, improve, investigate consolidation or consider removal. The content audit guide covers those decisions in depth. Preserve approval and implementation as later steps; a proposed merge in this sheet should not be mistaken for a redirect already in place.

8. Content refresh change log

Use one row per specific change to a page. This differs from the audit log: it records what actually changed and when, so later analysis has a meaningful reference.

TSV
change_id	url	change_description	implemented_on	verification_ref	followup_question
R001	https://example.com/guides/desk-size/	Added seated-height measurement example	2026-10-20	public-readback-01	Did relevant queries change?

Capture an old-versus-new excerpt or revision reference. Leave implemented_on blank until the change is applied, and keep a separate planned date if needed. Verify the public page rather than relying only on an editor preview.

When reviewing performance later, also record other relevant changes, seasonality and measurement differences. A rise after a refresh does not by itself show that the refresh caused it. The log creates a dated hypothesis you can investigate; it is not a controlled experiment or proof of a ranking improvement.

9. Internal link opportunities

Use one row per proposed source-to-destination relationship. Inspect the source paragraph and target page before choosing an anchor.

TSV
source_url	target_url	placement_context	proposed_anchor	state	verification_ref
https://example.com/guides/home-office/	https://example.com/guides/desk-size/	Paragraph about room measurements	measure for a desk	Proposed	

The useful output is an exact placement that helps a reader continue. Explain why the destination adds detail at that point. Do not insert a link merely because a phrase appears somewhere on the page.

After editing, record whether the link is present on the live source and leads to the intended destination. An existing contextual link may make a second one unnecessary. Keep proposed and implemented states separate, and revisit the row if the destination is renamed, redirected or no longer answers the promised task.

10. Relevant outreach prospects

Use one row per public resource page that might benefit from a specific contribution. This is a relevance worksheet, not a list of harvested private contact details.

TSV
prospect_page	audience_fit	proposed_resource	specific_reason	checked_on	decision
https://example.org/home-office-resources/	Small-space workers	https://example.com/guides/desk-size/	Adds a practical measurement example	2026-10-20	Review editorial fit

Read the page and confirm the proposed resource is genuinely useful and current. Record the exact omission your resource addresses. A high authority score alone does not explain why an editor should add a link.

Remove unsuitable prospects before any contact. If the page has no relevant editorial opportunity, retain an excluded state rather than searching for a pretext. This template neither sends messages nor promises a backlink. Any later outreach should respect the recipient's stated process and avoid misleading claims about the resource or relationship.

Technical SEO review templates

11. Broken internal link repair queue

Use one row per source-page and linked-target pair. A destination error is easier to fix when the row identifies where the link appears.

TSV
source_url	linked_url	anchor_or_context	observed_status	checked_on	proposed_fix	state
https://example.com/guides/desks/	https://example.com/old-sizing/	Sizing instructions	404	2026-10-20	Link to current sizing guide	Proposed

Populate this from link extraction and a status check, keeping the check method in an evidence reference. Recheck transient failures before handing them off. Confirm that a replacement actually fulfills the original anchor's promise.

After repair, verify the source link and destination again. Finding a replacement does not mean every old URL should redirect there. Our broken internal link workflow explains a more detailed investigation; this table keeps each repair attached to its source.

12. Redirect mapping and verification

Use one row per old URL and intended destination. Record the expected behavior separately from what a request actually returns.

TSV
old_url	intended_target	expected_status	observed_first_status	observed_final_url	verification_state
https://example.com/old-desk/	https://example.com/desks/oak/	301	302	https://example.com/desks/oak/	Review mismatch

A matching final URL does not establish that the first redirect has the intended status or that there is only one hop. Keep the full observed chain in a linked evidence file if it is too long for a cell.

Check that the destination is relevant and that redirect rules do not conflict or loop. The redirect-chain guide covers implementation checks. This worksheet is the reviewed map and release evidence; importing rows into Sheets does not install server redirects.

13. Canonical declaration review

Use one row per examined URL, retaining both your intended canonical and its observed declaration. Add Google's selected canonical only when you have URL Inspection evidence.

TSV
examined_url	intended_canonical	declared_canonical	google_selected	data_state	next_action
https://example.com/desks/?sort=price	https://example.com/desks/	https://example.com/desks/		not inspected	Check content equivalence

The example declaration matches the intended value, but the Google-selected field is unknown. Do not fill it by copying the HTML value.

Google's canonicalization guidance describes canonical annotations as signals. Review whether pages are actually duplicate or very similar, whether the target works, and whether other signals conflict. A spreadsheet equality check cannot establish that consolidation is appropriate or that Google has accepted the preference.

14. Crawl and indexing evidence register

Use one row per URL and dated inspection. Separate access rules, indexing directives and the search engine's reported state.

TSV
url	observed_on	crawl_rule	indexing_directive	gsc_index_state	evidence_ref	next_action
https://example.com/guides/desk-size/	2026-10-20	Allowed	No noindex observed	Not inspected	response-01	Inspect intended public URL

Record the relevant user agent and whether the observation came from headers, HTML or a live inspection. No noindex observed is narrower than a complete indexability assessment, and neither proves that a page is indexed.

Google's robots.txt explanation distinguishes crawling controls from keeping a page out of Search. Do not use a blocked crawl as proof of deindexing. Resolve the actual mismatch before recommending a directive change, particularly when private or intentionally excluded pages are involved.

15. Sitemap-to-inventory reconciliation

Use one row per URL being compared with a specific sitemap snapshot. Retain which source showed it and what the site's intended inclusion policy is.

TSV
url	in_inventory	in_sitemap	intended_inclusion	snapshot_ref	next_action
https://example.com/guides/desk-size/	Yes	No	Include	sitemap-01	Check sitemap generation

Compare exact URLs rather than deleting parameters or changing case first. A missing entry can mean a stale snapshot, a generation issue, an intentional exclusion or a scope mismatch.

The output is a list to review, not a command to add every CMS record. Confirm that the intended destination is the current public URL and that its page purpose matches the inclusion policy. Keep sitemap presence separate from actual indexing evidence; a URL appearing in the file does not show that Google has indexed it.

16. Hreflang relationship checks

Use one row per source-to-alternate relationship. Include the declared locale and checks in both directions, rather than keeping only a list of language folders.

TSV
source_url	locale	alternate_url	self_reference_checked	return_reference_checked	evidence_ref
https://example.com/en/desks/	de	https://example.com/de/schreibtische/	Pending	Pending	hreflang-01

First confirm that the destinations serve the intended equivalent task and language or regional audience. Then inspect the actual annotations and applicable self-references and return references.

Google's localized-page guidelines require fully qualified alternate URLs and describe the relationship requirements. Merely placing de beside a URL does not create a valid annotation. The pending example is a checklist row, not deployable markup. Use another row for the reverse relationship so missing references are visible instead of assumed.

On-page and experience templates

17. Title and description review

Use one row per URL with observed metadata and a reason for any proposed rewrite. Preserve the old text so an editor can assess the change.

TSV
url	observed_title	proposed_title	observed_description	proposed_description	reason
https://example.com/desks/oak/	Desks	Oak Desks in Three Sizes	Browse furniture.	Compare oak desks by width and storage to choose one for your room.	Describe the actual selection

Add title_characters in G1 and =LEN(C2) in G2 to count the proposed title. It returns 24 for this example. Character count is an editing aid, not a fixed Google display limit or a ranking rule.

Review whether the wording accurately describes the page and distinguishes it from neighboring pages. After an edit, inspect the live metadata. For performance-led changes, use the CTR diagnosis guide before attributing low CTR to the title alone.

18. Structured-data validation log

Use one row per page, markup type and dated check. Store the exact validation finding and whether the underlying information matches the visible page.

TSV
url	markup_type	checked_on	validation_finding	visible_content_check	evidence_ref	next_action
https://example.com/guides/desk-size/	Article	2026-10-20	No errors in saved test	Author matches page	validation-01	Review current feature requirements

Use the relevant validator and current documentation for the intended search feature. A syntactically valid object is not the same as complete feature eligibility. The markup must describe the actual page.

Google's structured-data introduction explains the connection between markup and supported search features. Keep a test result separate from evidence that a rich result appeared. Mark the latter unknown unless observed; this worksheet does not promise a search enhancement.

19. Image alt-text review

Use one row per image occurrence on a page, not just per image file. The same asset can serve different purposes in different contexts.

TSV
page_url	image_url	page_context	current_alt	proposed_alt	review_state
https://example.com/guides/desk-size/	https://example.com/images/legroom.jpg	Measurement step		Measuring clearance between chair arms and desk underside	Needs visual review

Inspect the actual image and nearby content before accepting the proposed wording. Distinguish a missing attribute, an empty attribute and text that fails to explain the image's purpose. Do not automatically fill every empty value: decorative images can need different treatment.

The example wording is a suggestion awaiting inspection, not a claim about a downloaded image. Follow Google's image guidance for descriptive, relevant text and avoid inserting unrelated keywords. Record the verified live attribute after implementation.

20. Core Web Vitals evidence log

Use one row per page or reported group, device and observation window. Keep field evidence and individual lab runs separate.

TSV
subject	device	evidence_type	measurement_window	metric	value	unit	evidence_ref
https://example.com/desks/	mobile	field	2026-09-23 to 2026-10-20	LCP	3.1	seconds	performance-01

Add one row for each metric you are investigating, with its own unit. Do not put a lab performance score in the LCP column or treat a sitewide origin result as a measurement of one specific URL.

Google's Core Web Vitals guide covers loading, responsiveness and visual stability through LCP, INP and CLS. Use the log to connect a finding to a page template or component and a verification plan. A faster lab run can help diagnosis, but does not establish that a field reporting window has already improved.

21. Faceted URL policy review

Use one row per meaningful filter pattern or representative state. Record the visitor benefit and intended treatment before changing crawling or indexing rules.

TSV
url_pattern	representative_url	visitor_task	distinct_value	policy_state	next_action
/desks/?width=*	https://example.com/desks/?width=120	Find a desk that fits	Inventory and usefulness unreviewed	Undecided	Inspect selection and existing category

Check the real selection and whether another page already satisfies the same task. A filter generating a URL is not enough evidence that the URL deserves a separate search landing page.

After a policy is approved, add separate columns for observed status, canonical declaration, crawling rules and indexing directives. Reuse the relevant technical worksheets for verification rather than inferring one control from another. This template records a policy decision; it does not prescribe noindex or canonicalization for every parameterized URL.

Search performance and local templates

22. Search Console page comparison

Use one row per page under the same reporting scope. Match property, search type, filters and period length before comparing values. Keep both exact date ranges in the Readme or additional columns.

TSV
page	period_pair	clicks_before	clicks_after	impressions_before	impressions_after
https://example.com/desks/	Two matched 28-day periods	40	55	1000	1100

In G1 enter click_change, then put =D2-C2 in G2. The example returns 15. In H1 enter click_change_pct, then put this in H2 and format it as a percentage:

GS
=IF(C2=0,"No baseline",(D2-C2)/C2)

The result is 37.5%. A zero baseline produces an explicit message instead of a misleading percentage. For CTR, calculate clicks divided by impressions for each period; the example moves from 4% to 5%. That is one percentage point, not a one-percent relative increase.

Use Google's Performance report export as the input. Most page performance is assigned to the canonical URL, so a missing duplicate URL should not immediately be interpreted as having no search activity. Review the page, query mix and measurement scope before choosing an action.

23. Search Console query comparison

Use one row per query and matched scope, keeping its interpretation separate from the measurements. This reveals which questions changed within a page-level trend.

TSV
query	page_filter	clicks_before	clicks_after	impressions_before	impressions_after	next_question
oak desk width	Exact desk category URL	12	8	300	400	Did result position or query context change?

The fictional row has fewer clicks despite more impressions. That is a prompt to examine position, the result and the landing page; it is not proof that a title rewrite is the right fix.

Google documents query privacy and truncation limits. Visible query rows do not necessarily sum to the chart totals, and a phrase missing from an export is not automatically zero. Keep not exported distinct from a measured zero. Do not manufacture a complete demand estimate by adding up your site's query impressions.

24. Fixed-scope ranking observations

Use one row per keyword, search location, device and observation date. Retain the observed ranking URL so a position movement is not detached from a destination change.

TSV
keyword	location	device	observed_on	position	observed_url	source_ref	data_state
oak desks	Austin US	desktop	2026-10-20	8	https://example.com/desks/oak/	rank-export-01	available

Enter your actual export or observation. This layout does not fetch rankings automatically. A missing result needs a state such as outside captured range or check failed, not an invented position.

Compare observations only when the scope and measurement method match. Search Console average position is a different metric from a single fixed-location rank observation; keep them in separate columns or tabs. Our ranking report guide explains the contextual fields needed to make a movement useful. Record what to investigate, rather than treating every one-day shift as an urgent content problem.

25. Organic search business outcomes

Use one row per landing page, period and consistently defined traffic scope. Record the event definition alongside the result so an event rename or tracking change is visible.

TSV
landing_page	period	traffic_scope	sessions	qualified_enquiries	enquiry_definition	tracking_state
/desks/oak/	2026-10-01 to 2026-10-28	Session Organic Search	200	6	Accepted enquiry event v1	Reviewed

Add enquiries_per_session in H1 and =IF(D2=0,"No sessions",E2/D2) in H2. With these fictional values it returns 3% when formatted as a percentage. This is the ratio you defined, not automatically a platform's built-in session key-event rate. Multiple events per session or a changed enquiry definition alter its meaning.

Keep Search Console clicks and analytics sessions separate. If joining datasets, confirm URL format, period, timezone and source scope first. A blank outcome field may reflect unavailable or incomplete tracking rather than no business value. Use the comparison to ask which landing pages need investigation; do not label all observed enquiries as incremental revenue caused by SEO.

26. Local citation accuracy checks

Use one row per business location and public listing page. Compare what the listing actually shows with a verified, business-approved reference.

TSV
location_id	listing_url	field_checked	approved_value	observed_value	checked_on	action_state
LOC01	https://example.org/listings/example-desks/	Business name	Example Desks	Example Desk Warehouse	2026-10-20	Confirm discrepancy with owner

Check names, public contact details, hours and destinations only where they apply to the business. Keep separate rows for different fields so a correct website link does not hide outdated opening hours.

Distinguish harmless formatting differences from facts that could mislead a customer. Confirm the correct value before requesting an update, particularly for service-area businesses or listings with special display rules. Do not publish a private address merely to fill a cell. This worksheet documents accuracy and follow-up; it does not promise that citation consistency alone will improve local rankings.

Check the workbook before making changes

Review one completed row from source to proposed action before expanding the sheet. The important checks are whether its evidence is current, its scope is clear and someone can perform and verify the next step.

For lookups, use a stable key with one meaning in the selected scope. For example, name the tab from template 3 Map. In a separate analysis tab, enter K001 in A2 and this formula in B2:

GS
=IFNA(VLOOKUP(A2,Map!$A$2:$G$1000,3,FALSE),"Not found")

It returns the example target URL, https://example.com/guides/desk-size/. Google's VLOOKUP documentation explains exact-match mode and first-match behavior. Resolve duplicate keys before using the result. Include market or another scope identifier in the key if the same cluster has different destinations. Do not assume text lookup behavior is equivalent to byte-for-byte URL identity.

Keep lookup failures explicit. Replacing every error with zero would turn a missing join into an apparently measured result. Use consistent data types, and check that a copied formula still points to the intended columns. If you later use QUERY, mixed types in a column can cause minority-type values to be treated as null, so clean the input deliberately.

Before sharing or acting, check:

  • The rows retain their original URL, source date and measurement context.
  • Numbers are numeric, percentages have the intended denominator, and unknowns remain identifiable.
  • Sorting and filters cover whole rows; formulas and manually approved values occupy separate columns.
  • A proposed action has an owner and an acceptance condition, such as a corrected public link or verified live metadata.
  • No row marked complete relies solely on a planned date, CMS preview or unverified assumption.

Start with the template that resolves today's decision. Add another tab when it answers a different question, and retain only the fields someone will maintain. A small, evidenced workbook is more useful than a large dashboard whose missing values and unverified fixes look finished.

Related posts

Keep reading practical SEO guides from the Screpy blog.

View all posts