User guide

Email Management

Looking for what it does rather than how to use it? Read the Email Management overview .

Last verified against the codebase: 2026-07-28. See “How this document is verified” at the end.


What it is

Email Management covers everything Solidlio does with mail: the 50 templates it sends from, the brand and legal identity those templates wear, the consent and suppression records that decide who may be written to, the delivery results that come back, and the inbound paths that turn a customer’s email into a ticket or a supplier’s email into a vendor invoice.

It spans two services.


Concepts

ConceptWhat it is
TemplateA Handlebars subject + HTML body, keyed by name. 50 ship in code; an organization can override any of them by name.
BrandThe logo, colour and display name an email wears. Resolved through a platform → MSP → organization cascade.
Sender identityThe legal entity named in the CAN-SPAM/CASL footer: registered name, postal address, and one contact point. Never gated by plan.
Consent recordA CASL record that an address agreed to receive a category of mail, with the source, IP, user agent and proof link that were captured at the time.
SuppressionAn address the platform will not deliver to. Carries a reason, and — for preferences — the organization it belongs to.
Email messageOne row per email sent or received, with body, recipients, delivery status and attachments. What a ticket’s email thread is rendered from.
AP mailboxA shared inbox polled for supplier invoices. One per organization. Unrelated to inbound ticket mail.
Domain gateAn outbound allowlist. In environments where it is on, mail to a non-allowed domain is redirected to a development mailbox instead of the recipient.

Two different inboxes. “Inbound addresses” (Queues screen) create tickets. “AP mailboxes” (Email → Inbound Mailboxes) create supplier invoices. They share nothing but the word mailbox.


Roles and permissions

platform administrator > MSP administrator > MSP technician > organization administrator > power user > CUSTOMER`

ActionFloor
Read the template catalogueany authenticated user
Create / edit / delete / toggle a templateorganization administrator
Preview or render a templateorganization administrator
Read email messages, stats, threadsany authenticated user
Delete an email messageorganization administrator
Read or write email settings for an orgorganization administrator
Send a branded test for an orgorganization administrator
Read consent records / suppression listorganization administrator
Record or revoke consentorganization administrator
Add to / remove from the suppression listorganization administrator
Lift a hard-bounce or spam-complaint blockplatform administrator
Manage AP mailboxes (all operations)organization administrator
Send an arbitrary email, ticket or invoiceMSP technician, or an internal service key
Send the platform diagnostic testplatform administrator
Unsubscribe from a link in an emailnobody — the signature token in the link is the authorization

Every read and write is additionally constrained to the caller’s account. A customer-portal user is constrained to their single organization.

MSP technician ranks above organization administrator, so the MSP technician floor on the send routes admits MSP staff and platform admins only — deliberately, since those routes accept a caller-supplied recipient and would otherwise be a phishing primitive on the tenant’s verified sender identity.


Where each screen lives

ScreenPath
Email delivery & complianceSettings → Email & Compliance (/org/settings/email, /msp/settings/email)
Inbound AP mailboxes/org/settings/email/mailboxes, /msp/settings/email/mailboxes
TemplatesSettings → Templates (/org/settings/templates)
Sender identity/org/settings/sender-identity, /msp/settings/sender-identity
Email-to-ticket addressesSettings → Queues (/org/settings/queues, /msp/settings/queues)
Microsoft 365 mailboxes/org/integrations/m365, /msp/integrations/m365/mailboxes
A ticket’s email threadTickets → (any ticket) → Email tab

Walkthrough — an email becomes a ticket and gets answered

  1. Solidlio de-duplicates it on the Message-ID header, so a webhook retry or a double-forward does not create the ticket twice.
  2. Routing rules decide the queue. Rules match on sender, senderDomain, subject or body using EQUALS, CONTAINS, STARTS_WITH, ENDS_WITH, REGEX, IN_LIST or NOT_EQUALS. They are evaluated highest-priority first and the first match wins; if none match, the address’s default queue is used. An invalid regular expression is logged and does not match, so a broken rule cannot silently swallow mail.
  3. A ticket is created with source EMAIL, and the queue’s members are notified. If the sender is a known member of the organization they become the requester; otherwise the ticket is attributed to an existing member.
  4. Open the ticket and go to the Email tab. The full conversation is there — inbound left, outbound right, with attachments.
  5. Press “Reply by email”. The reply goes out through a Microsoft 365 shared mailbox registered on the account. If none is connected, the tab says so and links to the screen that adds one rather than offering a Send that would fail.
  6. The customer replies. It threads back onto the same ticket by the [TKT-…] token in the subject, or — if that has been lost — by the In-Reply-To header, and lands as a new public comment. A ticket sitting in WAITING_CUSTOMER reopens to OPEN automatically.

Walkthrough — making your emails look and read as yours

  1. Go to Settings → Sender Identity and fill in your legal name, postal address, and at least one contact point (website, email or phone).
  2. Set your brand on the branding screen. Your logo and display name must be set on the same tier — a logo with no display name is dropped, because a logo cannot render beside another company’s name.
  3. Go to Settings → Email & Compliance → Delivery and send yourself a test. It renders with your brand, your footer and a working unsubscribe link — exactly what a recipient receives.
  4. If the logo is missing, check the compliance panel on the same screen. A tier with an incomplete sender identity is excluded from the brand cascade entirely: you may only wear a brand you can be legally identified behind.

One entity, throughout. The company in the From name, the subject and the header is the same company named in the footer. If your identity is incomplete, Solidlio’s own brand and footer are used rather than mixing the two.


Walkthrough — connecting a supplier-invoice mailbox

  1. Go to Settings → Email & Compliance, then Inbound Mailboxes, and press Connect a mailbox.
  2. Choose the provider. Microsoft 365 needs the directory (tenant) ID, application (client) ID and a client secret. IMAP needs host, port, username and password. Credentials are encrypted at rest with AES-256 and are never displayed again.
  3. Set the polling interval (1–1440 minutes; default 5) and the folders that processed and failed messages are moved to.
  4. Optionally restrict which sender domains are accepted, and which are blocked.
  5. Press Save, then Manage → Test connection. This performs a real provider handshake and ingests nothing.
  6. Press Poll now to run the pipeline once immediately. Otherwise the mailbox is polled automatically on its interval; the schedule is re-read once a minute, so a change takes effect without a restart.

One mailbox per organization. Deleting a mailbox disables it and keeps its history.


Templates

50 templates ship with the product — 8 ticket, 11 invoice, 13 authentication, 15 notification and 3 marketing. Every one of them has a category, and the category decides whether the compliance footer is attached: AUTH templates never carry an unsubscribe link, because a password reset must not be unsubscribable.

On Settings → Templates each row is marked Default or Customised.

  • Default — the shipped version. Press Customise to create your own copy under the same name; from then on your version is used for that organization.
  • Customised — your own version. Edit changes it; Revert to default deletes your copy and the shipped version takes over again.

The Insert variable buttons offer only variables the sending routes actually supply, grouped by source. A variable a template does not receive renders empty, so inventing one produces a hole in the message that nothing reports.

Preview renders the supplied subject and body with sample data, your brand and the compliance footer — the same pipeline a real send uses.

Templates can also carry SMS or PUSH as their channel. Filter with the channel tabs.


Settings → Email & Compliance has a tab for each.

Marketing mail needs a consent record. Transactional mail — tickets, invoices, authentication — does not. Implied consent expires two years after the business relationship began and is then suppressed automatically; express consent does not expire. The Consent tab warns when implied consents are within 30 days of expiry.

A withdrawn privacy consent (/user/privacy) also blocks marketing mail, even if a CASL record still exists. The subject’s most recent choice wins.

Unsubscribe

Every email that carries the compliance footer carries a one-click unsubscribe link. The link is signed for that recipient and that organization, so it cannot be used to unsubscribe anybody else, and it needs no login. Following it suppresses the address for the organization that sent the mail — not for every company using Solidlio.

Suppression

ReasonWho it blocksCan you lift it?
UNSUBSCRIBEDthe organization that sentyes, from the Suppression tab
MANUALthe organization that addedyes
CASL_EXPIREDthe organizationyes
HARD_BOUNCEeveryoneno — contact Solidlio support
SPAM_COMPLAINTeveryoneno — contact Solidlio support

The last two describe the address, not your relationship with it: the mailbox does not exist, or the recipient reported the mail as abuse. Removing one is how a sending domain earns a reputation problem, so it is not offered.


Delivery tracking

processed sets the message to PENDING, delivered to DELIVERED, bounce to BOUNCED, dropped and spamreport to FAILED. A hard bounce adds the address to the suppression list globally; a spam complaint does the same and deactivates the address’s consent records.

The Delivery tab shows totals, the delivery and bounce rates, and the send queue’s depth. The Message log tab lists every message with its recipients, subject and status, searchable by subject, sender or body.

In production an unverifiable callback is rejected with 401, and a deployment with no verification key configured refuses the callback with 503 rather than accepting unauthenticated events.


The outbound domain gate

The redirected copy gets a subject prefix (default [DEV]) and a footer listing who it would have gone to. Recipients on allowed domains still receive their own clean copy.

The gate bounds where mail may go. It does not bound who may cause mail to be sent — that is what the role floors on the send routes are for.


Every setting

Organization email settings

SettingWhat it doesIf unset
fromNameDisplay name on outbound mailthe platform’s name
fromEmailReply-to addressthe platform’s no-reply
physicalAddressPostal address in the CAN-SPAM/CASL footerthe platform’s address
caslCompliantCASL enforcement modeon
defaultConsentTypeEXPRESS, IMPLIED or TRANSACTIONALEXPRESS
includeUnsubscribeLinkWhether the footer carries the linkon
signature / signatureHtmlStored signature textnone
legalName, addressLine1, addressLine2, city, province, postalCode, country, website, email, phoneThe organization’s own legal identitythe organization’s display name and no address — branding is then suppressed

fromName and physicalAddress must be set together. Setting one without the other would print your street address under Solidlio’s name, or the reverse, in a field the law requires to be accurate — so the API refuses it.

AP mailbox settings

SettingWhat it doesDefault
emailAddressThe mailbox to poll
mailboxTypeMICROSOFT_365, GMAIL or IMAP
pollingIntervalMinutes between polls, 1–14405
processedFolderWhere handled mail is movedProcessed
errorFolderWhere failed mail is movedErrors
allowedSenderDomainsOnly accept mail from these domainsany
blockedSenderDomainsNever accept mail from these domainsnone
autoExtractRun invoice extraction automaticallyper schema
requiresReviewHold extracted invoices for reviewper schema
defaultVendorIdVendor to attribute unmatched invoices tonone
isEnabledWhether the mailbox is polledon

Plan tiers

The emailIntegration entitlement is a ladder: false < BASIC < FULL. It gates the AP mailbox provider, not a count, because a mailbox is one per organization.

CapabilityFreeStarter / EssentialsGrowth / ProfessionalScale / BusinessEnterprise
Send, templates, delivery tracking
CASL consent + suppression management
CAN-SPAM/CASL footer and unsubscribe
Email-to-ticket inbound addresses
Microsoft 365 AP mailbox
Google Workspace / IMAP AP mailbox
Logo and display name on your emails
Brand colour on your emails
No “powered by” attribution

The compliance footer is never gated. Every organization on every plan gets a legally-complete sender identification; the plan decides whose visual brand the email wears, not whether it can be identified.

The gate blocks new configuration only. If a plan is downgraded, an existing mailbox keeps working and its credentials remain editable; only changing it to a provider the new plan does not include is refused.


Troubleshooting

What you seeWhat it means
Email suppressed: User unsubscribedThe recipient unsubscribed from your organization. Visible on the Suppression tab; you can remove it.
Email suppressed: Email address invalidHard bounce. The mailbox does not exist. Only Solidlio support can lift this.
Email suppressed: Marked as spamThe recipient reported the mail as abuse. Only Solidlio support can lift this.
No valid consent for this email category (CASL)Marketing mail with no consent record for that address and category.
Implied consent has expired (CASL)Two years elapsed. The address was suppressed at the same moment.
Marketing consent was withdrawn by the recipient (privacy consent revoked)The subject revoked consent on the privacy screen. That decision outranks any older CASL record.
This address is suppressed because it hard-bounced or reported a spam complaint.You tried to remove an address-level block. Contact support.
organizationId is outside your accountThe organization named in the request belongs to another account.
Insufficient roleThe role floor above rejected the call.
fromName is required when setting a custom physicalAddressThe sender identity is name + address together. Supply both or neither.
Email we send on your behalf must name a legal entity, a postal address and one contact point. Missing: …Your identity override is incomplete. The named fields are the ones to fill in.
A template with name "…" already existsYou already have an override for that template. Edit it instead.
System templates cannot be modifiedYou tried to edit a shipped template directly. Press Customise to make your own copy.
Mailbox configuration already exists for this organizationOne AP mailbox per organization. Edit the existing one.
Microsoft 365 provider requires tenantId, clientId, and clientSecretAll three are needed before the mailbox can be saved.
IMAP provider requires host, port, username, and passwordSame, for IMAP.
Email integration (inbound mailbox) isn't included in your current plan.Your plan’s emailIntegration is false. The response carries an upgrade offer.
Connecting a GMAIL mailbox isn't included in your current plan.Google Workspace and IMAP need FULL; your plan is at BASIC.
Mailbox configuration is not activeYou pressed Poll now on a disabled mailbox. Enable it first.
This unsubscribe link is invalid or has been tampered with.The signature token does not match the address and organization in the link.
Your logo does not appear on emails, but does in the portalEither your tier’s sender identity is incomplete, or the tier that supplies the logo supplies no display name. Both are logged by the service.
A customer’s reply opened a new ticketThe [TKT-…] subject token was lost and the reply carried no In-Reply-To header naming a message we sent.

Limits and known behaviour

  • One AP mailbox per organization. Enforced by a unique constraint.
  • The From address is always the platform’s. Per-tenant sending domains require DNS authentication and are not implemented. Tenants supply the From name, the brand, the footer and the reply-to; the envelope sender stays on Solidlio’s verified domain.
  • Suppression is keyed on the address alone. There is one row per address platform-wide. Its organizationId decides its reach for preference reasons, but two organizations cannot hold two different preference rows for the same address at once — the later write wins.
  • Google Workspace is not an inbound ticket provider. It appears on the Queues screen as a “coming soon” tile. Gmail is supported for AP mailboxes.
  • Attachments on inbound ticket mail are parsed but not stored. AP mailbox attachments are stored.
  • A shipped template you have not customised has no database row. It cannot be selected as a queue’s AI auto-reply template until you customise it.
  • Open and click events are logged, not stored. They do not appear in the message log or the statistics.

Questions this guide did not answer?

Ask us. You will get a reply from someone who uses the product every day.

Book a demo Contact us

A 30-minute walkthrough against your own workflow. No slides.