We asked Claude to archive completed tasks in our team’s Notion database. It should have taken five minutes. Instead, it took a morning — because “connecting an AI tool to Notion” turned out to be several separate systems that all had to agree, and each one failed with the exact same generic error.
A network block silently rejected every call to Notion’s API — no credential error, because the request never arrived. Once fixed, we found that enabling a connector org-wide doesn’t grant anyone access — each person still has to authenticate individually. Then we mixed up two entirely different connection methods (personal OAuth vs. a manual integration token), which both throw the same “invalid token” error when used wrong.
The real culprit took longest to find: a technically valid token, scoped to the wrong Notion workspace. It passed every check and still couldn’t see our data.
By late morning, we had one correctly-scoped token, tested directly against Notion’s API before handing it to Claude. It worked on the first try.
Here’s what we wish we’d known going in.
How to Connect Claude Tag to Notion
1. Enable the Notion connector at the org level.
Path: Organization Settings → Connectors → Browse Connectors → Notion → “Add to your team.”
Requires: Owner or Admin role.
Result: Notion becomes available as an option. No one has access yet.
2. Generate a Notion integration token.
Path: app.notion.com → Developers → Connections → New connection. Set Authentication method to “Access token.” Under “Installable in,” select your team’s workspace explicitly. If the workspace dropdown is empty, the logged-in account is not an owner of that workspace — have an actual workspace owner create the connection instead. Click “Create connection” and copy the generated secret immediately — it is shown once only.
3. Verify the token independently before using it anywhere.
Run, as a single line with no breaks:
curl https://api.notion.com/v1/users/me -H "Authorization: Bearer YOUR_TOKEN" -H "Notion-Version: 2022-06-28"
Check the response for "workspace_name" — confirm it matches your team’s workspace, not a personal one. A 200 response with the wrong workspace name still means it won’t work for your actual data.
4. Add the connector in Claude Tag and connect it — two ways to get here.
- Option A — directly from Claude Tag settings: Path: Organization Settings → Claude Tag → find Notion in the list → Add. This opens the “Connect Notion” screen immediately.
- Option B — via a Claude session request: Ask Claude directly (in the relevant Slack channel or session) to request access to the Notion connector. Claude surfaces a request card. An admin then goes to Organization Settings → Notifications → Requests, finds the pending Notion request, and clicks Connect — which opens the same “Connect Notion” screen as Option A.
Either path lands you on the same screen: “Connect Notion,” with “Recommended” and “Advanced” tabs, and a field labeled “Claude’s integration secret.” Paste the token you verified in Step 3 into that field. This field expects a Notion integration token (ntn_... or secret_...) — not an Anthropic API key and not a personal OAuth login. Mixing these up is the single most common failure point, and it produces the same generic “invalid token” error regardless of which wrong credential was used.
Then click Connect. Don’t route the token through intermediate chat windows or documents first — each hop risks introducing invisible corruption (line breaks, smart quotes) that causes a valid token to fail silently.
5. Share the specific page or database with the integration.
In Notion, open the target page → “…” menu → Connections → add your integration by name. This step is easy to overlook, but it’s not optional — a Notion integration cannot see any content that hasn’t been explicitly shared with it, no matter how valid or correctly-scoped the token is.
6. Test in a completely fresh session.
A new Slack thread (top-level message, not a reply), a new claude.ai chat, or a new terminal session — not a continuation of one that predates the fix. Connector changes frequently don’t apply retroactively to sessions already in progress.
Quick diagnostic checklist if it’s still not working:
- Confirm the token itself returns
200at step 3, independent of anything the Claude Tag UI reports. - Confirm
workspace_namein that response matches your team’s Notion workspace, not a personal one. - Confirm the specific page/database has been explicitly shared with the integration (step 5).
- Confirm you’re testing in a genuinely fresh session (step 6).
- Confirm there’s only one active Notion connection configured in Claude Tag’s Connections list — leftover duplicate or stale entries from earlier attempts can cause inconsistent, hard-to-explain failures even after adding a correct one.
Leave a Reply