Skip to content

Commit 3cd7f36

Browse files
authored
Merge pull request #259 from PostHog/tom/inbox-oauth-onboarding
feat(data-warehouse): offer Intercom and HubSpot in self-driving onboarding
2 parents cfd8a5c + 92fbe1a commit 3cd7f36

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

context/skills/self-driving/references/5-connected-tools.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ External tools can feed the inbox too: issue trackers (GitHub Issues, Linear, Ji
99
The run can connect **every** one of them, each with at most one click from the user, and it never asks anyone to paste a credential into this chat:
1010

1111
- **GitHub Issues** — reuses the GitHub App connected in step 3 (connector: `5a-github.md`).
12-
- **Linear**a one-click OAuth link (connector: `5b-linear.md`).
12+
- **Linear, Intercom, HubSpot** — one-click OAuth links (connector: `5b-linear.md`; the flow is identical, only the `kind` and `<kind>_integration_id` payload key differ).
1313
- **Zendesk, pganalyze, Jira** (and any other API-credential source) — a secure PostHog **connect link**. The user enters their credentials on a PostHog page in their own browser, PostHog stores them, and the run creates the live source from that stored credential — no secret ever passes through this chat (connector: `5c-credentials.md`).
1414

1515
A tool falls back to a **dormant responder** (the row is enabled but silent until a warehouse source exists) plus a follow-up **only** when the user skips or can't finish its connect step. That used to be the default for credential sources; it is now the exception.
@@ -39,6 +39,8 @@ Load `wizard_ask` via `ToolSearch select:mcp__wizard-tools__wizard_ask`. Reach `
3939
{ label: "None of these", value: "none" },
4040
{ label: "GitHub Issues", value: "github-issues" },
4141
{ label: "Linear", value: "linear" },
42+
{ label: "Intercom", value: "intercom" },
43+
{ label: "HubSpot", value: "hubspot" },
4244
{ label: "Jira", value: "jira" },
4345
{ label: "GitLab", value: "gitlab" },
4446
{ label: "Gitea", value: "gitea" },
@@ -76,18 +78,20 @@ Load `wizard_ask` via `ToolSearch select:mcp__wizard-tools__wizard_ask`. Reach `
7678
}
7779
```
7880

79-
2. Call `external-data-sources-list` once (step 2's project profile also lists warehouse sources when it exists). For each picked tool whose source already exists, match its warehouse `source_type`: `Github` / `Linear` / `Jira` / `GitLab` / `Gitea` / `Shortcut` / `Sentry` / `Rollbar` / `Bugsnag` / `Honeybadger` / `Raygun` / `Zendesk` / `Freshdesk` / `Freshservice` / `Front` / `Gorgias` / `Kustomer` / `Dixa` / `Plain` / `PgAnalyze` / `Snyk` / `Sonarqube` / `Semgrep` / `Rapid7Insightvm` / `Featurebase` / `Frill` / `Aha` / `Uservoice` / `Productboard` / `Canny` / `Asknicely` / `Retently` / `Appfigures` / `Appfollow` / `JudgeMeReviews`. Record "already connected" — no connector flow needed, just enable its responder row (step 4 below).
81+
2. Call `external-data-sources-list` once (step 2's project profile also lists warehouse sources when it exists). For each picked tool whose source already exists, match its warehouse `source_type`: `Github` / `Linear` / `Jira` / `GitLab` / `Gitea` / `Shortcut` / `Sentry` / `Rollbar` / `Bugsnag` / `Honeybadger` / `Raygun` / `Zendesk` / `Freshdesk` / `Freshservice` / `Front` / `Gorgias` / `Kustomer` / `Dixa` / `Plain` / `PgAnalyze` / `Snyk` / `Sonarqube` / `Semgrep` / `Rapid7Insightvm` / `Featurebase` / `Frill` / `Aha` / `Uservoice` / `Productboard` / `Canny` / `Asknicely` / `Retently` / `Appfigures` / `Appfollow` / `JudgeMeReviews` / `Intercom` / `Hubspot`. Record "already connected" — no connector flow needed, just enable its responder row (step 4 below).
8082

8183
3. Dispatch each picked tool that's still missing:
8284

8385
- **GitHub Issues** → read `references/5a-github.md` and follow it.
84-
- **Linear** → read `references/5b-linear.md` and follow it.
86+
- **Linear / Intercom / HubSpot** (one-click OAuth) → read `references/5b-linear.md` and follow it, substituting the `kind` (`linear` / `intercom` / `hubspot`), the `<kind>_integration_id` payload key, and the DWH `source_type` (`Linear` / `Intercom` / `Hubspot`).
8587
- **Zendesk / pganalyze / Jira** (and any other API-credential source) → read `references/5c-credentials.md` and follow it. It hands the user a secure PostHog connect link, waits for them to store their credentials in the browser, then creates the live source from that stored credential. If they skip or don't finish, it falls back to the dormant responder + follow-up (step 4 below).
8688

8789
4. Enable the source row (step 4's write recipe) for every tool the user picked — created, verified, and picked-but-not-connected alike (a dormant row is harmless and saves a later trip):
8890

8991
- GitHub Issues → `github` / `issue`
9092
- Linear → `linear` / `issue`
93+
- Intercom → `intercom` / `ticket`
94+
- HubSpot → `hubspot` / `ticket`
9195
- Jira → `jira` / `issue`
9296
- GitLab → `gitlab` / `issue`
9397
- Gitea → `gitea` / `issue`

context/skills/self-driving/references/5b-linear.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
# Connector — Linear warehouse source
1+
# Connector — Linear (and other one-click OAuth) warehouse source
2+
3+
> Reused for every one-click OAuth source (Linear, Intercom, HubSpot). The flow is identical —
4+
> substitute the `kind` (`linear` / `intercom` / `hubspot`), the `<kind>_integration_id` payload
5+
> key, and the DWH `source_type` (`Linear` / `Intercom` / `Hubspot`) throughout.
26
37
Creates the Linear warehouse source with at most **one click** from the user: Linear needs an OAuth'd Integration row, and the only part this run can't do is the user consenting in their browser. Hand them the authorize link, then check **once** for the integration — if it's there, create the source yourself (no UI form-filling); if it isn't, leave a dormant responder and move on. Never nudge or wait through retry rounds.
48

0 commit comments

Comments
 (0)