I sell one PDF from my own website, with no store platform and no monthly fee. A Stripe payment link takes the money, and a small program emails an expiring download link. From what I’ve seen so far, that wiring was the quick part, and the sales come slowly.
What I sell and how someone pays for it
The PDF is a $29 kit that walks you through setting up your Google Business Profile, the card that shows up beside the map when someone searches your business name. I wrote it step by step, the way I set up my own.
Buyers pay through a Stripe payment link. Stripe handles the card payment, and a payment link is a checkout page Stripe hosts for you, so you put it behind a button on your site. Anyone with the link can pay (Stripe).
My site is static: the pages are built ahead of time with nothing running behind them, and the button sits on one of them. I didn’t add a store or a shopping cart, so if you’ve already worked out what your website costs each month, this setup adds no monthly line to it while it stays inside the free plans I’ll point to.
The cost shows up per sale instead. Stripe’s standard pricing has no setup or monthly fees and takes 2.9% + 30¢ per successful transaction on a domestic card (Stripe), which works out to about $1.14 of a $29 sale.
A stranger clicks the button, types a card number on Stripe’s page, and the payment goes through. That’s the moment the PDF has to find its way to them.
What happens after someone pays
At that moment, Stripe sends a webhook to a small program of mine: Stripe tapping the program on the shoulder to say “this person just paid.”
The program is a Cloudflare Worker, a short piece of code that runs on Cloudflare’s computers, so nothing stays running on my laptop. Cloudflare already serves my site, which made it an easy home. Cloudflare’s Workers Free plan includes 100,000 requests per day (Cloudflare), plenty of room for a $29 kit.
The Worker makes a download link that works for 7 days and 5 downloads, then emails it to the buyer through Resend, a service that sends email for programs like this one. Resend’s Free plan costs $0 per month and includes 3,000 emails per month (Resend).
This is the piece of “passive” that holds up for me. A sale at 2 a.m. gets delivered while I’m asleep. I don’t open my inbox, attach a file, or check who paid.
If you build your own, the first thing I’d do is buy it once and watch the email land, so you see what your buyer sees: a download link sitting in their inbox.
Where the PDF lives so it can’t be passed around
Behind that link, the PDF sits in a private storage bucket on Cloudflare R2. A private bucket works like a locked file cabinet online: it has no public web address, so there’s nothing to type into a browser or paste into a group chat. Cloudflare R2’s free tier includes 10 GB-month of storage per month (Cloudflare), which holds one PDF many times over.
The way in is the Worker’s link, which runs out after 7 days or 5 downloads, whichever comes first.
I bothered because a PDF at a public address can be found and passed around, and then the one sale I made can be the last one. With the file locked away, each fresh download is tied to a payment.
A buyer can still forward the PDF once it’s on their computer. The link limits how long the door stays open, and that’s as far as it goes.
A buyer who opens the file and wishes they hadn’t paid needs something else from me.
How refunds work
That buyer gets a refund within 30 days, no questions asked. I issue it by hand in the Stripe dashboard, the page listing the payments that came in. Stripe’s processing fees from the original transaction aren’t returned when a payment is refunded (Stripe), so a refunded sale still costs me the fee I paid on it.
From the buyer’s side, a plain promise lowers the risk of handing $29 to a small site they don’t know yet.
Doing it by hand keeps me close to it. I see the person’s name, and the refund goes through whether or not they tell me why. When someone does say what was missing, that note is worth more to the kit than the $29.
If you’re writing your own promise, I’d keep it to one sentence and put it under the buy button, where the worry shows up.
That same dashboard shows what the kit has sold.
What it has sold so far
That same screen is where I read the count, and for the kit it’s early: the wiring has run quietly since the summer while the selling has barely begun.
The wiring delivers a sale once someone decides to buy. Finding that someone is a different job, and it’s the slow one.
From what I’ve seen so far, the people who buy a $29 PDF from a small site are people who already know & trust the person selling it. That trust grows somewhere you can reach them again, which is why I keep coming back to building an email list before anything else.
If you’re thinking about selling something of your own, the first step I’d take is small: make one product page and link it from the places people already find you, like your Google card, your Instagram bio, or the email you send after a job. Then keep showing up there, a little each week.
If you want to see this setup work the way a buyer would, the kit is below.
I hope this helps.
If you'd like the whole Google Business Profile setup in one PDF, step by step, that's what the kit is.
$29, one time, 30-day refund.
