SendSetsDocs

Unibox

A unified inbox across all connected mailboxes, with categories and threading.

One inbox for every connected mailbox. Read, sort, and reply from a single screen instead of logging into each account. Three columns: a scope rail for picking what to look at, a conversation list, and a thread view where you read and reply.

Verified warmup mail stays out of Unibox, including your mailbox's Sent copies and warmup run by SendSets Cloud. It does not create inbox notifications or trigger reply classification. After an upgrade, the consumer automatically checks existing messages in batches and removes confirmed warmup from Unibox. This leaves the messages in your email provider and keeps ordinary conversations intact.

Layout

The columns are yours to size. Every choice here is remembered in the browser you made it in, so the inbox opens the way you left it.

ControlWhat it does
The divider between the list and the threadDrag it to widen the conversation list so long subjects fit, or to give the space back to the thread. It also takes the keyboard once it has focus: arrow keys nudge it (hold Shift for a bigger step), Home and End go to the narrowest and widest the window allows, Enter (or a double-click) puts it back to the default.
Collapse at the bottom of the left navigation, or bShrinks SendSets's own navigation to an icon rail and gives the width to the page. Row labels become tooltips; unread mail keeps its count badge and an open Advisor finding shows as a coloured dot on the icon. The same control expands it again.
The contact button in the thread headerShows or hides the contact panel on the right. It starts closed when no preference is saved. Opening or closing it sticks across conversations, and existing preferences are preserved.

How wide the list can get depends on the window: the thread always keeps enough room to read a message, and the contact panel counts toward that when it is open, so the widest setting is narrower on a laptop than on a large monitor.

On a screen narrower than 1024px the contact panel is an overlay rather than a column, so it always starts closed there. Below 768px the list and the thread take turns on the full screen instead of sitting side by side.

Keyboard

The conversation list takes the keyboard, so a triage pass never needs the mouse. Press ? anywhere in SendSets for the full list; these are the ones that act on the inbox.

KeyDoes
j / kMove down and up the list. From no selection, j takes the first conversation and k the last, whichever way the list is sorted.
g g / GJump to the first or last conversation.
EnterOpen the top conversation when nothing is selected yet.
EscapeClear the selection. Inside the search box it gives the keyboard back to the list.
/Put the caret in the list's search box.
cLabel the open conversation.

The shortcuts modal only lists what the screen you are on can actually do, so these rows appear while the inbox is open and not elsewhere.

Folders

The rail is two short groups and then your mailboxes. The first group is where you work: All mail, Inbox, Unread, Awaiting reply, Agent drafts, Snoozed. The second holds the rest of the mail folders, plus Scheduled alongside them, so direction is visually clear instead of one combined list:

FolderGroupShows
InboxFirstInbound mail, plus anything filed in a custom folder at the provider
DraftsSecondMessages sitting in a mailbox's drafts folder
SentSecondOutbound mail, campaign and manual
ArchiveSecondArchived (Gmail's All Mail, the Archive folder elsewhere)
SpamSecondJunked at the provider
TrashSecondDeleted

Scheduled sits between Sent and Archive. It is a view rather than a folder, listing replies queued to send later, and it reads naturally next to Sent.

Opening Inbox from the main navigation starts in the Inbox folder. Sent messages live in Sent; choose All mail when you want inbound and outbound messages together. An Inbox conversation still shows its complete history, including your replies, when you open it.

Each message starts in the folder the provider has it in: IMAP special-use folder attributes, Gmail labels, and Outlook well-known folders all map to the same six. Moves at the provider (junking a message, clearing it out of spam) follow on the next sync. Drafts are also reconciled: a draft the mailbox no longer holds is removed here too, so the fresh copy Gmail saves on every autosave does not leave the previous ones behind. You can also file a conversation yourself, which moves it here without moving it at the provider; see filing a conversation. The active row is highlighted grey, unread counts sit on the right in blue, and hovering a folder reveals a three-dot menu with Mark all as read.

Spam and Trash stay out of every other view: the All mail view and the unread badge only count the folders you actually work.

Spam and Trash start from when you connect

The initial import that runs when a mailbox is first connected covers Inbox, Sent, Archive, and Drafts. It deliberately skips the existing contents of Spam and Trash, whose history would consume the import budget that belongs to real conversations. Both folders fill normally from the moment the mailbox is connected, so they show what arrives from then on rather than what was already there.

Scopes

ViewShows
All mailEvery conversation across every mailbox (except Spam and Trash)
UnreadAt least one unread message
Awaiting replyThe other side is waiting on you
Agent draftsConversations where the inbox agent has a reply waiting for review
SnoozedSnoozed for later
ScheduledReplies queued to send later

Below those, the rail lists each mailbox with its unread count, plus your Labels and Tags. Long lists collapse to the first few with a Show all toggle and an inline filter. For a slice of time (today, the last week), use the date range in the filters rather than a view; the list's title shows which view you are in, with how many conversations are loaded.

Counts come from the server in one request, so they always match the rows. The current view and open conversation live in the URL (/app/unibox/unread), so refreshing, bookmarking, and sharing all land in the same place.

Search (press /) covers the sender and recipients, the subject, and the text of the messages themselves, so a name, an address, or a phrase from the middle of an email all find the conversation. A half-typed word matches as a prefix, so results narrow as you type rather than appearing only once a word is finished. Quoted phrases match exactly, OR widens, and a -word excludes.

It searches the scope you are in. When that finds nothing, the empty state offers Search all mail, which widens to every folder and keeps what you typed. Changing view yourself clears the box, so a query typed for one scope never silently filters the next.

The filter button next to the title opens a small panel that narrows the list on the spot: read state, a date range (today, the last 7 or 30 days, or two dates), sender, labels, mailboxes (or a whole tag of them), and sort order. Anything you add shows as a chip under the search box, and each chip removes itself with one click. A view that already fixes one of these, such as Unread or a single mailbox, does not offer that control again.

Threading

Each row is a conversation, not a message, with a count next to the sender when more than one message is inside. Opening it shows every message in order, with the message count and the owning mailbox under the subject. Replies and new inbound mail land in the same thread. Rows group under Today, Yesterday, This week, and Earlier headers.

The list loads more conversations as you reach the end of it, and it keeps its place: opening a conversation, or leaving the inbox and coming back, returns you to the row you were on rather than the top of the list.

Threading applies on both sides. A reply you send carries the provider's thread id, which nests it in your own mailbox, and an In-Reply-To header naming the last message in the conversation, which is what nests it for the recipient. Their mail client only ever sees the header: a thread id means nothing outside the mailbox that issued it.

Keyboard navigation

j / k move between rows, Enter opens, Esc closes, / focuses search, c labels. Press ? for the full list.

Reading a message

The newest message in a conversation opens expanded, along with anything still unread. Older messages collapse to their preview line; click the header (or the preview) to open one. Bodies load per message, so a long thread does not pull down every message at once.

What you see is the message as it was sent: paragraphs, line breaks, lists, tables, and inline images are all preserved, and special characters and emoji render as themselves rather than as entity codes. The conversation list still shows a one-line preview, which is a summary of the message and not the message itself.

HTML mail renders in an isolated frame, so a sender's styling cannot leak into the dashboard and nothing in the message can run code. Links open in a new tab and carry no referrer. If the stored copy of a message cannot be read, SendSets shows the preview it has and says so instead of failing to open the conversation.

SendSets removes its open-tracking pixels from the displayed copy, including quoted messages. Reading mail here, whether in Inbox, Sent or another view, does not record a campaign open. The delivered email keeps its tracking pixel for recipient opens, and ordinary images still display.

Recognized quoted history collapses behind Show quoted text. Click it to read the full chain. Messages made entirely of quoted content and ambiguous inline replies stay visible. Outgoing messages from the connected mailbox have a blue left border and an Outgoing badge.

Categories and labels

Categories are the workspace's conversation labels, shared with the rest of SendSets, so Interested means the same thing on a contact as it does here. They are shared with the rest of the team too: a category anyone creates is available to everyone, and a conversation one member labels shows that label to the next. Label with the tag button in the conversation header or c: search existing categories, tick what applies, or type a name and Create. A conversation can carry several.

Labeled conversations show colored chips on the row and in the header, and each category appears in the rail with its own count for one-click filtering. Labels are manual; SendSets never auto-tags.

Categories vs tags

Categories label conversations. Tags label the mailboxes themselves (grouping accounts by client or domain). Both filter from the rail, but they describe different things.

Read state

A conversation is unread when any message inside is unseen, marked by a blue dot in the margin, bolder text, and a blue timestamp. Opening it marks its messages seen and updates the counts.

Read state travels both ways. A message arriving already read is stored that way, and reading a conversation here marks it read in the mailbox itself, so Gmail, Outlook and any IMAP mailbox stop showing it bold too. Mark as unread does the same in reverse, and Mark all as read on a folder carries the whole sweep across. Only a real change travels: opening a conversation you have already read costs nothing at the provider.

The relay runs on the worker that holds the mailbox, just after SendSets's own copy is updated, so the dashboard never waits on it. If the mailbox is between workers at that moment, or the provider refuses, SendSets keeps your read state and the mailbox keeps its own; nothing retries, because the next sync reports whatever the provider actually thinks.

Filing a conversation

The thread header carries three filing actions, on the row above the message on a wide screen and behind the three-dot menu on a narrow one:

ActionDoes
Mark as unreadPuts every message in the conversation back to unread and closes it
ArchiveMoves the conversation to Archive, so it leaves Inbox
DeleteMoves the conversation to Trash, so it leaves every view except Trash

Archive and Delete both offer Undo on the confirmation toast. Open the Trash or Archive folder and the same header offers Move to inbox, so nothing filed by accident is stuck.

Filing here does not move the message at the provider

Unlike read state, Archive and Delete are SendSets's own filing. The message keeps its place in Gmail, Outlook, or whatever mail client the mailbox belongs to, and deleting a conversation here never deletes mail there. The next sync will not undo your filing either: SendSets records where the provider has each message separately from where you filed it, and follows the provider only when the provider itself moves the message. So junking a message in Gmail still reaches SendSets, and an ordinary sync pass does not.

Replying

Reply, forward, or hover any single message to reply to it specifically. The composer appears when you ask for it or return to a conversation with a saved reply or forward. Replies go from the mailbox that owns the thread, so conversations stay on one account. You can apply a saved template or Insert booking link.

Replies and forwards save after a short typing pause, and save the latest edits when you close the composer, leave the conversation, or reload. Returning to the thread reopens a saved draft, including one addressed to an older message. Discard removes it; successfully queuing a send removes it too. Undoing a send restores the message for editing.

These reply drafts are personal to your signed-in user and workspace in this browser. They do not sync to other devices, appear in the mailbox's Drafts folder, or travel in a workspace export. Clearing browser data removes them. Draft saved confirms browser storage succeeded; Draft not saved means you should copy your text before leaving.

AI drafts

AI lives at your cursor, not in the toolbar. With the cursor in the body, click the sparkle (or press ⌘J) for three options: write something inline, Draft a reply from this thread, or Continue writing.

A thread draft is grounded in the whole conversation, the contact's record and campaign membership, and your workspace voice profile. Grounding reads the messages themselves, not their preview lines, with quoted history stripped and the most recent messages given the most room, so the draft answers what was actually asked rather than the opening sentence. While it writes, a review bar offers Keep, Retry, Adjust (steer with an instruction like "shorter"), or Discard. Nothing sends until you press Send. Each draft costs AI credits.

Select any text for a floating Edit with AI pill: quick actions (improve, shorten, expand, fix grammar, friendlier, more formal) or a free instruction, rewriting just the selection with Undo and Again one click away. One credit per rewrite. The same control works in the campaign step editor.

An edit applies your instruction and leaves everything else alone: it does not rewrite the passage into a fresh email, and "fix the grammar" changes the grammar and nothing more. Personalization tokens, conditions, spintax, AI blocks, form links and links (their destinations included) are carried through unchanged, so rewriting copy never drops a {{.FirstName}} or an opt-out link. Bold, italic and headings inside the rewritten selection are not preserved, so select around them when the styling matters. When the model decides the passage already satisfies the instruction, the review row says No change rather than claiming a rewrite you cannot see.

Set your voice profile under Settings, Workspace: what you sell, who to, and how you want to sound. It grounds every AI writing surface.

For drafts written automatically on every inbound reply and held for approval, turn on the inbox agent. It never sends on its own.

Composing

Compose in the header, the n key anywhere, or the Email action on a contact opens a docked window so you can keep browsing while writing.

The window title bar carries Full screen, which lifts the same composer to the centre of the screen over a dimmed backdrop for writing something longer. Click the button again, click the backdrop, or press Escape to drop it back to the corner with the draft intact. A second Escape closes the window, saving to Drafts as usual. Minimize always docks to the bottom right.

To searches contacts as you type and accepts raw addresses. Suppressed recipients (bounced, complained, unsubscribed) are flagged before you write a word, and the send is blocked.

Auto mailbox selection

From defaults to Auto, scoring every active mailbox in the current workspace for the recipient: an existing conversation with them wins first (contacts should keep hearing from one address), then the most remaining daily budget, with domain auth health as the tiebreaker.

The picker shows the pick and its reason before sending. Opening it reveals every mailbox with a budget bar (sent today against its limit), a history badge, and an auth-health dot, so overriding is informed. The menu filters by mailbox tag; with a tag selected, Auto picks within that group only, which is the from_tag_id field on POST /unibox/compose.

Drafts and history

Typing autosaves to Drafts after a pause. Closing keeps the draft; sending or emptying removes it. Drafts sit under the Compose button, resume on any device, and are personal rather than shared.

With a recipient set, History slides out every conversation you have had with them: tabs split the full thread from just your sent mail, search narrows by subject, rows open the real thread, and the panel notes which mailbox you usually use.

⌘J, Edit with AI, and a Suggest action for an empty subject all work here too. AI drafts are grounded in the contact record, your full correspondence with that address, and your voice profile, and the review card shows what it used. When it genuinely cannot tell what the email is for, it asks one short question instead of inventing a pitch.

Sending controls

ControlBehavior
Undo sendInstant sends wait 30s by default (adjustable 5 to 120s under Settings, Profile). A header countdown offers Cancel, which returns the email to the composer intact. Applies to API sends with send_mode: instant too.
ScheduleQueue a send for later. It appears inline in the thread as a dashed card and in the Scheduled view, cancellable any time. A usage meter warns as you approach the queued-send cap.
SnoozeClears a conversation until a time you pick, up to 90 days out, with presets or a custom time. Un-snooze now brings it back immediately.

Scheduled and smart-queued sends skip the undo window, since they already wait. Cancel them from the Scheduled view, or via DELETE /unibox/scheduled/:task_id.

Realtime

Nothing needs refreshing. New mail appears in the list, updates the open thread, and raises the unread count on its own. Read-state changes, replies, scheduled sends, snoozes, and label changes all refresh the affected views, keeping rail counts, the list, and the open thread consistent.

Keeping inboxes healthy

Replying promptly supports sender reputation, which warmup and good deliverability practice protect. See Deliverability.

On this page