Skip to content

Runbook

A monthly SEO backlink check for clients, built in Sheets

Clients want one tab that says what changed since last month. You want a report that costs almost nothing to produce and survives a holiday. Both are possible.

What a one-page report actually needs

Most client reports fail by being long. Nobody reads page nine. A good seo backlink check fits on one tab and answers three questions: did referring domains go up, which pages gained or lost them, and what should we do next.

Our index refreshes about once a month, so a monthly rhythm matches it, while weekly runs would mostly return the same rows and cost a little for nothing. Cheap, but pointless. Pick the third day of the month and move on.

Write the snapshot date at the top of the tab, because a report without a date invites arguments about whether a link was there yesterday. One cell. Never skip it.

The sheet can be built from the triage bands and the join steps, so none of this is new machinery, and a competent analyst can finish it in under an hour. No new tools.

The tab, section by section

  • Headline: referring domains this month, last month, and the change.
  • Top 10 pages by referring domains, with the same pages from last month beside them.
  • New and lost domains, from a diff of two refdomains pulls.
  • Anchor mix: branded, URL, generic, and everything else, in four numbers.
  • Search Console clicks for the same 10 pages, so links and traffic sit together.
  • A footer with the snapshot month and the sources, in one sentence.

Cost per client, from the credit price

One credit is $0.0001. Each call is billed once, whatever the number of rows, up to 1,000 per call.
SectionAPI actionCreditsDollars
Referring domainsrefdomains2$0.0002
Top pagestoppages2$0.0002
Anchorsanchors2$0.0002
DR against peers (up to 20 domains)compare1$0.0001
Client total, with one compare7$0.0007

Words to put under the numbers

Numbers alone start arguments. Add one sentence per section saying what it means, written for someone who has never opened Search Console, because plain wording beats a chart almost every time. Keep it short.

For the headline, say what moved and by how much. Something like: referring domains rose from 212 to 219 between the October and November snapshots, which is only an example of tone, and your own figures replace it. Keep it to two lines.

For lost domains, resist alarm. A domain missing from one monthly pass may have been missed by the crawler, or the page may have moved. Re-check the list the next month before you tell a client that anything was lost.

For anchors, group the rows instead of listing them. Branded, bare URL, generic such as click here, and the rest is enough, since clients rarely want 400 lines of anchor text but do want to know whether the exact-match share looks odd. Four buckets.

The footer carries the honest part. Name the snapshot month, say the index is our own and refreshes roughly monthly, and note that Search Console is the source for clicks, because two sentences in small type save a lot of emails. Always include them.

Schedule the pull once

Add this beside the pull function from the join walkthrough. Time-driven triggers are part of Apps Script.

javascript
function scheduleMonthly() {
  ScriptApp.newTrigger('pullTopPages')
    .timeBased()
    .onMonthDay(3)
    .atHour(6)
    .create();
}
// Run scheduleMonthly() once by hand. Then rename the tab:
// links -> links-YYYY-MM before the next run overwrites it.

A fair warning

This is a trend report, not a monitor

It tells a client where the profile stands once a month. It will not warn anyone the day a link disappears. For that, use alerts from a daily crawler such as Ahrefs or Semrush, and keep this sheet for the cheap monthly picture.