Connectors

16 built-in connectors pull signals from your business tools. Each connector supports full sync, incremental sync, and real-time webhooks.

Available Connectors

💳

Stripe

Finance

🎯

HubSpot

Sales

🐙

GitHub

Engineering

📋

Jira

Engineering

🔷

Linear

Engineering

💬

Intercom

Support

🎫

Zendesk

Support

📡

Slack

Communication

📝

Notion

Knowledge

📅

Google Calendar

Operations

📊

Xero

Finance

📧

Mailchimp

Marketing

🏦

Plaid

Finance

☁️

AWS CloudWatch

Infrastructure

🐶

Datadog

Monitoring

🔌

Generic API

Any

Stripe Connector

stripe-connector.tstypescript
import { createStripeConnector } from '@brainos/workers';

const stripe = createStripeConnector(process.env.STRIPE_API_KEY!);

// Full sync — pulls all historical data
await stripe.fullSync(supabase, 'org_123');

// Incremental sync — only new data since last sync
await stripe.incrementalSync(supabase, 'org_123', lastSyncDate);

// Real-time — handle Stripe webhooks
const signals = stripe.handleWebhook(stripeWebhookPayload);
// Generates: payment_success, payment_failed, subscription_mrr, churn_risk

HubSpot Connector

hubspot-connector.tstypescript
import { createHubSpotConnector } from '@brainos/workers';

const hubspot = createHubSpotConnector(process.env.HUBSPOT_API_KEY!);
await hubspot.fullSync(supabase, 'org_123');
// Generates: deal_stage, deal_amount, deal_probability

Build Custom Connectors

custom-connector.tstypescript
import type { BrainOSConnector } from '@brainos/workers';

const myConnector: BrainOSConnector = {
  name: 'my-crm',
  domain: 'sales',

  async fullSync(supabase, orgId) {
    const data = await fetchFromMyCRM();
    const signals = data.map(item => ({
      source_domain: 'sales',
      signal_type: 'deal_closed',
      signal_value: item.amount,
      entity_id: item.customerId,
      signal_timestamp: item.closedAt,
    }));
    await storeConnectorSignals(supabase, orgId, signals);
    return { signalCount: signals.length };
  },

  async incrementalSync(supabase, orgId, since) {
    // Same as fullSync but filtered by date
  },

  handleWebhook(payload) {
    return [/* signals */];
  },
};

Webhook Receiver

Deploy the brainos-webhook edge function for real-time ingestion:

webhook-endpointbash
POST https://your-project.supabase.co/functions/v1/brainos-webhook?source=stripe&org=org_123

# Stripe sends webhooks here automatically.
# Supported sources: stripe, hubspot, intercom, slack