Skip to content
TAA

Article

From Newsletter to Booking: One Week, Four Sites

This week I ripped out newsletter sign-up forms across four sites and replaced them with an embedded Cal.com booking calendar — here is why and how.

August 24, 2026 · Marcel R. G. Berger · 5 min

  • custom app development
  • theapparchitect
  • marcelrgberger
  • astro
  • build-in-public
  • cal-com
Share

Wednesday morning I decided to stop asking people to subscribe to a newsletter I was not sending. By the end of Tuesday the following week, the sign-up forms were gone from four separate sites — marcelrgberger.com, theapparchitect.com, civo-cloud-manager.app, and jasminelise-beauty.de — and in their place sat an embedded Cal.com calendar. Not a link to one. An actual embedded widget, inline on the page, ready to book. That was the dominant thread of the week. Thirteen commits across four repos, all circling the same decision.

Replacing the Newsletter Slot with a Real Booking Flow

The newsletter had been sitting in the footer and contact area of most of my sites for a while. The honest reason it was there: it felt like the right thing to have. Every indie dev has a newsletter, right? But I was not sending one consistently, and a dormant sign-up form is worse than no form at all. It signals either neglect or optimism. Neither is a great look on a custom app development portfolio.

The replacement I reached for was Cal.com. I had already been using it for the “Talk with Marcel” link on theapparchitect.com, but that was just a link. You clicked, it opened a new tab, you booked. Functional, but one extra step that I kept noticing when I tested the flow myself. The fix was straightforward: instead of linking out, I embed the calendar widget directly. The slug I settled on is talk-with-marcel, and I pass the visitor’s language through as a parameter so German-speaking visitors get a German interface and English-speaking ones get English. That part worked cleanly on the first try, which was a relief.

What did not work cleanly was the naming. I had initially set up the event type under a different slug, switched to talk-with-marcel mid-session, and then had to roll back a commit (0f1853e) because the old name was still hardcoded in two places I had missed. Twenty minutes of unnecessary back-and-forth. The commit message even says it: “Umbenennung des Termins zuruecknehmen” — undoing a rename. I should have grepped for the old string before pushing. Lesson noted, lesson immediately ignored in the moment.

The German version of the marcelrgberger.com contact section also needed a proper rewrite. The first pass was a direct translation from the English copy, and it read exactly like that: translated. The kind of German that is technically correct and completely joyless. I went back and rewrote it with the meaning in mind rather than the words — “sinngemaess statt woertlich”, as the commit puts it. That pass took longer than the embedding work itself, but it is the kind of thing that compounds. A sentence that reads naturally in its own language is doing quiet work every time someone lands on it.

On the civo-cloud-manager.app site, I had been listing a specific newsletter provider by name in the product roadmap section. That felt wrong once I had decided to drop the newsletter approach entirely, so I updated the roadmap entry to describe the feature (newsletter updates) without naming a vendor. Whether or not I ever ship that feature, I do not want to be publicly committed to a specific tool I am not using yet. Small thing. Probably nobody noticed. Still worth fixing.

Side Notes: A Book, a Dead CSS Block, and a security.txt

The book repo got three commits this week. I am working on a title called “Solopreneur: The Art of Working Alone” and there is a company name woven through the manuscript that needed updating. The products entity is now called DigitalFreedom Global LLC, and two passages that had been reworded recently needed a final smoothing pass to read naturally around that new name. Nothing dramatic — manuscript hygiene. But it is a repo that moves slowly and deliberately, and it moved this week.

On jasminelise-beauty.de, I removed a dead CSS block that had been orphaned since the MailerLite newsletter widget was originally removed. Leftovers from a previous cleanup that had not been thorough enough. The kind of thing you only notice when you are already doing similar work elsewhere and your eye is tuned for it.

The most satisfying two minutes of the week: adding a proper security.txt to civo-cloud-manager.app, following RFC 9116. It is a tiny file that lives at /.well-known/security.txt and tells security researchers where to report vulnerabilities. It takes almost no time to add, and not having one on a site that promotes a macOS cloud management tool always felt like a gap. Done now.

What This Looks Like from the Outside

If you are weighing whether to have a custom app or site built, the booking-first approach I settled on this week is worth thinking about for your own project. A newsletter captures people who are curious but not ready. An embedded calendar captures people who are ready but do not want friction. Those are different audiences and different moments in the decision process. Knowing which one you are optimizing for changes what you build.

The work I do on my own sites is the same kind of thinking I bring to client projects. If that sounds like the right fit, the /contact page is the place to start — or just book a call directly from there.

The full portfolio of what I have shipped is at /work.

Share
Book a free 30-min call