← Case study Marketing

Mail Pilot

You write the campaign once, choose when it should leave, and Mail Pilot sends it from the mailbox you already pay for. The workspace is $10 a month. You can pause, retry anyone who failed, and see who opened or clicked.

  • Your own mailbox, after a connection check
  • Addresses you type, or CSV recipients
  • Unsubscribe remembered, with opens and clicks on one screen
2026 Your mailbox CSV Opens and clicks
Mail Pilot
You write the campaign once, choose when it should leave, and Mail Pilot sends it from the mailbox you already pay for. The workspace is $10 a month. You can pause, retry anyone who failed, and see who opened or clicked.

What you walk away with

You write the campaign once, choose when it should leave, and Mail Pilot sends it from the mailbox you already pay for. You can pause, pick up the people who failed, and see who opened or clicked. The list can be addresses you type or CSV recipients from the sheet you already keep. Every message includes unsubscribe. The campaign screen is where open and click tracking lives, next to the links people used and what just happened.

The workspace is $10 a month. That price is the plan for the account: you subscribe, the working screens open, and you connect a sender. Mail goes out through your own SMTP account, and only after a connection check has succeeded. You are not renting a strange From address for the week. The people on the list see the mailbox they already recognise, or the one you chose to send from.

What you walk away with, after a send, is a campaign you can reopen. It shows who was sent, who is still waiting, who failed, who unsubscribed, and who bounced. It shows opens and clicks for that campaign. If you closed the laptop while the mail was leaving, the send continues. You come back to the same screen, not to a guess about whether it finished.

A later campaign remembers the people who should be skipped. An unsubscribe, a hard bounce, and a complaint stay on the account. You can bring a fresh list next week, typed or from a file, and those addresses are left out. The file is what you brought today. The memory is what the account has learned.

Who it is for

Mail Pilot is for a person or a small team that already has a mailbox and a list. A studio writing to past enquiries. A founder sending a monthly note from the company address. A marketer who is tired of pasting the same message, one recipient at a time, and then losing track of who asked to stop. You want the campaign in one place, and you want it to leave from mail you already control.

You are a good fit if you can say where the list lives and which mailbox should send. You might type twenty addresses for a small announcement, or upload a CSV when the list is longer. You might send now, or choose a time when you will not be at the desk. You want unsubscribe on every message, and you want a screen that tells you about opens and clicks without a separate ritual.

It fits the way a small team actually divides the work. One person writes the subject and the body. Another checks the list, including the rows a file rejected. Someone else looks the next morning and reads the screen. They share an account they intend to share, because the campaign, the sender, and the memory of who unsubscribed belong together. This is the workspace for that send, not a second company inbox.

It is a poor fit if you want Mail Pilot to be the mailbox itself, or if you need a From address you do not already have. You bring the SMTP account. You also bring the decision about what the message should say. Mail Pilot does not invent a list of strangers, and it does not tell you what your open rate ought to be. It sends the campaign you wrote, to the people you added, and it shows you what the campaign recorded.

The mailbox you already pay for

Most teams who need this already pay for mail. The address is on the website, on the invoice, and in the signature. Recipients know it. Moving the campaign to a different sender, for the sake of a tool, is how a note starts looking like it came from somewhere else. Mail Pilot keeps the send on the account you connect.

That choice has a practical side. Replies go where that mailbox already receives them. You read them in the mail program you use every day. The campaign tool’s job is the send, the skip list, and the screen. The conversation after a reply stays in the mailbox, which is where your team already looks.

If you have more than one address, you connect the one this campaign should use, and you wait until the connection check succeeds before you rely on it. A mailbox that fails the check does not get to send. You fix the details, or you connect a different sender, and you try the check again. The campaign waits for a sender that has passed.

The work it replaces

The list lived in a sheet. The message lived in the mailbox. You copied a batch of addresses, sent, and tried to remember who had already received it. A duplicate was easy to miss. A bad row sat in the file until it bounced. Someone who had asked to stop was still on the next version, because the note was in a different tab. Opens and clicks were a feeling, because nothing on the account recorded them.

Scheduling meant leaving a draft and hoping you were at the desk at the right hour. A failure meant scanning a bounce folder and guessing which people to try again. Two people editing the sheet on the same morning produced two lists, and neither was sure which one had already been mailed. The next campaign started from the same messy file, with last month’s problems still in it.

The brief for Mail Pilot is the end of that split. One workspace holds the message, the people, the time it should leave, and the record of what happened. You can pause if you notice a mistake. You can retry the people who failed without starting the whole list again. You can see, on one screen, who opened and who clicked. The sheet can still be where you prepare names. It stops being the only place the truth lives.

You also stop treating “please remove me” as a memory you hope the team shares. Once someone unsubscribes, the account remembers. The next campaign skips them even if the new file still has their address. That is the piece a director feels first: the list can be messy on the way in, and the send still respects the people who asked to stop.

Your own mailbox

You sign in and subscribe. Then you connect the mailbox you already have, the one whose SMTP details you can enter. Mail Pilot stores that connection and will use it only after the connection check succeeds. Until the check passes, that sender stays unused. A campaign cannot leave through details that never worked.

The check is a normal part of setup, not a surprise on the morning you intended to send. You see that the mailbox answered. From then on, that sender is available when you write a campaign. If it later fails a check, sending waits until a new check succeeds. You would rather find that out before the list goes out than halfway through a confused bounce.

You choose this sender on the campaign. The subject and the body are yours. The From side is the mailbox you connected, so the note matches the relationship you already have with the people on the list. Replies still arrive in that mailbox. Mail Pilot’s screen is for the campaign itself: delivery, skips, opens, and clicks.

A daily limit on the sender does not throw the rest of the list away. If the mailbox can only take so many in a day, the people who fit the window go out, and the remaining people stay on the same campaign for later. They are not failed. They are waiting. You can pause and resume the ones still queued. You do not have to rebuild the campaign to finish the list.

Before the first real send

Connect the mailbox, run the check, and send a campaign to a few addresses you control. Read it in the inbox you expect. Click the unsubscribe link and confirm that the address is remembered. Then look at the campaign screen and see the open and the click you just made. That half hour tells you the workspace behaves the way this page describes, on mail you can inspect.

Use the real From address you intend to keep. A test through a different mailbox only proves the other mailbox. The check, the reply path, and the way the message looks to a recipient all belong to the sender you will actually use.

If the check fails, stop there. Correct the details and run it again. The rest of the product, the list and the schedule and the screen, is not useful until the sender is one Mail Pilot is allowed to use.

A list you type, or a CSV

You add people in the way the list already exists. Type addresses when there are few of them. Upload a CSV when the list is a file. You can do both on the same campaign. Typed addresses are checked. A file that is not a CSV is refused. A campaign with nobody on it is refused, so you do not schedule an empty send by accident.

Duplicate addresses are removed. Each address is kept once, even if the file or your typing repeated it. That is the quiet fix for the sheet that grew by copying last month onto this month. The person who receives the message receives it once from this campaign.

Rows the file cannot accept are not sent. They stay with the campaign, and you can download them. Fix those rows in the sheet you started from, if you still want those people, and add the corrected addresses on a campaign that can take them. The download is the record of what was left out, so a bad row does not vanish into a bounce you have to decode later.

The people you add belong to that campaign. A different campaign can have a different list. What carries across is the account memory: unsubscribes, hard bounces, and complaints are skipped even when a new file still contains them. You do not have to scrub those addresses by hand for the skip to hold. You can still look at the file you uploaded and see who you tried to include.

Names in the message

The subject and the HTML body can use the person’s name and their email. Each recipient gets their own name and their own address in those places when the message is delivered. A campaign that uses neither still sends the HTML you wrote. You are not required to personalise. You can, when the note should sound like it was written to one person.

Write the body as the message you want read. Links you include as ordinary web addresses are kept as tracked links, so the campaign screen can show which of them were clicked. You read that on the same page as the opens, rather than in a separate report you have to remember to open.

Keep the list and the wording in step. If the name field is empty for some rows, read the message the way those people will read it before you send. The preview that matters is a real address you control, included on the list, so you see the note as a recipient sees it.

Send now, or later

From the campaign you can send now or choose a later time. The time has to be still ahead. A time that has already passed is refused, and the campaign stays unsent, so you do not accidentally fire a note because the clock moved while you were editing. When you choose later, the campaign waits. You can leave the desk.

A job delivers the mail, including at the time you chose. You do not have to keep the tab open. Pause a campaign that is waiting if you spot a mistake in the subject or the list. Pause stops further queued delivery. Resume continues the people still waiting. You are not starting from zero unless you decide to write a new campaign.

Retry is for the people who failed, not for the whole list. A temporary failure can be tried again. If a recipient still fails, the campaign shows them as failed, and you can retry those people. That puts them back into delivery. It does not resend to everyone who already received the message. A hard bounce or a complaint is remembered for the account and skipped on a later send.

When the campaign is finished, it stays finished. Opening it the next week does not send it again. You read the screen, you leave, you come back, and you are looking at the same campaign plus any later opens or clicks that arrived. If you need to write again, you start a new campaign. The account memory still applies, so last week’s unsubscribes are skipped even if the new file contains them.

A pause you can explain

Pause is for the moment you notice the subject is wrong, or the file included a list you did not mean to use. You stop the rest from leaving, fix what you can, and resume the people who have not been sent yet. The people who already received it are not sent a second copy by the resume.

Tell the person who watches the screen what pause means, the first time you use it. It is not a delete. The campaign is still there. The waiting people are still on it. Resume is the decision that the rest may go.

If the right fix is a different message entirely, leave the paused campaign paused and write a new one for the people who have not been mailed. You can see, on the first campaign, who already got the original. That visibility is the point of keeping the send in one place.

Unsubscribe, remembered

Every message includes unsubscribe, including one-click unsubscribe. A recipient can open the page from the footer and confirm, or their mailbox can complete the one-click path. The address is remembered for your account. Later campaigns skip it. An unknown unsubscribe link does not change your list.

This is the part you stop tracking in a side note. You do not need a column that says “asked to stop” if the next file might be exported without that column. The account holds it. When you upload next month’s CSV, the people who unsubscribed are still skipped, even though their row is in the file. You can explain that to a colleague in one sentence: the file is who we tried to include, the account is who we will not mail.

Hard bounces and complaints are remembered in the same way. A later campaign skips them. You are not asked to rebuild a suppression list by hand before every send. You can still download the rows a file rejected, which is a different set: those people never became recipients. Unsubscribed, bounced, and complained are people the account has already learned about.

Read a campaign after a few people unsubscribe and you will see them on that campaign. The memory is not only a hidden switch. The screen shows the outcome, and the next send honours it. If someone should hear from you again because they rejoined by a path you manage yourself, that is a decision you make with a new address or a new confirmation, not by hoping the skip forgot them.

Opens and clicks on one screen

The campaign screen shows opens, clicks, tracked links, and recent activity. You can read unique opens, total opens, unique clicks, and total clicks for that campaign. Tracked links are the web links from the HTML you wrote. Recent activity is what just happened for recipients. You open one campaign and the picture of that send is there.

That is open and click tracking in the only form this product claims: the numbers and the links for the campaign you sent, on the screen for that campaign. Use it the morning after to see whether the note was opened, which link drew people, and whether anyone unsubscribed or bounced. Use it again a week later. Later opens and clicks still arrive on the same campaign. Reading the screen does not start a new send.

The screen will not tell you what a good campaign is. It will tell you what this one did. A link nobody clicked is a fact you can use on the next draft of the message. A list of recent activity is how you notice a cluster of unsubscribes or failures without exporting five files. Keep the judgement in the team. Mail Pilot keeps the record.

Because the links you wrote are the links being counted, write them as real destinations. A button that goes where you promised is the click you will see. The screen is most useful when the message was clear enough that a click means what you think it means. The wording is still your job. The count is the workspace, sitting where you already are.

A normal working day

Monday you sign in. The plan is already active, and the mailbox passed its check last month, so you go straight to a new campaign. You name it for the week, write the subject, and paste the HTML you and a colleague agreed. You upload the CSV exported from the sheet of people who should hear about this update. Duplicate addresses come out. You download two rejected rows, fix a broken address in the sheet, and add the corrected one by typing it.

You include your own address on the list and send a version you can read. The name fills in. The links look right. Unsubscribe is in the footer. You choose a later time, after the office has closed, and you leave. In the evening the job delivers. You do not stay online for it.

Tuesday morning you open the campaign. Some people have opened. A few have clicked the one link that mattered. One address failed. You retry that recipient rather than resending the whole note. Someone unsubscribed overnight. You see it on the campaign, and you know the next send will skip them. The rest of a long list, held back by the sender’s daily pace, is still waiting on this same campaign. You leave it to continue.

Friday you write the next note as a new campaign. You upload a fresh CSV. The person who unsubscribed on Tuesday is in the file again, because the sheet was not cleaned, and the account skips them anyway. You send now, because this one is short. Then you open Monday’s campaign once more, not to send it, but to see whether the late opens changed anything you want to say next time.

Nothing in that week required a second tool for “who asked to stop” or a guess about whether the timed send happened. The mailbox did the sending. Mail Pilot held the campaign, the list, the pause if you had needed one, and the screen. The sheet is still where the team edits names. The workspace is where the send becomes a record.

The morning after a long list

A long list rarely finishes as a single dramatic moment. Some people are sent. Some are waiting because the day filled up. Some failed. The morning after, you read those groups separately. Waiting means later on this campaign. Failed means you can retry those people. Sent means you leave them alone.

Look at recent activity before you rewrite the message. A handful of clicks on the link you cared about is a different morning from a quiet screen. You still decide what to change. The screen’s job is to make that decision about this campaign, not about a feeling from the inbox.

If you paused overnight, Tuesday starts with a choice: resume, or write a replacement for the people who have not received it. Either way the campaign shows who already got the first version. You are not reconstructing that from a sent folder.

What stays in your control

You choose the mailbox. Mail Pilot does not send until that sender has passed the connection check, and it sends as that mailbox. You choose the subject, the HTML, and whether the name and the email appear in the message. You choose the people, by typing or by CSV, and you can take back the rows the file rejected.

You choose the moment. Send now, or a time that is still ahead. Pause if the rest should wait. Resume when it should continue. Retry the failures without restarting the people who already received it. If the sender can only take so many in a day, the remainder waits on the same campaign. You are not forced to cut the list down to the first window and lose the rest.

You choose the next campaign. A finished one stays finished. The account will keep skipping unsubscribes, hard bounces, and complaints, which is the control you asked for when you turned those events into memory. What you say in the new message is still up to you. So is who you add, as long as the skip list is honoured.

You also choose what the numbers mean. Opens and clicks are on the screen so you can see them. They are not a verdict. A quiet campaign can be the right note to a small list. Mail Pilot will not decorate the page with a target you did not set. The workspace records the send. The team decides what to do next.

Built with

Mail Pilot is a Next.js app in TypeScript, with PostgreSQL holding the account, the campaigns, and the memory of who to skip. Stripe is how the $10 monthly plan is confirmed. Background jobs deliver the mail, including a send you scheduled and a retry of people who failed. The mailbox password is stored encrypted. You do not operate those pieces to send a campaign.

What you operate is the plan, the sender check, the message, the list, the time, and the screen. The stack is there so the send can finish after you close the laptop, so the skip list is still there next week, and so opens, clicks, and tracked links stay on the campaign you actually sent.

A product in this shape, from TechMamba

Mail Pilot is the kind of product TechMamba builds. The price is plain, the mailbox is yours, and the screen shows the campaign instead of a mood about it. You can explain it to a colleague in a minute: we write it here, it leaves from our mail, we can pause and retry, and we can see who opened or clicked.

If you want a workspace in this shape, bring the mailbox you intend to send from and a sample of the list you already keep. Tell us who writes the message, who checks the file, and what “stop mailing this person” has to mean next month. We will map the screens around that: the plan, the sender check, the campaign, the CSV, the schedule, unsubscribe, and the one screen for opens and clicks.

Try the shape on addresses you control before anyone else is on the list. Connect the real mailbox. Pass the check. Send, pause, and read the screen. If that morning feels like the week you are trying to have, this is a brief we know how to take. Bring us the send. We will build the workspace that holds it.

Questions worth asking before you brief it

Which mailbox is the From address, and who can pass a connection check on it? Where does the list live today, and is it a CSV you can upload? Who is allowed to pause a send? What should happen to someone who unsubscribes, bounces hard, or complains, on the next campaign? Do you need to send at a chosen time, or is “now” enough for the first version?

Then walk a small campaign. Subscribe. Connect the sender and wait for the check. Write a name, a subject, and an HTML body that uses a name. Add a few addresses you control and one deliberate duplicate. Upload a CSV with one bad row and download the rejected rows. Schedule a time a few minutes ahead. Pause, resume, and retry a failure if you can produce one safely. Open the screen and find the opens, the clicks, and the tracked link.

Bring the awkward file, not the clean sample. The value of the workspace is what it does with a duplicate, a broken row, and a person who already asked to stop. If those three are visible, the team will trust the next list. If they are hidden, people go back to the sheet.

TechMamba can take that brief without a tour of mail servers. Describe the Tuesday you want: the mailbox, the file, the moment it should leave, and the screen you want the next morning. We will say which parts of Mail Pilot already match, and which decisions are still yours before a line is sent to a real customer.

How a team settles in

The first week is one mailbox and one small list of people who expect a test, or of addresses you own. You learn the check, the CSV, the rejected download, and the screen. You send once at a chosen time so the team believes the job runs without the tab. You unsubscribe one test address and upload it again, to see the skip with your own eyes.

The second week is a real list and a message you were going to send anyway. One person writes. Another checks the rejected rows before the time arrives. You agree what pause is for, so a mistake does not become a second copy to people who already received the first. Tuesday’s screen is part of the meeting, not a screenshot in a chat.

After that, the sheet changes role. It is still where names are gathered and cleaned. It is no longer the record of who was mailed, who failed, or who asked to stop. Those live on the campaign and on the account. People stop asking which copy of the file was sent. They open the campaign.

A new teammate learns it from one finished campaign and one scheduled one. Here is the sender. Here is the list. Here is unsubscribe. Here is the screen the morning after. They do not need the story of how delivery is queued. They need to see a send they can recognise, and a skip they can trust.

What you still do in the mailbox

Replies arrive in the mailbox you connected. Someone still reads them. Mail Pilot does not become the place where a conversation continues. If a person replies “yes, book me in”, that thread lives where your team already works mail. The campaign screen tells you they opened or clicked. It does not answer them.

Bounces you can act on show up as failures you can retry, or as hard bounces the account will skip later. You do not have to mine a bounce folder to know which kind you are looking at. The split is on the campaign. The mailbox can stay the place for human replies.

Keep the From address stable. People trust a mailbox they have seen before. The workspace is there so that familiar address can carry a proper campaign, with unsubscribe and a record, without asking you to send the note by hand.

The next campaign, and the one you leave finished

A week later you sign in and open the campaign you already sent. It is complete. The recipients show who was sent, who failed, who unsubscribed, and who bounced. The screen still has the opens and clicks collected during the week, the tracked links, and recent activity. Nothing in that view starts a new send. You can look, leave, and look again the next morning. Later opens arrive on the same campaign. You do not rebuild it to see them.

When you need to write again, you start a new campaign. You may type a fresh list or upload a fresh CSV. The account still skips the people who unsubscribed, the hard bounces, and the complaints, even if the new file contains them. That is why the memory lives on the account and the file lives on the campaign. The file is who you brought today. The memory is who the account has already learned not to mail.

The rejected download from last week is still the record of rows that never entered that campaign. It does not repair itself. If you fix those rows in the sheet, you upload the corrected ones on the new campaign. A row that is now a real address can become a recipient. A row that is still broken is rejected again, and you can download it again. You can see the loop. You do not have to guess which addresses quietly disappeared.

Leave the finished campaign alone when the new one is what you mean to send. People who already received the first note should not get a second copy because you resumed the wrong record. The screen makes that choice obvious: one campaign is complete, the other is the draft you are about to schedule. Name them so the team can tell them apart in a hurry. The workspace will not merge them for you, which is what you want on a Friday afternoon.

If a daily pace held part of the first list into the following days, those people are still on the first campaign, waiting, not on the new one. Finish that send, or pause it, before you confuse the two lists in conversation. Waiting is a status you can point at. It is not a leftover row in the sheet. Once you trust that, the next campaign stays a new message, and the previous one stays the record of the message you already sent.

What good looks like on the screen

Good looks like a sender that has passed the check, a campaign with a subject you recognise, and a list you can explain. Duplicates are gone. Rejected rows are a file you can open. The send is either waiting for the time you chose, going out, paused, or finished. You can point at each of those without asking someone to interpret a log.

Good looks like unsubscribe on the message you received in your own test, and that same address missing from the next send even though the file still had it. It looks like a failed person retried without the rest of the list receiving a second copy. It looks like opens, clicks, and tracked links on the campaign you are talking about in the meeting.

A long list looks calm the next morning. Some sent, some waiting for the daily pace, some failed, a few unsubscribed. You know which group is which. You do not rebuild the campaign to finish it. You resume, or you retry, or you start a genuinely new note.

Over a month, good looks like the team trusting the account’s memory more than a colour in the sheet. The sheet can be wrong about who asked to stop. The next send should not be. That is the workspace earning its place: the campaign you wrote, from the mailbox you pay for, with a screen you can reopen.

Frequently Asked Questions (FAQ)

What is Mail Pilot?

Mail Pilot is a workspace for email campaigns sent through your own SMTP account. You sign in, subscribe, connect a sender, and use it only after the connection check succeeds. You write a name, a subject, and an HTML body, add people by typing or with CSV recipients, and send now or later. You can pause, retry failures, and read opens and clicks on the campaign.

Does Mail Pilot send through my own SMTP account?

Yes. You connect the mailbox you already have. Mail Pilot uses that sender only after the connection check succeeds. If the check fails, the sender stays unused and a campaign cannot leave through it. Replies still arrive in that mailbox.

What does the workspace cost?

The workspace is $10 a month. When the subscription is confirmed, the working screens open. An account without an active plan stays on the subscription step until the plan is active.

When can I create a campaign?

After the plan is active and at least one sender has passed the connection check. You choose that sender, then enter a campaign name, a subject, and an HTML body. If the sender is no longer verified, delivery waits until a new check succeeds.

How do I add people?

Type addresses, upload a CSV, or do both. Duplicate addresses are removed. A file that is not a CSV is refused. A campaign with nobody on it is refused. The people you add belong to that campaign.

Can I download the rows a CSV rejected?

Yes. Rows the file cannot accept stay with the campaign, and you can download them. They are not sent. Fix them in your sheet and add the corrected addresses on a campaign that can accept them.

Can the message use each person’s name?

Yes. The subject and the HTML body can use the name and the email. Each recipient receives their own. A campaign that uses neither still sends the HTML you wrote. Web links in the body are kept as tracked links on the campaign screen.

Can I send later instead of now?

Yes. Choose a time that is still ahead. A time that has already passed is refused and the campaign stays unsent. You can pause a waiting campaign and resume it. Pause stops further queued delivery. Resume continues the people still waiting. You do not have to leave the tab open while the mail goes out.

What if a message fails?

A temporary failure can be retried. If the recipient still fails, you can retry failed recipients without restarting the people who already received the message. A hard bounce or a complaint is remembered for the account and skipped on a later send.

How does unsubscribe work?

Every message includes unsubscribe, including one-click unsubscribe. The address is remembered for your account, and later campaigns skip it. An unknown unsubscribe link does not change the list. The same memory covers hard bounces and complaints.

What does the campaign screen show?

Opens, clicks, tracked links, and recent activity for that campaign. You can read unique and total opens, and unique and total clicks. The screen records what the campaign collected. Opening it does not send the campaign again.

Will a daily limit drop the rest of my list?

No. If the sender has a daily cap, the rest of the list stays on the same campaign and goes later. Those people are waiting, not failed. You can still pause and resume the people who have not been sent.

Want to Build a Project Like This?

Tell us what you are planning. We will help with the job, the screens, and the stack.

Start a Similar Project