Link Building Budget Tracker Template
You paid for twelve placements this quarter. Finance asks what you spent, and the answer is spread across invoices, card receipts and three currencies.
This tracker logs each placement once: writing fee, platform fee, currency, payment status, date, method and the delivered URL.
Nothing is paid without approval, and a row is done only when the link is live and marked rel="sponsored" or nofollow.
Inside: a fill-in tracker, a budget cap setter, a reconciler, a payment log, a delivery check, 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
Link Building Budget Tracker Template
Link building budget tracker
One row per paid placement. Fill it when the placement is agreed, not when the invoice arrives. Nobody pays a row that has no approval.
Campaign: [campaign name] - Budget owner: [name] - Period: [month or quarter] - Base currency: [EUR / USD / GBP] - Budget cap: [amount]
| Placement | Writing fee | Platform fee | Currency | Payment (status / date / method) | Delivered URL |
|---|---|---|---|---|---|
| [site + target page + anchor] | [amount] | [amount or 0] | [ISO code] | [status / YYYY-MM-DD / method] | [live URL or pending] |
| [site + target page] | [amount] | [amount or 0] | [ISO code] | [status / date / method] | [live URL] |
| [site + target page] | [amount] | [amount or 0] | [ISO code] | [status / date / method] | [live URL] |
Per-row detail (fill for every placement)
- Vendor or publisher: [name, contact, how you found them]
- Placement type: [new article / link insertion / sponsored post / directory listing]
- Target page on your site: [URL the link points to]
- Total in placement currency: [writing fee + platform fee + any tax or transfer fee]
- Rate used and its date: [1 [currency] = [x] [base currency] on [payment date], source]
- Total in base currency: [amount]
- Invoice or receipt ID: [ID + where the file is stored]
- Approved by: [name] on [date]
- rel attribute required: sponsored (or nofollow) - found on the live page: [sponsored / nofollow / none / other]
- Live check date: [date] - next re-check: [date]
- Replacement terms: [what the vendor does if the link or page disappears, and for how long]
Next action
- Budget owner: [name] - action: approve or reject new rows by [date]
- Link builder: [name] - action: add the delivered URL and rel check for every live row by [date]
- Finance contact: [name] - action: pay approved rows and add date, method and invoice ID by [date]
- SEO lead: [name] - action: re-check live URLs and rel attributes by [date]
Completion check
- Every row has an approval name and date before its payment date.
- Writing fee + platform fee + extra fees equals the invoice total for each row.
- The sum of paid rows in base currency matches the payments on the bank or card statement.
- Paid + committed rows stay under the budget cap.
- Every paid placement has a live delivered URL that points to the agreed target page.
- Every paid link carries rel="sponsored" or rel="nofollow" on the live page.
- Rows with no live URL after the agreed date are flagged, and payment is on hold.
Why it works
Every paid placement has one row with its fees, currency, approval, payment details and a live delivered URL marked rel sponsored or nofollow.
- Writing and platform fees are split, so sheet totals match invoices and the bank statement.
- Payment waits on approval and a live link check, so money does not go to undelivered placements.
- The rel check follows Google's current paid link guidance, checked on the day of publishing.
7 ready-to-use variants
Copy allLink Building Budget Tracker (fill-in)
When to use: One row per paid placement with fees, currency, payment status, date and method, delivered URL, owners and a completion check.
Link building budget tracker
One row per paid placement. Fill it when the placement is agreed, not when the invoice arrives. Nobody pays a row that has no approval.
Campaign: [campaign name] - Budget owner: [name] - Period: [month or quarter] - Base currency: [EUR / USD / GBP] - Budget cap: [amount]
| Placement | Writing fee | Platform fee | Currency | Payment (status / date / method) | Delivered URL |
|---|---|---|---|---|---|
| [site + target page + anchor] | [amount] | [amount or 0] | [ISO code] | [status / YYYY-MM-DD / method] | [live URL or pending] |
| [site + target page] | [amount] | [amount or 0] | [ISO code] | [status / date / method] | [live URL] |
| [site + target page] | [amount] | [amount or 0] | [ISO code] | [status / date / method] | [live URL] |
Per-row detail (fill for every placement)
- Vendor or publisher: [name, contact, how you found them]
- Placement type: [new article / link insertion / sponsored post / directory listing]
- Target page on your site: [URL the link points to]
- Total in placement currency: [writing fee + platform fee + any tax or transfer fee]
- Rate used and its date: [1 [currency] = [x] [base currency] on [payment date], source]
- Total in base currency: [amount]
- Invoice or receipt ID: [ID + where the file is stored]
- Approved by: [name] on [date]
- rel attribute required: sponsored (or nofollow) - found on the live page: [sponsored / nofollow / none / other]
- Live check date: [date] - next re-check: [date]
- Replacement terms: [what the vendor does if the link or page disappears, and for how long]
Next action
- Budget owner: [name] - action: approve or reject new rows by [date]
- Link builder: [name] - action: add the delivered URL and rel check for every live row by [date]
- Finance contact: [name] - action: pay approved rows and add date, method and invoice ID by [date]
- SEO lead: [name] - action: re-check live URLs and rel attributes by [date]
Completion check
- Every row has an approval name and date before its payment date.
- Writing fee + platform fee + extra fees equals the invoice total for each row.
- The sum of paid rows in base currency matches the payments on the bank or card statement.
- Paid + committed rows stay under the budget cap.
- Every paid placement has a live delivered URL that points to the agreed target page.
- Every paid link carries rel="sponsored" or rel="nofollow" on the live page.
- Rows with no live URL after the agreed date are flagged, and payment is on hold.
Budget Cap and Approval Setter
When to use: Set the period cap, per-placement cap, second approver, reserve and payment rule before any vendor offer.
Set the budget before the first pitch
Decide the cap, the approval rules and the reserve first. Then every vendor offer is checked against the same numbers.
| Setting | Your value | Why it matters |
|---|---|---|
| Budget cap for the period | [amount + base currency] | Paid plus committed rows never go above it |
| Cap per placement | [amount] | Anything above it needs a second approval |
| Second approver | [name] | One person cannot agree and pay a large row alone |
| Reserve for fixes and replacements | [amount] | Covers rel fixes, edits or a replacement link |
| Base currency and rate source | [currency + where rates come from] | Every row converts the same way |
| Payment rule | [pay on live URL / deposit + balance / prepaid] | Sets when finance can release money |
Budget lines
Split the cap by what you pay for, so you can see where money goes. Fill only the lines you use.
- Writing fees: [amount]
- Platform or marketplace fees: [amount]
- Transfer, card or tax fees: [amount]
- Digital PR or data assets: [amount]
- Reserve: [amount]
Before you approve a row
- The target page is the right page for the topic, and it loads with a 200 status.
- The vendor agreed in writing to add rel="sponsored" or rel="nofollow".
- The site passed your vendor scorecard.
- The total fits under the per-placement cap and the period cap.
Check target pages before you buy links to them. Run a Website Audit for status codes and indexability, and use the Redirect Checker on any URL that moved.
Score vendors first with the Link Building Vendor Scorecard.
Fee and Currency Reconciler
When to use: Match sheet, invoice and statement totals, with a row formula and fixes for common fee and rate gaps.
Reconcile fees, currencies and totals
Budgets drift when one vendor bills in USD, another in GBP and a marketplace adds its own fee. Reconcile three totals every month.
- Sheet total: sum of paid rows in base currency.
- Invoice total: sum of invoices and receipts for the same rows, converted with the same rates.
- Statement total: what left the bank account, card or payment app.
All three should match. If they do not, find the row before you approve anything new.
Row formula
[writing fee] + [platform fee] + [transfer or tax fee] = [row total] x [rate on payment date] = [base currency total]
Common gaps
| Gap | Fix |
|---|---|
| Marketplace fee shown at checkout but not logged | Add it in the platform fee column, not inside the writing fee |
| Rate taken on invoice date, card charged later | Use the rate from the statement, and note the date |
| Card or transfer fee missing | Log it as its own amount on the row |
| Refund or credit from a vendor | Add a negative row that points to the original row ID |
| Same placement paid twice | Match invoice IDs. One ID, one paid row |
Committed vs paid
- Committed: approved, not yet paid. Counts against the cap.
- Paid: money left the account. Counts in the statement total.
- Remaining: cap minus paid minus committed.
Payment Status Log
When to use: Shared status words, payment fields and rules for when money can be released.
Payment status log
Use the same status words in every row, so finance and the link builder read the sheet the same way.
| Status | Means | Who moves it on |
|---|---|---|
| proposed | Offer logged, not approved | Budget owner |
| approved | Fits the cap, terms agreed in writing | Link builder |
| invoiced | Invoice or receipt received | Finance contact |
| on_hold | No live URL, wrong target or rel missing | Link builder |
| paid | Money sent, date and method logged | SEO lead (re-check) |
| refunded | Vendor returned money or credit | Finance contact |
Fields to log on payment
- Payment date: [YYYY-MM-DD]
- Method: [bank transfer / card / PayPal / Wise / marketplace balance]
- Reference: [transaction ID shown on the statement]
- Invoice or receipt: [ID + file link]
- Paid by: [name]
Payment rules
- Do not move a row to paid unless it was approved first.
- If your terms say pay on delivery, the delivered URL and rel check come before payment.
- If you pay up front, set a delivery date and move the row to on_hold when it passes.
- Keep payment details for vendors in your finance system, not in the shared sheet.
Want a second opinion on your link budget and vendor terms? Book a free consultation with Anatolii Ulitovskyi.
Delivered URL and rel Attribute Check
When to use: Check each live link, its target, anchor and rel value against Google's current paid link guidance.
Delivered URL and rel attribute check
A paid row is done only when the link is live, points to the right page and is marked as paid. Check each delivered URL the day it goes live, then again later.
What Google says (checked 10 November 2026)
- Google's spam policies list buying or selling links for ranking purposes as link spam. That includes exchanging money, goods or services for links.
- The same page says buying and selling links for advertising is a normal part of the web, as long as the links are qualified with rel="nofollow" or rel="sponsored".
- Google's outbound link guide says to mark ads and paid placements with rel="sponsored". It says nofollow is still acceptable for them, but sponsored is preferred.
- You can combine values, for example rel="sponsored nofollow".
Check per delivered URL
- URL loads: [200 / redirect / 404]
- Page is indexable: [yes / noindex / blocked]
- Link found in the HTML: [yes / no]
- Link target matches the agreed page: [yes / no + actual URL]
- Anchor text matches the agreement: [yes / no]
- rel value on the live link: [sponsored / nofollow / sponsored nofollow / none]
- Checked by and date: [name, date]
If the check fails
- rel missing: ask the publisher to add rel="sponsored" and keep the row on_hold until it is fixed.
- Wrong target or anchor: ask for a fix within the agreed edit window.
- Page gone later: use the replacement terms, and log the new row against the old row ID.
Run your domain in the Backlink Analyzer for its strongest links, anchors and follow split. Run an on-demand top 10 check for the target page's keywords in the Rank Tracker.
For a full delivery review, use the Backlink Delivery QA Checklist Template. If a placement disappears, start with the Link Reclamation Template.
Spreadsheet Header (CSV)
When to use: A paste-ready header row, allowed values and formulas to run the tracker 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 paid placement.
row_id,campaign,vendor,placement_site,placement_type,target_url,anchor_text,approved_by,approved_date,writing_fee,platform_fee,other_fees,currency,row_total,fx_rate,fx_date,base_total,payment_status,payment_date,payment_method,payment_ref,invoice_id,delivered_url,live_check_date,rel_required,rel_found,target_match,owner,next_action,next_action_date,recheck_date,notesAllowed values
- placement_type: new_article, link_insertion, sponsored_post, directory, digital_pr, other
- payment_status: proposed, approved, invoiced, on_hold, paid, refunded
- payment_method: bank_transfer, card, paypal, wise, marketplace_balance, other
- rel_required: sponsored, nofollow, sponsored_nofollow
- rel_found: sponsored, nofollow, sponsored_nofollow, none, not_checked
- target_match: yes, no, not_checked
Sheet tips
- row_total = writing_fee + platform_fee + other_fees. base_total = row_total x fx_rate.
- Add a summary cell: cap minus paid base_total minus approved and invoiced base_total.
- Highlight rows where payment_status is paid and rel_found is none or not_checked.
- Highlight rows where payment_status is paid and delivered_url is empty.
- Filter by recheck_date to plan the next live check.
Worked Example (fictional outdoor gear shop)
When to use: Three filled rows in three currencies for an invented shop, with a held payment, a rel fix and totals that reconcile.
Worked example: Quarrowind, October 2026
Example only. Quarrowind is an invented outdoor gear shop. The publishers, URLs, fees, exchange rates and dates are made up. They are not market prices.
Budget owner: Marketing lead - Base currency: EUR - Budget cap: 600 EUR (invented) - Payment rule: pay on live URL
| Placement | Writing fee | Platform fee | Currency | Payment (status / date / method) | Delivered URL |
|---|---|---|---|---|---|
| trailnotes.example, new article, links to /rain-shells/ | 120 | 0 | EUR | paid / 2026-10-14 / bank transfer | trailnotes.example/2026/10/layering-guide/ |
| campkit-review.example via a marketplace, link insertion, links to /tents/ | 90 | 15 | USD | paid / 2026-10-24 / card | campkit-review.example/best-2-person-tents/ |
| hikersdigest.example, sponsored post, links to /boots/ | 150 | 0 | GBP | on_hold / - / bank transfer | pending |
How the rows were checked
- Row 1: live on 13 Oct. Link points to /rain-shells/ with rel="sponsored". Paid the next day.
- Row 2: live on 20 Oct with no rel value. Moved to on_hold. The publisher added rel="sponsored" on 23 Oct. Paid on 24 Oct.
- Row 3: invoice received, article not live. Payment stays on hold until the URL and rel check pass.
Reconciliation (invented rates)
- Row 1: 120 EUR.
- Row 2: 105 USD x 0.90 = 94.50 EUR (rate from the card statement, 24 Oct).
- Row 3 (committed): 150 GBP x 1.15 = 172.50 EUR, estimated until paid.
- Paid total: 214.50 EUR. Card and bank statement total: 214.50 EUR. Match.
- Remaining: 600 - 214.50 - 172.50 = 213.00 EUR.
Next action
- Link builder: chase hikersdigest.example for the live URL by 7 Nov 2026.
- SEO lead: re-check rows 1 and 2 on 1 Dec 2026.
Why this works
- No row was paid before its link was live and marked as paid.
- The USD row shows the marketplace fee on its own, so the total matches the card charge.
- Committed money counts against the cap, so the team did not overspend.
How to use this template
- Set the budget cap, per-placement cap, second approver, reserve and payment rule for the period.
- Add a row when a placement is agreed: site, target page, anchor, writing fee, platform fee and currency.
- Get approval on the row before any invoice is paid.
- When the link goes live, log the delivered URL and check the target, anchor and rel value.
- Pay the row, then log the payment date, method, reference and invoice ID.
- Each month, reconcile sheet, invoice and statement totals, and re-check live URLs on their re-check date.
Pro tips
- Log the platform fee in its own column. Hidden marketplace fees are where budgets drift.
- Use the exchange rate from the statement, not the invoice, so totals match the bank.
- Count approved but unpaid rows against the cap. That is where overspending starts.
- Put rel="sponsored" in the written agreement, not in a follow-up email after payment.
- Re-check paid links later. A page that is edited or removed still sits in your spend.
Frequently asked questions
What is a link building budget tracker?
A sheet with one row per paid placement. It logs fees, currency, approval, payment status, date and method, the delivered URL and the rel check, so spend and delivery can be matched.
Do paid links need rel="sponsored"?
Google's spam policies say paid links are fine for advertising if marked rel="nofollow" or rel="sponsored". Its link guide prefers sponsored for paid placements. Checked 10 Nov 2026.
Why separate the writing fee and the platform fee?
Marketplaces and agencies often add their own fee on top of the writer or publisher. Splitting them lets you match the card charge and compare vendors fairly.
Should I pay before the link is live?
It depends on your terms. If you pay on delivery, check the live URL, target and rel value first. If you prepay, set a delivery date and hold later rows when it passes.
How is this different from the Link Building Vendor Scorecard?
The scorecard decides which vendors and placements to approve. This tracker logs what each approved placement cost, how it was paid and whether it was delivered.