G Growreplies docs

Run your workspace

Integrations

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:

  • The Add source modal exposes a Notion picker (page or database).
  • Each picked page becomes a Notion source and is ingested via IngestNotionPageJob.
  • Re-syncs are manual (per-source Reindex) — we don't poll Notion on a schedule.
  • The OAuth token is encrypted at rest using Laravel's encrypted cast.

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:

  • New leads — posts to a configurable channel.
  • Routed conversations — pings when the inbox needs a human.
  • Daily digest — opt-in summary of conversation volume + new gaps.

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

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:

  • Revoke our OAuth token with the upstream provider (Notion / Google).
  • Mark the local integration_connection row as inactive.
  • Stop syncing — sources backed by the integration enter an "orphaned" state and stop refreshing, but their already-indexed content stays usable.

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.