Improving a micro-SaaS Conversion: Email Automation

Improving a micro-SaaS Conversion: Email Automation

January 21, 2026

Tl;DR

Congratulations, you got a micro-SaaS like this in front of people and even sold some.

You understood this is all about getting the OpEx right.

Now what?

Intro

Keeping in mind the level of repetitions that you need.

The number of people that is enough to try or to say no to try to be significative to then change something.

PROS advice to count in ~ thousands.

Im assuming for this post that you got the product delivery ready for sometime: yes, we come from here

With some decent and easy to disgest user journey workflow, like this one.

  1. Landing with proper loading times, above the fold, …
  2. Ads or someway of people knowing you working
  3. The product itself right in place, working as your features promise
  4. Stripe or some way to get the ultimate feedback that what you do is valuable

And…this is it?

Cant I get better?

Of course you can.

And its all about asking these 3 questions:

  • Whats working
  • Whats not
  • Whats next: whats the biggest blocker to make my idea better in reality?

Some math first

Say your TAM is: 100k people every year

Then, 1% of them get to know that you exist when they are on a BANT state: that goes to…1k

You should know your LTV, and your conversion rate.

Making the income: LTVConversion1k = 1000,0011000 = 100$ a year

Wait…I get that little?

After all the tinkering, the building, the promotions…

Arent you even covering adquisition and operational costs?

Lets push the levers to change that.

With a very important one been the OpeX in growth, aka ads. Driven by psyc effects.

A Video Explanation

Im assuming you have a proper ATF (above the fold essentials configured) to minimize the Time to Value.

With proper atf instructions to Gemini you go from:

landing page vite

You can have cool videos embeded into your site, like these sites do:

  1. https://www.okticket.es/
  2. https://www.zoho.com/mail/
  3. https://www.mrpresident.es/
  4. https://flashhub.io/
  5. Thanks to these I also learnt to ask about this and got it working at my genbi.jalcocertech.com

To: Your users on high-intent mobile searches will now see the headline + interactive input + video proof all in their first view

alt text

Or just friendly and converting desins https://kursy.ikliszcz.com/

A better FAQ

In general, a better copy.

You are paying ~1$ for 5 seconds of attention.

At least get the email via signup.

Emails to show that you are still there

Pros say that every email should contain: diversion, information, Venta.

Sell a transformation.

Not the vehicle, but the pain removal and dream outcome destination.

But send emails…to whom?

You should be able to query the registered at Firebase/Firestore: so I put together these scripts

You will need the firebase console SDK creds to get the service-account.json

This will also be useful to unsubcribe users:

alt text

git clone https://github.com/JAlcocerT/slubne-chwile-y26
#git pull
cd slubne-chwile-y26/slubnechwile
#docker compose -f docker-compose.cloudflare.yml up -d --build

# 1. Check Wedding Details (Firestore)
node --env-file=.env scripts/list-users.mjs #--csv

# 2. Check login accounts (Firebase Auth)
node --env-file=.env scripts/list-auth-users.mjs

β”‚ (index) β”‚ Email β”‚ Names β”‚ Paid β”‚ Storage β”‚ Created β”‚ Last Seen β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ 0 β”‚ ‘@gmail.com’ β”‚ ‘ba & do’ β”‚ ‘❌’ β”‚ ‘0.00 MB’ β”‚ ‘1/13/2026’ β”‚ ‘Never’ β”‚ β”‚ 1 β”‚ ‘@gmail.com’ β”‚ ‘Test1 & test2’ β”‚ ‘❌’ β”‚ ‘0.00 MB’ β”‚ ‘1/13/2026’ β”‚ ‘1/24/2026, 11:02:59 PM’ β”‚

I was doing so first with the slidev Firebase branch version. Same here.

Then, get to know email DRIP.

It’s a descriptive metaphor for the slow, steady “dripping” of automated email messages over time, like water from a faucet, rather than a sudden flood.

The term evokes gradual nurturing of leads through timed sequences.

DRIP x Mailtrap ESP

Here https://github.com/JAlcocerT/make-landing/tree/master/mjml-email I tested Mailtrap API x Python and some templating.

Open in Google Colab

But it was time to use it for: /slubne-chwile-y26/z-emails

Taking this to the project: I needed some orchestrator, but it wont be driven by CRON, but via GHA with hourly checks.

#node --env-file=.env scripts/orchestrate-drip.mjs
node --env-file=.env scripts/orchestrate-drip.mjs --dry-run

Creating and testing the templates is simple:

alt text

node scripts/test-email.mjs --step welcome --name "JAlcocerT" --email "test@example.com" #this one creates a local html

But hey, make it match your web/product UI/X for consistency:

alt text

#node --env-file=.env scripts/test-email.mjs --send
node --env-file=.env scripts/test-email.mjs --step welcome --name "Jul" --email "sometestmail@gmail.com" --send
node --env-file=.env scripts/test-email.mjs --step social --name "Jul" --email "othertestemail@gmail.com" --send

Now just orchestrate the bulk sent, as per their current DRIP status:

#node --env-file=.env scripts/list-drip-status.mjs
node --env-file=.env scripts/orchestrate-drip.mjs

And anyone trying the free tier should have opted-in for this

#node --env-file=.env scripts/test-email.mjs --step welcome --name "Jul" --email "sometestmail@gmail.com" --send
#every email contains a reference the the firebase UUID https://slubnechwile.com/unsubscribe?email=jesalctag%40gmail.com&uid=YOUR_REAL_FIREBASE_UID
node --env-file=.env scripts/test-email.mjs --step welcome --uid YOUR_REAL_FIREBASE_UID --send #this connects them to the email autom
node --env-file=.env scripts/toggle-unsubscribe.mjs --resubscribe
###docker compose -f docker-compose.cloudflare.yml up -d --build
#docker logs slubnechwile-app

No email DRIP, unsubcribed and erased from DB. Simple.

I needed to add a docker volume with the `` for the container to pull data from Firestore

cd slubnechwile/scripts
nano service-account.json
#git pull
#node --env-file=.env scripts/list-drip-status.mjs #now you can see Unsubscribed as YES
#node --env-file=.env scripts/orchestrate-drip.mjs --dry-run #and no action will be taken around email marketing for such user

FireStore

MailTrap Orchestrated via GHA

So, am I going to be orchestrating who to send what?

No way.

This:

cd ./slubnechwile
node --env-file=.env ./scripts/orchestrate-drip.mjs

Is going to be ran by github actions: hourly and free, with this config

Whatever your user journey is, most likely than not you will send after a follow up.

Same for upsales.

Workflow StagePrimary MetricPurpose
Attract & ConvertCACMeasuring the efficiency of your sales and marketing “engine”.
DeliveryGross ProfitMeasuring the efficiency of your production or service “engine”.
RetentionLTVMeasuring the long-term value of the customer relationship.

So consider this email DRIP orchestration as a way to keep CaC constant and move up the LTV.

The Goal: You want a “Deliver” workflow so efficient (high Gross Profit) and a “Convert” workflow so effective (low CAC) that you reach the Payback Point as quickly as possible.

Private Repositories: GitHub provides 2,000 free minutes per month.

  • This script takes about 30-45 seconds to run.
  • Running hourly (24 times/day) = ~720 runs per month.
  • 720 runs * 0.75 minutes = 540 minutes per month.
  • This is well within the 2,000-minute free allowance.

All working with this architecture around the email marketing.

graph LR
    A[User Sign Up] --> B[Firebase Auth UID created]
    B --> C[Wedding Doc created with ID = UID]
    C --> D[marketing_status initialized]
    E[GitHub Actions - Every 1h] --> F[orchestrate-drip.mjs]
    F --> G[Query Firestore for pending leads]
    G --> H[Check marketing_status]
    H --> I[Send Email via Mailtrap API]
    I --> J[Update Firestore marketing_status]

One of the biggest advantages of this custom approach is that you own the logic.

In traditional marketing SaaS:

  • When an email doesn’t send, you don’t know why (API limit? Filter? Logic error?).
  • You can’t easily “dry run” how changes will affect 1,000 existing leads.

In this Lean Drip:

  • Total Transparency: Every decision made by the engine is logged. You can see exactly which condition was met (or not) in your GitHub Actions history.
  • Safe Testing: The --dry-run flag allows you to test logic changes against your real database without actually sending a single email or changing a single record.
  • Easy Debugging: If something breaks, you get a standard Node.js stack trace. You are debugging “code,” not a proprietary UI tool.

The magic happens at this gha workflow


Conclusions

I hope that you understand the rules of the game that you are playing.

Talento vs perseverancia (But bee critic, dont hit the same wall 150 times knowing the game helps).

Got your copy right?

Did 2-3% of the people who entered the landing signed up?

Most of them wont pay right away.

But you can remember them about your proposed value equation:

How can I Improve my MicroSaaS

You should simplify to the max the user journey.

How exactly?

Well, You cant get to places that you dont know they exists.

To open your mind to new possibilities, you can always try these:

Dare to get some goodies, as I have here:

FAQ

How did I came up with all this?

Just doing.

alt text

And with some inspiration.

Even Reqable has one: Tools -> More QR-Code

Open in Google Colab

Even with a SliDev VUE Components like this one you can generate QRs!

You got the code here

QR Code

Google TAG

For GAds, you will need a DUN number if you are doing this is a company.

alt text

alt text

R2

alt text

alt text

alt text

alt text

alt text

alt text

PostHog

alt text

alt text

Matches regex: ^https://slubnechwile\.com(/.*)?$

alt text