diff --git a/packages/api-client/src/posthog-client.ts b/packages/api-client/src/posthog-client.ts index 8a90ff2861..1ee92f775f 100644 --- a/packages/api-client/src/posthog-client.ts +++ b/packages/api-client/src/posthog-client.ts @@ -284,7 +284,9 @@ export interface SignalSourceConfig { | "retently" | "appfigures" | "appfollow" - | "judgeme_reviews"; + | "judgeme_reviews" + | "intercom" + | "hubspot"; source_type: | "session_analysis_cluster" | "evaluation" diff --git a/packages/shared/src/analytics-events.ts b/packages/shared/src/analytics-events.ts index 20ddd33cae..503ec656b7 100644 --- a/packages/shared/src/analytics-events.ts +++ b/packages/shared/src/analytics-events.ts @@ -833,7 +833,9 @@ export interface SignalSourceConnectedProperties { | "retently" | "appfigures" | "appfollow" - | "judgeme_reviews"; + | "judgeme_reviews" + | "intercom" + | "hubspot"; /** True when this is a brand-new createSignalSourceConfig, false for re-enable of an existing config. */ is_first_connection: boolean; /** True when the connection went through the DataSourceSetup wizard (warehouse OAuth path). */ diff --git a/packages/shared/src/inbox-types.ts b/packages/shared/src/inbox-types.ts index c590219b0d..b0fa1bb720 100644 --- a/packages/shared/src/inbox-types.ts +++ b/packages/shared/src/inbox-types.ts @@ -46,7 +46,9 @@ export type SourceProduct = | "retently" | "appfigures" | "appfollow" - | "judgeme_reviews"; + | "judgeme_reviews" + | "intercom" + | "hubspot"; /** * Products that render as a toggle in the Self-driving sources modal: the three PostHog-data @@ -91,7 +93,9 @@ export type ToggleableSourceProduct = | "retently" | "appfigures" | "appfollow" - | "judgeme_reviews"; + | "judgeme_reviews" + | "intercom" + | "hubspot"; /** Signal record kind (backend `source_type`) for a warehouse-backed inbox source. */ export type SignalRecordKind = @@ -457,6 +461,26 @@ export const EXTERNAL_INBOX_SOURCES: ExternalInboxSource[] = [ recordKind: "review", setup: "dynamic", }, + // OAuth-connected support sources (the connect form's oauth field is rendered generically by + // DynamicSourceSetup — see the generic integration flow starter). + { + product: "intercom", + label: "Intercom", + description: CONVERSATION, + dwSourceType: "Intercom", + requiredTables: ["conversations"], + recordKind: "ticket", + setup: "dynamic", + }, + { + product: "hubspot", + label: "HubSpot", + description: TICKET, + dwSourceType: "Hubspot", + requiredTables: ["tickets"], + recordKind: "ticket", + setup: "dynamic", + }, ]; /** Issue-like records mutate (status/votes change), so their table needs full-refresh sync. */ diff --git a/packages/ui/src/features/inbox/components/utils/source-product-icons.tsx b/packages/ui/src/features/inbox/components/utils/source-product-icons.tsx index f918cdab4c..b29792f156 100644 --- a/packages/ui/src/features/inbox/components/utils/source-product-icons.tsx +++ b/packages/ui/src/features/inbox/components/utils/source-product-icons.tsx @@ -170,4 +170,6 @@ export const SOURCE_PRODUCT_META: Partial< color: "var(--amber-9)", label: "Judge.me", }, + intercom: { Icon: ChatsIcon, color: "var(--blue-9)", label: "Intercom" }, + hubspot: { Icon: LifebuoyIcon, color: "var(--orange-9)", label: "HubSpot" }, };