Build on, grow with, or buy from the Claude ecosystem. Connect your favorite services or find partner solutions built on Claude.
Customize Claude for the best results #
Connectors bring your apps and data into Claude to complete tasks. Plugins combine connectors and skills to complete workflows.
Bring your tools to Claude
Connect Slack, Google Workspace, Microsoft Office, and more.
Connect across products
Your tools can be connected to Claude Code, Cowork, and Claude on web, desktop, and mobile.
Built for enterprise
Admins control which tools each team can use, and what those tools can do.
Claude works with your stack
No retrofitting required. Connect the tools you use everyday.
How teams use connectors #
Turn designs into coded websites
Handing off designs to engineering takes time and leaves room for things to get lost in translation. Connect Figma to Claude and go from frame to responsive, production-ready code in one step.
$ claude "Fix the latest Sentry error and open a PR"
Claude claude-sonnet-4-6 Β· ~/projects/acme-web β Fetching latest Sentry issuesβ¦
β sentry issues list --project acme-web --limit 1 --status unresolved
ISSUE-4821 TypeError: Cannot read properties of undefined (reading 'data')
Project: acme-web Β· Environment: production
First seen: 2026-06-15 22:14 UTC Β· Last seen: 2026-06-16 07:03 UTC
Events: 1,847 Β· Users affected: 312
Culprit: src/components/Dashboard/MetricsPanel.tsx line 94
β Fetching full stacktrace for ISSUE-4821β¦
TypeError: Cannot read properties of undefined (reading 'data')
at MetricsPanel.tsx:94:28 β processChartData(response)
at MetricsPanel.tsx:61:12 β useEffect(callback)
at react-dom/cjs/react-dom.development.js:22794
Most recent breadcrumb:
β GET /api/v2/metrics?range=7d β 200 OK (response.metrics was null)
β Reading src/components/Dashboard/MetricsPanel.tsxβ¦
Line 90β98:
90 β const processChartData = (response: ApiResponse) => {
91 β const { metrics } = response
92 β // metrics can be null when no data for the selected range
93 β return metrics.data.map((m: Metric) => ({ 94 β label: m.label,
95 β value: m.value ?? 0,
96 β })) 97 β }
β Root cause identified.
API returns { metrics: null } when the selected range has no data. Line 93
dereferences metrics.data without a null guard, throwing at runtime.
β Checking git statusβ¦
On branch main Β· nothing to commit, working tree clean
β Creating fix branchβ¦
$ git checkout -b fix/metrics-panel-null-data-sentry-4821
Switched to a new branch 'fix/metrics-panel-null-data-sentry-4821'
β Applying fix to src/components/Dashboard/MetricsPanel.tsxβ¦
@@ -90,8 +90,8 @@
const processChartData = (response: ApiResponse) => {
const { metrics } = response
- return metrics.data.map((m: Metric) => ({
+ if (!metrics?.data) return []
+ return metrics.data.map((m: Metric) => ({
label: m.label,
value: m.value ?? 0,
})) β Also updating src/components/Dashboard/MetricsPanel.tsx render guardβ¦
@@ -61,6 +61,7 @@
useEffect(() => {
fetchMetrics(range).then((response) => {
+ if (!response?.metrics) { setChartData([]); return }
setChartData(processChartData(response))
})
}, [range])
β Running testsβ¦
$ pnpm test --testPathPattern=MetricsPanel PASS src/components/Dashboard/tests/MetricsPanel.test.tsx
β renders state (12ms) β renders chart when data present (34ms)
β renders empty state when metrics is null (8ms)
β renders empty state when metrics.data is empty array (6ms)
Test Suites: 1 passed, 1 total
Tests: 4 passed, 4 total β Committingβ¦
$ git add src/components/Dashboard/MetricsPanel.tsx
$ git commit -m "fix(dashboard): guard against null metrics.data in MetricsPanel
Fixes Sentry ISSUE-4821 (1,847 events, 312 users). The /api/v2/metrics endpoint returns { metrics: null } when no data
exists for the requested range. processChartData() dereferenced
metrics.data without a null check, causing a TypeError at runtime.
-
Add early return guard in processChartData(): if !metrics?.data return []
-
Add response guard in useEffect to short-circuit setChartData call
-
Affected users would see a blank panel crash; now renders empty state
Sentry: ISSUE-4821"
[fix/metrics-panel-null-data-sentry-4821 a3f9c12] fix(dashboard): guard against null metrics.data...
1 file changed, 2 insertions(+), 1 deletion(-)
β Pushing branch and opening PRβ¦
$ git push -u origin fix/metrics-panel-null-data-sentry-4821 Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Writing objects: 100% (5/5), 1.02 KiB | 1.02 MiB/s, done.
Branch 'fix/metrics-panel-null-data-sentry-4821' set up to track remote.
$ gh pr create \
--title "fix(dashboard): guard against null metrics.data in MetricsPanel" \
--body "..." \
--base main \
--label "bug,sentry"
β Pull request created:
https://github.com/acme-org/acme-web/pull/1138 ββββββββββββββββββββββββββββββββββββββββββββββββββ
Done. PR #1138 opened Β· 2 lines changed Β· 4 tests passing
Sentry ISSUE-4821 will auto-resolve once the deploy goes out.
$
Turn a production error into a ready-to-review PR
Triaging a production error means jumping between your error monitor, your codebase, and your version control before you can write a single line of fix. Connect Sentry and GitHub to Claude and go straight from error to pull request.
Turn threads into action items
Important decisions and next steps get buried in Slack threads. Connect Slack and Asana to Claude and turn any conversation into a structured task list without leaving the thread.