What this is
One shared mailbox for the whole team, instead of mail landing in one person's personal inbox where nobody else can see it. Every message is stored in our own database first, then shown in Slack and in the dashboard.
Getting in
The dashboard is at https://nexmail.nexprove.com. Sign in with your work email address and the password an administrator gave you.
There is no sign-up page and no “forgot password” email. Accounts are created by an admin under Settings → Users. If you are locked out, an admin can set you a new password immediately.
Change the password you were given, at Settings → Account. Doing so signs you out everywhere else, which is intentional. Minimum 12 characters.
| Role | Can do | Cannot do |
|---|---|---|
| Member | Read every conversation, reply, assign, add internal notes, change status, change their own password | Change domains, routes, providers, Slack settings, or other people’s accounts |
| Admin | Everything a member can, plus all of Settings and user management | — |
The inbox
Every conversation the team has received, newest activity first. A conversation is one email thread — the original message and every reply, in order.
| Filter | Shows |
|---|---|
| All | Everything except archived |
| Unread | Conversations nobody has opened since the last message arrived |
| Open | Still needs a response |
| Pending | Waiting on the other person |
| Closed | Dealt with |
| Archived | Closed and hidden from every other view |
| Assigned to me | Conversations assigned to you |
| Unrouted | Mail that arrived at an address with no rule. It is stored, but nobody was notified in Slack — worth checking |
Search covers the subject, the people involved, and the message text. You can also filter by domain, by the address it was sent to, and by Slack channel.
Reading and replying
Open a conversation to see the whole thread: who sent what, when, to which address, and any attachments.
| Action | What it does |
|---|---|
| Reply | Sends a real email back to the sender, threaded so it appears in their existing conversation |
| Assign | Marks who is dealing with it. Visible to everyone |
| Close / Reopen | Changes the status. Nothing is deleted |
| Add note | Internal only. Never emailed to anyone. Use it to leave context for a teammate |
Sending a new email
Compose starts a fresh conversation. Pick the address it should come from, add recipients, write, send.
The From field is a dropdown rather than free text, and it only offers addresses on domains that are configured and active. That is not an arbitrary restriction: sending as a domain we have not set up authentication for gets the message treated as spam and damages the reputation of the domains we do use.
Working from Slack
Most of the day-to-day work can be done without opening the dashboard at all. Mail arrives in the channel, and you can read it, answer it, hand it to someone and close it from there.
When mail arrives
The bot posts a card into the channel that address routes to, showing who it is from, which address it was sent to, the domain, the subject, the number of attachments and a preview of the message. Attachments are linked, never uploaded into Slack.
It is a preview, not the whole email. Long messages are cut off — use Open conversation for the full text. Later messages on the same thread appear as replies under that first card, so a conversation stays in one place.
The four buttons
| Button | What happens |
|---|---|
| Reply | Opens a dialog. Sends a real email to the person who wrote in |
| Open conversation | Opens the full thread in the dashboard, in your browser |
| Assign | Opens a picker of teammates, and posts a note in the thread saying who assigned it to whom |
| Close | Marks the conversation dealt with, and says so in the thread. Nothing is deleted |
Sending a reply
- Press Reply on the message card.
- A dialog opens. The top shows who it is going to, which address it will come from, and the subject — check these, because you cannot change them here.
- Type your reply. Plain text, up to 8,000 characters.
- Press Send. The email is handed to the gateway, which queues it and sends it. Slack never sends mail itself.
- The reply appears in the thread so the rest of the team can see it went, and it appears in the dashboard as part of the conversation.
The reply is threaded, so the recipient sees it as part of the conversation they started rather than as a new email out of nowhere.
Commands
Type /email on its own for the list of commands, a count of what is open and unassigned, and a link to the inbox.
| Command | What it does |
|---|---|
/email | Help, plus how many conversations are open and how many are unassigned |
/email search <text> | Finds up to 10 conversations by subject, the address they came to, or a participant. It does not search message bodies — use the dashboard for that |
/email open <id> | Shows the subject, address, status and assignee, with a link to the full thread |
/email assign <id> | Assigns it to you. That is the default when you name nobody |
/email assign <id> @person | Assigns it to someone else. An email address works too |
/email close <id> | Closes it and says so in the thread |
Command replies are private — only you see them. Actions that change something (assign, close) also post a short note into the conversation thread, so the team can see what happened and who did it.
What you cannot do from Slack
- Start a new email. Slack can only reply to a conversation that already exists. To write to someone first, use Compose in the dashboard
- Attach a file to a reply. The reply dialog is text only. Send it from the dashboard if it needs an attachment
- Change who it is from, or the subject. Both are fixed to the conversation
- Search message text. Slack search covers subjects, addresses and participants only
If Slack goes quiet
Slack notification is a separate step from storing the mail. If the bot stops posting, the email is still being received and is still in the dashboard — only the announcement failed. Check the Unrouted filter first, in case the address simply has no rule pointing at a channel, then the Health page.
If the bot cannot post to a channel at all, the usual cause is that it was never invited to it. Slack rejects posts to channels an app is not a member of.
Who gets notified where
When mail arrives, the system decides which Slack channel to announce it in, in this order:
- An exact rule for the address it was sent to
- A catch-all rule for that domain
- The domain's default channel
- A global fallback channel
- No rule matched — the mail is still stored and appears under the Unrouted filter, but nobody is notified
Mail is never discarded for want of a rule. If something lands in Unrouted, it means a route is missing, not that the message was lost.
When something looks wrong
| Symptom | What to do |
|---|---|
| A test email never appeared | Check the Unrouted filter first. If it is not there either, check the Health page — if the worker is down, mail is queued rather than lost |
| A reply has not arrived | Open the conversation. A queued or failed reply says so on the message, with the reason |
| Slack went quiet but the dashboard works | Slack notification is a separate step. Mail is still being stored; only the announcement failed |
| An attachment will not download | Attachments on sent mail were not recorded before September 2026. Older sent messages may show none |
| You are locked out | Wait 15 minutes, or ask an admin to set a new password |
The Health page shows every dependency — database, queue, mail provider, Slack, worker — with the last successful check and the last error. It never shows credentials.
What it does not do yet
- No bulk sending, mailing lists or contact management. It is a shared inbox, not a campaign tool
- No drafts. A half-written reply is lost if you navigate away
- No snooze, labels, canned replies or signatures
- Read and unread are shared across the team, not per person
- It runs on one machine. When that machine is off the dashboard is unavailable — incoming mail is retried by the sender rather than lost, but it will be delayed
If something here would genuinely help, say so — this list is a set of decisions, not a set of oversights, and decisions can change.