Dock
Sign in & remix
REMIX PREVIEWUse Cases· MAY 30

Dock for SEO: link acquisition tracking with attributed agent outreach

Ahrefs and Semrush hold the backlink data. Dock is the outreach table where the agent's target list, drafted pitches, send status, and reply tracking live, with reviewer approval before any outbound email is sent.

By mei· 4 min read· from trydock.ai

Link acquisition tracking in Dock means this: Ahrefs and Semrush keep the backlink graph, the referring-domain metrics, the anchor-text distribution. Dock keeps the outreach table. Every prospect the agent surfaces becomes a row. The drafted pitch, the reviewer who approved it, the send timestamp, the reply status, the eventual live link, all of it persists in one table that the SEO lead can scan on a Tuesday morning without opening a single other tab. The agent does the digging and drafting. The human approves the send. The row is the audit trail.

The split is deliberate. Ahrefs, Semrush, Screaming Frog, Google Search Console, and Clearscope remain the system of record for raw SEO data: rankings, backlink graphs, crawl output, keyword corpora. Dock is the system of record for what the agent interprets from that data. The prioritized fix list, the redirect map, the keyword brief, the outreach decision. Each Dock row carries a pointer back to the platform record (ahrefs_backlink_id, semrush_domain_id, gsc_query_id), plus the agent's identity, the decision it made, the reviewer who approved it, and a timestamp. When the agent needs current state, it re-reads the platform via fresh API calls. Dock holds the persistent interpretive layer that survives across sessions.

The outreach table

row_id prospect_domain ahrefs_backlink_id target_url pitch_angle pitch_draft drafted_by reviewer send_status reply_status live_link
OUT-0412 smashingmagazine.com ahrefs:bl_88231 /guides/agent-identity guest contribution on agent-IAM "Hi Vitaly, your piece on..." agent:mei govind approved, sent 2026-05-28 replied, interested pending
OUT-0413 css-tricks.com ahrefs:bl_88412 /guides/consent-gates broken-link replacement "Your 2024 piece links to a 404..." agent:mei govind approved, sent 2026-05-28 no reply, follow-up due n/a
OUT-0414 a16z.com/futureproof ahrefs:bl_91002 /thesis/cloud-2-0 unlinked brand mention "You cited Dock in episode 42..." agent:mei pending hold n/a n/a

Three rows, three distinct outreach motions, one schema. The agent populates everything left of reviewer. The human fills reviewer and toggles send_status from hold to approved. The mailer reads only rows where send_status = approved and the reviewer column is non-null. There is no path from draft to send that skips a human.

The workflow

The agent runs a Monday pull. It queries Ahrefs for new referring domains to three target competitors, cross-checks the keyword brief from last week's Ahrefs run, and pulls the competitive content gaps Semrush flagged. It deduplicates against the existing outreach table, scores the remaining prospects by domain rating and topical fit, and writes the top fifteen into Dock as new rows with send_status = hold.

For each row, the agent drafts a pitch. Pitches reference a specific piece the prospect has published, name the link target, and explain the swap or contribution on offer. The agent signs each draft with its identity, agent:mei, recorded in drafted_by. The SEO lead reviews the table on Tuesday. Approving a row flips send_status to approved and stamps reviewer = govind. The mailer picks up approved rows on its next sweep, sends, and writes back sent_at. The agent then watches the inbox via the events API and updates reply_status as replies arrive. When a link goes live, the agent confirms it via a fresh Ahrefs read and writes the URL into live_link.

Why it matters

Attribution. Every outbound email carries an agent:mei stamp on drafted_by and a human stamp on reviewer. If a prospect complains, the row tells you who wrote the pitch and who let it go out. The agent audit trail makes the chain queryable. The agent identity lifecycle makes the stamp unforgeable.

Daily-driver experience. The SEO lead opens one table on Tuesday, sorts by send_status = hold, and approves or edits in place. They are not switching between Ahrefs, a spreadsheet, a Gmail draft folder, and a Notion tracker. The table is the workflow.

Safety. Outbound email is a two-key irreversible operation. The agent drafts. The human approves. No exception.

Start with the Dock-for-SEO pillar for the full surface map.

FAQ

Does the agent ever send email without human approval? No. The mailer reads only rows where send_status = approved and reviewer is non-null. The agent can draft, edit, and re-queue, but it cannot flip the approval bit on its own row.

How does Dock avoid duplicating Ahrefs and Semrush? It does not store backlink graphs or referring-domain metrics. It stores pointers (ahrefs_backlink_id, semrush_domain_id) and the agent's interpretation: prospect priority, pitch angle, send decision. Fresh metric reads happen against the platform API on demand.

What happens when a prospect replies? The agent reads the inbox via the events API, matches the reply thread to the outreach row by message-id, and updates reply_status. Replies that need a human decision (negotiation, custom requests) get flagged for the reviewer. According to a Backlinko analysis of 12 million outreach emails, only 8.5 percent of cold pitches get a reply, so the reply column is sparse by design.

What outreach methodology does the agent follow? The drafting prompt encodes a personalized, prospect-first pattern: reference a specific piece the prospect published, name the mutual benefit, keep pitches under 200 words. This mirrors the structure documented in Backlinko's link building guide, which prioritizes 100-150 highly personalized pitches over bulk sends.

Remix this into Dock

Make this yours. Edit, extend, run agents on it.

Sign in (free, 20 workspaces) — Dock mints a copy of this in your own workspace. The original stays untouched.

No Dock account? Sign-in is signup. Magic-link in 30 seconds.