Integrations let your agent learn from data living outside the Pitchbar database (Notion, Google Docs) and let leads flow into your existing systems (CRMs, Slack, webhooks). Open /app/integrations to manage them.

Notion

Connect once via OAuth. Pitchbar requests read access to the workspaces you select during the OAuth flow — we never get global access. After connecting:

Google Docs

Same shape as Notion. OAuth-once, pick docs from a Drive picker, ingest via IngestGoogleDocJob, manual re-sync per source. Tokens encrypted at rest. Disconnect at any time — disconnecting revokes our access immediately and prevents further syncs.

Slack

Slack is for outgoing notifications:

Connect via OAuth, pick the channel, save. The bot posts under the integration's name, never as a user.

Ticking Send test on save posts a sample "New lead" message to the channel so you can confirm the wiring before a real visitor submits. The test payload uses the authenticated user's name and email (suffixed with "Slack test from <workspace name>") so the alert is obviously a self-test — operators won't panic thinking a real lead came through.

Webhooks (outgoing)

Pitchbar can POST to your endpoint when events happen. Configure under /app/integrations/webhooks. Events available:

EventFires when
lead.capturedThe widget lead form was submitted (the only event currently shipped).

The other event names you might see in older roadmap notes (conversation.started, conversation.message, conversation.routed, lead.updated) are on the roadmap but not yet wired. Add additional events by extending SignedDispatcher.

Each webhook has a signing secret. Pitchbar HMACs the body with that secret and sends the digest in the X-Pitchbar-Signature header — verify it on receipt. The lead-captured dispatcher (app/Services/Webhooks/SignedDispatcher.php) is single-attempt by design (the lead is already persisted; a failed webhook delivery surfaces in the workflow run log rather than blocking the visitor's submission). Workflow-step webhooks (DispatchWebhookJob) retry up to 3 times via Laravel's queue retry mechanism.

See Outgoing webhooks for the payload shapes.

HubSpot / Salesforce / Zapier

The webhooks above are the universal escape hatch — they work with anything that can receive HTTP POSTs. Native HubSpot and Salesforce integrations are on the roadmap; in the meantime, point a webhook at a Zapier catch-hook and let Zapier route to your CRM.

Disconnecting

Each integration's row has a Disconnect button. We:

Reconnecting re-runs the OAuth flow and re-binds the existing sources. No data is lost.

Permissions

Connecting an integration requires the integrations.manage permission, which is granted to Owners and Admins. Members can see which integrations are connected but can't change them.