PR Summary

What problems was I solving

The Integrations page showed Slack as a "coming soon" placeholder and could not accurately reflect the live WorkOS connection state because Pipes-backed connections were not synced into the integrations table. There was also no backend service to send tenant notifications to Slack, so users could not pick a channel or subscribe to scheduled digests.

What user-facing changes did I ship

Slack is now a real integration on the Integrations page, with connection-health indicators and a channel-setup section. A new "Slack notifications" section in Notification preferences lets users choose daily/weekly cadence, select analytics and/or digest content, and send a test message. Scheduled digests are posted to the configured Slack channel.

How I implemented it

A new modular slackbot-service (api/core/ports/repositories/adapters/app/impl/workflows/migrations) is registered in the service registry, exposed via web-service tRPC and management gateway GraphQL, and scheduled through a new Temporal task queue. Slack is configured as a WorkOS Pipes provider with web and Slackbot bindings; Pipes connections are synced when the widget token loads. Tenant channel, cadence, and content preferences are stored in a new slackbot_service Postgres table, and a daily/weekly workflow aggregates page analytics before posting a formatted Slack message.

Description for the changelog

Added a Slackbot service that sends daily and weekly tenant digests to a configurable Slack channel. Slack is now available on the Integrations page with connection-health indicators, and users can enable cadence and content preferences from Notification settings. Pipes-backed integration connections are now synced on widget token load so the UI reflects the real WorkOS state.

Slackbot service database migrations & schema registration

high22 files
Adds the slackbot_service schema, tenant_slack_channel_config table, notification settings columns, and registers the new schema in DatabaseSchema.

Slackbot service runtime implementation & Temporal workflows

high32 files
Implements the Slackbot service runtime: use cases, service factory, daily-digest analytics, Temporal schedule/workflow management, and workflow bundle.

Service registry & Temporal wiring

high7 files
Registers Slackbot as a service enum, lazy-loads its factory, copies migration assets, and wires the new workflow bundle/task queue.

Slackbot service adapters & repositories

medium20 files
Provides the Slack access-token broker, Slack Web API client, and Postgres repository for tenant Slack channel config.

Slackbot service API contracts & core schemas

medium27 files
Defines Slackbot service RPC interface, shared Zod schemas, and the ports (repository/broker/client abstractions).

Integrations service provider registry

medium3 files
Registers Slack as a WorkOS Pipes provider and defines web/Slackbot service bindings for it.

Web-service integrations router & Pipes connection sync

medium4 files
Adds tRPC procedures for Slackbot channel/notifications and syncs WorkOS Pipes integration connections when loading the widget token.

Management gateway GraphQL schema

medium5 files
Exposes slackbotTenantConfig through the management GraphQL boundary and wires the Slackbot RPC client into the gateway runtime.

Management UI integrations page & Slack channel config

medium15 files
Promotes Slack to a live integration, adds channel setup UI, refreshes connection state on focus, and improves card health indicators.

Management UI notifications preferences

medium1 file
Adds a Slack notifications section to user notification preferences with cadence, content toggles, and a test-send button.

Build & dependency wiring

low3 files
Adds TypeScript path mappings for the new Slackbot modules and cleans generated client output in page-gateway OpenAPI scripts.