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.
