Channels & multi-source intake
Tickets can come from any channel without losing their provider metadata.
Email is the channel that ships today. Behind it sits a generic framework so Slack, Microsoft Teams, and web chat will plug in without restructuring the data model. Every comment carries the channel it came from, so cross-channel context survives.
Email channel (IMAP + SMTP)
ShippingIMAP poller per channel with SMTP outbound (multipart/alternative, STARTTLS / SMTPS). Threading via Message-ID / In-Reply-To. Inbound HTML rendered in a sandboxed iframe with DOMPurify.
Channel framework
ShippingGeneric channels table + per-provider JSONB config. The channel_messages ledger preserves the inbound message envelope (from_address, external_id, raw_metadata).
Channel-aware comment rendering
ShippingComments carry both channel_metadata and content_format; the frontend picks ProseMirror for markdown/plaintext and a sandboxed iframe for HTML email.
Auto-acknowledgement
ShippingPer-channel auto-ack toggle sends a confirmation reply when a new ticket lands.
User signature
ShippingPer-user signature appended to outbound channel replies via a unified ReplyBody builder.
Channels admin UI
ShippingProvider config (IMAP host/port/auth, SMTP), test-connection buttons, live runtime status (last poll, error history, enabled toggle).
Slack, Microsoft Teams, web chat
PlannedThe framework is in place; new providers plug into the same channel shape. None of the additional providers ship yet.
Want to see it in action?
Join the waitlist for early access, or browse the rest of the catalogue.