Skip to content

Building in public since October 2025

The loft log

Pigeon fanciers keep a logbook of every flight: when each bird left, when it came home, and the weather in between. This is ours, mistakes included.

9 entries

  • BusinessTova Halvor

    Pricing, third draft

    We threw out per-send pricing after our forty-first call with a beta publisher.

    Read the entry: Pricing, third draft

    The first draft charged by the send, which sounded fair and turned out to punish the people who write most often. A weekly writer on our list would have paid more than a shop that mails four times a year and sells far more.

    The third draft charges by list size with a generous send allowance per plan. It's less clever and it's much easier to explain. Waitlist members get the founding price for as long as they stay.

    3 drafts, 41 reader calls

  • DeliverabilityImre Delacroix

    Teaching the bounce sorter some manners

    A full mailbox isn't a dead address. Treating it like one was costing writers real readers.

    Read the entry: Teaching the bounce sorter some manners

    Our first bounce handler removed anyone who bounced twice. In cohort two that quietly unsubscribed around 140 people across the beta who only had full mailboxes during summer vacation.

    Now each bounce is sorted by its reply code and retried on its own schedule. A permanent failure stops at once, and a soft one gets three tries over nine days. Hard bounces across the beta sit at 0.3%.

    Hard bounces down to 0.3%

  • MigrationTilda Baptiste

    The week I moved eleven lists by hand

    Before writing the importer's next version, I did every move myself to see where people get stuck.

    Read the entry: The week I moved eleven lists by hand

    Nobody got stuck on the file itself. They got stuck on consent columns with names like status_2, and on what to do with people who had unsubscribed from somewhere else.

    So the new importer asks one question per unclear column, in plain words, and it always keeps unsubscribes as unsubscribes. The longest move that week took a little over three hours, most of it waiting for DNS.

    11 lists, 214,000 addresses

  • BusinessTova Halvor

    Why we said no to the second term sheet

    Email tools get worse when they need to grow faster than their customers do.

    Read the entry: Why we said no to the second term sheet

    We got a very polite offer, and we spent a weekend on it. Then we looked at what the money would ask of us: more seats, more features, a larger pricing page, and pressure to push writers into plans they don't need.

    We're paying our way through founders' savings and beta subscriptions instead. It means a smaller team and a slower roadmap. It also means the only people we answer to are the ones sending the email.

    $0 raised, 14 months of runway

  • ProductYusra Sandoval

    Cohort one, and what it broke

    Thirty-eight publications moved in. Ninety-six bug reports moved in with them.

    Read the entry: Cohort one, and what it broke

    The most common report wasn't a crash. People couldn't find the plain-text version, because we had hidden it behind a menu we thought was tidy. It now sits beside the HTML, the same size.

    The best report came from a yarn shop that had pasted a 40-row table from a spreadsheet into the editor. It broke everything, and it should have worked. Now it does.

    38 publications, 96 bugs

  • ProductYusra Sandoval

    We rewrote the editor (again)

    Version one was a page builder. Writers wanted a page, and to be left alone with it.

    Read the entry: We rewrote the editor (again)

    We had columns, nested sections and a sidebar with 22 controls. Watching writers use it was painful: they'd type in a text box, then spend ten minutes getting the spacing to behave.

    The rewrite starts as a blank page with a blinking cursor. Blocks show up when you type a slash, and the layout rules are ours to worry about. Writers in the test group finished issues 30% faster.

    Second rewrite, 9 weeks

  • DeliverabilityImre Delacroix

    How we got ourselves blocked on purpose

    We set up a brand new domain, sent too much too soon, and wrote down what happened.

    Read the entry: How we got ourselves blocked on purpose

    Going from nothing to 20,000 emails in one morning took us about four hours to get throttled and six days to climb back. Now I can show people the graph instead of asking them to trust me.

    It's why every Loftwing account gets a warm-up plan sized to the list, and why the first sends go to your most engaged readers. Those readers build your reputation for everyone else.

    1 test domain, 6 days in the penalty box

  • ProductImre Delacroix

    First real send

    The first campaign out of Loftwing went to Tova's grandfather's pigeon club.

    Read the entry: First real send

    It was 212 people and one newsletter about race results. It had no editor to speak of, just a text box, a send button and a lot of watching logs from the kitchen table.

    Two hundred and nine arrived in the inbox. The other three were old addresses, one of which, we were told, belonged to a man who had retired from pigeons and email in the same year.

    1 list, 212 readers

  • StoryTova Halvor

    Why it's called Loftwing

    A homing pigeon doesn't need a map, a funnel or a growth hack. It just needs a home to come back to.

    Read the entry: Why it's called Loftwing

    My grandfather kept racing pigeons in a loft behind his house on the South Hill. I spent summers cleaning that loft, and I learned that the birds come home because the loft is a good place to be.

    Email works the same way. Readers open what they trust. I'd spent eight years running lists for small publishers on tools that treated my readers as leads, so Imre and I started writing the tool we wanted.

    Day one

Follow along from the inside

Waitlist members get each new entry the day we post it.

Join the waitlist