Skip to content

docs: tag README and docs signup CTAs for link attribution - #456

Open
us wants to merge 1 commit into
mainfrom
chore/link-attribution
Open

docs: tag README and docs signup CTAs for link attribution#456
us wants to merge 1 commit into
mainfrom
chore/link-attribution

Conversation

@us

@us us commented Aug 22, 2026

Copy link
Copy Markdown
Owner

Why

Every signup link on the repo and on docs.fastcrw.com pointed at a bare
/register. Measured over 30 days on the funnel data, those two surfaces are
the highest-converting entry points we have (github 113 visitors / 17 signups,
docs 57 / 8), but each is a single undifferentiated row: there is no way to tell
which README CTA or which docs page produced them.

The referer header cannot answer it either. Docs referers arrive truncated to
the origin under strict-origin-when-cross-origin (125 hits on
https://docs.fastcrw.com/ against 2 on any deep page), and every README link
reports the same https://github.com/us/crw.

What changed

  • README.md and README.zh-CN.md: the signup CTAs carry ?ref=gh-<slot>
    (hero, quickstart, sdk, table, zh).
  • docs/index.html: the navbar and TOC CTAs carry ?ref=docs-home-<slot>.
    scripts/build-docs-pages.mjs rewrites docs-home- to the page's own slug
    when generating each page, so docs/scraping/index.html emits
    ?ref=docs-scraping-nav and ?ref=docs-scraping-cta.
  • docs/docs/{quick-start,search,monitoring}.md: inline signup links carry
    ?ref=docs-<slug>-inline.
  • The 49 generated pages are regenerated to match.

Notes

  • Visible link text is unchanged everywhere. The slug lives only in the
    href, including where the anchor text is itself the URL
    ([fastcrw.com/register](...) in quick-start).
  • docs/sitemap.xml is deliberately left alone. Regenerating bumped
    lastmod on all 50 URLs, which would report 50 content updates to crawlers
    for a query-string change.
  • The install command curl -fsSL https://fastcrw.com/install | sh is
    untouched.
  • No behaviour change in the engine; markdown, static HTML and the docs
    generator only.

Follow-up in the private repo

A companion change drops the ref parameter from the address bar on arrival
via history.replaceState. The edge middleware records the full URL
server-side before first paint, so the slug is captured either way and the
reader never sees a tracking string.

Every signup link on the repo and on docs.fastcrw.com pointed at a bare
/register, so all of them collapsed into a single row in the funnel and there
was no way to tell which one converted. Docs referers arrive truncated to the
origin under strict-origin-when-cross-origin, so the referer header cannot
recover the page either.

- README and README.zh-CN: the four signup CTAs carry ?ref=gh-<slot>
- docs template: the navbar and TOC CTAs carry ?ref=docs-<slug>-<slot>,
  rewritten per page by build-docs-pages.mjs
- quick-start, search and monitoring inline links carry ?ref=docs-<slug>-inline

Visible link text is unchanged everywhere; the slug lives only in the href.
sitemap.xml is deliberately not regenerated so 50 URLs do not all report a
fresh lastmod for a query-string change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant