Backlink Delivery QA Checklist Template
The vendor report says 20 links are live. You paid for them. But nobody opened the pages to check the target, the anchor or the rel attribute.
This checklist QAs each delivered link on the live page: exact href, anchor, rel value, noindex, canonical and a dated screenshot.
It keeps indexing notes honest. You can't inspect a publisher's URL in Search Console, so you log what you saw, where and when.
Inside: a fill-in QA sheet, link and page checks, an indexing log, an evidence pack with a fix request, a CSV header and a fictional example.
- Format
- Editable Word .docx
- Length
- 7 variants · ~7 pages
- Price
- 100% free
- Setup
- Copy or download
Get the editable Word doc in one click.
Free · No signup · Instant download
Backlink Delivery QA Checklist Template
Backlink delivery QA sheet
One row per link a vendor, publisher or teammate reports as delivered. Check it on the live page before you accept it, pay for it or report it.
Order or campaign: [order ID / campaign] - Vendor or publisher: [name] - QA owner: [name] - QA date: [YYYY-MM-DD]
| Live URL | Exact target URL | Anchor text | Link attribute (rel) | Indexing observation | Evidence |
|---|---|---|---|---|---|
| [https://publisher.com/post/] | [https://yoursite.com/page/ as found in href] | [anchor as found vs agreed] | [none / sponsored / ugc / nofollow] | [what you saw, where, on what date] | [screenshot file + date] |
| [live URL] | [exact href] | [anchor found / agreed] | [rel found / expected] | [observation + date] | [screenshot + date] |
| [live URL] | [exact href] | [anchor found / agreed] | [rel found / expected] | [observation + date] | [screenshot + date] |
Per-row detail (fill for every link)
- Agreed in the order: target [URL], anchor [text], rel [value], placement [body / author bio / resource list]
- Live page status: [200 / 301 to [URL] / 404 / other], checked on [date]
- Target URL status: [200 / redirects to [URL] / 404]
- Live page robots rules: meta robots [none / noindex / nofollow], X-Robots-Tag [none / noindex]
- Live page canonical: [self / points to [other URL] / missing]
- Link found in: [page source / rendered page only / both]
- Paid or exchanged link: [yes / no]. If yes, rel found: [sponsored / nofollow / none]
- Verdict: [accept / fix requested / reject], reason: [one line]
- Re-check date: [date]
Next action
- QA owner: [name] - action: check every reported link and fill the row by [date]
- Vendor contact: [name] - action: fix or replace rows marked "fix" or "reject" by [date]
- Budget owner: [name] - action: approve payment only for accepted rows by [date]
- Reporting owner: [name] - action: add accepted rows to the backlink tracker by [date]
Completion check
- Every row has a live URL that opens, checked on a stated date.
- The target URL is copied from the href, not from the vendor report.
- Anchor text and rel were read from the page HTML, not from a screenshot alone.
- Paid or exchanged links are qualified with sponsored or nofollow, as Google's spam policies ask.
- Each indexing note says what was seen, where and when. No row says "indexed" without a source.
- Each row has a dated screenshot and a verdict with one reason.
Why it works
Every delivered backlink is checked on the live page for exact target, anchor, rel and indexability, with dated proof, before it is accepted or paid for.
- Href, anchor and rel are read from the page HTML, so vendor report errors are caught early.
- Indexing notes record what was seen and when, because Search Console can't inspect other sites.
- Paid links are checked for sponsored or nofollow, following Google's current spam policies.
7 ready-to-use variants
Copy allBacklink Delivery QA Sheet (fill-in)
When to use: One row per delivered link with live URL, exact target URL, anchor, rel, indexing observation, evidence, owners and a completion check.
Backlink delivery QA sheet
One row per link a vendor, publisher or teammate reports as delivered. Check it on the live page before you accept it, pay for it or report it.
Order or campaign: [order ID / campaign] - Vendor or publisher: [name] - QA owner: [name] - QA date: [YYYY-MM-DD]
| Live URL | Exact target URL | Anchor text | Link attribute (rel) | Indexing observation | Evidence |
|---|---|---|---|---|---|
| [https://publisher.com/post/] | [https://yoursite.com/page/ as found in href] | [anchor as found vs agreed] | [none / sponsored / ugc / nofollow] | [what you saw, where, on what date] | [screenshot file + date] |
| [live URL] | [exact href] | [anchor found / agreed] | [rel found / expected] | [observation + date] | [screenshot + date] |
| [live URL] | [exact href] | [anchor found / agreed] | [rel found / expected] | [observation + date] | [screenshot + date] |
Per-row detail (fill for every link)
- Agreed in the order: target [URL], anchor [text], rel [value], placement [body / author bio / resource list]
- Live page status: [200 / 301 to [URL] / 404 / other], checked on [date]
- Target URL status: [200 / redirects to [URL] / 404]
- Live page robots rules: meta robots [none / noindex / nofollow], X-Robots-Tag [none / noindex]
- Live page canonical: [self / points to [other URL] / missing]
- Link found in: [page source / rendered page only / both]
- Paid or exchanged link: [yes / no]. If yes, rel found: [sponsored / nofollow / none]
- Verdict: [accept / fix requested / reject], reason: [one line]
- Re-check date: [date]
Next action
- QA owner: [name] - action: check every reported link and fill the row by [date]
- Vendor contact: [name] - action: fix or replace rows marked "fix" or "reject" by [date]
- Budget owner: [name] - action: approve payment only for accepted rows by [date]
- Reporting owner: [name] - action: add accepted rows to the backlink tracker by [date]
Completion check
- Every row has a live URL that opens, checked on a stated date.
- The target URL is copied from the href, not from the vendor report.
- Anchor text and rel were read from the page HTML, not from a screenshot alone.
- Paid or exchanged links are qualified with sponsored or nofollow, as Google's spam policies ask.
- Each indexing note says what was seen, where and when. No row says "indexed" without a source.
- Each row has a dated screenshot and a verdict with one reason.
Link Check: Target, Anchor and rel
When to use: Read the href, anchor and rel from the HTML and compare them with the order, using Google's rel definitions.
Check the link itself: target, anchor and rel
A link can look right on screen and still be wrong in the code. Read it in the HTML. Right-click the link and choose Inspect, or search the page source for your domain.
Five link checks
- Exact target URL: copy the href. Check protocol, www, trailing slash, parameters and letter case against the order.
- Target status: open the href. Note if it returns 200, redirects or breaks.
- Anchor text: copy the visible text between the tags. For an image link, note the alt text.
- rel attribute: copy the full rel value exactly as written, including combined values.
- Placement: note where it sits: body text, author bio, sidebar, footer or a list of links.
What each rel value means (Google, checked 10 November 2026)
| rel value | Google says use it for | QA note |
|---|---|---|
| sponsored | Ads and paid placements | Expected on any link you paid or traded for |
| ugc | User-generated content, such as comments and forum posts | Normal for links you posted in a forum or comment |
| nofollow | Cases where the other values don't apply | Google still accepts it on paid links, but prefers sponsored |
| none of these | Regular links that need no qualification | Record it as "none". Do not write "dofollow", it is not a rel value |
- Values can be combined with a space or comma, for example rel="ugc nofollow".
- Google's spam policies list exchanging money for links, or for posts that contain links, as link spam unless the link is qualified with nofollow or sponsored.
- So a sponsored attribute on a paid placement is correct. Do not mark it as a defect or ask the publisher to remove it.
Target URL problems to catch
- The href points to an old URL that now redirects. Ask for the final URL.
- The href has tracking parameters you did not agree to.
- The href goes through a shortener or the publisher's own redirect.
Paste each href into the Redirect Checker to see the status code and every hop to the final URL.
Live Page Indexability Check
When to use: Check status code, robots meta, X-Robots-Tag, robots.txt, canonical and whether the link is in the source.
Check the live page: can Google index it?
A correct link on a page Google is told not to index is a weak delivery. These checks are on the page, so you can do them on any site without its owner's help.
| Check | Where to look | Problem sign |
|---|---|---|
| HTTP status | Response of the live URL | 404, 410, 5xx, or a redirect to another page |
| Robots meta tag | <meta name="robots"> in the head | noindex or none |
| X-Robots-Tag header | HTTP response headers | noindex or none |
| robots.txt | publisher.com/robots.txt | A disallow rule that matches the post path |
| Canonical | <link rel="canonical"> in the head | Points to a different URL |
| Link in HTML | Page source vs rendered page | Link only appears after scripts run, or only for logged-in users |
What Google's documentation says (checked 10 November 2026)
- noindex can be set with a robots meta tag or an X-Robots-Tag HTTP header.
- For noindex to work, the page must not be blocked by robots.txt. A blocked page can't have its noindex read.
- rel="canonical" is a strong signal, not a command. Google can still pick a different canonical.
- A redirect is also a strong canonical signal.
How to read the result
- Clean: 200, no noindex, self canonical, link in the source. Move on to the indexing observation.
- Canonical elsewhere: note the URL it points to and check if your link is on that page too.
- noindex or 404: mark the row [fix requested / reject] and ask for a replacement.
Run a Website Audit on your own site too. It flags status code errors, noindex and canonical problems. A link to a page that is broken or set to noindex on your own site gives you nothing.
Indexing Observation Log
When to use: Log what you observed about a third-party page's indexing, with method and date, without claiming more than you can see.
Indexing observation log
You can't see Google's index for someone else's site. Write what you observed, where and when. Do not write "indexed" or "not indexed" as a fact.
What you can and can't check (checked 10 November 2026)
- URL Inspection tool: works only on URLs in a Search Console property you have access to. Use it for your target URL, not the publisher's page.
- Even on your own site: Google says "URL is on Google" means eligible to appear, not guaranteed.
- site: search: Google says the results are not necessarily complete. A missing URL is a rough signal, not proof.
- Backlink tools: show what their own crawler found. That is not Google's index.
Observation wording to use
| Observation | Write it like this |
|---|---|
| Seen in Google | "Live URL shown for site: search on [date], Google, [country]" |
| Not seen yet | "Not shown for site: or exact URL search on [date]. Re-check [date]" |
| Blocked on page | "Page carries noindex in [meta / X-Robots-Tag] on [date]" |
| Canonical elsewhere | "Canonical points to [URL] on [date]" |
| Found by a tool | "Listed by [tool name] on [date]" |
Re-check plan
- First check: on delivery, [date]
- Second check: [date you agree with the vendor]
- Final check before the guarantee ends: [date]
- At every check, confirm the link is still there with the same target, anchor and rel.
Run your domain in the Backlink Analyzer to see your strongest links with first-seen dates. Log it as a tool observation, not as proof of indexing.
Evidence Pack and Fix Request
When to use: Capture dated proof for each link, decide accept, fix or reject, and send the vendor one clear fix list.
Evidence pack and fix request
Evidence protects both sides. It shows what was live on a date, and it gives the vendor a clear list of what to fix.
Capture for every row
- Full-page screenshot with the address bar and the date visible, link highlighted.
- The HTML of the link copied as text: href, anchor and rel.
- Response headers of the live URL, or a note that no X-Robots-Tag was present.
- The robots meta and canonical lines from the page head.
- File name: [order-ID_publisher_YYYY-MM-DD.png]
- Stored in: [shared folder link]
Accept, fix or reject
- Accept: live page opens, href and anchor match the order, rel is honest for how the link was obtained, no noindex.
- Fix requested: wrong target URL, wrong anchor, an unwanted redirect, or the link sits in a spot the order ruled out.
- Reject: page returns an error, carries noindex, is blocked by robots.txt, or the link is missing.
Fix request message
Hi [name], thanks for the delivery report for [order ID]. We checked each link on [date]. [n] are accepted. These need a fix:
- [live URL]: [issue, e.g. href points to old URL; please use [final URL]]
- [live URL]: [issue, e.g. page has noindex; please replace]
Screenshots and HTML are in [folder link]. Could you confirm by [date]? We'll re-check the same day.
Score the vendor on fix speed and accuracy with the Link Building Vendor Scorecard. If an accepted link disappears later, use the Link Reclamation Template.
Want a second pair of eyes on a vendor's delivery report? Book a free consultation with Anatolii Ulitovskyi.
Spreadsheet Header (CSV)
When to use: A paste-ready header row and allowed values to run delivery QA in Google Sheets or Excel.
Paste-ready spreadsheet header
Paste this row into cell A1 of Google Sheets or Excel, then split text to columns by comma. One row per delivered link.
row_id,order_id,vendor,publisher_domain,live_url,live_status,target_url_agreed,target_url_found,target_status,anchor_agreed,anchor_found,rel_expected,rel_found,paid_or_exchanged,placement,meta_robots,x_robots_tag,robots_txt_blocked,canonical,link_in_source,indexing_observation,observation_method,observation_date,screenshot_file,qa_date,qa_owner,verdict,fix_reason,fix_due,recheck_dateAllowed values
- rel_expected / rel_found: none, sponsored, ugc, nofollow, sponsored nofollow, ugc nofollow
- paid_or_exchanged: yes, no
- placement: body, author_bio, resource_list, sidebar, footer, comment
- meta_robots / x_robots_tag: none, noindex, nofollow, noindex_nofollow
- observation_method: site_search, exact_url_search, url_inspection_own_site, backlink_tool, not_checked
- verdict: accept, fix_requested, reject, replaced
Sheet tips
- Flag rows where target_url_found does not equal target_url_agreed.
- Flag rows where paid_or_exchanged is yes and rel_found is none.
- Flag rows where meta_robots or x_robots_tag contains noindex.
- Sort by recheck_date so nothing passes its guarantee window unchecked.
Move accepted rows into the Backlink Tracker Template for long-term monitoring.
Worked Example (fictional garden shop)
When to use: Four filled rows for an invented shop's vendor order: one accepted, two fixes and one rejection.
Worked example: Tarnwick delivery QA
Example only. Tarnwick (a garden irrigation shop) and Plinthway Outreach (a link vendor) are invented. All URLs, dates and results are made up to show a filled-in sheet.
Order: PW-1042, four sponsored articles, rel="sponsored" agreed in the order - QA owner: SEO lead - QA date: 3 Nov 2026
| Live URL | Exact target URL | Anchor text | Link attribute (rel) | Indexing observation | Evidence |
|---|---|---|---|---|---|
| greenplotdaily.example/drip-kits-guide/ | tarnwick.example/drip-irrigation/ | drip irrigation kits (as agreed) | sponsored (as agreed) | Shown for site: search, 3 Nov 2026 | pw1042_greenplot_2026-11-03.png |
| yardnotes.example/raised-beds/ | tarnwick.example/hoses/ (301 to /garden-hoses/) | garden hoses (as agreed) | sponsored | Not shown for site: search, 3 Nov 2026. Re-check 17 Nov 2026 | pw1042_yardnotes_2026-11-03.png |
| backlotgrower.example/watering-tips/ | tarnwick.example/timers/ | best water timers (agreed: Tarnwick timers) | none (expected sponsored) | Not checked: see verdict | pw1042_backlot_2026-11-03.png |
| sproutledger.example/spring-prep/ | tarnwick.example/soaker-hoses/ | soaker hoses (as agreed) | sponsored | Page carries meta robots noindex, 3 Nov 2026 | pw1042_sprout_2026-11-03.png |
Verdicts
- Row 1: accepted. 200 status, self canonical, link in the page source.
- Row 2: fix requested. The href uses an old URL that redirects. Asked for the final /garden-hoses/ URL.
- Row 3: fix requested. Anchor changed to an exact-match phrase, and a paid link had no rel value. Asked for the agreed anchor and rel="sponsored".
- Row 4: rejected. The page has noindex. Asked for a replacement placement.
Follow-up
- Plinthway fixed rows 2 and 3 on 6 Nov 2026. Re-checked the same day and accepted.
- Payment approved for rows 1 to 3. Row 4 held until a replacement passes QA.
- Row 2 re-check for the indexing observation set for 17 Nov 2026.
Why this works
- Every verdict points to something on the page anyone can check.
- The missing rel on a paid link was caught before payment, not after a problem.
- No row claims a page is indexed. Each note says what was seen and when.
How to use this template
- Copy the order terms into the sheet: target URL, anchor, rel and placement agreed for each link.
- Open each live URL and read the href, anchor and rel from the HTML, not from the vendor report.
- Check the live page for status code, noindex in meta or headers, robots.txt blocks and canonical.
- Log an indexing observation with its method and date, and use URL Inspection only for your own target URL.
- Save a dated screenshot and the link HTML, then mark each row accept, fix requested or reject.
- Send one fix list to the vendor, re-check fixed rows, and approve payment only for accepted links.
- Move accepted links to your backlink tracker and re-check them before any guarantee ends.
Pro tips
- Copy the target from the href. Vendor reports often list the URL you asked for, not the one they used.
- A sponsored rel on a paid link is correct. Don't ask a publisher to strip it.
- Check the page source, not only the screen. Some links appear only after scripts run.
- Write "seen on [date]" instead of "indexed". It holds up when someone asks how you know.
- Agree the QA rules and re-check dates in the order, before the first link goes live.
Frequently asked questions
What is a backlink delivery QA checklist?
A sheet you fill after a vendor or publisher reports a link as live. It checks the live URL, exact target, anchor, rel value, page indexability and dated evidence before you accept or pay.
Can I check if a publisher's page is indexed in Search Console?
No. The URL Inspection tool works only for URLs in a property you can access. For third-party pages, log a dated site: or URL search result as a rough signal.
Which rel value should a paid backlink have?
Google's spam policies say paid links should be qualified with rel="sponsored" or rel="nofollow". Google prefers sponsored for ads and paid placements.
What if the live page has a canonical pointing elsewhere?
Note the canonical URL and check if your link is on that page too. Google treats canonical as a strong signal, so the linking page may not be the one Google keeps.
How is this different from a backlink tracker?
A tracker monitors your whole link profile over time. This checklist gates each new delivery: accept, fix or reject. Accepted rows then move into the tracker.