I just released Cakedesk's biggest update yet: you can now send invoices and proposals directly from the app, without ever opening your email client.
On the surface, this sounds like a small thing. But it took over 15k lines of code and 3 months of working nights and weekends (doing client projects during the day).
I thought it would be much easier, but this wasn't a trivial feature to get right.
Why Adding a "Send" Button was Hard
Until now, Cakedesk users had to export a PDF and then switch to their email client to send an invoice. That's unnecessary friction for freelancers who just want to invoice and move on with their day.
So why didn't I add a "Send" button earlier?
Doing it right while keeping the UI clean turned out to be tricky.
Here's what invoices in Cakedesk looked like before:
Where would a "Send" button even go? Adding more buttons for every possible state would clutter the interface and confuse users who had already sent the invoice.
The MultiActionButton
The solution is what I'm calling the MultiActionButton.
It adapts intelligently depending on the state of the invoice:
- Just after creation, the button shows "Send"
- Already sent? The button shows a Paid/Unpaid Checkbox
- And for additional actions there's an intuitive context menu (which was previously hidden behind a right-click)
This approach gives users more power while making the UI simpler and easier to understand.
No Accounts, No Subscriptions
I didn't want to force users to create an account just to send emails from Cakedesk. So I built a fast email verification flow: it's only required once per email address and installation.
It takes just a few seconds and you're good to go.
Emails in the Details
When sending an email, you can customize the subject line, message, cc, bcc, etc.
Cakedesk sends the email from a @cakedesk.app
address but sets the Reply-To
header so that replies go straight to your own inbox.
Once you've sent an email to a client, Cakedesk also remembers your settings (like cc and bcc) for that client automatically.
Cakedesk supports variables in email templates too. So you can auto-populate things like {client.firstName}
while personalizing every email (if you want to).
And of course, there are translations for the email templates, keyboard shortcuts, emails are part of the revision history, and more.
What if Something Goes Wrong?
If an email bounces because of a bad address or a full mailbox, Cakedesk will notify you at your verified email address.
Privacy was important here: the subject, recipient and content of your emails are never stored on Cakedesk servers.

Conclusion
This was the most-requested feature from Cakedesk users and I'm really proud to finally ship it.
And just like everything else in the app, there's no subscription required!
I already sent out a couple of invoices this week and I think I saved ~1h already.
I hope this saves many Cakedesk users lots of time as well.
If you're curious to try Cakedesk, you can use it for free for up to 3 clients or invoices. After that, it's a one-time purchase, no subscription required.