Skip to content

Inbound Channels ​

Everything that reaches Seredina ends up as a ticket, no matter which door it came in through — that convergence is literally what the product's name means. This page covers how to configure each inbound channel; for outbound notifications (Slack, Teams, your own webhook), see Outbound Webhooks.

Email ​

Settings → Email Channels → New channel offers three kinds of mailbox:

  • Microsoft 365 / Outlook and Gmail / Google Workspace — sign in with OAuth. Both providers have turned off (or let admins turn off) plain-password IMAP/SMTP, so this is the way to connect a company mailbox. Server names and ports are filled in for you.
  • Other (IMAP/SMTP) — any provider that still accepts a username and password: IMAP credentials to read, SMTP credentials to reply.

Every secret (passwords, OAuth client secret, refresh token) is encrypted at rest with ENCRYPTION_KEY (AES-256-GCM) — never stored in plaintext.

Connecting Microsoft 365 or Gmail ​

Seredina doesn't ship a shared OAuth app: you register your own in your Microsoft or Google account (it's free and takes a few minutes), then paste its client ID and secret into Seredina. The redirect URI to register is shown in the New channel dialog — it's your server's address followed by /api/email-channels/oauth/callback, so WEB_ORIGIN (or API_PUBLIC_URL) must be set to the address people use in the browser.

Microsoft 365 (Azure portal → Microsoft Entra ID → App registrations):

  1. New registration → any name → supported account types "this organizational directory only" → redirect URI of platform Web = the URI Seredina shows.
  2. API permissions → Add → APIs my organization uses → Office 365 Exchange Online → Delegated: IMAP.AccessAsUser.All and SMTP.Send. Also add Microsoft Graph offline_access. Click Grant admin consent.
  3. Certificates & secrets → New client secret; copy the value.
  4. Copy the Application (client) ID and Directory (tenant) ID from the Overview page.
  5. Make sure the mailbox has Authenticated SMTP enabled (Microsoft 365 admin center → user → Mail → Manage email apps).

Gmail / Google Workspace (Google Cloud console):

  1. Create (or pick) a project and enable the Gmail API.
  2. OAuth consent screen: user type Internal for Workspace (for a personal Gmail account use External and add yourself as a test user); add the scope https://mail.google.com/.
  3. Credentials → Create credentials → OAuth client ID → Web application, add the redirect URI Seredina shows, and copy the client ID and secret.

Then in Seredina choose the provider, enter the mailbox address, client ID and secret (and for Microsoft optionally the directory ID), and click Save and sign in. Sign in as the mailbox and accept; you're sent back to the Email Channels page with the channel Connected.

If the provider later revokes access (password reset, admin removed the app, secret expired), the channel changes to Reconnect needed with the reason, stops being polled, and a reconnect link restarts the sign-in.

How mail is processed ​

The worker checks every connected mailbox by polling (every EMAIL_POLL_INTERVAL_MS, 30 seconds by default) — it's not a push subscription. A new email from an unknown sender creates a ticket; a reply to an existing thread gets added as a message on the matching ticket. Attachments are saved on the ticket (up to 5 per email, 8 MB each — anything that doesn't fit is named in a note on the message), and replies go out from the same mailbox the customer wrote to. A mailbox that fails to log in shows the error on the Email Channels page.

Emails to your customers ​

Everything a customer gets by email uses your logo and accent color from Branding. That includes agent replies, the "we received your request" acknowledgement, the "request resolved" email with its satisfaction survey, and portal sign-in links. It is written in your company's language, and a small "Powered by Seredina" line sits under the message.

Set it up in Settings → Customer Emails:

  • Email language: Spanish (the default) or English. Everything Seredina writes for you is in this language: the default texts, buttons, the footer, sign-in and password emails, and notifications to your agents.
  • Sender name: shown on the From line, for example IT Support <support@yourcompany.com>. Empty means your company name.
  • Logo and banner: upload a PNG, JPG or GIF (up to 2 MB), or paste the address of an image hosted elsewhere. The logo goes at the top of every email; without one, the Branding logo is used. The banner is a wide image under it: 1200 × 400 px recommended, shown 600 px wide, and it can link somewhere.
  • Company signature: goes under every email: team name, phone, hours.
  • Quote the customer's last message under each reply, and add the satisfaction survey to the "resolved" email.

Each automatic email has its own card:

EmailSent whenOn by default
AcknowledgementA customer opens a request by email, in the portal or the catalogYes
Agent replyAn agent replies publiclyAlways
Request resolvedThe request moves to a resolved statusYes
Request closedThe request is closedNo

Edit a card's subject and message with variables such as {{contact.name}}, {{ticket.number}} or {{ticket.subject}}; click one to insert it. Preview shows the email with sample data, and Send me a test sends it to your own address. Restore default undoes your changes.

Each agent adds their own signature under Account security.

Images need an address your customers can reach

Mail clients load the logo and banner from your server's WEB_ORIGIN. If Seredina is only reachable inside your company network, customers outside it won't see uploaded images. Use a public address, or paste the URL of an image hosted on your website.

Out-of-office replies, bounces and mailing lists still become tickets, but never get an acknowledgement, so two autoresponders can't answer each other forever.

API ​

For your own integrations — your site, a script, any system that can make a POST. See REST API for the full technical detail with examples.

Embeddable chat widget ​

A <script> tag that turns any web page into a chat channel, with no account or credential involved. See Embeddable Widget.

Telegram ​

Settings → Telegram — connect your own bot (created with @BotFather) by pasting its token. A direct message to the bot creates a ticket; the agent replies from the console like any other channel, and the reply reaches the user through Telegram.

Requires a real public URL

Telegram delivers messages by calling your API directly — you need API_PUBLIC_URL configured with a real, internet-reachable HTTPS address. localhost doesn't work for this particular channel. See Environment Variables.

Monitoring alerts (NOC/SOC) ​

Settings → Monitoring Integrations has copy-paste-ready instructions for connecting:

  • Grafana Alerting — a webhook-type "contact point" pointing at /v1/alerts/grafana, which accepts Grafana's native payload with no transformation needed.
  • Zabbix — an action/notification script that calls the generic /v1/alerts endpoint.

Both turn a firing alert into a ticket, with the alert's severity mapped to a ticket priority. It's the same generic mechanism documented in REST API — no backend-specific integration is needed for every new monitoring tool, anything that can send a POST with a Bearer token works.

Released under AGPL-3.0-only.