DEV Community

Axel Freeman
Axel Freeman

Posted on Originally published at axelfreeman.com

Publishing is an event. Distribution is a receipt.

Publishing is an event. Distribution is a receipt.

Most teams I look at do not have a distribution problem, they have a distribution claim. They published. There was a link, a hashtag, a Thursday. What they cannot produce is a receipt: a line in a log, an index ping, a canonical tag, a number that moved because of this page and not because of the homepage.

Publishing is an event. Distribution is what you can show afterwards. Here are the five receipts, in the order they cost me the least effort.

1. The canonical tag: own the original, rent the audience

Every platform you publish to wants to be the original. If you let it, the version that ranks is the one you do not control: no pricing page, no scope page, no way to change the CTA next month.

The fix costs one tag. Publish the piece on your own domain, then republish on the platform with <link rel="canonical" href="https://yourdomain.com/that-page.html">. The platform edition becomes an advertisement for the page you own.

On my own account this is measurable, and it is not a small effect: of 75 articles, 40 point their canonical at my domain. Those 40 are the ones that keep compounding — the traffic lands on a page with the offer on it, not on a profile page with a follow button.

One caveat that cost me a 403 and a wasted afternoon: repeat a canonical too often and the platform rejects the post. Check what you have already claimed before you write, not after.

2. Indexing: a ping, not a prayer

Search engines will find your page eventually. "Eventually" is how a launch becomes a footnote. IndexNow is a single API call that tells participating engines the URL changed today.

The whole implementation is: generate a key, put it in a file at the root, POST the URL list. On my site this runs after every publication, together with a Wayback save, because a timestamped snapshot is the cheapest proof that a page existed on the day the campaign says it did.

A sitemap is the same idea in slow motion. If a page is not in the sitemap and nothing links to it, it is not published, it is uploaded.

3. Internal links: the distribution you already paid for

An orphan page — live, indexed by nobody, linked from nowhere — is the most common form of wasted work I find. The page exists; the site does not know about it.

Every new page should be linked from at least one page that already has authority, with anchor text that says what the page is for. Not "click here", not "read more": the exact phrase a buyer would type. That is the cheapest ranking signal available and it takes four minutes.

I do this in the same commit as the page, not in a "SEO sprint" later. Later never arrives.

4. The machine-readable layer: llms.txt and crawler policy

Answer engines read your site without a browser. What they quote depends on what you let them see, and in what shape.

Two artifacts do most of the work. A llms.txt at the root that lists the pages you consider canonical, each with one line explaining what it answers. And an explicit crawler policy — you decide which AI crawlers may read you, rather than discovering you were quoted from a cached copy you never updated.

This is not a growth hack. It is the difference between being quoted accurately and being quoted approximately, and "approximately" is where the numbers get attributed to someone else.

5. Measurement that can actually show movement

Here is the receipt most campaigns cannot produce, and the one that surprised me on my own site.

Over one day my server logged 105 hits carrying UTM parameters from my own campaigns — email, dev.to, Discord, Telegram, WhatsApp. The analytics property recorded 7 sessions in the same window, most of them direct.

Both numbers are correct. Analytics needs JavaScript; crawlers, previews, link scanners and most automated checks do not run it. So if your only receipt is a session count, you are blind to the majority of what actually touched your pages.

Practical rule: keep the server log number and the analytics number side by side. The gap tells you how much of your distribution is machine traffic (fine, that is indexing working) and how much is a human who bounced before the script loaded (not fine, that is a copy or a speed problem). Neither number alone is a verdict.

The uncomfortable part

Distribution is not a channel, it is a set of small mechanical commitments: a canonical tag, an index ping, an internal link, a machine-readable file, and two numbers you are willing to look at together.

None of them are creative. All of them are checkable. And the checkable ones are the only ones you can hand to someone else and ask, honestly, "is this working?"

That is the entire premise behind the distribution pass I run: the published work gets one mechanical sweep — index, canonical, internal links, AI-crawler layer, measurement — and then it gets read by something other than the person who wrote it.

See what the distribution pass includes, and what it costs — packages and scope are published, so the first conversation can be about your bottleneck rather than my price.

Top comments (0)