<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Petteri Pucilowski</title>
    <description>The latest articles on DEV Community by Petteri Pucilowski (@petteri_pucilowski_7ec755).</description>
    <link>https://dev.to/petteri_pucilowski_7ec755</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3958159%2F10c01a3a-4ac9-40e7-8cb4-63d6b0869fdb.jpg</url>
      <title>DEV Community: Petteri Pucilowski</title>
      <link>https://dev.to/petteri_pucilowski_7ec755</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/petteri_pucilowski_7ec755"/>
    <language>en</language>
    <item>
      <title>29 domains link to every major password manager</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Mon, 28 Sep 2026 01:29:01 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/29-domains-link-to-every-major-password-manager-1l4c</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/29-domains-link-to-every-major-password-manager-1l4c</guid>
      <description>&lt;p&gt;we compared 8 password managers in common crawl's domain-level link graph. 29 non-platform domains link to all 8, while 73% of linking domains appear for only one subject.&lt;/p&gt;

&lt;h2&gt;
  
  
  how we pulled this
&lt;/h2&gt;

&lt;p&gt;for each subject domain, we pulled the top 2,000 referring domains by authority from common crawl release Apr-Jun 2026 (cc-main-2026-apr-may-jun). we intersected those lists, then removed platform, cdn, social, and other non-editorial domains from the clean overlap counts.&lt;/p&gt;

&lt;p&gt;the filter matters. hosting providers, cdns, url shorteners and the big social networks link to almost everything, so leaving them in would produce a universal list that is technically correct and useless for outreach. the counts below are after that filter unless a column says otherwise. everything here comes from the open common crawl webgraph, so you can reproduce it without a paid backlink tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;subject domains&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;referring domains&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1password.com&lt;/td&gt;
&lt;td&gt;12,018&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bitwarden.com&lt;/td&gt;
&lt;td&gt;7,791&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dashlane.com&lt;/td&gt;
&lt;td&gt;5,498&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lastpass.com&lt;/td&gt;
&lt;td&gt;14,712&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;keepersecurity.com&lt;/td&gt;
&lt;td&gt;3,886&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nordpass.com&lt;/td&gt;
&lt;td&gt;4,745&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;roboform.com&lt;/td&gt;
&lt;td&gt;2,284&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;enpass.io&lt;/td&gt;
&lt;td&gt;722&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  the overlap
&lt;/h2&gt;

&lt;p&gt;across the 8 subjects, we found 9,672 unique linking domains. the clean universal set contains 29 domains.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;metric&lt;/th&gt;
&lt;th&gt;value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;unique linking domains&lt;/td&gt;
&lt;td&gt;9,672&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to one subject&lt;/td&gt;
&lt;td&gt;73%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;overlap distribution&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;overlap&lt;/th&gt;
&lt;th&gt;all domains&lt;/th&gt;
&lt;th&gt;non-platform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 7&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 6&lt;/td&gt;
&lt;td&gt;86&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 5&lt;/td&gt;
&lt;td&gt;159&lt;/td&gt;
&lt;td&gt;158&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 4&lt;/td&gt;
&lt;td&gt;285&lt;/td&gt;
&lt;td&gt;281&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 3&lt;/td&gt;
&lt;td&gt;613&lt;/td&gt;
&lt;td&gt;603&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 2&lt;/td&gt;
&lt;td&gt;1,423&lt;/td&gt;
&lt;td&gt;1,416&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to just 1&lt;/td&gt;
&lt;td&gt;7,036&lt;/td&gt;
&lt;td&gt;7,024&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;the distribution is the interesting part. most linking domains sit in the bottom row: they mention one product and never come back. the rows above it are where outreach lives, because a site that already covers several products in a category has an editorial reason to cover another one. a short universal list usually means the category is covered by a handful of directories, review sites and integration hubs rather than by a broad press base. a long one means the category has real editorial coverage, and the same sites are reachable for you.&lt;/p&gt;

&lt;p&gt;the highest-authority sites linking to all of them are mozilla.org, habr.com and smallbiztrends.com. those are the pages worth reading before you pitch anything, because they already decided this category is worth covering.&lt;/p&gt;

&lt;p&gt;lastpass.com carries the widest referring-domain profile of the set and enpass.io the narrowest, which is usually a function of age and press coverage rather than product quality. the gap between them is the practical opportunity: sites that cover the widest profile but not the narrowest are demonstrably willing to write about this category.&lt;/p&gt;

&lt;h2&gt;
  
  
  the category linkers
&lt;/h2&gt;

&lt;p&gt;143 non-platform domains link to at least 6 of the 8 subjects. these repeat linkers are the sites most consistently connected to password managers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;highest-overlap category linkers&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;subjects&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;th&gt;links to&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;mozilla.org&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;82&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;habr.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;smallbiztrends.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;norton.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clickup.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fidoalliance.org&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;helpnetsecurity.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sapo.pt&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;impress.co.jp&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n26.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pandasecurity.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nero.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;otto.de&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tweakers.net&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;devolutions.net&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;avg.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tenorshare.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;saashub.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wikimint.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;privacy.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;1password.com, bitwarden.com, dashlane.com, lastpass.com, keepersecurity.com, nordpass.com, roboform.com, enpass.io&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  the full data
&lt;/h3&gt;

&lt;p&gt;download all 143 clean domains that link to at least 6 of the 8 subjects, ranked by overlap and authority.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-password-manager/dataset.csv" rel="noopener noreferrer"&gt;download csv&lt;/a&gt; | &lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-password-manager/dataset.json" rel="noopener noreferrer"&gt;download json&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  check any of these domains
&lt;/h3&gt;

&lt;p&gt;every domain in the tables above links to its full referring-domain profile. run your own domain to see who links to you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/" rel="noopener noreferrer"&gt;look up your backlinks&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  run this for your own niche
&lt;/h2&gt;

&lt;p&gt;pick your closest competitors, compare their referring domains, and keep the sites that link to several of them but not to you. sorting that gap by overlap and authority turns the same method into a specific outreach list.&lt;/p&gt;

&lt;p&gt;the ordering is what makes it usable. a site that links to most of your competitors and not to you is a gap with an obvious pitch. the observed overlap gives you a specific reason to contact each site instead of relying on domain authority alone. work down from the top of the overlap column and stop when the reasons start feeling thin, because a pitch you cannot justify in one sentence is not worth sending.&lt;/p&gt;

&lt;p&gt;one caveat worth stating plainly. common crawl is a sample of the web, not a census, so treat these counts as the shape of a link profile rather than an exact total. this study measures the Apr-Jun 2026 release, so rerun the comparison against later releases before treating any movement as a trend.&lt;/p&gt;

&lt;h3&gt;
  
  
  find the overlap in your market
&lt;/h3&gt;

&lt;p&gt;run a backlink gap analysis on the same common crawl data used for this study.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/gap-analysis" rel="noopener noreferrer"&gt;run a free gap analysis&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>9 domains link to every major scheduling tool</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Mon, 21 Sep 2026 00:03:12 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/9-domains-link-to-every-major-scheduling-tool-1m1o</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/9-domains-link-to-every-major-scheduling-tool-1m1o</guid>
      <description>&lt;p&gt;we compared 8 scheduling tools in common crawl's domain-level link graph. 9 non-platform domains link to all 8, while 86% of linking domains appear for only one subject.&lt;/p&gt;

&lt;h2&gt;
  
  
  how we pulled this
&lt;/h2&gt;

&lt;p&gt;for each subject domain, we pulled the top 2,000 referring domains by authority from common crawl release Apr-Jun 2026 (cc-main-2026-apr-may-jun). we intersected those lists, then removed platform, cdn, social, and other non-editorial domains from the clean overlap counts.&lt;/p&gt;

&lt;p&gt;the filter matters. hosting providers, cdns, url shorteners and the big social networks link to almost everything, so leaving them in would produce a universal list that is technically correct and useless for outreach. the counts below are after that filter unless a column says otherwise. everything here comes from the open common crawl webgraph, so you can reproduce it without a paid backlink tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;subject domains&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;referring domains&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;calendly.com&lt;/td&gt;
&lt;td&gt;100,000&lt;/td&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cal.com&lt;/td&gt;
&lt;td&gt;23,477&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;acuityscheduling.com&lt;/td&gt;
&lt;td&gt;27,320&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;savvycal.com&lt;/td&gt;
&lt;td&gt;1,316&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doodle.com&lt;/td&gt;
&lt;td&gt;15,527&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;youcanbook.me&lt;/td&gt;
&lt;td&gt;10,358&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;setmore.com&lt;/td&gt;
&lt;td&gt;14,034&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;simplybook.me&lt;/td&gt;
&lt;td&gt;5,665&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  the overlap
&lt;/h2&gt;

&lt;p&gt;across the 8 subjects, we found 12,480 unique linking domains. the clean universal set contains 9 domains.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;metric&lt;/th&gt;
&lt;th&gt;value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;unique linking domains&lt;/td&gt;
&lt;td&gt;12,480&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to one subject&lt;/td&gt;
&lt;td&gt;86%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;overlap distribution&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;overlap&lt;/th&gt;
&lt;th&gt;all domains&lt;/th&gt;
&lt;th&gt;non-platform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 7&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 6&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 5&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 4&lt;/td&gt;
&lt;td&gt;127&lt;/td&gt;
&lt;td&gt;123&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 3&lt;/td&gt;
&lt;td&gt;329&lt;/td&gt;
&lt;td&gt;321&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 2&lt;/td&gt;
&lt;td&gt;1,094&lt;/td&gt;
&lt;td&gt;1,084&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to just 1&lt;/td&gt;
&lt;td&gt;10,789&lt;/td&gt;
&lt;td&gt;10,774&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;the distribution is the interesting part. most linking domains sit in the bottom row: they mention one product and never come back. the rows above it are where outreach lives, because a site that already covers several products in a category has an editorial reason to cover another one. a short universal list usually means the category is covered by a handful of directories, review sites and integration hubs rather than by a broad press base. a long one means the category has real editorial coverage, and the same sites are reachable for you.&lt;/p&gt;

&lt;p&gt;the highest-authority sites linking to all of them are shopify.com, hubspot.com and zapier.com. those are the pages worth reading before you pitch anything, because they already decided this category is worth covering.&lt;/p&gt;

&lt;p&gt;calendly.com carries the widest referring-domain profile of the set and savvycal.com the narrowest, which is usually a function of age and press coverage rather than product quality. the gap between them is the practical opportunity: sites that cover the widest profile but not the narrowest are demonstrably willing to write about this category.&lt;/p&gt;

&lt;h2&gt;
  
  
  the category linkers
&lt;/h2&gt;

&lt;p&gt;61 non-platform domains link to at least 6 of the 8 subjects. these repeat linkers are the sites most consistently connected to scheduling tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;highest-overlap category linkers&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;subjects&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;th&gt;links to&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;shopify.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hubspot.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zapier.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;jotform.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libsyn.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;webflow.io&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clickup.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;beehiiv.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;saashub.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;illinois.edu&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ning.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cuny.edu&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coda.io&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;captivate.fm&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;provenexpert.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;thedigitalprojectmanager.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;td&gt;calendly.com, cal.com, acuityscheduling.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;supersaas.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;entireweb.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;reclaim.ai&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kumospace.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;cal.com, acuityscheduling.com, savvycal.com, doodle.com, youcanbook.me, setmore.com, simplybook.me&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  the full data
&lt;/h3&gt;

&lt;p&gt;download all 61 clean domains that link to at least 6 of the 8 subjects, ranked by overlap and authority.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-scheduling-tool/dataset.csv" rel="noopener noreferrer"&gt;download csv&lt;/a&gt; | &lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-scheduling-tool/dataset.json" rel="noopener noreferrer"&gt;download json&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  check any of these domains
&lt;/h3&gt;

&lt;p&gt;every domain in the tables above links to its full referring-domain profile. run your own domain to see who links to you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/" rel="noopener noreferrer"&gt;look up your backlinks&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  run this for your own niche
&lt;/h2&gt;

&lt;p&gt;pick your closest competitors, compare their referring domains, and keep the sites that link to several of them but not to you. sorting that gap by overlap and authority turns the same method into a specific outreach list.&lt;/p&gt;

&lt;p&gt;the ordering is what makes it usable. a site that links to most of your competitors and not to you is a gap with an obvious pitch. the observed overlap gives you a specific reason to contact each site instead of relying on domain authority alone. work down from the top of the overlap column and stop when the reasons start feeling thin, because a pitch you cannot justify in one sentence is not worth sending.&lt;/p&gt;

&lt;p&gt;one caveat worth stating plainly. common crawl is a sample of the web, not a census, so treat these counts as the shape of a link profile rather than an exact total. this study measures the Apr-Jun 2026 release, so rerun the comparison against later releases before treating any movement as a trend.&lt;/p&gt;

&lt;h3&gt;
  
  
  find the overlap in your market
&lt;/h3&gt;

&lt;p&gt;run a backlink gap analysis on the same common crawl data used for this study.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/gap-analysis" rel="noopener noreferrer"&gt;run a free gap analysis&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>27 domains link to every major online course platform</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Mon, 14 Sep 2026 00:35:47 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/27-domains-link-to-every-major-online-course-platform-1op8</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/27-domains-link-to-every-major-online-course-platform-1op8</guid>
      <description>&lt;p&gt;we compared 8 online course platforms in common crawl's domain-level link graph. 27 non-platform domains link to all 8, while 78% of linking domains appear for only one subject.&lt;/p&gt;

&lt;h2&gt;
  
  
  how we pulled this
&lt;/h2&gt;

&lt;p&gt;for each subject domain, we pulled the top 2,000 referring domains by authority from common crawl release Apr-Jun 2026 (cc-main-2026-apr-may-jun). we intersected those lists, then removed platform, cdn, social, and other non-editorial domains from the clean overlap counts.&lt;/p&gt;

&lt;p&gt;the filter matters. hosting providers, cdns, url shorteners and the big social networks link to almost everything, so leaving them in would produce a universal list that is technically correct and useless for outreach. the counts below are after that filter unless a column says otherwise. everything here comes from the open common crawl webgraph, so you can reproduce it without a paid backlink tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;subject domains&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;referring domains&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;teachable.com&lt;/td&gt;
&lt;td&gt;30,940&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;thinkific.com&lt;/td&gt;
&lt;td&gt;30,039&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kajabi.com&lt;/td&gt;
&lt;td&gt;15,015&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;podia.com&lt;/td&gt;
&lt;td&gt;10,921&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;learnworlds.com&lt;/td&gt;
&lt;td&gt;6,381&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gumroad.com&lt;/td&gt;
&lt;td&gt;48,751&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;udemy.com&lt;/td&gt;
&lt;td&gt;52,998&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;skillshare.com&lt;/td&gt;
&lt;td&gt;16,424&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  the overlap
&lt;/h2&gt;

&lt;p&gt;across the 8 subjects, we found 11,435 unique linking domains. the clean universal set contains 27 domains.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;metric&lt;/th&gt;
&lt;th&gt;value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;unique linking domains&lt;/td&gt;
&lt;td&gt;11,435&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to one subject&lt;/td&gt;
&lt;td&gt;78%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;overlap distribution&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;overlap&lt;/th&gt;
&lt;th&gt;all domains&lt;/th&gt;
&lt;th&gt;non-platform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 7&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 6&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 5&lt;/td&gt;
&lt;td&gt;128&lt;/td&gt;
&lt;td&gt;124&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 4&lt;/td&gt;
&lt;td&gt;244&lt;/td&gt;
&lt;td&gt;239&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 3&lt;/td&gt;
&lt;td&gt;579&lt;/td&gt;
&lt;td&gt;569&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 2&lt;/td&gt;
&lt;td&gt;1,382&lt;/td&gt;
&lt;td&gt;1,373&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to just 1&lt;/td&gt;
&lt;td&gt;8,972&lt;/td&gt;
&lt;td&gt;8,959&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;the distribution is the interesting part. most linking domains sit in the bottom row: they mention one product and never come back. the rows above it are where outreach lives, because a site that already covers several products in a category has an editorial reason to cover another one. a short universal list usually means the category is covered by a handful of directories, review sites and integration hubs rather than by a broad press base. a long one means the category has real editorial coverage, and the same sites are reachable for you.&lt;/p&gt;

&lt;p&gt;the highest-authority sites linking to all of them are shopify.com, webflow.com and hubspot.com. those are the pages worth reading before you pitch anything, because they already decided this category is worth covering.&lt;/p&gt;

&lt;p&gt;udemy.com carries the widest referring-domain profile of the set and learnworlds.com the narrowest, which is usually a function of age and press coverage rather than product quality. the gap between them is the practical opportunity: sites that cover the widest profile but not the narrowest are demonstrably willing to write about this category.&lt;/p&gt;

&lt;h2&gt;
  
  
  the category linkers
&lt;/h2&gt;

&lt;p&gt;110 non-platform domains link to at least 6 of the 8 subjects. these repeat linkers are the sites most consistently connected to online course platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;highest-overlap category linkers&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;subjects&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;th&gt;links to&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;shopify.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;webflow.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;72&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hubspot.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;smallbiztrends.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;podbean.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;entrepreneur.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libsyn.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;buzzsprout.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dev.to&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oberlo.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;payhip.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mailerlite.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;acast.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kit.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clickup.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;activecampaign.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;beehiiv.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;thriveglobal.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;influencermarketinghub.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transistor.fm&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;td&gt;teachable.com, thinkific.com, kajabi.com, podia.com, learnworlds.com, gumroad.com, udemy.com, skillshare.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  the full data
&lt;/h3&gt;

&lt;p&gt;download all 110 clean domains that link to at least 6 of the 8 subjects, ranked by overlap and authority.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-online-course-platform/dataset.csv" rel="noopener noreferrer"&gt;download csv&lt;/a&gt; | &lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-online-course-platform/dataset.json" rel="noopener noreferrer"&gt;download json&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  check any of these domains
&lt;/h3&gt;

&lt;p&gt;every domain in the tables above links to its full referring-domain profile. run your own domain to see who links to you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/" rel="noopener noreferrer"&gt;look up your backlinks&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  run this for your own niche
&lt;/h2&gt;

&lt;p&gt;pick your closest competitors, compare their referring domains, and keep the sites that link to several of them but not to you. sorting that gap by overlap and authority turns the same method into a specific outreach list.&lt;/p&gt;

&lt;p&gt;the ordering is what makes it usable. a site that links to most of your competitors and not to you is a gap with an obvious pitch. the observed overlap gives you a specific reason to contact each site instead of relying on domain authority alone. work down from the top of the overlap column and stop when the reasons start feeling thin, because a pitch you cannot justify in one sentence is not worth sending.&lt;/p&gt;

&lt;p&gt;one caveat worth stating plainly. common crawl is a sample of the web, not a census, so treat these counts as the shape of a link profile rather than an exact total. this study measures the Apr-Jun 2026 release, so rerun the comparison against later releases before treating any movement as a trend.&lt;/p&gt;

&lt;h3&gt;
  
  
  find the overlap in your market
&lt;/h3&gt;

&lt;p&gt;run a backlink gap analysis on the same common crawl data used for this study.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/gap-analysis" rel="noopener noreferrer"&gt;run a free gap analysis&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>3 domains link to every major landing page builder</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Mon, 07 Sep 2026 00:16:22 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/3-domains-link-to-every-major-landing-page-builder-1cd0</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/3-domains-link-to-every-major-landing-page-builder-1cd0</guid>
      <description>&lt;p&gt;we compared 8 landing page builders in common crawl's domain-level link graph. 3 non-platform domains link to all 8, while 86% of linking domains appear for only one subject.&lt;/p&gt;

&lt;h2&gt;
  
  
  how we pulled this
&lt;/h2&gt;

&lt;p&gt;for each subject domain, we pulled the top 2,000 referring domains by authority from common crawl release Apr-Jun 2026 (cc-main-2026-apr-may-jun). we intersected those lists, then removed platform, cdn, social, and other non-editorial domains from the clean overlap counts.&lt;/p&gt;

&lt;p&gt;the filter matters. hosting providers, cdns, url shorteners and the big social networks link to almost everything, so leaving them in would produce a universal list that is technically correct and useless for outreach. the counts below are after that filter unless a column says otherwise. everything here comes from the open common crawl webgraph, so you can reproduce it without a paid backlink tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;subject domains&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;referring domains&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;unbounce.com&lt;/td&gt;
&lt;td&gt;17,615&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;instapage.com&lt;/td&gt;
&lt;td&gt;7,334&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;leadpages.com&lt;/td&gt;
&lt;td&gt;3,227&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;carrd.co&lt;/td&gt;
&lt;td&gt;28,681&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;landingi.com&lt;/td&gt;
&lt;td&gt;7,689&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;swipepages.com&lt;/td&gt;
&lt;td&gt;1,796&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clickfunnels.com&lt;/td&gt;
&lt;td&gt;32,594&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;systeme.io&lt;/td&gt;
&lt;td&gt;18,675&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  the overlap
&lt;/h2&gt;

&lt;p&gt;across the 8 subjects, we found 12,865 unique linking domains. the clean universal set contains 3 domains.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;metric&lt;/th&gt;
&lt;th&gt;value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;unique linking domains&lt;/td&gt;
&lt;td&gt;12,865&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to one subject&lt;/td&gt;
&lt;td&gt;86%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;overlap distribution&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;overlap&lt;/th&gt;
&lt;th&gt;all domains&lt;/th&gt;
&lt;th&gt;non-platform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 7&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 6&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 5&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 4&lt;/td&gt;
&lt;td&gt;123&lt;/td&gt;
&lt;td&gt;118&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 3&lt;/td&gt;
&lt;td&gt;384&lt;/td&gt;
&lt;td&gt;377&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 2&lt;/td&gt;
&lt;td&gt;1,234&lt;/td&gt;
&lt;td&gt;1,226&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to just 1&lt;/td&gt;
&lt;td&gt;11,007&lt;/td&gt;
&lt;td&gt;10,989&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;the distribution is the interesting part. most linking domains sit in the bottom row: they mention one product and never come back. the rows above it are where outreach lives, because a site that already covers several products in a category has an editorial reason to cover another one. a short universal list usually means the category is covered by a handful of directories, review sites and integration hubs rather than by a broad press base. a long one means the category has real editorial coverage, and the same sites are reachable for you.&lt;/p&gt;

&lt;p&gt;the highest-authority sites linking to all of them are hubspot.com, zapier.com and webcatalog.io. those are the pages worth reading before you pitch anything, because they already decided this category is worth covering.&lt;/p&gt;

&lt;p&gt;clickfunnels.com carries the widest referring-domain profile of the set and swipepages.com the narrowest, which is usually a function of age and press coverage rather than product quality. the gap between them is the practical opportunity: sites that cover the widest profile but not the narrowest are demonstrably willing to write about this category.&lt;/p&gt;

&lt;h2&gt;
  
  
  the category linkers
&lt;/h2&gt;

&lt;p&gt;43 non-platform domains link to at least 6 of the 8 subjects. these repeat linkers are the sites most consistently connected to landing page builders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;highest-overlap category linkers&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;subjects&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;th&gt;links to&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;hubspot.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, swipepages.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zapier.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, swipepages.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;webcatalog.io&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, swipepages.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;shopify.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;getresponse.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clickup.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, landingi.com, swipepages.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;beehiiv.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;influencermarketinghub.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sellfy.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, swipepages.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;emailtooltester.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;instapage.com, leadpages.com, carrd.co, landingi.com, swipepages.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;entireweb.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;codeur.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kommodo.ai&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, swipepages.com, clickfunnels.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sendpulse.com&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, clickfunnels.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;jotform.com&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;entrepreneur.com&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, clickfunnels.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;teachable.com&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dev.to&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, landingi.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;crazyegg.com&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, carrd.co, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oberlo.com&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;unbounce.com, instapage.com, leadpages.com, landingi.com, clickfunnels.com, systeme.io&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  the full data
&lt;/h3&gt;

&lt;p&gt;download all 43 clean domains that link to at least 6 of the 8 subjects, ranked by overlap and authority.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-landing-page-builder/dataset.csv" rel="noopener noreferrer"&gt;download csv&lt;/a&gt; | &lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-landing-page-builder/dataset.json" rel="noopener noreferrer"&gt;download json&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  check any of these domains
&lt;/h3&gt;

&lt;p&gt;every domain in the tables above links to its full referring-domain profile. run your own domain to see who links to you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/" rel="noopener noreferrer"&gt;look up your backlinks&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  run this for your own niche
&lt;/h2&gt;

&lt;p&gt;pick your closest competitors, compare their referring domains, and keep the sites that link to several of them but not to you. sorting that gap by overlap and authority turns the same method into a specific outreach list.&lt;/p&gt;

&lt;p&gt;the ordering is what makes it usable. a site that links to most of your competitors and not to you is a gap with an obvious pitch. the observed overlap gives you a specific reason to contact each site instead of relying on domain authority alone. work down from the top of the overlap column and stop when the reasons start feeling thin, because a pitch you cannot justify in one sentence is not worth sending.&lt;/p&gt;

&lt;p&gt;one caveat worth stating plainly. common crawl is a sample of the web, not a census, so treat these counts as the shape of a link profile rather than an exact total. this study measures the Apr-Jun 2026 release, so rerun the comparison against later releases before treating any movement as a trend.&lt;/p&gt;

&lt;h3&gt;
  
  
  find the overlap in your market
&lt;/h3&gt;

&lt;p&gt;run a backlink gap analysis on the same common crawl data used for this study.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/gap-analysis" rel="noopener noreferrer"&gt;run a free gap analysis&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>13 domains link to every major social media scheduler</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Sat, 05 Sep 2026 02:16:02 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/13-domains-link-to-every-major-social-media-scheduler-24jg</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/13-domains-link-to-every-major-social-media-scheduler-24jg</guid>
      <description>&lt;p&gt;we compared 8 social media schedulers in common crawl's domain-level link graph. 13 non-platform domains link to all 8, while 71% of linking domains appear for only one subject.&lt;/p&gt;

&lt;h2&gt;
  
  
  how we pulled this
&lt;/h2&gt;

&lt;p&gt;for each subject domain, we pulled the top 2,000 referring domains by authority from common crawl release Apr-Jun 2026 (cc-main-2026-apr-may-jun). we intersected those lists, then removed platform, cdn, social, and other non-editorial domains from the clean overlap counts.&lt;/p&gt;

&lt;p&gt;the filter matters. hosting providers, cdns, url shorteners and the big social networks link to almost everything, so leaving them in would produce a universal list that is technically correct and useless for outreach. the counts below are after that filter unless a column says otherwise. everything here comes from the open common crawl webgraph, so you can reproduce it without a paid backlink tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;subject domains&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;referring domains&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;buffer.com&lt;/td&gt;
&lt;td&gt;31,602&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hootsuite.com&lt;/td&gt;
&lt;td&gt;45,301&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;later.com&lt;/td&gt;
&lt;td&gt;11,128&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sproutsocial.com&lt;/td&gt;
&lt;td&gt;30,594&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sendible.com&lt;/td&gt;
&lt;td&gt;2,565&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;socialpilot.co&lt;/td&gt;
&lt;td&gt;5,001&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;publer.io&lt;/td&gt;
&lt;td&gt;987&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;loomly.com&lt;/td&gt;
&lt;td&gt;1,523&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  the overlap
&lt;/h2&gt;

&lt;p&gt;across the 8 subjects, we found 9,370 unique linking domains. the clean universal set contains 13 domains.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;metric&lt;/th&gt;
&lt;th&gt;value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;unique linking domains&lt;/td&gt;
&lt;td&gt;9,370&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to one subject&lt;/td&gt;
&lt;td&gt;71%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;overlap distribution&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;overlap&lt;/th&gt;
&lt;th&gt;all domains&lt;/th&gt;
&lt;th&gt;non-platform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 7&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 6&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 5&lt;/td&gt;
&lt;td&gt;149&lt;/td&gt;
&lt;td&gt;144&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 4&lt;/td&gt;
&lt;td&gt;326&lt;/td&gt;
&lt;td&gt;314&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 3&lt;/td&gt;
&lt;td&gt;667&lt;/td&gt;
&lt;td&gt;657&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 2&lt;/td&gt;
&lt;td&gt;1,494&lt;/td&gt;
&lt;td&gt;1,487&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to just 1&lt;/td&gt;
&lt;td&gt;6,607&lt;/td&gt;
&lt;td&gt;6,594&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;the distribution is the interesting part. most linking domains sit in the bottom row: they mention one product and never come back. the rows above it are where outreach lives, because a site that already covers several products in a category has an editorial reason to cover another one. a short universal list usually means the category is covered by a handful of directories, review sites and integration hubs rather than by a broad press base. a long one means the category has real editorial coverage, and the same sites are reachable for you.&lt;/p&gt;

&lt;p&gt;the highest-authority sites linking to all of them are hubspot.com, sendpulse.com and smallbiztrends.com. those are the pages worth reading before you pitch anything, because they already decided this category is worth covering.&lt;/p&gt;

&lt;p&gt;hootsuite.com carries the widest referring-domain profile of the set and publer.io the narrowest, which is usually a function of age and press coverage rather than product quality. the gap between them is the practical opportunity: sites that cover the widest profile but not the narrowest are demonstrably willing to write about this category.&lt;/p&gt;

&lt;h2&gt;
  
  
  the category linkers
&lt;/h2&gt;

&lt;p&gt;120 non-platform domains link to at least 6 of the 8 subjects. these repeat linkers are the sites most consistently connected to social media schedulers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;highest-overlap category linkers&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;subjects&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;th&gt;links to&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;hubspot.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sendpulse.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;smallbiztrends.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wordstream.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sharethis.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;beehiiv.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;geekflare.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;influencermarketinghub.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;meetedgar.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;socialchamp.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;entireweb.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;trickyenough.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wikimint.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;shopify.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zapier.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, socialpilot.co, publer.io, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;jotform.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libsyn.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sprinklr.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;brandwatch.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;searchenginejournal.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;buffer.com, hootsuite.com, later.com, sproutsocial.com, sendible.com, socialpilot.co, loomly.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  the full data
&lt;/h3&gt;

&lt;p&gt;download all 120 clean domains that link to at least 6 of the 8 subjects, ranked by overlap and authority.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-social-media-scheduler/dataset.csv" rel="noopener noreferrer"&gt;download csv&lt;/a&gt; | &lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-social-media-scheduler/dataset.json" rel="noopener noreferrer"&gt;download json&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  check any of these domains
&lt;/h3&gt;

&lt;p&gt;every domain in the tables above links to its full referring-domain profile. run your own domain to see who links to you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/" rel="noopener noreferrer"&gt;look up your backlinks&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  run this for your own niche
&lt;/h2&gt;

&lt;p&gt;pick your closest competitors, compare their referring domains, and keep the sites that link to several of them but not to you. sorting that gap by overlap and authority turns the same method into a specific outreach list.&lt;/p&gt;

&lt;p&gt;the ordering is what makes it usable. a site that links to most of your competitors and not to you is a gap with an obvious pitch. the observed overlap gives you a specific reason to contact each site instead of relying on domain authority alone. work down from the top of the overlap column and stop when the reasons start feeling thin, because a pitch you cannot justify in one sentence is not worth sending.&lt;/p&gt;

&lt;p&gt;one caveat worth stating plainly. common crawl is a sample of the web, not a census, so treat these counts as the shape of a link profile rather than an exact total. this study measures the Apr-Jun 2026 release, so rerun the comparison against later releases before treating any movement as a trend.&lt;/p&gt;

&lt;h3&gt;
  
  
  find the overlap in your market
&lt;/h3&gt;

&lt;p&gt;run a backlink gap analysis on the same common crawl data used for this study.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/gap-analysis" rel="noopener noreferrer"&gt;run a free gap analysis&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>We had 45 subscribers and had sent them zero emails</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Tue, 18 Aug 2026 10:06:19 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/we-had-45-subscribers-and-had-sent-them-zero-emails-25jk</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/we-had-45-subscribers-and-had-sent-them-zero-emails-25jk</guid>
      <description>&lt;p&gt;We had 45 people on our email list and had sent them, in total, zero emails.&lt;/p&gt;

&lt;p&gt;Not zero this month. Zero ever. I found it while checking something else, and the reason is boring enough that I suspect it is sitting in your app too.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a form ends up promising something no code owns
&lt;/h2&gt;

&lt;p&gt;Our subscribe endpoint did exactly what I wrote it to do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@router.post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/newsletter/subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;SubscribeBody&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="bp"&gt;...&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;resend_audience_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_contact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;audience_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resend_newsletter_audience_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ok&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the contact to the audience, return 200. That is a complete, correct, tested implementation of "subscribe". It is also the whole bug, because &lt;em&gt;nothing else in the system ever mails that audience except a weekly broadcast I had paused a month earlier&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Meanwhile the frontend was making promises. The exit intent popup said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;get one email when the next release is live&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and the blog form said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;one tactical post a week&lt;/p&gt;

&lt;p&gt;+ a free domain audit when you sign up&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Three promises. A per release email, a weekly post, and an audit. Grep the backend for the code that keeps any of them and you get one hit: the weekly broadcast, behind a feature flag that was set to false. The audit never existed at all. I had written it as copy, liked how it read, and shipped it.&lt;/p&gt;

&lt;p&gt;That is the actual failure mode. Not a bug in a function. A promise that lives in JSX with no counterpart in the backend, so no test can fail and no error can fire. The system was 100% healthy while doing nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first touch has to exist, and exactly once
&lt;/h2&gt;

&lt;p&gt;The fix is a welcome email, which sounds trivial until you write down what it has to survive: a resubscribe must not send a second one, a Resend hiccup during the request must not lose the only email that subscriber ever gets, and a retry must not send two.&lt;/p&gt;

&lt;p&gt;I already had a &lt;code&gt;delayed_events&lt;/code&gt; table for scheduling emails after a purchase, with this index:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;UNIQUE&lt;/span&gt; &lt;span class="k"&gt;INDEX&lt;/span&gt; &lt;span class="n"&gt;uq_delayed_events_email_event&lt;/span&gt;
  &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;delayed_events&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event_name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That index is the whole dedupe. &lt;code&gt;schedule()&lt;/code&gt; returns the new row id, or &lt;code&gt;None&lt;/code&gt; if a row for that pair already exists. So "have we ever welcomed this address" is not a new question, it is the insert:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_welcome_once&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;event_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;delayed_events_service&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;schedule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;delayed_events_service&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NEWSLETTER_WELCOME_EVENT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;event_id&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;already_welcomed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;          &lt;span class="c1"&gt;# resubscribe, ever, forever
&lt;/span&gt;    &lt;span class="n"&gt;sent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;send_newsletter_welcome_email&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;sent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;queued&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;                    &lt;span class="c1"&gt;# row stays due, poller retries
&lt;/span&gt;    &lt;span class="n"&gt;delayed_events_service&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mark_sent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sending inline matters more than it looks. A welcome email that arrives five minutes after signup is a worse welcome, and the poller interval was five minutes. So the row is a receipt, not a queue: written first, stamped after delivery, and if delivery fails it is simply left due for the poller that already exists.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mark_sent&lt;/code&gt; is guarded so a poller tick that fires in the same second cannot double send:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;cur&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;UPDATE delayed_events SET sent_at = ?, last_error = NULL &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;WHERE id = ? AND sent_at IS NULL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event_id&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rowcount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Seeding a ledger so shipping the feature does not fire it
&lt;/h2&gt;

&lt;p&gt;The popup promise was per release: our data comes from Common Crawl, which republishes its hyperlink graph about every three months, and people signed up to hear when a fresh one lands.&lt;/p&gt;

&lt;p&gt;So: a table keyed by release id, a poller check, one broadcast per new id. Easy, except for the first run. The moment that code deploys it finds the current release, sees no row, and mails 45 people about a graph that went live three weeks ago.&lt;/p&gt;

&lt;p&gt;The fix is one line in &lt;code&gt;ensure_tables&lt;/code&gt;, and it is the part I would have forgotten:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;empty&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SELECT COUNT(*) FROM release_announcements&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;fetchone&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="bp"&gt;...&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;empty&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;INSERT OR IGNORE INTO release_announcements &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;(release_id, status, created_at, sent_at) VALUES (?, &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;seeded&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;, ?, ?)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;current_release_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bootstrapping the ledger with "already handled" means only genuinely new state can trigger the side effect. Any time you add "notify on change" to a system that has been running for a while, the current value is not a change.&lt;/p&gt;

&lt;p&gt;The other decision worth naming: this is deliberately not behind the same flag as the weekly newsletter. I had paused a weekly column because I did not have time to write it. That is my choice to make. Cancelling a per release notification someone explicitly opted into is not the same choice, and one boolean should not silently do both.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bounce nobody handled
&lt;/h2&gt;

&lt;p&gt;While in there I pulled the last 100 sends from the Resend API. Six bounces, from two addresses. Both were junk domains someone typed into the form. Both had then received the &lt;em&gt;entire&lt;/em&gt; rest of the sequence.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2026-08-06  bounced  your free CrawlGraph API key
2026-08-08  bounced  the question your free API key can't answer
2026-08-12  bounced  your API key works with hosted MCP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One signup, three bounces, on a schedule. At my volume that is cosmetic. Bounce rate is also the single number mailbox providers use to decide whether you are a sender or a problem, and the list only grows.&lt;/p&gt;

&lt;p&gt;The interesting part is that the fix was already half built. Resend was posting webhooks to an endpoint I had written for inbound support email, and that handler said:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;email.received&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ignored&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every bounce notification Resend ever sent me hit that line and was thrown away with a cheerful 200. Now &lt;code&gt;email.bounced&lt;/code&gt; and &lt;code&gt;email.complained&lt;/code&gt; route to a suppression table, and permanent failures cancel anything already scheduled for that address.&lt;/p&gt;

&lt;p&gt;Two details worth stealing. Transient bounces do not suppress, because a full mailbox is not a reason to stop mailing someone forever. And the marketing sender reports &lt;strong&gt;success&lt;/strong&gt; when it skips a suppressed address:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;email_suppression_service&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;is_suppressed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;skipping %s to a suppressed address&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;   &lt;span class="c1"&gt;# terminal: the durable sender must retire the row, not retry
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returning &lt;code&gt;False&lt;/code&gt; there would be more honest looking and completely wrong: every durable sender I have treats &lt;code&gt;False&lt;/code&gt; as "retry later", so a suppressed address would spin until it hit the attempt cap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ten minutes on your own funnel
&lt;/h2&gt;

&lt;p&gt;Three queries, and you do not need my stack to run the equivalent:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Every collection point, and what it promises.&lt;/strong&gt; Grep the frontend for your form components and read the copy out loud. Every promise is a claim about backend behaviour.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For each promise, the code that keeps it.&lt;/strong&gt; If you cannot point at a function, the promise is decoration. Delete the copy or write the function.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your provider's recent sends, grouped by event.&lt;/strong&gt; &lt;code&gt;delivered&lt;/code&gt;, &lt;code&gt;bounced&lt;/code&gt;, &lt;code&gt;complained&lt;/code&gt;. Then check whether anything that bounced got mailed again afterwards.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The thing that stung was that every dashboard was green. Signups were arriving, the API returned 200, tests passed, the provider reported no errors. There is no monitor for "the email that was never designed."&lt;/p&gt;

&lt;p&gt;I build &lt;a href="https://crawlgraph.com" rel="noopener noreferrer"&gt;CrawlGraph&lt;/a&gt;, backlink data on Common Crawl's open web graph. The free API key is 15 calls a month with no card if you want to poke at link graphs: &lt;a href="https://crawlgraph.com/docs/api" rel="noopener noreferrer"&gt;crawlgraph.com/docs/api&lt;/a&gt;. But mostly, go read your own signup form's copy and then go looking for the function that keeps it.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>python</category>
      <category>showdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>12 domains link to every major help desk</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Mon, 17 Aug 2026 02:18:26 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/12-domains-link-to-every-major-help-desk-3ela</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/12-domains-link-to-every-major-help-desk-3ela</guid>
      <description>&lt;p&gt;we compared 8 help desks in common crawl's domain-level link graph. 12 non-platform domains link to all 8, while 81% of linking domains appear for only one subject.&lt;/p&gt;

&lt;h2&gt;
  
  
  how we pulled this
&lt;/h2&gt;

&lt;p&gt;for each subject domain, we pulled the top 2,000 referring domains by authority from common crawl release Apr-Jun 2026 (cc-main-2026-apr-may-jun). we intersected those lists, then removed platform, cdn, social, and other non-editorial domains from the clean overlap counts.&lt;/p&gt;

&lt;p&gt;the filter matters. hosting providers, cdns, url shorteners and the big social networks link to almost everything, so leaving them in would produce a universal list that is technically correct and useless for outreach. the counts below are after that filter unless a column says otherwise. everything here comes from the open common crawl webgraph, so you can reproduce it without a paid backlink tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;subject domains&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;referring domains&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;zendesk.com&lt;/td&gt;
&lt;td&gt;92,417&lt;/td&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;intercom.com&lt;/td&gt;
&lt;td&gt;22,114&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;helpscout.com&lt;/td&gt;
&lt;td&gt;9,356&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;freshdesk.com&lt;/td&gt;
&lt;td&gt;24,015&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gorgias.com&lt;/td&gt;
&lt;td&gt;3,165&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;front.com&lt;/td&gt;
&lt;td&gt;1,401&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kayako.com&lt;/td&gt;
&lt;td&gt;2,111&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zoho.com&lt;/td&gt;
&lt;td&gt;67,333&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  the overlap
&lt;/h2&gt;

&lt;p&gt;across the 8 subjects, we found 11,563 unique linking domains. the clean universal set contains 12 domains.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;metric&lt;/th&gt;
&lt;th&gt;value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;unique linking domains&lt;/td&gt;
&lt;td&gt;11,563&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to one subject&lt;/td&gt;
&lt;td&gt;81%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;overlap distribution&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;overlap&lt;/th&gt;
&lt;th&gt;all domains&lt;/th&gt;
&lt;th&gt;non-platform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 7&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 6&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 5&lt;/td&gt;
&lt;td&gt;108&lt;/td&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 4&lt;/td&gt;
&lt;td&gt;199&lt;/td&gt;
&lt;td&gt;196&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 3&lt;/td&gt;
&lt;td&gt;458&lt;/td&gt;
&lt;td&gt;454&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 2&lt;/td&gt;
&lt;td&gt;1,305&lt;/td&gt;
&lt;td&gt;1,302&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to just 1&lt;/td&gt;
&lt;td&gt;9,392&lt;/td&gt;
&lt;td&gt;9,386&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;the distribution is the interesting part. most linking domains sit in the bottom row: they mention one product and never come back. the rows above it are where outreach lives, because a site that already covers several products in a category has an editorial reason to cover another one. a short universal list usually means the category is covered by a handful of directories, review sites and integration hubs rather than by a broad press base. a long one means the category has real editorial coverage, and the same sites are reachable for you.&lt;/p&gt;

&lt;p&gt;the highest-authority sites linking to all of them are shopify.com, substack.com and hubspot.com. those are the pages worth reading before you pitch anything, because they already decided this category is worth covering.&lt;/p&gt;

&lt;p&gt;zendesk.com carries the widest referring-domain profile of the set and front.com the narrowest, which is usually a function of age and press coverage rather than product quality. the gap between them is the practical opportunity: sites that cover the widest profile but not the narrowest are demonstrably willing to write about this category.&lt;/p&gt;

&lt;h2&gt;
  
  
  the category linkers
&lt;/h2&gt;

&lt;p&gt;93 non-platform domains link to at least 6 of the 8 subjects. these repeat linkers are the sites most consistently connected to help desks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;highest-overlap category linkers&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;subjects&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;th&gt;links to&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;shopify.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;substack.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hubspot.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zapier.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;jotform.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;webflow.io&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clickup.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;activecampaign.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tidio.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zendesk.co.uk&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;crisp.chat&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zight.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;github.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;81&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;salesforce.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bigcommerce.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sendpulse.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;entrepreneur.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, gorgias.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;g2.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, gorgias.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sproutsocial.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kinsta.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;zendesk.com, intercom.com, helpscout.com, freshdesk.com, front.com, kayako.com, zoho.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  the full data
&lt;/h3&gt;

&lt;p&gt;download all 93 clean domains that link to at least 6 of the 8 subjects, ranked by overlap and authority.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-help-desk/dataset.csv" rel="noopener noreferrer"&gt;download csv&lt;/a&gt; | &lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-help-desk/dataset.json" rel="noopener noreferrer"&gt;download json&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  check any of these domains
&lt;/h3&gt;

&lt;p&gt;every domain in the tables above links to its full referring-domain profile. run your own domain to see who links to you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/" rel="noopener noreferrer"&gt;look up your backlinks&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  run this for your own niche
&lt;/h2&gt;

&lt;p&gt;pick your closest competitors, compare their referring domains, and keep the sites that link to several of them but not to you. sorting that gap by overlap and authority turns the same method into a specific outreach list.&lt;/p&gt;

&lt;p&gt;the ordering is what makes it usable. a site that links to most of your competitors and not to you is a gap with an obvious pitch. the observed overlap gives you a specific reason to contact each site instead of relying on domain authority alone. work down from the top of the overlap column and stop when the reasons start feeling thin, because a pitch you cannot justify in one sentence is not worth sending.&lt;/p&gt;

&lt;p&gt;one caveat worth stating plainly. common crawl is a sample of the web, not a census, so treat these counts as the shape of a link profile rather than an exact total. this study measures the Apr-Jun 2026 release, so rerun the comparison against later releases before treating any movement as a trend.&lt;/p&gt;

&lt;h3&gt;
  
  
  find the overlap in your market
&lt;/h3&gt;

&lt;p&gt;run a backlink gap analysis on the same common crawl data used for this study.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/gap-analysis" rel="noopener noreferrer"&gt;run a free gap analysis&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>35 domains link to every major web host</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Mon, 10 Aug 2026 00:13:38 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/35-domains-link-to-every-major-web-host-308p</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/35-domains-link-to-every-major-web-host-308p</guid>
      <description>&lt;p&gt;we compared 8 web hosts in common crawl's domain-level link graph. 35 non-platform domains link to all 8, while 72% of linking domains appear for only one subject.&lt;/p&gt;

&lt;h2&gt;
  
  
  how we pulled this
&lt;/h2&gt;

&lt;p&gt;for each subject domain, we pulled the top 2,000 referring domains by authority from common crawl release Apr-Jun 2026 (cc-main-2026-apr-may-jun). we intersected those lists, then removed platform, cdn, social, and other non-editorial domains from the clean overlap counts.&lt;/p&gt;

&lt;p&gt;the filter matters. hosting providers, cdns, url shorteners and the big social networks link to almost everything, so leaving them in would produce a universal list that is technically correct and useless for outreach. the counts below are after that filter unless a column says otherwise. everything here comes from the open common crawl webgraph, so you can reproduce it without a paid backlink tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;subject domains&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;referring domains&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;hostinger.com&lt;/td&gt;
&lt;td&gt;36,900&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;siteground.com&lt;/td&gt;
&lt;td&gt;13,882&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bluehost.com&lt;/td&gt;
&lt;td&gt;48,747&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dreamhost.com&lt;/td&gt;
&lt;td&gt;36,470&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wpengine.com&lt;/td&gt;
&lt;td&gt;100,000&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cloudways.com&lt;/td&gt;
&lt;td&gt;13,795&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kinsta.com&lt;/td&gt;
&lt;td&gt;13,963&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;namecheap.com&lt;/td&gt;
&lt;td&gt;16,701&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  the overlap
&lt;/h2&gt;

&lt;p&gt;across the 8 subjects, we found 10,077 unique linking domains. the clean universal set contains 35 domains.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;metric&lt;/th&gt;
&lt;th&gt;value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;unique linking domains&lt;/td&gt;
&lt;td&gt;10,077&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to one subject&lt;/td&gt;
&lt;td&gt;72%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;overlap distribution&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;overlap&lt;/th&gt;
&lt;th&gt;all domains&lt;/th&gt;
&lt;th&gt;non-platform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 7&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;td&gt;86&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 6&lt;/td&gt;
&lt;td&gt;133&lt;/td&gt;
&lt;td&gt;131&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 5&lt;/td&gt;
&lt;td&gt;185&lt;/td&gt;
&lt;td&gt;182&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 4&lt;/td&gt;
&lt;td&gt;336&lt;/td&gt;
&lt;td&gt;335&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 3&lt;/td&gt;
&lt;td&gt;614&lt;/td&gt;
&lt;td&gt;608&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 2&lt;/td&gt;
&lt;td&gt;1,432&lt;/td&gt;
&lt;td&gt;1,430&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to just 1&lt;/td&gt;
&lt;td&gt;7,246&lt;/td&gt;
&lt;td&gt;7,240&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;the distribution is the interesting part. most linking domains sit in the bottom row: they mention one product and never come back. the rows above it are where outreach lives, because a site that already covers several products in a category has an editorial reason to cover another one. a short universal list usually means the category is covered by a handful of directories, review sites and integration hubs rather than by a broad press base. a long one means the category has real editorial coverage, and the same sites are reachable for you.&lt;/p&gt;

&lt;p&gt;the highest-authority sites linking to all of them are wordpress.org, github.com and shopify.com. those are the pages worth reading before you pitch anything, because they already decided this category is worth covering.&lt;/p&gt;

&lt;p&gt;wpengine.com carries the widest referring-domain profile of the set and cloudways.com the narrowest, which is usually a function of age and press coverage rather than product quality. the gap between them is the practical opportunity: sites that cover the widest profile but not the narrowest are demonstrably willing to write about this category.&lt;/p&gt;

&lt;h2&gt;
  
  
  the category linkers
&lt;/h2&gt;

&lt;p&gt;252 non-platform domains link to at least 6 of the 8 subjects. these repeat linkers are the sites most consistently connected to web hosts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;highest-overlap category linkers&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;subjects&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;th&gt;links to&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;wordpress.org&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;85&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;github.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;81&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;shopify.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hubspot.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iubenda.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sendpulse.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;habr.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;smallbiztrends.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;freecodecamp.org&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;entrepreneur.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;smashingmagazine.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;letsencrypt.org&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dev.to&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;digitalocean.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sucuri.net&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;getresponse.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;elementor.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;searchenginejournal.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kit.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;freshdesk.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;hostinger.com, siteground.com, bluehost.com, dreamhost.com, wpengine.com, cloudways.com, kinsta.com, namecheap.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  the full data
&lt;/h3&gt;

&lt;p&gt;download all 252 clean domains that link to at least 6 of the 8 subjects, ranked by overlap and authority.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-web-host/dataset.csv" rel="noopener noreferrer"&gt;download csv&lt;/a&gt; | &lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-web-host/dataset.json" rel="noopener noreferrer"&gt;download json&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  run this for your own niche
&lt;/h2&gt;

&lt;p&gt;pick your closest competitors, compare their referring domains, and keep the sites that link to several of them but not to you. sorting that gap by overlap and authority turns the same method into a specific outreach list.&lt;/p&gt;

&lt;p&gt;the ordering is what makes it usable. a site that links to most of your competitors and not to you is a gap with an obvious pitch. the observed overlap gives you a specific reason to contact each site instead of relying on domain authority alone. work down from the top of the overlap column and stop when the reasons start feeling thin, because a pitch you cannot justify in one sentence is not worth sending.&lt;/p&gt;

&lt;p&gt;one caveat worth stating plainly. common crawl is a sample of the web, not a census, so treat these counts as the shape of a link profile rather than an exact total. this study measures the Apr-Jun 2026 release, so rerun the comparison against later releases before treating any movement as a trend.&lt;/p&gt;

&lt;h3&gt;
  
  
  find the overlap in your market
&lt;/h3&gt;

&lt;p&gt;run a backlink gap analysis on the same common crawl data used for this study.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/gap-analysis" rel="noopener noreferrer"&gt;run a free gap analysis&lt;/a&gt;&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>data</category>
      <category>seo</category>
    </item>
    <item>
      <title>13 domains link to every major no-code tool</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Fri, 07 Aug 2026 10:33:32 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/13-domains-link-to-every-major-no-code-tool-5136</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/13-domains-link-to-every-major-no-code-tool-5136</guid>
      <description>&lt;p&gt;we compared 8 no-code tools in common crawl's domain-level link graph. 13 non-platform domains link to all 8, while 76% of linking domains appear for only one subject.&lt;/p&gt;

&lt;h2&gt;
  
  
  how we pulled this
&lt;/h2&gt;

&lt;p&gt;for each subject domain, we pulled the top 2,000 referring domains by authority from common crawl release Apr-Jun 2026 (cc-main-2026-apr-may-jun). we intersected those lists, then removed platform, cdn, social, and other non-editorial domains from the clean overlap counts.&lt;/p&gt;

&lt;p&gt;the filter matters. hosting providers, cdns, url shorteners and the big social networks link to almost everything, so leaving them in would produce a universal list that is technically correct and useless for outreach. the counts below are after that filter unless a column says otherwise. everything here comes from the open common crawl webgraph, so you can reproduce it without a paid backlink tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;subject domains&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;referring domains&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;bubble.io&lt;/td&gt;
&lt;td&gt;14,655&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;webflow.com&lt;/td&gt;
&lt;td&gt;72,800&lt;/td&gt;
&lt;td&gt;72&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;softr.io&lt;/td&gt;
&lt;td&gt;1,782&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;glideapps.com&lt;/td&gt;
&lt;td&gt;2,074&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;adalo.com&lt;/td&gt;
&lt;td&gt;1,889&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;flutterflow.io&lt;/td&gt;
&lt;td&gt;1,182&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zapier.com&lt;/td&gt;
&lt;td&gt;45,819&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;make.com&lt;/td&gt;
&lt;td&gt;12,686&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  the overlap
&lt;/h2&gt;

&lt;p&gt;across the 8 subjects, we found 10,566 unique linking domains. the clean universal set contains 13 domains.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;metric&lt;/th&gt;
&lt;th&gt;value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;unique linking domains&lt;/td&gt;
&lt;td&gt;10,566&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to one subject&lt;/td&gt;
&lt;td&gt;76%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;overlap distribution&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;overlap&lt;/th&gt;
&lt;th&gt;all domains&lt;/th&gt;
&lt;th&gt;non-platform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;link to all 8&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 7&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 6&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 5&lt;/td&gt;
&lt;td&gt;97&lt;/td&gt;
&lt;td&gt;95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 4&lt;/td&gt;
&lt;td&gt;258&lt;/td&gt;
&lt;td&gt;251&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 3&lt;/td&gt;
&lt;td&gt;586&lt;/td&gt;
&lt;td&gt;583&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to 2&lt;/td&gt;
&lt;td&gt;1,519&lt;/td&gt;
&lt;td&gt;1,514&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link to just 1&lt;/td&gt;
&lt;td&gt;8,036&lt;/td&gt;
&lt;td&gt;8,030&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;the distribution is the interesting part. most linking domains sit in the bottom row: they mention one product and never come back. the rows above it are where outreach lives, because a site that already covers several products in a category has an editorial reason to cover another one. a short universal list usually means the category is covered by a handful of directories, review sites and integration hubs rather than by a broad press base. a long one means the category has real editorial coverage, and the same sites are reachable for you.&lt;/p&gt;

&lt;p&gt;the highest-authority sites linking to all of them are substack.com, jotform.com and airtable.com. those are the pages worth reading before you pitch anything, because they already decided this category is worth covering.&lt;/p&gt;

&lt;p&gt;webflow.com carries the widest referring-domain profile of the set and flutterflow.io the narrowest, which is usually a function of age and press coverage rather than product quality. the gap between them is the practical opportunity: sites that cover the widest profile but not the narrowest are demonstrably willing to write about this category.&lt;/p&gt;

&lt;h2&gt;
  
  
  the category linkers
&lt;/h2&gt;

&lt;p&gt;64 non-platform domains link to at least 6 of the 8 subjects. these repeat linkers are the sites most consistently connected to no-code tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;highest-overlap category linkers&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;domain&lt;/th&gt;
&lt;th&gt;subjects&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;th&gt;links to&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;substack.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;jotform.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;airtable.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dev.to&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coda.io&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;explodingtopics.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;framer.website&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lovable.dev&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;taskade.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;francenum.gouv.fr&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;49&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zite.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;webcatalog.io&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;entireweb.com&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;notion.site&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;72&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;habr.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;webflow.io&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;monday.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;formstack.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, glideapps.com, adalo.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clickup.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, adalo.com, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;beehiiv.com&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;bubble.io, webflow.com, softr.io, glideapps.com, flutterflow.io, zapier.com, make.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  the full data
&lt;/h3&gt;

&lt;p&gt;download all 64 clean domains that link to at least 6 of the 8 subjects, ranked by overlap and authority.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-no-code-tool/dataset.csv" rel="noopener noreferrer"&gt;download csv&lt;/a&gt; | &lt;a href="https://crawlgraph.com/api/studies/who-links-to-every-no-code-tool/dataset.json" rel="noopener noreferrer"&gt;download json&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  run this for your own niche
&lt;/h2&gt;

&lt;p&gt;pick your closest competitors, compare their referring domains, and keep the sites that link to several of them but not to you. sorting that gap by overlap and authority turns the same method into a specific outreach list.&lt;/p&gt;

&lt;p&gt;the ordering is what makes it usable. a site that links to most of your competitors and not to you is a gap with an obvious pitch. the observed overlap gives you a specific reason to contact each site instead of relying on domain authority alone. work down from the top of the overlap column and stop when the reasons start feeling thin, because a pitch you cannot justify in one sentence is not worth sending.&lt;/p&gt;

&lt;p&gt;one caveat worth stating plainly. common crawl is a sample of the web, not a census, so treat these counts as the shape of a link profile rather than an exact total. this study measures the Apr-Jun 2026 release, so rerun the comparison against later releases before treating any movement as a trend.&lt;/p&gt;

&lt;h3&gt;
  
  
  find the overlap in your market
&lt;/h3&gt;

&lt;p&gt;run a backlink gap analysis on the same common crawl data used for this study.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlgraph.com/gap-analysis" rel="noopener noreferrer"&gt;run a free gap analysis&lt;/a&gt;&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>data</category>
      <category>seo</category>
    </item>
    <item>
      <title>8 domains link to every major fintech app (Common Crawl analysis)</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Mon, 06 Jul 2026 08:39:36 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/8-domains-link-to-every-major-fintech-app-common-crawl-analysis-lo5</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/8-domains-link-to-every-major-fintech-app-common-crawl-analysis-lo5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update 2026-08-12:&lt;/strong&gt; this post originally treated all eight as one kind of link. They are not. Five of the eight are publishing platforms, which cuts the actionable list from eight to three. Original analysis unchanged below, correction in Update: three categories, not two.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fourth niche, same experiment. Take a category's biggest players, pull every domain that links to them from Common Crawl's open hyperlink graph, keep the ones that link to the whole set. SEO tools gave 37 universal linkers (media). CRMs gave 2 (integration hubs). AI agent frameworks gave 5 (dev platforms). Fintech just gave 8 - and they are the most consistent set yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;Eight fintech apps across payments, banking, and spend: Stripe, Wise, Revolut, Plaid, Brex, Ramp, Mercury, Chime. For each, referring domains ranked by authority from the Common Crawl webgraph (120M domains, 4.4B edges), then intersect the eight lists. Stripe is its own planet - 100,000+ referring domains, more than the other seven combined.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 8 that link to all 8
&lt;/h2&gt;

&lt;p&gt;substack.com, entrepreneur.com, libsyn.com (podcast host), beehiiv.com, pymnts.com, thefinancialbrand.com, spocket.co, coda.io.&lt;/p&gt;

&lt;p&gt;Two newsletter platforms, a podcast host, a business magazine, and two dedicated fintech trade publications. Widen to the 7-of-8 club and the pattern gets sharp: github, crunchbase, ycombinator, bvp (Bessemer), contrary, builtin, bankrate, bankingdive, finovate, 11fs. Finance trade press plus startup/VC infrastructure. Almost nothing else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update: three categories, not two (2026-08-12)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://dev.to/mihirkanzariya"&gt;@mihirkanzariya&lt;/a&gt; pointed out in the comments that these eight are not one kind of thing, and he is right.&lt;/p&gt;

&lt;p&gt;Five of them are UGC platform domains: &lt;strong&gt;substack.com&lt;/strong&gt;, &lt;strong&gt;beehiiv.com&lt;/strong&gt;, &lt;strong&gt;libsyn.com&lt;/strong&gt;, &lt;strong&gt;coda.io&lt;/strong&gt; and &lt;strong&gt;spocket.co&lt;/strong&gt;. A link from those is not an editorial decision by the platform. It is one person publishing a newsletter, a podcast episode or a public doc that happens to mention the app. You cannot pitch substack.com and you cannot fill in a profile on beehiiv.com. That link shows up only because somebody already wrote about you.&lt;/p&gt;

&lt;p&gt;So the universal set splits three ways rather than reading as one list:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;th&gt;cg authority&lt;/th&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;entrepreneur.com&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;press, pitchable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pymnts.com&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;trade press, pitchable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;thefinancialbrand.com&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;td&gt;trade press, pitchable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;substack.com&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;td&gt;platform, earned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libsyn.com&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;platform, earned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;beehiiv.com&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;platform, earned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coda.io&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;platform, earned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;spocket.co&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;platform, earned&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The list you can actually act on is three domains, not eight. The full study's overlap pyramid has a "non-platform" column, and for these five it is wrong: that filter stripped the obvious social platforms and stopped there, when it should have stripped the publishing platforms too. Leaving it as published rather than quietly rewriting it.&lt;/p&gt;

&lt;p&gt;The more useful half of the correction is what the third category is &lt;em&gt;for&lt;/em&gt;. The pitch list and the profile list are things you go and do. The platform cluster is what happens after those work: if Substack and beehiiv start linking to you, the coverage you earned got read by people who then went and wrote their own thing. That makes it the best available proxy for whether the first two are landing, and it is the one part of the set you cannot buy.&lt;/p&gt;

&lt;p&gt;It also means the effect scales with how much a category gets written about, which puts an asterisk on the table below. SEO tools gave 37 universal linkers, and some of that is likely the same inflation rather than genuinely broader coverage. Re-running the earlier studies with platform domains split out is on the list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four niches, four shapes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Link to all 8&lt;/th&gt;
&lt;th&gt;Who they are&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SEO tools&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;trade media + roundups&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CRMs&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;integration hubs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI agent frameworks&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;dev platforms + directories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fintech apps&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;finance press + VC databases&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The takeaway for anyone building in fintech: you do not earn links with a payments integration. You earn them by being &lt;em&gt;covered&lt;/em&gt; (get into PYMNTS, The Financial Brand, Banking Dive, Tearsheet) and by being &lt;em&gt;tracked as a company&lt;/em&gt; (complete Crunchbase / Sacra / BuiltIn profiles, land on VC portfolio pages). Mercury has 1,689 referring domains vs Stripe's 100,000+, yet both are reached by the same ten publications and three databases. You don't out-link Stripe; you get on the same shelf.&lt;/p&gt;

&lt;p&gt;Full study with the overlap pyramid and downloadable CSV/JSON: &lt;a href="https://crawlgraph.com/blog/who-links-to-every-fintech-app" rel="noopener noreferrer"&gt;8 domains link to every major fintech app&lt;/a&gt;. Method is category-agnostic - it's a &lt;a href="https://crawlgraph.com/gap-analysis" rel="noopener noreferrer"&gt;backlink gap analysis&lt;/a&gt; on Common Crawl data, free.&lt;/p&gt;

</description>
      <category>fintech</category>
      <category>data</category>
      <category>seo</category>
      <category>startup</category>
    </item>
    <item>
      <title>Only 5 domains link to every major AI agent framework (Common Crawl analysis)</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Fri, 03 Jul 2026 15:50:16 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/only-5-domains-link-to-every-major-ai-agent-framework-common-crawl-analysis-1e6a</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/only-5-domains-link-to-every-major-ai-agent-framework-common-crawl-analysis-1e6a</guid>
      <description>&lt;p&gt;Same experiment, third niche. Take a category's biggest players, pull every domain that links to them from Common Crawl's open hyperlink graph, and keep the ones that link to the whole set. SEO tools gave 37 universal linkers (nearly all media). CRMs gave 2 (both integration hubs). AI agent frameworks just gave 5 - and they are a different animal again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;Eight frameworks: LangChain, LlamaIndex, CrewAI, Dify, Flowise, Langflow, AutoGPT, SuperAGI. For each, we pulled referring domains ranked by authority from the Common Crawl webgraph (120M domains, 4.4B links), then intersected the eight lists.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;7,508&lt;/strong&gt; unique domains link to at least one framework&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;77%&lt;/strong&gt; link to exactly one (usually LangChain: 5,949 referring domains vs ~450 for Langflow and AutoGPT)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5&lt;/strong&gt; link to all eight: github.com, substack.com, analyticsvidhya.com, and two product sites&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of the universal linkers are tech press.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the 7-and-6 club looks like
&lt;/h2&gt;

&lt;p&gt;dev.to (yes, this site), qiita.com, zenn.dev, n8n.io, arize.com, zenml.io, langfuse.com... and then a whole crop of AI agent directories that did not exist two years ago: aiagentsdirectory.com, agenthunter.io, everydev.ai, findmyagentai.com, bestaiagents.ai. Most have single-digit-to-low authority scores. The category's shelf is still being built.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway for anyone shipping agent tooling
&lt;/h2&gt;

&lt;p&gt;The niche's link graph is developer publishing platforms plus young directories, not journalists. So the play is: publish where developers already read (GitHub, Substack, dev.to, Qiita), and get listed in the agent directories while they are young and take an email. A directory with authority 20 today is not impressive. The one that becomes the geekflare of AI agents in three years is - and you got in early.&lt;/p&gt;

&lt;p&gt;Full study with methodology, the overlap pyramid, and the downloadable CSV/JSON dataset: &lt;a href="https://crawlgraph.com/blog/who-links-to-every-ai-agent-framework" rel="noopener noreferrer"&gt;only 5 domains link to every major AI agent framework&lt;/a&gt;. The DuckDB query behind it is &lt;a href="https://gist.github.com/pucilpet/54ad13ecfd6ba3c0c54e920c24064339" rel="noopener noreferrer"&gt;a public gist&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>data</category>
      <category>opensource</category>
    </item>
    <item>
      <title>We shipped a free backlink API tier (15 calls/month on Common Crawl data)</title>
      <dc:creator>Petteri Pucilowski</dc:creator>
      <pubDate>Fri, 03 Jul 2026 15:49:40 +0000</pubDate>
      <link>https://dev.to/petteri_pucilowski_7ec755/we-shipped-a-free-backlink-api-tier-15-callsmonth-on-common-crawl-data-4a7</link>
      <guid>https://dev.to/petteri_pucilowski_7ec755/we-shipped-a-free-backlink-api-tier-15-callsmonth-on-common-crawl-data-4a7</guid>
      <description>&lt;p&gt;Until this week, the CrawlGraph API required the $99 lifetime license. Now there is a free tier: &lt;strong&gt;15 backlink calls a month&lt;/strong&gt; on Common Crawl's open hyperlink graph (120M domains, 4.4B links, refreshed quarterly). No card, no signup form - the key lands in your inbox.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two curl commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. get a key (delivered by email)&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://crawlgraph.com/api/v1/free-key &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"email": "you@company.com"}'&lt;/span&gt;

&lt;span class="c"&gt;# 2. look up any domain's backlinks&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://crawlgraph.com/api/v1/backlinks &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer cg_live_..."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"domain": "example.com", "limit": 10}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Responses carry &lt;code&gt;X-RateLimit-*&lt;/code&gt; headers so you always know where you stand. One key per email - delivery by mail is the ownership check, which is why there is no signup flow to speak of.&lt;/p&gt;

&lt;h2&gt;
  
  
  It works inside your AI agent
&lt;/h2&gt;

&lt;p&gt;The same key powers the open-source &lt;a href="https://github.com/pucilpet/crawlgraph-mcp" rel="noopener noreferrer"&gt;crawlgraph-mcp server&lt;/a&gt; in Claude, Cursor, Cline, Zed, or Windsurf:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"crawlgraph"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"crawlgraph-mcp"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"CRAWLGRAPH_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cg_live_..."&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your agent can pull the backlink profile of any domain mid-conversation. The &lt;code&gt;gap_analysis&lt;/code&gt; and &lt;code&gt;gap_outreach_targets&lt;/code&gt; tools (the ones that turn "research my niche" into a ranked outreach list) stay part of the $99 lifetime tier, which also raises the quota to 1,000 calls + 50 gap analyses a month.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why free
&lt;/h2&gt;

&lt;p&gt;The underlying data is open - Common Crawl publishes the hyperlink graph quarterly. Gating basic lookups behind a purchase never felt right. Try the data, build something; if you need the gap tools or more volume, the upgrade is a single payment, not a subscription.&lt;/p&gt;

&lt;p&gt;Docs: &lt;a href="https://crawlgraph.com/docs/api" rel="noopener noreferrer"&gt;crawlgraph.com/docs/api&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>seo</category>
      <category>mcp</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
