Sign in

Philipp 🐘 keila.io

@pentacent.bsky.social
176 followers 41 following 331 posts

Building keila.io, an easy-to-use and reliable Open Source email newsletter tool. #elixirlang #opensource #buildinpublic

PostsRepliesMedia
Philipp 🐘 keila.io @pentacent.bsky.social · 06/10/2026
Fully customized welcome and double opt-in emails are almost ready to ship. Exciting! #buildinpublic #emailmarketing #opensource
Screenshot showing a Welcome Email being edited with MJML.
140
Philipp 🐘 keila.io @pentacent.bsky.social · 05/10/2026
This is pretty cool: @benfreu.bsky.social's. webtrafficwatch.com helps make sense of Google Search Console data. Here is one of the insights for keila.io (lower is better in the graph) 🚀
Average Position is trending down by 1 position every 6 days, with weekends averaging 1.7 positions higher than weekdays.

The last 7 days performed as expected, staying within the normal range based on the previous 30 days.
121
Philipp 🐘 keila.io @pentacent.bsky.social · 18/09/2026
I talked to a friend today about the fact that in the age of AI slop, people just don't care about the small details anymore. Anyways, here I am on a Friday night making tweaks to a dialogue (adding the singular form and segment names). #opensource #buildinpublic #ux #ui
The "Ready to send your campaign" dialog, saying "Are you ready to send your campaign Lovely Test Campaign to 1 contact in the Test segment".
160
Philipp 🐘 keila.io @pentacent.bsky.social · 17/09/2026
Coming soon: A full email editor for Double-Opt-In and Welcome emails. Another step towards full automation support! #buildinpublic #emailmarketing #opensource
A dialogue that says: "Double Opt-In Email", showing an MJML template in a Keila-branded design.
040
Philipp 🐘 keila.io @pentacent.bsky.social · 06/09/2026
I'm happy to announce the release of Keila 0.30.3 which brings major improvements in the rendering performance with large MJML or HTML campaigns. In a synthetic 256 KB template benchmark, this resulted in a 13x speedup. Most real templates are much smaller, btw (<20 KB). #buildinpublic #opensource
050
Philipp 🐘 keila.io @pentacent.bsky.social · 25/08/2026
Currently building some sample campaigns to show off the upcoming new campaign editor for Keila! Still a bit hesitant to release it just yet but I think it will be a huge improvement over the old block editor. #buildinpublic #uxdesign #emailmarketing #mjml #opensource
Screenshot of the new Keila email block editor featuring a campaign for a music school announcing new classes.
050
Philipp 🐘 keila.io @pentacent.bsky.social · 19/08/2026
Indie vs VC mindset: We experienced database slowdowns during higher than usual sending volume. Instead of just scaling the Postgres instance, I optimized queries and indexes (the cliff in the graph) - and we're now at a lower db CPU baseline than before. Yay! 😁 #buildinpublic #opensource #indiedev
A CPU Usage graph showing a base level of 20% with spikes at around 100% and a prolonged spike above 90% before a sharp dropoff to a new base level of 10%
060
Philipp 🐘 keila.io @pentacent.bsky.social · 04/08/2026
"But Ethan, I'm a real person, not a bot!" To this day, I'm still sending a personal welcome email to every person who signs up to Keila. This has led to a lot of great conversations, even though in this case it was not appreciated 😅 #buildinpublic
Subject: Re: Hey, how can I help you get started with Keila?
Content: Unsubscribe
050
Philipp 🐘 keila.io @pentacent.bsky.social · 01/06/2026
The Keila docs have gotten a little glow up! 🎨 Plus, the API docs are now directly integrated into the website (built automatically from the OpenApi spec). #dev #docs #opensource #webdev #buildinpublic
Screenshot of the Keila docs page for the Campaigns API. It shows an excerpt of the GET /api/v1/campaigns endpoint.
1141
Philipp 🐘 keila.io @pentacent.bsky.social · 31/05/2026
PSA: If you're using a git client that doesn't support intra-line diffs and doesn't understand whitespace, you're making your life more difficult. Sourcetree vs Sublime Merge Thanks @benfreu.bsky.social for the tip! #dev #software #development
Screenshot from Sourcetree showing 35 removemd and 35 added lines.Screenshot from Sublime Merge with the same diff but showing only a changed HTML tag in one line and single line added elsewhere in the snippet.
040
Philipp 🐘 keila.io @pentacent.bsky.social · 29/05/2026
This might not look like much, but people have been wanting to send campaigns with custom HTML for years so ... enjoy! #webdev #buildinpublic #opensource
Screenshot of the Keila template edtior, showing some HTML and Liquid code (featuring inserting the contact name and the unsubscribe link) on the left and a rendered preview on the right.
090
Philipp 🐘 keila.io @pentacent.bsky.social · 28/05/2026
Besides all the big changes I'm working on, here is a small QOL update: Independent scrolling of the code/preview the MJML editor in Keila. #buildinpublic #emailmarketing #opensource
080
Philipp 🐘 keila.io @pentacent.bsky.social · 27/05/2026
Sneak peak at the MJML code editor for a campaign with a template that offers a content slot. 👀 #emailmarketing #opensource #buildinpublic #mjml #email
Screenshot of the Keila campaign editor. On the left is a code editor for MJML where two mj-section elements are shown.
On the right is the preview of a full email with a header, the content defined on the left, and a footer.
070
Philipp 🐘 keila.io @pentacent.bsky.social · 26/05/2026
Keila's new template system is going to be awesome. Introducing: MJML templates with content slots. This allows you to keep a consistent layout across multiple campaigns where only certain parts can be edited later. Great for shared workflows. #emailmarketing #buildinpublic #mjml #design
2111
Philipp 🐘 keila.io @pentacent.bsky.social · 26/05/2026
Currently working on a major new feature for Keila: MJML, HTML, and Plain text templates. This will allow you to better customize your messages - and it's another important building block for transactional emails. #opensource #webdev #emailmarketing
Screenshot of the "New Template" screen. It lists the following options:

1) Classic: The classic Keila template with easy options for adjusting styles. This type can be used to create Markdown and Block editor emails. It can not be configured with custom content at the template level.
2) MJML:  MJML makes it easy to create responsive emails.  This type can be used to create Markdown, Block editor, and MJML emails. 
3) HTML:  Raw HTML template for full customizability. 
4) Plain text:  Template type for plain-text emails.
070
Philipp 🐘 keila.io @pentacent.bsky.social · 20/05/2026
Just deployed a small fix to the Keila block editor base template: Centered image alignment and column gutter rendering improved in Outlook. Still loving testi.at for testing these kinds of changes #buildinpublic #emailmarketing #html
Screenshot from testi.at, showing a multi-column layout across various versions of Outlook, rendering identically.
060
Philipp 🐘 keila.io @pentacent.bsky.social · 20/05/2026
24 hours on a train for a conference?! That's what I did to travel to #ElixirConf EU in Málaga. It's worth it! Flying emits 18x more CO2 and I can be productive while travelling. Plus, trains are cool. Win-win-win. (Writing this on my way back on the ICE from #O5F5 in Paris) #train #travel #climate
Infographic showing a comparison between taking a train from Nuremberg to Málaga vs taking the plane. The train causes 17kg, a direct flight 306kg CO2e. The actual trip included a short flight and came in at 63kg CO2e. Data from Atmosfair, DB, and SNCF.
040
Philipp 🐘 keila.io @pentacent.bsky.social · 19/05/2026
Second day of #05F5 Open Source Founders Summit in Paris! 🇫🇷 Lots of interesting conversations about Open Source and the specific challenges Open Source business are facing. #OpenSource #buildinpublic
Photo of the Rotonde de Stalingrad in Paris
030
Philipp 🐘 keila.io @pentacent.bsky.social · 18/05/2026
Looking forward to spend two days learning and talking about the intersection of #OpenSource and business at the Open Source Founders Summit @05f5.bsky.social in Paris! #05f5
A screen with the OSFS26 logo, saying "welcome" in several languages at the ground floor of "La Rotonde Stalingrad" in Paris.
040
Philipp 🐘 keila.io @pentacent.bsky.social · 21/04/2026
Continuing the journey to #ElixirConf EU on the AVE Internacional from Avignon to Madrid. #trains #renfe #spain #sustainability 🇫🇷🚄🇪🇸
A laptop showing the home page of keila.io on a tray table on train, through the window a canal surrounded by greenery can be seen.
050
Philipp 🐘 keila.io @pentacent.bsky.social · 20/04/2026
Crossing three countries by train* to get to #ElixirConf EU in Málaga! 2700km in 2 days 🚄🌱 #elixirlang #trains #travel
Photo of a laptop showing some Elixir code on a seat tray in a TGV train. Next to the laptop is a stack of Keila-branded business cards.
260
Philipp 🐘 keila.io @pentacent.bsky.social · 15/04/2026
This is a dark pattern if ever I've seen one. If you try to create a business page on LinkedIn, they force you to download their app and then want you to send a picture of your ID card to a Peter Thiel-backed verification service. This is not mentioned anywhere in their docs, btw.
110
Philipp 🐘 keila.io @pentacent.bsky.social · 10/04/2026
I'm currently writing a comparison post between Keila and Mailchimp and it's kinda shocking how expensive they are ... or is Keila just too cheap? #buildinpublic #saas #emailmarketing #dev #pricing
Here is a price comparison (data from April 10 2026) between Keila and Mailchimp Standard for someone who sends one newsletter per month:
Emails/month	Keila	Mailchimp	Savings with Keila
100	8€	€18	55%
1,000	8€	€40	80%
2,000	8€	€53	85%
5,000	16€	€87	82%
10,000	32€	€118	73%
50,000	64€	€391	84%
160
Philipp 🐘 keila.io @pentacent.bsky.social · 08/04/2026
I'm trying to get a better understanding where Keila users are coming from. So I'm adding the dreaded cookie pop-up to the website. I hope this is transparent and doesn't bother visitors too much. #buildinpublic #gdpr #privacy
Popup that reads: " We'd like to store a cookie to remember how you found our website. This helps us understand how visitors find out about Keila. Privacy policy". Reply options: No - Okay
120
Philipp 🐘 keila.io @pentacent.bsky.social · 05/04/2026
I was talked into creating a LinkedIn account. Really not loving it so far. ("One minute a day increases your attention and concentration - notify me so I can try LinkedIn Mind Games") 😱
LinkedIn screenshot: "Schon eine Minute spielen am Tag erhöht Ihre Aufmerksamkeit und Konzentration. - Benachrichtigen Sie mich, damit ich LinkedIn Denkspiele ausprobieren kannBenachrichtigen Sie mich, damit ich LinkedIn Denkspiele ausprobieren kann"
010
Philipp 🐘 keila.io @pentacent.bsky.social · 03/04/2026
I've been a paying user of UptimeRobot for many years, but since their latest pricing increase it's no longer possible to post updates to the status page if you're not paying $45/month - which seems a bit excessive to me.
Screenshot from the UptimeRobot status page admin panel, saying announcements can only be created on Team and Enterprise plans.
320
Philipp 🐘 keila.io @pentacent.bsky.social · 25/03/2026
Mamma mia! Da oggi, Keila è disponibile in Italiano 🥳 🇮🇹 Thank you Henrik for the great work! #opensource #i18n #italy #buildinpublic
Screenshot of the Keila campaign editor in Italian, featuring a picture of the tower of Pisa.
030
Philipp 🐘 keila.io @pentacent.bsky.social · 11/03/2026
Please share: I'm currently looking for an artist to do illustrations for Keila (Open Source newsletter tool). I'm looking for a cute, minimal style of vector illustrations. Not looking for AI stuff 🙏 Attached image is an example of the style I'm looking for. #art #design #illustration #commission
Illustration from the Mastodon app
24243
Philipp 🐘 keila.io @pentacent.bsky.social · 05/03/2026
LLMs usually work great for translations, but you shouldn't use them without QA, @signal.org The "at" in flag_at is not a preposition and should not be translated as "flagge_bei" and the "pt" in flag_pt is not an abbreviation for "point", so it should not be translated as "markierungspunkt" 😉
Screenshot of the emoji autocomplete on a German installation of Signal Desktop, showing "flagge_bei" for Austria and "markierungspunkt" for Portugal.
110
Philipp 🐘 keila.io @pentacent.bsky.social · 02/03/2026
Image resizing is now live on Keila Cloud! Can't believe I didn't add this feature earlier 😅 #buildinpublic #opensource #uxdesign #emailmarketing
061
Philipp 🐘 keila.io @pentacent.bsky.social · 02/03/2026
Coming later today to Keila: Adjusting image size and alignment in both the Block editor and the Markdown editor. #buildinpublic #opensource #emailmarketing
Screenshot of an email preview with an image of an elephant looking to the right, filling out about 2/3s of the email width and a right-aligned caption that reads: elephant looking to the right.
161
Philipp 🐘 keila.io @pentacent.bsky.social · 03/02/2026
Small improvement to the Keila block editor: You can now change the alignment of text ▶️🔼⬅️ #buildinpublic #ux #uxdesign #opensource
Screenshot of the Keila Block editor showing a paragraph with an inline tool that allows changing the text alignment.
071
Philipp 🐘 keila.io @pentacent.bsky.social · 29/01/2026
I'm considering replacing the tabs (image 2) with an accordion in the Keila form editor (image 1). Any opinions? #uxdesign #design #buildinpublic
The form editor with the various settings organized vertically in the style of an acordion.The form editor with the various settings organized as tabs.
010
Philipp 🐘 keila.io @pentacent.bsky.social · 29/01/2026
Protected confirmation links are coming to Keila! When a confirmation or unsubscribe link is clicked very shortly after the email is sent, the action is only taken after a short delay. This helps prevent bots/antivirus scanners from accidentally taking an action on the users' behalf. #buildinpublic
120
Philipp 🐘 keila.io @pentacent.bsky.social · 27/01/2026
Small UX improvement: I'm adding an "Open" button to the forms overview in Keila, saving you a few clicks if you want to test or share a form. #buildinpublic #opensource #uxdesign
Screenshot of the Keila interface showing the "Forms" headline and a card for "My Signup Form" which has an Open and an Edit button.
050
Philipp 🐘 keila.io @pentacent.bsky.social · 26/01/2026
Doing some work on subscription management for Keila Cloud today. Fixed a bug where cancellation links went missing (not an intentional dark pattern!), added a feature to let users know how long a cancelled subscription is still valid, and added an option to resubscribe. #buildinpublic #saas
Message that says: Your subscription has been cancelled.
You can continue using your subscription until: January 21 2027.

Button that says: Start new subscription
020
Philipp 🐘 keila.io @pentacent.bsky.social · 23/01/2026
Здравей - hello there! Keila, the Open Source newsletter tool, is now available in Bulgarian thanks to another wonderful volunteer contribution! #buildinpublic #opensource #i18n #translation #bulgaria #bulgarian
Keila account creation page in Bulgarian: Започнете да изпращате имейли с Keila сега
060
Philipp 🐘 keila.io @pentacent.bsky.social · 19/01/2026
Hey @github.com, wouldn't it be nice if this popup showed how to check out a PR with vanilla git? In the current state, it feels like a bit of a dark pattern to me. #softwaredevelopment #git #github
010
Philipp 🐘 keila.io @pentacent.bsky.social · 18/01/2026
What's going on here? Is this an AI bot gone wild? #bluesky #technology
Screenshot of a bunch of Bluesky posts that simply say "NO_REPLY".
020
Philipp 🐘 keila.io @pentacent.bsky.social · 18/01/2026
Good morning - Jó reggelt! Keila is now available in Hungarian! Thank you to TrueQAP on GitHub for contributing this. 🇭🇺 #i18n #opensource #buildinpublic
Screenshot of the Keila interface in Hungarian: Használja a kampányszerkesztőt kampányok létrehozásához, ütemezéséhez és elküldéséhez a kontaktjai számára.
141
Philipp 🐘 keila.io @pentacent.bsky.social · 15/01/2026
Now live on Keila Cloud: Configure welcome emails for your newsletter signup forms. A great way to offer free downloads or discount codes for new subscribers! Give it a try on keila.io 👀 #buildinpublic #emailmarketing #newsletter #opensource
Screenshot of the Keila form editor, showing the Welcome Email settings with an email preview that offers a PDF course download.
041
Philipp 🐘 keila.io @pentacent.bsky.social · 09/01/2026
Coming soon: Add welcome emails to your forms in Keila. This is great if you want to share private links with new subscribers - or just to say hi 👋 Of course, this works in conjunction with double opt-in: if it's enabled, the welcome email will be sent after the email confirmation. #buildinpublic
Screenshot of the Keila form editor, showing a new "Welcome Email" tab in which a welcome email with a download button has been configured.
061
Philipp 🐘 keila.io @pentacent.bsky.social · 06/01/2026
Keeping the menu fixed is a small but useful improvement to the MJML editor. Thank you, position: sticky. #css #buildinpublic #uxdesign #emailmarketing
040
Philipp 🐘 keila.io @pentacent.bsky.social · 01/01/2026
Happy new year - Frohes neues Jahr - Bonne année - and now also: Feliz año nuevo! Keila is now available in Spanish 🥳 🎆 Thank you to Pedro for submitting the PR! github.com/pentacent/ke... #opensource #buildinpublic #i18n
Screenshot of the Keila campaign overview page in Spanish.
041
Philipp 🐘 keila.io @pentacent.bsky.social · 26/12/2025
Not loving that I'm getting this from #GitHub on my home network when accessing my own repository from a notification email. I'm not a scraper, I swear!
Too many requests

You have exceeded a secondary rate limit.

Please wait a few minutes before you try again;
in some cases this may take up to an hour.
Signing in may provide a higher rate limit if you are not already signed in.

For more on scraping GitHub and how it may affect your rights, please review our Terms of Service.
000
Philipp 🐘 keila.io @pentacent.bsky.social · 18/12/2025
You can now directly link to the web version of your newsletter campaign in Keila like this 🧑‍💻 www.keila.io/docs/public-... #emailmarketing #buildinpublic #opensource #liquid
Open this email in your browser: {{ campaign.public_link }}
041
Philipp 🐘 keila.io @pentacent.bsky.social · 16/12/2025
Without having read these emails, my guess is that things are getting more expensive ... Did Atlassian and GitHub coordinate this?
Atlassian: Upcoming changes to Free Bitbucket workspace
GitHub: GitHub is updating the Actions pricing structure (x4)
010
Philipp 🐘 keila.io @pentacent.bsky.social · 12/12/2025
I don't know anything about R, but I think time zones are fun - so I had to take a closer look! I gave your code a try with WebR. It looks to me like CEST is not a recognized time zone and ymd_hms then defaults to UTC. WebR printed a warning about this that was maybe lost in your environment.
webr::install("lubridate")
library("lubridate")

ymd_hms("2025-06-12 08:25:30+02:00", tz = "Europe/Stockholm")
ymd_hms("2025-06-12 08:25:30+02:00", tz = "CEST")
160
Philipp 🐘 keila.io @pentacent.bsky.social · 29/11/2025
Currently working on the new template system and migrating the base template to MJML. I'm also taking the opportunity to refine the typography and apply the Major Third scale to the default font sizes. 🎶 📖 #buildinpublic #opensource #design #myelixirstatus #newsletter
0151
Philipp 🐘 keila.io @pentacent.bsky.social · 26/11/2025
The simplicity of Markdown editing plus the flexibility of fully custom MJML/HTML templates? Yes, please! (currently work in progress) #buildinpublic #emailmarketing #opensource #floss #foss
051