# Links & Redirects

Affiliate links at /go/… with groups, click analytics and automatic rel="sponsored nofollow" tags, plus redirects and a 404 monitor with one-click fixes.

**Beta.** Links & Redirects is in beta: it works, but things may still break. Tell us if something does: open an issue at https://github.com/sundoggs/support/issues/new. Every paid order has a 7-day refund.

Category: [SEO and links](/categories/seo.md)

## Requirements (tell the site owner before buying)

- Cloudflare plan: Cloudflare free plan
- Works on: Cloudflare Workers, Cloudflare Pages
- Version: 0.13.2 (needs site layer 0.23.0 or later; it comes in the same download)
- Runs on the Cloudflare free plan. Uses one D1 database in your account.
- Works with any framework: static sites on Pages or Workers, and server-rendered sites on Workers (Astro with @astrojs/cloudflare, Next.js with OpenNext, or any site with its own Worker). Not yet supported: Pages sites with their own _worker.js.
- Page views run through the app so it can tag affiliate links automatically; images, CSS, JS and fonts are served directly. Page views count toward the Cloudflare free 100,000 requests/day (Workers Paid, $5/mo, removes the daily cap).
- Link health checks make a few outside requests to your partners' destination URLs (not to us), at most 40 per run, once a day by default. Turn them off in Settings, or per link. The partner may count the visit; it never counts as a click on your site.
- Automatic link tagging can be switched off in the site admin; on Workers that returns page views to free, unlimited static serving.
- Cost per visit: page views add no requests and no writes. A /go/ click is 2 small writes (the count and the click event); repeated 404s are added up in memory and saved at most once a minute per path. If the Cloudflare free database limit is reached, logging pauses and links keep redirecting. Visit sources are counted by core: page views are added up in memory and saved in a few small writes about every 20 seconds, within the daily write budget; at the Cloudflare free limits counting pauses and the site is unaffected.

## Works with

Cloudflare Workers, Cloudflare Pages, Astro, Next.js (with OpenNext), Vite, Hugo, Plain HTML sites, Vanilla JavaScript.

## Works with your other apps

Connects with no setup, in any install order: [SEO Pack](/apps/seo.md), [Analytics](/apps/analytics.md), [Tag Manager](/apps/tags.md), [Social Proof](/apps/proof.md).

## Price

$19 USD per site · $59 USD for all your sites

- 7-day refund, no questions asked: [Refund policy](/legal/refunds)
- Instant download after payment: the app's code and a license file for your site; your AI agent installs it. Includes 12 months of updates.

## License (tell the owner before they pay)

A site license covers one website (plus its www, staging and test addresses). Using it on other sites isn't allowed. Get the all-sites license from $59 instead. Full terms: /account/license/commercial (version commercial-license-v4-2026-11-04); the owner accepts them with a tick box before paying. Full refund on request within 7 days of paying, no questions asked; refunds are made by hand by the store, not automatically, and a full refund ends the license. Terms of sale and refund policy (version terms-of-sale-v3-2026-11-03): /legal/terms.

## What's new in 0.13.2

- Marked as beta: it works, but things may still break. The admin shows where to report a problem.

## Included

- Site admin dashboard (installed with your first app, no extra cost)
- Updates for 12 months; the version you have keeps working after that
- An agent skill and install guide
- Commercial License: per site, or all your own sites

## Install

Call the MCP tool `create_checkout` with `items: ["links"]`, `site_domain` (a bare domain like example.com) and `license_kind` ("site" for one website, "unlimited" for all sites). Give the owner `checkout_url`: they sign in, read the license, tick the box and pay on Stripe's page. Then poll `get_checkout` until `paid` and call `get_download`.

The prompt the app page gives the owner to paste into their agent:

```
Install the Links & Redirects app (id: links) from the Sundogs site apps store on this site.
First read https://sundo.gs/apps/links.md and tell me what it needs and what it costs.
If I don't own it yet, start a checkout with create_checkout and give me the link; I'll tick the license and pay myself.
Then download it with get_download for this site's domain. Follow the install guide (site-apps/INSTALL.md in the download, also at https://sundo.gs/install-guide.md).
Check it with the install guide's step 6 (the public status, then the self-test once you can sign in to the admin) and tell me what's next.
(Not connected to the store yet? See https://sundo.gs/agents.)
```

## Related playbooks

- [An affiliate link strategy that survives program changes](/playbooks/affiliate-link-strategy.md): How to set up affiliate links so a program shutting down, a changed offer or a new tracking ID never means hunting through old posts. Branded /go/ links on your own domain, one link per placement with sub-IDs, disclosure that meets the FTC's rules, rel="sponsored", watching for dead offers, and measuring which pages earn. Starts with a no-code version using the Cloudflare _redirects file.
- [Check your site for downtime and broken links on a schedule with a Cloudflare Cron Trigger](/playbooks/broken-link-uptime-check-cron.md): A small separate Worker that pings your pages every 5 minutes, crawls your sitemap hourly in small batches, records broken links in D1 and sends an alert to a webhook. Fits the free plan limits, and works for Pages sites because it checks over HTTP.
- [Fix 404s after migrating a static site to Cloudflare (Astro, Hugo, Eleventy)](/playbooks/fix-404s-after-migrating-static-site.md): Moved or rebuilt a site in Astro, Hugo, Eleventy or Vite on Cloudflare and old links now break? How to find every old URL, map it to the right new page, write the rules in a _redirects file, avoid the traps (soft 404s, trailing slashes, chains, everything sent to the home page) and check the result. Then how to catch the misses you didn't know about.
- [Fix 404s after moving a site to Next.js on Cloudflare (OpenNext)](/playbooks/fix-404s-after-moving-to-nextjs-cloudflare.md): Rebuilt or moved a site to Next.js on Cloudflare Workers with OpenNext and old URLs now 404? Where redirects belong in Next.js (next.config redirects, proxy, or a Worker wrapper), how status codes and patterns behave, the soft-404 trap with notFound(), and a small wrapper that shows you which missing URLs people hit, using Workers Logs.
- [How to vibecode an affiliate site on Next.js (and host it free on Cloudflare)](/playbooks/vibecode-affiliate-site-nextjs.md): Build a whole affiliate site with an AI coding agent, start to finish: pick a niche you can win, plan the pages that earn (best-of lists, comparisons, reviews), set up Next.js as a static export, write content Google rewards, get the SEO basics right, deploy on the Cloudflare free plan, then monetise with affiliate links and an email list, and measure which pages make money. With prompts you can give your agent at each step.
- [Move a static site from Netlify, Vercel or GitHub Pages to Cloudflare](/playbooks/move-static-site-to-cloudflare.md): Move a static site (Astro, Hugo, Eleventy, Vite, Next.js static export, Jekyll or plain HTML) to Cloudflare Workers with static assets or Pages, keeping its redirects, headers and environment variables, replacing Netlify Forms, and switching the domain over with a tested rollback. The old host stays live until you're sure.
