✉️ Email channel

Every inbox email, answered and tracked.

Pipe support@ straight into OpsIQ: each inbound email becomes a native ticket, the AI drafts or sends a grounded reply by email, and your team picks up only what needs a human — all on one threaded timeline. Transactional and broadcast email run through the same authenticated relay, so SPF, DKIM and DMARC pass and your messages land in the inbox, not spam.

1inbox → one timeline
DKIMsigned per message
AIdrafts your replies
0tickets lost
What it does

Your inbox, the chat widget and tickets — one timeline.

Email stops being a separate silo. It becomes just another channel feeding the same AI, the same tickets and the same audited history.

📥 Email piping

support@ becomes a ticket queue.

Point your support mailbox at OpsIQ (forwarding rule or IMAP fetch). Every inbound message becomes a native ticket with the sender resolved to a contact, the subject as the title, the body as the first reply, and attachments ingested inline. Replies on the same thread append to the same ticket — no duplicate tickets, no lost context.

🤖 AI auto-reply by email

Grounded answers, sent back to the sender.

The same brain that runs your chat widget reads the email, answers from your knowledge base and the customer's account, and either drafts a reply for an agent or sends it automatically — your choice per workspace.

🧵 Threaded matching

Replies land on the right ticket.

Message-ID, In-Reply-To and References headers are matched so a customer's follow-up appends to the original ticket instead of opening a new one.

📨 Transactional email

Receipts, resets, notifications.

Password resets, ticket updates, CSAT surveys, invoice receipts and 2FA codes all send through the authenticated relay with templated, branded HTML.

📣 Broadcast & campaigns

Announcements and newsletters.

Send product announcements, promotion welcome emails and newsletters to segmented audiences — with consent honoured and unsubscribe handled.

✅ Deliverability built in

SPF, DKIM and DMARC, aligned.

The SMTP relay signs every outbound message with DKIM and aligns SPF and DMARC for your sending domain, so mailbox providers trust your mail and it reaches the inbox.

Inbox to ticket

An email arrives. A ticket exists. Nothing falls through.

OpsIQ fetches or receives the message, extracts the sender, subject, body and attachments, resolves the sender to an existing contact (or creates one), and opens a native ticket on the right queue. Routing rules can auto-assign by keyword, tag by department, and apply your SLA clock — all before a human has looked at it.

IMAP / forwardingContact resolvedAttachments ingestedAuto-routedSLA startedThreaded
Channelsupport@ mailbox
Becomesnative ticket #4821
Requesterresolved to contact
Attachmentsingested inline
Routingrules → billing queue
SLAfirst-response clock started
Reply & deliver

Answers go out signed — and land in the inbox.

Agent and AI replies are sent back to the customer by email through the OpsIQ relay, threaded so the conversation stays intact in their mail client. Every outbound message is DKIM-signed and SPF/DMARC-aligned for your domain, with bounce and complaint handling feeding back into deliverability health.

Threaded repliesDKIM-signedSPF/DMARC alignedBounce handlingBranded templates
Relayrelay.opsiqai.com
DKIMsigned per message
AlignmentSPF + DMARC pass
ThreadingIn-Reply-To preserved
Healthbounce / complaint tracked
📬 Connect your mailbox

Point support@ at OpsIQ in minutes.

Add an IMAP mailbox — Gmail, Outlook or cPanel — give it a friendly name, route it to a department, and test the connection live before you save. A cron job polls it every few minutes; no MX change required to get started.

Add mailbox

IMAP in, routed to a department.

Each mailbox carries its own host, port and encryption, a username and password, the mail folder to watch, and the team it feeds. Hit Test for a real IMAP login before saving, then Poll now to pull mail on demand.

Friendly name + email — e.g. "Support Inbox" / [email protected].
Host, port & security — imap.gmail.com : 993, SSL / TLS / None.
Route to department — every message from this box lands on the right queue.
Enable polling — toggle a box on or off; OpsIQ checks it on the next cron tick.
Live imap.gmail.com PORT 993 · SSL Support Inbox [email protected] → Billing dept FOLDER · INBOX [email protected] [email protected] [email protected] TEST CONNECTION Connected 312 messages in folder Polling enabled · every 3 min POLL NOW 3 new messages pulled into tickets POLLING Last polled 11:42 · cron
Two ways in

IMAP fetch or a forwarding rule.

Give OpsIQ IMAP credentials to fetch new mail on a schedule, or set a forwarding rule from support@ to your OpsIQ pipe address. Either way, inbound mail starts becoming tickets immediately — and you can OAuth-connect Gmail / Outlook for app-password-free access.

IMAP polling — host, port, SSL/TLS, folder; tested with a real login.
Forwarding rule — point support@ at your pipe address, no MX change to start.
Many mailboxes — run sales@, billing@ and support@ side by side, each routed.
Live IMAP fetch scheduled poll every 3 min · cron Forwarding pipe address no MX change OpsIQ pipe → resolves & routes dept route
📥 Inbound → ticket

Every email becomes a native ticket.

The ingestor reads the message, resolves the sender to a contact (or creates one), opens a ticket with the subject as title and the body as the first reply, and ingests attachments inline. Follow-ups thread onto the same ticket — no duplicates, no lost context.

Thread matching & attachments

Replies land on the right ticket.

Message-ID, In-Reply-To and References headers (plus the requester) are matched so a customer's reply appends to the original ticket. Attachments — receipts, screenshots, PDFs — are decoded and stored on the timeline.

Sender resolved — matched to an existing contact or created automatically.
Header threading — In-Reply-To / References append instead of duplicating.
Attachments ingested — files travel into the ticket, not a separate inbox.
Routing & SLA — rules auto-assign and the first-response clock starts at once.
Live INBOUND · support@ From: [email protected] Invoice #2291 looks wrong Charged twice — receipt attached. receipt.pdf · 84 KB email → ticket TICKET #4821 · OPEN Invoice #2291 looks wrong Requester: Maria · Acme Co · resolved to contact billing receipt.pdf SLA started FOLLOW-UP REPLY "Any update?" — same thread In-Reply-To matched ✓
🤖 AI email replies

Grounded answers, in your voice.

The same brain that runs your chat widget reads the email, answers from your knowledge base and the customer's account, and either drafts a reply for an agent to approve in the Email Drafts queue, or sends it automatically — your choice, per workspace.

Email drafts queue

Review, edit, regenerate — then send.

Pending AI-drafted replies queue for review. Open the incoming message, edit the draft inline, hit Regenerate for a fresh take, or Send reply to deliver it to the customer by email. Nothing reaches the customer until you choose to.

Grounded in account + KB — answers from real data, refuses to invent facts.
Approval workflow — drafts wait in the queue; agents edit and send.
Auto-send option — let confident answers go out hands-free, per workspace.
OpsIQ Writing — the same assist composes broadcasts and ticket replies too.
Live AI-DRAFTED REPLY re: Invoice #2291 · to [email protected] Hi Maria, You were billed twice on #2291. I've refunded the duplicate $48.00 — it lands in 3–5 business days. grounded in account + KB brand voice ✓ Regenerate Send reply
✅ Deliverability

Signed, aligned — and in the inbox.

Outbound email leaves through one transport you control: pin a Mailgun / SendGrid / Postmark / Resend / Amazon SES connector, or configure SMTP as a fallback. Every message is DKIM-signed and SPF/DMARC-aligned for your domain, so mailbox providers trust it.

Email settings

One screen for everything outbound.

Pin an outbound connector as the preferred transport, configure SMTP as the fallback, and set a From identity. A 24-hour delivery panel shows sent, failed and a breakdown by transport — with a warning if OpsIQ is still falling back to PHP mail().

Pinned connector — Mailgun, SendGrid, Postmark, Resend, Amazon SES.
SMTP fallback — STARTTLS / SSL, used if the connector send fails.
24h delivery stats — sent, failed and a by-transport breakdown.
Send a test email — verify the transport end to end before going live.
Live OpsIQ relay signs & aligns relay.opsiqai.com SPF pass · aligned DKIM signed per message DMARC policy pass Inbox not spam DELIVERY HEALTH · 24H 1,284sent 6bounced 1complaint postmarktransport
📨 Transactional & broadcast

From a single receipt to a whole audience.

The same authenticated relay carries one-to-one transactional mail — password resets, 2FA codes, ticket updates, CSAT surveys, invoice receipts — and one-to-many broadcasts to your agents or segmented audiences, with consent honoured and unsubscribe handled.

Broadcast composer

Announcements that fan out cleanly.

Compose a broadcast with the OpsIQ Writing assist, pick all active agents or a selected subset, and send. Each run is logged with date, subject, scope and sent / failed counts so you can see exactly what went out and to whom.

Transactional mail — resets, 2FA, ticket updates, CSAT, receipts.
Recipient scope — all active agents or selected agents only.
Send log — every broadcast with date, subject, scope, sent & failed.
Consent honoured — audience sends respect consent and unsubscribe.
Live Broadcast New routing process All active agents [email protected] [email protected] [email protected] [email protected] [email protected] SENT 5 0 failed
🧩 Templates, domains & logs

Branded, personalised, accountable.

Outbound mail uses templated, branded HTML with merge tokens; your From identity and signing are configured per sending domain; and every send is recorded so you can audit delivery and protect your sender reputation.

🎨

Templates & tokens

Resets, receipts, ticket updates and CSAT use branded HTML templates with merge tokens like the recipient name and a unique link — personalised, on-brand, consistent.

🌐

Per-domain sending

Set the From email and From name per workspace; connectors override with their own configured identity. DKIM is signed for your domain so the right reply-to and signature ride every message.

📊

Delivery logs

A 24-hour panel breaks down sent, failed and by transport; broadcasts keep a full history with sent / failed counts; bounces and complaints feed back into deliverability health.

↩️

Bounce & complaint handling

Hard bounces and spam complaints are tracked and surfaced, so problem addresses stop receiving mail and your sender reputation stays clean.

🔁

Connector or SMTP

Pin a provider connector as the preferred transport with SMTP as the automatic fallback — one send path for CRM email, campaigns, proactive rules and ticket replies.

🧪

Test before you ship

Live IMAP connection tests on the way in, and a one-click test email on the way out, so you verify both ends before a single customer is affected.

⚖️ How it compares

A real help desk — not Gmail with labels.

A fair look at where the OpsIQ email channel sits next to the usual shared-inbox tools.

CapabilityOpsIQFrontHelp ScoutGmail-as-helpdesk
Email → native ticket✅ Built-in✅ Yes✅ YesLabels only
AI drafts grounded in your KB + account✅ CoreAdd-onAdd-on (AI)None
Approve-then-send draft queue✅ YesPartialPartialManual
Unified with chat + tickets + CRM✅ One workspaceInbox onlyInbox + docsNone
Header thread matching (no dupes)✅ Yes✅ Yes✅ YesThreads, not tickets
DKIM/SPF/DMARC handled for you✅ Relay + connectorsPartialPartialDIY DNS
Transactional + broadcast on same relay✅ YesLimitedLimitedDIY
Bounce & complaint tracking✅ Yes✅ Yes✅ YesManual
Bring your own provider (SES/Postmark…)✅ Connector or SMTPLimitedLimitedn/a
Pricing modelFlat planPer-seatPer-seatPer-mailbox
🧭 Outbound router

One send path, every fallback covered.

Every outbound message — agent reply, AI auto-reply, transactional, broadcast — enters a single router. It tries your pinned connector first, then any other configured connector, then SMTP, and only falls through to PHP mail() as a last resort, warning you when it does.

Deterministic transport

Pin a default, keep your fallbacks.

Pin one connector as the preferred outbound transport so every send is predictable. If that send fails, the router cascades to your remaining connectors, then SMTP — so a single provider outage never silences your support inbox. A fallback warning fires the moment OpsIQ has to use PHP mail(), because most hosts throttle it.

Pinned connector — choose the preferred outbound default explicitly.
Cascade on failure — connector → other connectors → SMTP → mail().
Mail fallback warning — flagged the instant it lands on PHP mail().
One path for all mail — CRM, campaigns, proactive rules, ticket replies.
Live Outbound reply / relay Router picks transport Pinned connector Postmark · preferred Other connectors Mailgun · SendGrid · SES SMTP fallback STARTTLS / SSL PHP mail() · last resort ⚠ fallback warning fires Delivered via pinned connector transport=postmark · 0 fallbacks
🧵 Thread matching

Replies thread on headers, not guesswork.

Every outbound message gets a minted, persisted Message-ID. When a reply comes back, OpsIQ matches In-Reply-To and References against that ID — so the follow-up appends to the original ticket instead of opening a duplicate. An atomic Message-ID claim makes ingestion idempotent, even if the poll runs twice.

Message-ID minting & idempotency

One message, one ticket — guaranteed.

The router mints a unique Message-ID, stores it, and preserves In-Reply-To / References on the way out. Inbound replies are matched on those headers (plus the requester). An atomic claim on the Message-ID means a re-run of the poller can never double-ingest the same email.

Message-ID minted & persisted — stored, then matched on reply.
In-Reply-To / References — headers preserved both directions.
Atomic idempotency claim — a double poll never double-ingests.
Requester fallback — matched to the contact when headers are stripped.
Live OUTBOUND re: Invoice #2291 Message-ID: <a91f@opsiqai> INBOUND REPLY re: Invoice #2291 In-Reply-To: <a91f@opsiqai> header match ✓ same thread TICKET #4821 · 2 messages ↳ reply appended — no new ticket In-Reply-To matched Duplicate poll · same Message-ID idempotency claim → rejected, not re-ingested
📝 Drafts queue

From inbox to approved reply — one lane.

Inbound mail produces a pending AI draft. An agent edits it inline, regenerates for a fresh take, or approves it — and only then does it leave by email. RFC-3834 suppression and a per-sender rate limit keep auto-replies away from bounces, daemons and broken filters.

Edit · regenerate · approve

Nothing ships until you say so.

Each inbound message lands in the Email Drafts queue with a grounded AI draft attached. Tweak it inline, hit Regenerate to re-run the AI with the same context, or approve to send. RFC-3834 suppression skips auto-responders, mailing lists and no-reply senders, and a 3-per-hour per-sender cap stops reply loops dead.

Inline edit — quick tweaks before the customer ever sees it.
Regenerate — re-run the AI without losing the thread context.
RFC-3834 suppression — never auto-reply to bounces or daemons.
Per-sender rate limit — 3/hour cap stops loops from broken filters.
Live INBOUND AI DRAFT · PENDING AGENT SENT maria@acme AI draft grounded · pending review Edit inline ↻ Regenerate Approve & send DKIM ✓ SUPPRESSION & RATE LIMIT mailer-daemon Auto-Submitted: auto-replied Precedence: bulk RFC 3834 no auto-reply Suppressed loop prevented
🛡️ Reliability & security

The engineering buyers actually vet.

The unglamorous parts that decide whether an email channel survives a real load: bounded polling, hardened timeouts, header-injection defence, and webhook authenticity.

⏱️

Polling performance budgeting

The poller works to a wall-clock budget with per-mailbox caps, so a slow AI draft on one busy inbox can never stall the whole sync. Each tick stays predictable.

⛓️

IMAP timeout hardening

Connect, read and command timeouts are bounded to 8–12 seconds. A dead or hanging mail host costs roughly 20 seconds at most — never an unbounded stall.

🔐

SSL certificate validation

Certificates are validated by default. Self-signed certs are a fine-grained, per-mailbox opt-in for the rare internal host — secure unless you deliberately relax it.

🧱

Header injection defence

CRLF and NUL sequences are stripped from every header value before send, so a malicious subject or name can never inject extra SMTP headers or recipients.

🪪

Webhook authenticity

Inbound provider webhooks are verified by HMAC-SHA256 or Basic Auth, with a 5-minute timestamp window to block replays — and each connector gets its own unguessable path.

↩️

Bounce auto-skip

Hard bounces raise an email.bounced activity and the address is auto-skipped in outreach, so you stop mailing dead inboxes and protect sender reputation.

Full feature list

Everything in Email Channel.

Every capability, grouped. ★ marks a stand-out.

FeatureWhat it does
Inbound
IMAP Mailbox Connect ★Gmail, Outlook or cPanel; test the connection live before saving, cron polls every 3 minutes.
Inbound Email → Native Ticket ★Sender resolved, subject becomes the title, body the first reply, attachments inline — one message, one ticket, one timeline.
Sendmail Pipe ReceiverAlias-pipe raw email straight into tickets via your MTA — no MX change required.
Header-Based Thread Matching ★Message-ID, In-Reply-To and References matched so replies thread instead of duplicating.
Inbound Idempotency NEWAtomic Message-ID claim means a double poll never double-ingests the same email.
Attachment IngestionDecoded, stored and displayed inline from multipart MIME — files travel into the ticket.
Department Routing by Recipientsupport@, billing@ and sales@ routed by the To / Cc / Delivered-To headers into the right queue.
Multiple Mailbox SupportUnlimited parallel mailboxes — support@, sales@, billing@ side by side, each routed.
Polling Performance Budgeting NEWWall-clock budget plus per-mailbox caps so AI drafts never stall the poll.
IMAP Timeout Hardening NEW8–12s bounded timeouts; a dead host costs ~20s at most, never an unbounded stall.
SSL Certificate Validation Toggle NEWValidated by default; self-signed certs are a per-mailbox opt-in. Secure by default.
AI & replies
AI-Drafted Email Replies ★Grounded in the account and your knowledge base, written in your voice, mode set per workspace.
Email Drafts Queue ★A review page where every pending reply waits — approve-then-send.
Draft Regeneration NEWRe-run the AI with the same context for a fresh take, without losing the thread.
Draft Editing NEWInline tweaks before send — quick edits, no separate composer.
Auto-Reply Mode Control ★Auto-send, draft-first or hands-off, chosen per workspace.
Auto-Reply Suppression (RFC 3834) ★Skips mailers, bounces, no-reply senders and lists — never auto-reply to a daemon.
Per-Sender Auto-Reply Rate Limit NEW3-per-hour cap per sender stops reply loops from broken filters.
Outbound & deliverability
Outbound Email Router ★One send path: pinned connector → other connectors → SMTP → mail() last resort.
Email Connector: MailgunInbound webhook plus the Messages API for outbound relay.
Email Connector: SendGridInbound Parse plus outbound over Basic Auth.
SMTP FallbackSTARTTLS or SSL used automatically when a connector send fails.
Test Email Send NEWFire a live test through the chosen transport to confirm delivery end to end.
DKIM Signing ★Per-message DKIM plus a unique Message-ID so providers trust your mail.
SPF & DMARC Alignment ★Relay and connector domains aligned so authentication passes.
Per-Domain From IdentityGlobal or per-department From identity; connectors can override.
Reply-To Preservation ★In-Reply-To and References preserved so replies land on the same ticket.
Message-ID Minting & Persistence NEWMinted, stored and matched against inbound replies.
Department Signatures NEWPer-department signatures appended to outbound mail automatically.
Header Injection Defence ★ NEWCRLF and NUL stripped from header values to block SMTP header injection.
Multipart MIME NEWtext/html plus attachments — text clients see text, HTML clients see styled.
Attachment Support NEWAttach up to 15 files at 15MB each on outbound replies.
Analytics & logs
24-Hour Delivery Stats NEWSent and failed, broken down by transport, on a live 24-hour dashboard.
Email Audit Log ★ NEWEvery email logged with direction, status, transport and thread — fully auditable.
Transactional & broadcast
Broadcast Email to AgentsSend to all or selected agents; every run is logged.
OpsIQ Writing for Broadcasts NEWCompose broadcasts with the AI Assist writer.
Broadcast History & Audit NEWFull history — who sent what, scope and sent / failed counts.
Transactional EmailResets, 2FA codes, receipts, CSAT and ticket updates over the signed relay.
Compliance & suppression
Email Consent Tracking ★unknown / granted / revoked states block mail to anyone opted out.
Unsubscribe HandlingThe unsubscribe link revokes consent and logs the activity automatically.
Bounce Detection ActivityHard bounces raise an email.bounced activity so you stop sending to bad addresses.
Bounce Impact on Outreach NEWBounced contacts are auto-skipped in sequences and outreach.
Integration, config & security
Email Connector Context Provider NEWMailbox, draft, stats and domain config surfaced to the AI.
Pinned Connector Selection NEWPin one connector as the preferred outbound default.
Mail Fallback Warning NEWWarns the instant OpsIQ has to fall back to PHP mail().
Webhook Signature Verification ★HMAC-SHA256 or Basic Auth blocks forged inbound email.
Webhook Timestamp Validation NEWA 5-minute window blocks replay attacks.
Unique Webhook Paths per Connector NEWUnguessable per-connector paths prevent enumeration.
Allowed Self-Signed Certs (Per-Mailbox) NEWFine-grained opt-in for self-signed certs — secure by default.
Common questions

Everything teams ask before they sign up.

How do I connect my support mailbox?

Two ways: set a forwarding rule from support@ to your OpsIQ pipe address, or give OpsIQ IMAP credentials to fetch new mail on a schedule. Either way, inbound mail starts becoming tickets immediately — no MX change required to get started.

Does the AI reply automatically, or just draft?

Your choice, per workspace. You can have the AI auto-send grounded replies for confident answers, draft replies for an agent to approve, or stay silent and only suggest. Anything it isn't confident about is handed to a human with full context.

Will my emails land in spam?

The relay DKIM-signs every outbound message and aligns SPF and DMARC for your sending domain. You add a couple of DNS records once; after that, mailbox providers authenticate your mail and it reaches the inbox. Bounces and complaints are tracked to protect your sender reputation.

Do replies create duplicate tickets?

No. OpsIQ matches Message-ID, In-Reply-To and References headers (and the requester) so a customer's reply appends to the original ticket. New subjects from the same person open a new ticket only when they're genuinely a new request.

Which sending provider do you use for outbound?

Your choice. Pin a Mailgun, SendGrid, Postmark, Resend or Amazon SES connector as the preferred transport, or configure SMTP directly. If a connector send fails, OpsIQ falls back to SMTP, and only falls through to PHP mail() if neither is set — which the Email Settings screen warns you about, because most hosts cap it.

Can I run more than one mailbox?

Yes. Add as many IMAP mailboxes as you need — support@, sales@, billing@ — each with its own host, folder and the department it routes to. The cron poller checks every enabled box on each tick, and you can also "Poll now" or "Test" a mailbox on demand.

What gets sent through this besides support replies?

The same authenticated relay carries transactional mail — password resets, 2FA codes, ticket updates, CSAT surveys and invoice receipts — plus broadcasts to your agents or segmented audiences. Each broadcast is logged with its subject, scope and sent / failed counts, and audience sends honour consent and unsubscribe.

Email channel

Turn your inbox into an AI-powered queue.

Forward support@ to OpsIQ and watch the first email become a ticket — and a reply — in minutes.