Skip to content

Pipedrive

Use LicenseKit with Pipedrive when a won deal should provision a customer, order, and software license.

Who This Is For

  • teams that use Pipedrive as their sales pipeline
  • developers connecting won-deal events to license fulfillment
  • support and success teams that need license status visible from a deal record

When To Use This

Use the Pipedrive integration when Pipedrive should remain the CRM and LicenseKit should issue access after revenue is won.

Do not use it as subscription management or billing.

How It Works

The integration receives Pipedrive deal-change webhook events and provisions when a deal becomes won.

Provisioning behavior:

  • create or reuse a LicenseKit customer with stable Pipedrive-derived metadata
  • create or reuse a LicenseKit order with external_system = "pipedrive"
  • create a LicenseKit license linked to the customer and order
  • store the deal-to-license mapping for idempotency and panel display
  • show LicenseKit status in a Pipedrive JSON panel on the deal detail view

The repo includes:

  • cmd/pipedrive-integration
  • internal/integrations/pipedrive
  • internal/integrations/pipedrive/panel_schema.json

Key Routes

  • GET /oauth/install
  • GET /oauth/callback
  • POST /pipedrive/webhook
  • GET /pipedrive/panel/deal
  • GET /healthz

Configuration Shape

bash
PIPEDRIVE_INTEGRATION_ADDR=":8090"
PIPEDRIVE_PUBLIC_BASE_URL="https://your-public-integration-host"
PIPEDRIVE_CLIENT_ID="..."
PIPEDRIVE_CLIENT_SECRET="..."
PIPEDRIVE_REDIRECT_URL="https://your-public-integration-host/oauth/callback"

PIPEDRIVE_PANEL_BASIC_USER="licensekit-panel"
PIPEDRIVE_PANEL_BASIC_PASSWORD="..."
PIPEDRIVE_WEBHOOK_BASIC_USER="licensekit-webhook"
PIPEDRIVE_WEBHOOK_BASIC_PASSWORD="..."

LICENSEKIT_BASE_URL="https://api.licensekit.dev"
LICENSEKIT_API_TOKEN="..."
LICENSEKIT_PRODUCT_ID="prod_..."
LICENSEKIT_POLICY_ID="pol_..."
LICENSEKIT_DEFAULT_TERM_DAYS="365"

For production, replace the local state file with encrypted durable storage if the integration is operated beyond private app trials.

Common Mistakes

  • treating every deal update as a provisioning event instead of checking for won
  • exposing panel or webhook routes without the configured auth
  • losing idempotency by not preserving the Pipedrive company, host, and deal IDs
  • expecting Pipedrive to enforce runtime access after the license has been issued

Prototype docs shell for the rewrite workspace.