Access: /settings/integrations.
Integrations
Each provider has a card with:
  • Provider name + logo
  • Number of connected credentials
  • Aggregate status (active / failed)
  • + Connect button → opens the connect modal

Supported providers

ProviderCredential type
emailSMTP — host, port, user, password, sender info, encryption
linkedinCookie session (li_at, JSESSIONID, user-agent)
telegramBot token from BotFather

Connect flow

SMTP connection drawer. Fields:
  • Host, port, encryption (ssl/tls/none)
  • Username, password
  • Sender name + email
After connecting, a background job runs the login test:
  • SMTP — connect + auth
  • LinkedIn — fetch self profile
  • Telegram — getMe API
The status badge transitions from pendingactive (green) or failed (red + reason).

Status badges

BadgeMeaning
pendingLogin test in progress
activeOK, ready to use
failedLogin failed — see error
revokedExternal invalidated the credential (cookie expired, password changed)
disabledManually disabled

”Auto-reply” drawer on a credential

Each credential has an Auto-reply drawer accessible from the ”…” menu on the card. Today it only renames the credential. Per-credential autoreply config (prompt override, working hours, sender blacklist) — coming soon.

Dedup

The system fingerprints the external account (LinkedIn URN, SMTP user@host, Telegram bot ID). Two credentials with the same external account are rejected with duplicate externalId.
A given LinkedIn cookie can only live in one credential. Adding the same li_at again is rejected.

When a credential dies

The background login worker flips the status to failed / revoked. Workflows using the credential pause the messaging node — once the credential is fixed, runs resume automatically.
Linking products to a credential, explicit worker start/stop, raw test (without saving), Zalo provider — coming soon.