Backlink Acquisition Methods
This document covers all backlink acquisition strategies planned for Leadmetrics — what’s live, what’s spec’d, and the priority order for building.
Method 1 — Email Outreach (Live)
Prospect types: resource-page, guest-post, broken-link, competitor-backlink, mention
The core pipeline. Researcher discovers prospects → crawler finds contact info → writer generates personalised emails → DM reviews and sends.
See Pipeline for the full implementation.
Method 2 — Unlinked Mention Reclamation (To Build)
What it is
Find pages across the web that mention the client’s brand name or product without a hyperlink. These are the warmest possible outreach targets — the site already knows and likes the client enough to mention them.
Why it matters
Conversion rates on mention-reclamation outreach are typically 2–4x higher than cold resource-page outreach because the relationship is already established. No pitch needed; just a polite request.
How to build it
Detection agent (mention-monitor):
- Query Google Custom Search API (or BrightData SERP API) for
"[client brand name]" -site:[client domain]weekly. - Filter out: social media profiles, news aggregators, the client’s own properties.
- For each result: create a
Backlinkrow withprospectType: "mention",outreachStatus: "prospecting", and skip the researcher LLM step (the rationale is always the same). - Enqueue
website-crawlerper result to find contact info.
Email generation: Reuse backlink-outreach-writer with a mention-specific prompt variant — tone is lighter and more appreciative than cold outreach.
New field needed: isUnlinkedMention: Boolean on Backlink to distinguish these from researcher-discovered mention prospects.
Trigger: Weekly scheduled job per tenant. DM can also trigger manually from the UI.
Priority: High — highest conversion of all acquisition methods; low build cost since the pipeline already exists.
Method 3 — Guest Post Content Generation (To Build)
What it is
When a guest-post prospect agrees to a contribution (outreachStatus: "agreed"), generate the actual guest post content — not just the outreach email. The current pipeline stops at email; this extends it through to content delivery.
Why it matters
Once a prospect says yes, the DM has to write or commission the article themselves. This is the most time-consuming part of the guest-post workflow. Automating the draft eliminates that bottleneck.
How to build it
Trigger: Backlink.outreachStatus transitions to "agreed" with prospectType = "guest-post".
Worker: Reuse blog-writer with an extended payload:
{
contentType: "guest_post",
targetSite: backlink.sourceDomain,
targetSiteContext: crawlCache.rawExtract, // site's tone, topics, audience
clientContext: clientContext.content,
pitchRationale: backlink.pitchRationale, // the topic angle that was pitched
}Output: Activity row (type: blog_post) linked to the Backlink via activityId. Follows the normal blog approval flow (DM review → client review → client approved).
No new model needed. Only a new trigger path into the existing blog-writer worker.
Priority: High — low effort (reuses existing agent), eliminates the largest manual step after agreement.
Method 4 — HARO / Digital PR Response (To Build)
What it is
Journalists post source requests on Connectively (formerly HARO), Terkel, and SourceBottle. Companies that provide expert quotes get cited — often with a high-DR backlink from a major publication.
Why it matters
A single HARO response that gets published can yield a DR 80+ backlink from Forbes, Inc, Entrepreneur, or a major trade publication. These are nearly impossible to acquire through cold outreach. Response quality is the only lever.
How to build it
Monitor agent (haro-monitor):
- Poll Connectively/Terkel/SourceBottle APIs (or email digest parsing) twice daily.
- Filter queries by industry/keyword match against
ClientContext.keywords. - For each match: create a
HaroQueryrecord and enqueuepr-response-writer.
Response agent (pr-response-writer):
- Input: query text, client context, expertise keywords, deadline.
- Output:
{ pitchSubject, pitchBody, quoteSuggestion }. - Creates a
Backlinkrow (prospectType: "mention",outreachStatus: "prospecting") to track the potential link. - Creates a
CampaignEmail-equivalent “response draft” for DM review.
New model needed:
model HaroQuery {
id String @id @default(cuid())
tenantId String
source String // "connectively" | "terkel" | "sourcebottle"
queryText String @db.Text
category String?
deadline DateTime?
respondedAt DateTime?
backlinkId String? // populated if response gets published
createdAt DateTime @default(now())
}Approval gate: DM reviews the drafted response before submission. Client is not in this loop.
Priority: Medium-High — very high ROI when it lands; higher build cost due to new model + API integrations.
Method 5 — Broken Backlink Reclamation (To Build)
What it is
Find backlinks to the client that were previously live but have since broken (404, redirect chain, domain change). Contact the linking site and ask them to update the URL.
Why it matters
These are links you already “own” — the site chose to link to the client. Getting them fixed is much easier than acquiring new links. The Backlink model already has isLive and lastCheckedAt fields populated by DataForSEO health checks.
How to build it
Detection: No new agent needed for discovery. Query existing data:
await db.backlink.findMany({
where: {
tenantId,
outreachStatus: "published",
isLive: false,
lastCheckedAt: { gt: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000) }
}
})Fix-request agent (broken-backlink-detector):
- Runs as a weekly sweep.
- For each broken-but-published backlink: generates a short, friendly fix-request email via
backlink-outreach-writerwith aprospectType: "broken_own"prompt variant. - Sets
outreachStatusback to"outreach_sent"after sending.
No new model needed. Uses existing fields and the existing outreach writer.
Priority: Medium — very low effort; DataForSEO integration is already in place.
Method 6 — Competitor Backlink Gap Analysis (To Build)
What it is
Pull the full backlink profiles of 3–5 competitor domains using the Ahrefs or SEMrush API. Find domains that link to 2+ competitors but not the client. These are the most reliably responsive cold-outreach targets.
Why it matters
Sites that already link to competitors are proven link-givers in the niche. They know what kind of content to link to. Response rates are significantly higher than broad resource-page outreach.
How to build it
Enhancement to backlink-researcher: Add a mode: "competitor_gap" flag to the researcher job. When set:
- Query Ahrefs/SEMrush API for backlink profiles of competitor domains (stored on
Tenant.competitors). - Find domains appearing in 2+ competitor profiles but absent from the client’s backlink profile.
- Rank by: overlap count (more competitor links = higher confidence), domain rating, relevance.
- Feed results into the standard researcher → crawler → writer pipeline.
New field on Backlink:
gapCompetitors String[] // which competitor domains are linked from this sourceData source options:
- Ahrefs API (
/v3/site-explorer/backlinks) - SEMrush API (
/backlinks) - DataForSEO Backlinks API (already used for health checks — lowest incremental cost)
Priority: Medium — high conversion but requires an Ahrefs/SEMrush API key and moderate build effort.
Priority Summary
| # | Method | Effort | Conversion | Priority |
|---|---|---|---|---|
| 1 | Email outreach | — | Medium | Live |
| 2 | Unlinked mention reclamation | Low | High | High |
| 3 | Guest post content generation | Low | High | High |
| 4 | Broken backlink reclamation | Very Low | Medium-High | Medium |
| 5 | Competitor backlink gap analysis | Medium | High | Medium |
| 6 | HARO / Digital PR | High | Very High | Medium-High |
Recommended build order: Method 3 (reuses blog-writer, zero new models) → Method 2 (highest warm-lead conversion) → Method 4 (near-zero effort, exploits existing data) → Method 5 → Method 6.