# Link prospecting workspace for competitor backlink gaps

> Enter a few competitor domains and get a working queue of sites that link to them but not to you, with status, notes, and owner on every prospect.

- Workflow type: app
- Services: Ahrefs, Gmail, Google Sheets
- Categories: Marketing
- Published: 2026-08-14

## What it does

- Takes two or three competitor domains and builds one list of every site linking to them, with junk and spam links stripped out
- Subtracts every domain that already links to your own site, so the queue only holds genuinely new prospects
- Scores each prospect by Domain Rating, how many of your competitors it links to, and topic, so the best targets sit at the top
- Gives every prospect a status you move through new, queued, contacted, replied, won, or dead, plus notes and an owner your whole team can see
- Drafts a personalized pitch that references the exact competitor page that earned the link, and parks it in your Gmail drafts for a human to approve
- Logs each prospect and its status to your shared campaign tracker, and reads the tracker back on load so nobody works the same site twice

## What you'll need

- An Ahrefs account on a paid plan, since backlink data requires API access
- A Gmail account for the outreach drafts
- A Google account with access to the shared campaign tracker spreadsheet
- Your own website domain, plus two or three competitor domains you want to pull prospects from

## Prompt

Build me a link prospecting workspace my team works out of instead of keeping backlink opportunities in a spreadsheet. I want to enter my own domain plus two or three competitor domains, have the app pull everyone linking to those competitors from Ahrefs, and turn that into a prioritized outreach queue I can filter, assign, and work through.

Setup view. A simple screen where I enter my own site domain and add two or three competitor domains, then hit Refresh prospects. Save these settings in the app so I do not retype them every session, and show when the prospect list was last refreshed.

Building the prospect list. For each competitor domain, call Ahrefs List Referring Domains to get every domain linking to them, and Ahrefs List Backlinks to get the individual links, including the specific competitor page that earned each link and the anchor text. Drop any backlink where the is_spam field is true before it becomes a prospect. Then call Ahrefs List Referring Domains against my own domain and subtract every one of those domains from the results, so the queue only contains sites that link to a competitor but not yet to me. Collapse everything to one row per prospect domain, keeping the list of competitors it links to and the competitor pages it linked to.

Enrichment. For each surviving prospect domain, call Ahrefs Get Domain Rating for its Domain Rating and Ahrefs Rank, and Ahrefs Get Backlinks Stats for its live backlink and referring domain counts. Show these on the prospect row so I can judge quality at a glance.

Ahrefs specifics to respect. The select parameter is mandatory on list endpoints and drives unit cost, so request only the fields the app actually shows. The where parameter takes structured JSON rather than a string, for example filtering domain_rating with a gt comparison. The offset parameter is deprecated, so bound results with limit instead of trying to paginate. Cache the pulled data in the app so opening the queue does not re-fetch from Ahrefs on every page load, and only refresh when I ask.

The queue view. This is the main screen: a prioritized, sortable table of prospects. Let me filter by minimum Domain Rating, by how many of my competitors that domain links to, and by topic. Rank the default sort so that high Domain Rating combined with linking to multiple competitors floats to the top, since a site linking to two or three of my competitors is the most likely to link to me. Every row should show the prospect domain, its Domain Rating, its link counts, which competitors it links to, and which specific competitor page earned the link.

Prospect record. Each prospect holds a status I move through new, queued, contacted, replied, won, and dead, plus free-text notes and an owner. Persist all of this in the app so it survives refreshes and my whole team sees the same state. Changing status or owner should save immediately without a separate save button.

Draft outreach action. When I select a prospect and click Draft outreach, generate a personalized pitch that references the specific competitor page that site linked to, so the email has a real angle rather than being generic. Save it with Gmail Create a Draft and leave it unsent, always, so a human reviews and sends it. Show me the drafted copy in the app and link out to the draft in Gmail. Move the prospect to contacted only when I confirm, not automatically on draft creation.

Campaign tracker sync. A Log to sheet action appends the prospect row and its current status to our shared campaign tracker using Google Sheets Append Values. On app load, read the tracker back with Google Sheets Get Values and mark any prospect already present in the sheet as worked, so two people never chase the same domain. Let me pick which spreadsheet and tab to use and remember that choice.

## How to customize

- Change the minimum Domain Rating so the queue only surfaces sites above the authority bar you care about
- Require a prospect to link to two or more of your competitors before it reaches the queue, which is a strong signal they will link to you too
- Rewrite the outreach template's tone and angle, or add your own status names beyond new, queued, contacted, replied, won, and dead
- Point the tracker at a different spreadsheet or tab per campaign, per client, or per quarter

## FAQ

### Does this send outreach emails automatically?

No. Every pitch is saved as an unsent draft in your Gmail account, so a person reads it, edits it, and presses send. Nothing leaves your mailbox without approval.

### Do I need a paid Ahrefs subscription?

Yes. Backlink and Domain Rating data comes from Ahrefs, and pulling that data programmatically requires a paid Ahrefs plan. A free account will not work.

### How many competitors can I compare at once?

Two or three works best and is what the app is built around. You can add more, but each extra domain means more data to pull, and the overlap signal gets noisier as the list grows.

### Will it show me sites that already link to me?

No. The app pulls everyone linking to your own site as well, then removes those domains from the results. What is left is only sites you have not earned a link from yet.

### What stops two people on my team emailing the same site?

Every prospect carries a status and an owner that persist in the app, and the shared campaign tracker is read back every time the app loads, so anything already logged shows up as worked.

### Does it filter out spam and low quality links?

Yes. Ahrefs flags spam links in its backlink data, and the app drops those before a prospect ever reaches your queue. You can also set a minimum Domain Rating to cut the rest of the noise.

Use this prompt in General Input: https://www.generalinput.com/prompts/link-prospecting-workspace-for-competitor-backlink-gaps