fix(docs): point the service-account guides at the real connect flow - #6277
Merged
Conversation
Fourteen of the twenty service-account guides sent admins to a workspace
Settings → Integrations tab that does not exist — Integrations is a top-level
workspace route, and there is no integrations section in the settings navigation
at all. The same fourteen then told them to search the catalog for
"<Service> Service Account", a name no catalog entry has: the list is derived
from blocks, so the entries are "Airtable", "Monday", "Wealthbox", and search
matches only name and description.
Both steps now match the six guides that were already correct (Box, Zoho Desk,
Zoom, Salesforce, Pipedrive, Atlassian), so all twenty describe one flow. The
per-guide connect labels were already right and are untouched.
Google needed a third fix: its final step said Click **Save**, but the modal's
primary button is `Add {connectNoun}`, which for Google falls back to
"Add service account". It also has no catalog entry of its own, so the search
now points at Google Drive with a note that any Google integration works.
Also adds `invalidCredentialsHelp` for Wealthbox. Its validator rejects a token
that works only over Wealthbox's documented ACCESS_TOKEN header, because Sim's
tools authenticate with Bearer — a deliberate, documented limitation whose
reason reached the server log and never the user, who saw only "Double-check it".
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryCursor Bugbot is generating a summary for commit 3180179. Configure here. |
Contributor
Greptile SummaryThe PR corrects service-account documentation so administrators use the actual workspace Integrations route and searchable catalog names.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| apps/sim/lib/credentials/token-service-accounts/descriptors.ts | Adds revised Wealthbox invalid-credential guidance that safely addresses every validator path covered by the prior thread. |
| apps/docs/content/docs/en/integrations/google-service-account.mdx | Directs users through Google Drive’s shared service-account option and uses the modal’s actual submission label. |
| apps/docs/content/docs/en/integrations/wealthbox-service-account.mdx | Replaces the nonexistent settings tab and catalog entry with the canonical workspace integration flow. |
| apps/docs/content/docs/en/integrations/airtable-service-account.mdx | Representative guide update now points to the sidebar Integrations route and searchable provider name. |
| apps/docs/content/docs/en/integrations/asana-service-account.mdx | Updates the connection steps while retaining the provider-specific token action. |
| apps/docs/content/docs/en/integrations/attio-service-account.mdx | Updates the connection steps while retaining the provider-specific API-key action. |
| apps/docs/content/docs/en/integrations/calcom-service-account.mdx | Updates the connection steps while retaining the provider-specific API-key action. |
| apps/docs/content/docs/en/integrations/clickup-service-account.mdx | Updates the connection steps while retaining the provider-specific API-token action. |
| apps/docs/content/docs/en/integrations/hubspot-service-account.mdx | Updates the connection steps while retaining the provider-specific private-app-token action. |
| apps/docs/content/docs/en/integrations/linear-service-account.mdx | Updates the guide to use the real integration route and searchable provider entry. |
| apps/docs/content/docs/en/integrations/monday-service-account.mdx | Updates the guide to use the real integration route and searchable provider entry. |
| apps/docs/content/docs/en/integrations/notion-service-account.mdx | Updates the guide to use the real integration route and searchable provider entry. |
| apps/docs/content/docs/en/integrations/shopify-service-account.mdx | Updates the guide to use the real integration route and searchable provider entry. |
| apps/docs/content/docs/en/integrations/trello-service-account.mdx | Updates the guide to use the real integration route and searchable provider entry. |
| apps/docs/content/docs/en/integrations/webflow-service-account.mdx | Updates the guide to use the real integration route and searchable provider entry. |
Reviews (2): Last reviewed commit: "fix(docs): make the Wealthbox rejection ..." | Re-trigger Greptile
`invalidCredentialsHelp` replaces the generic message for every `invalid_credentials` rejection, and the Wealthbox validator raises that code on three paths: a 402 expired trial, a 401/403 where both header styles fail, and a 401/403 where Bearer fails but the ACCESS_TOKEN probe succeeds. The copy described only the third, so two of the three told the user their token was valid and pointed at remediation that could not help. Now leads with what is checkable in all three cases and makes the Bearer note conditional on the one signal that distinguishes it — the token working elsewhere.
Collaborator
Author
Collaborator
Author
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 1e3ae6f. Configure here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
sidebar.tsx→/workspace/{id}/integrations), andcomponents/settings/navigation.tshas no integrations section at all"<Service> Service Account"— a name no entry has. The catalog is block-derived, so entries areAirtable,Monday,Wealthbox; search matches name + description only, so those strings matched nothinginvalidCredentialsHelpfor WealthboxThese were the first two things an admin hit, and they hit them before reaching anything provider-specific.
Verified against the code, not assumed
Every claim was checked against the actual UI rather than taken from the audit that raised them:
components/settings/navigation.ts— zero occurrences of "integration"; the workspace sections areteammates | secrets | byok | sandboxes | custom-tools | mcp | workflow-mcp-servers | api-keys | inbox | recently-deleted | forks | custom-blocks | self-hostlib/integrations/integrations.json— 233 entries, none containing "Service Account". The only "Service" names areJira Service ManagementandServiceNowintegrations.tsxsearch is a lowercased substring over name + descriptionAdd API token,Add integration secret, …) were already correct — they come fromconnectNoun, and they are untouchedGoogle (3 edits)
Its final step said
Click **Save**, but the modal's primary button isAdd {connectNoun}, and Google falls back to'service account'(service-account-provider-ids.ts) — so it reads Add service account, never "Save". Google also has no catalog entry of its own (CANONICAL_SERVICE_ACCOUNT_SLUGSmapsgoogle-service-account→google-drive), so the search now points at Google Drive with a note that any Google integration works.Wealthbox error copy
Its validator deliberately rejects a token that works only over Wealthbox's documented
ACCESS_TOKENheader, because Sim's tools authenticate withBearer. The distinguishing reason went to the server log; the user saw only "Double-check it in Wealthbox and try again." Now the modal names the real cause instead of leaving someone re-pasting a valid token.Not fixed here: whether that Bearer-only limitation should change at all. Wealthbox documents
ACCESS_TOKENfor personal tokens andBearerfor OAuth, but never says Bearer is rejected for personal tokens, and probing the live API with a bogus token returns an identical 401 for every header shape — inconclusive. The fix would touch 12 files with 4 silent-failure paths (notably theauthStyleallowlist inapp/api/auth/oauth/utils.ts, and 4 selector routes whose token helper structurally cannot carryauthStyle), and those 10 call sites serve the working OAuth path too. That needs one real Wealthbox token to settle, not a speculative change to request signing.Type of Change
Testing
bun run lint,turbo run type-check(23/23), and the credentials suites (287 tests) all pass. Verified no"* Service Account"search string and noSettings → Integrationsreference remains anywhere underapps/docs/content/docs/en/, and that all 20 guides now use the canonical step 1.Not browser-verified — the claims are checked against the navigation, catalog and modal source rather than by clicking through.
Checklist