The page that quit before the sale
A reader emailed me last year to ask where she could buy the second book. I had the book. I had a page selling it, with copy I was actually proud of, the kind that makes someone want the thing. What I didn't have was a button.
The honest answer was "Amazon." The honest footnote was "and I'll never know it was you who bought it."
Back in the first post I said Amazon keeps the names. This is the post where I stopped letting it. But the fix was messier and more honest than "build a Buy button," because it turns out you can't sell everything direct, and pretending otherwise is its own kind of lie.
What direct actually buys me
When a reader buys my ebook through Amazon, two things happen. Amazon takes its cut, and Amazon keeps her. I get a number in a dashboard. Not a name, not an email, no way to tell her the next book is out.
Sell that same ebook straight from my own store and both of those flip. I keep more of the money, and I keep the reader. She lands on my list, she hears about book three, she's mine to serve instead of a stranger the algorithm rented me for one transaction. For a working author that second part is worth more than the margin.
So direct is the goal. The catch is that direct has hard edges, and I ran straight into them.
An honest storefront beats a fake one
Here's the limit nobody warns you about. The payment setup I use, Stripe, can act as the official seller of record for digital goods I fulfill myself, an ebook, a PDF, an audio file. It cannot be the seller for a physical paperback, and it cannot touch a book that's locked into Kindle Unlimited, because that title is contractually Amazon's alone.
My actual catalog hits all of those cases at once. Some books are direct-sale digital. One paperback ships through an outside print shop. An ebook enrolled in KU can only be bought on Amazon. And there's convention merch that exists nowhere online, only on a table at a show.
I could have hidden everything I couldn't sell directly and shown readers a tidy, dishonest store. Instead I built the store to tell the truth. One page per book, listing every real way to get it. Buy the ebook direct, right here. Grab the paperback from the printer, this link. The KU edition's on Amazon, that link. Each book carries a list of purchase options, and switching one on or off is a setting in my admin, not a code change. The day that KU ebook comes off exclusivity and I can sell it direct, I flip a toggle and the button appears. The reader always sees the whole truth of how to buy, and the paths I own outright are the ones I push hardest.
The direct path, end to end
For the books I can sell myself, the machine is clean.
A reader clicks Buy. Stripe runs the checkout, takes the card, and, this is the part that saved my sanity, collects and files the sales tax. Selling direct in a hundred tax jurisdictions is a compliance nightmare that has sunk plenty of indie stores. Letting Stripe be the official seller of record means I don't wake up one day owing paperwork to forty states. When the payment clears, the reader gets her file and lands in my world instead of Amazon's.
Patrons get their own price. A supporter who already backs the work pays less for the book, set per title, no coupon codes to manage. It's a thank-you wired into the checkout.
Read a sample, then decide
The audit of my own sites named the single most expensive leak: my best book page sold the reader completely and then dead-ended. Great copy, no way to act.
So every book can now carry a real sample. Not a blurb, an actual first chapter, on its own reading page, styled like the real thing, ending on a quiet "buy to continue reading" button. It's public, so a guest can read it without an account, and it's a clean link I can share anywhere. The reader gets to fall into the prose before she spends a cent, which is how books have always actually sold. That page does the job the poster never could.
The unglamorous half that keeps the money honest
Payments are where sloppy code stops being embarrassing and starts being expensive, so a lot of this post's real work is invisible.
When Stripe tells my app "this payment succeeded," it sometimes tells it twice. Networks hiccup, messages retry. If I handle that naively, a reader gets billed once but I record the sale twice, or worse, some action fires twice. So every one of those messages carries an ID, and my app refuses to act on an ID it's already seen. Charge once, deliver once, count once.
Then there's the download itself. My audiobooks are big files. The naive way to hand someone a file is to pull it into the app's memory and stream it out, which works fine until two readers download a large audiobook at the same moment and the whole site chokes. So the app doesn't touch the file at all anymore. It hands the reader a temporary signed link straight to my storage, the file comes down directly, with its proper name, and the app stays light. I learned that one the way you learn most things, by watching memory spike and swearing.
Small, boring fixes. They're the difference between a store that takes money reliably and a story I'd rather not tell you.
Now I can see where readers fall off
The last piece is that I finally know what's happening. Every book has a funnel I can watch: how many people visited the page, how many read the sample, how many bought, and the conversion rate at each step, all-time and last thirty days.
For a year I sold books into a fog. Now I can see that a title gets plenty of visits but few sample reads, which tells me the page isn't selling the click, or that lots of people read the sample and don't buy, which tells me something else entirely. I stopped guessing and started reading the numbers. That's the whole reason to own the store instead of renting it.
What the reader gets
The blurb and the Buy button live on the same page now, which should not feel like an achievement and absolutely does. You can read a real chapter before deciding. If you back the work, you pay less. And when you buy the ebook direct, I know it was you, so the next book finds you without Amazon's permission.
That reader who emailed me asking where to buy? There's a button now. I checked that one too.
Follow the build: Workshop posts land weekly. Next, the fun one, turning a flat book page into a world you can actually click into and play with. Want to test the store instead of reading about it? Pick a book, read the sample, and see how far you get before the prose does the selling for me.