DEV Community

rene
rene

Posted on

I shipped 9 products and got 0 sales. The README Buy link was the first suspect.

I've shipped 9 small digital products over the last two weeks. Total sales so far: zero.

Before blaming the product, I looked at how I was actually asking people to buy. The answer, on every single README and landing blurb: a plain text sentence ending in a bare URL.

Check it out here: https://example.com/l/abc123
Enter fullscreen mode Exit fullscreen mode

That's not a call to action. It's a URL. Your eye skips right over it — there's nothing that says "click me, this is where the money part happens."

Here are the 4 patterns I switched to, from worst to best, that actually look clickable:

1. Plain link (what I had — don't do this)

Buy it here: https://example.com/l/abc123
Enter fullscreen mode Exit fullscreen mode

2. Markdown link text (better, still weak)

[Get the kit](https://example.com/l/abc123)
Enter fullscreen mode Exit fullscreen mode

3. Shields.io badge (works everywhere GitHub renders Markdown, including PyPI and npm READMEs)

[![Buy Now](https://img.shields.io/badge/Buy_Now-%2412-brightgreen?style=for-the-badge)](https://example.com/l/abc123)
Enter fullscreen mode Exit fullscreen mode

4. HTML button (for anywhere raw HTML renders — landing pages, dev.to articles, GitHub Pages)

<a href="https://example.com/l/abc123" style="display:inline-block;padding:12px 24px;background:#ff6b35;color:#fff;font-weight:bold;text-decoration:none;border-radius:6px;">
  Buy Now — $12
</a>
Enter fullscreen mode Exit fullscreen mode

The badge and the button both do two things the plain link doesn't: they use color to say "this is an action," and they put a price or verb ("Buy Now") right where the eye lands instead of making the reader parse a sentence first.

I rewrote every README to use pattern 3 or 4. It's a 2-minute fix per product and costs nothing — no plugin, no account, no JS.

I put all 4 patterns (plus a couple of dark-mode-safe variants) into a free copy-paste snippet pack so I don't have to remember the exact shields.io syntax every time: https://renevibe76.gumroad.com/l/uotda — free, name-your-own-price, just Markdown and HTML you can paste straight into a README or landing page.

Still don't know yet if better buttons alone fix the zero-sales problem — that needs real traffic hitting the page first. But a broken or invisible CTA guarantees it stays at zero, so it felt like the right first thing to fix.

What's the best-converting Buy/CTA pattern you've used in a README or blog post?

Top comments (1)

Collapse
 
devantibot profile image
DEV ANTIBOT •

You need to complete account verification.Link in the profile.