Pipedrive
Two-way sync between Pipedrive persons and Pana leads — import from Pipedrive, push any lead back, and optional webhooks for live updates.
What you get
- Import Pipedrive persons as leads on a Pana event.
- Update existing leads matched by email or Pipedrive person ID.
- Push to Pipedrive from the Leads page — create, link, or update a person (requires email).
- Bulk push selected leads to Pipedrive from the Leads toolbar.
- Automatic push when you edit a linked lead (name, email, phone, company).
- Register a webhook so changes in Pipedrive auto-sync to Pana.
- Read deal metadata during contact sync (deals are not pushed back).
Pipedrive is one connection per workspace. Customers click Connect and approve your Pipedrive app — they do not paste API keys in the UI.
Before you start
- A Pipedrive account (for the user who connects).
- A Pipedrive Marketplace app with OAuth enabled — Developer Hub.
- Platform operator:
PIPEDRIVE_CLIENT_IDandPIPEDRIVE_CLIENT_SECRETon the backend (Railway). - At least one event in Pana.
- Workspace admin access.
Step 1 — Configure your Pipedrive app (platform operator)
Callback URL
In Pipedrive Developer Hub → your app → Callback URL, set:
Production:
https://events.pana.space/auth/oauth/callback?provider=pipedrive
Local development:
http://localhost:3000/auth/oauth/callback?provider=pipedrive
:::caution Exact match required
Include the query string ?provider=pipedrive. Do not use legacy paths such as /auth/pipedrive/callback.
:::
OAuth scopes
Pipedrive scopes are configured on your Marketplace app in Developer Hub — they are not sent as a query parameter on the authorize URL. Enable at least:
| Scope | Purpose |
|---|---|
base | Core API access (always on) |
contacts:full | Import persons, and create or update persons and organizations when pushing leads |
contact-fields:full (or admin) | Create the Pana event fields on persons — see Fields Pana adds to Pipedrive |
search:read | Find an existing person or organization by email or name before creating one |
deals:read | Deal metadata during sync |
webhooks:full (or admin) | Auto-register inbound webhooks from Pana |
Backend environment (Railway)
PIPEDRIVE_CLIENT_ID=<Client ID from Pipedrive app>
PIPEDRIVE_CLIENT_SECRET=<Client secret from Pipedrive app>
You do not need PIPEDRIVE_REDIRECT_URI in production — the frontend sends the correct redirect_uri on each connect request. Remove any stale value pointing at localhost or legacy paths.
Redeploy the backend after changing credentials.
Step 2 — Connect in Pana
- Go to Settings → Integrations.
- Find Pipedrive under CRM.
- Click Connect.
- Approve access in Pipedrive.
- Return to Pana; your company domain may appear under the card when connected.
Sync contacts manually
- Click Sync contacts on the Pipedrive card.
- Select the Pana event to attach contacts to.
- Click Sync.
New Pipedrive persons become leads; existing leads with the same email are updated.
Fields Pana adds to Pipedrive
When you connect, Pana sets up these fields on Pipedrive persons so you never have to create them by hand. Every push fills them with the lead's current values, alongside first name, last name, email, phone, job title and company.
| Pipedrive field | Type | What Pana writes |
|---|---|---|
| Lead Source | Text | Always Pana Events, so leads from Pana are easy to identify. |
| Event Name | Text | The event the lead is mapped to. |
| Event Lead Interest Level | Single option — Cold, Warm, Hot | The lead's interest level from Pana. |
| Event Lead Tags | Multiple options — Exhibitor, Sponsor, Investor, Partner, High Priority, Decision Maker, Urgent, VIP | The lead's tags. A lead marked as a decision maker always carries Decision Maker. |
| Event Conversation Notes | Large text | The latest note on the lead. Each push replaces it with the newest note. |
| Next Follow-up Date | Date | The day the lead is due a follow-up. Pipedrive has no date-and-time field, so the time is not sent. |
| LinkedIn Profile | Text | The lead's LinkedIn profile URL. |
| Pana Lead URL | Text | A link back to the lead in Pana. |
| Job Title | Text | Uses Pipedrive's built-in Job title field when your account has it; otherwise Pana creates one. |
If a field with one of these names already exists, Pana reuses it instead of creating a duplicate — so reconnecting is always safe. Empty values are never sent, so a push never clears something typed in Pipedrive.
Creating fields needs the contact-fields:full (or admin) scope on the Pipedrive app. Without it, pushes still create and update persons with the standard fields; reconnect after adding the scope and the event fields are created.
Edits made in Pipedrive
Event Lead Interest Level, Event Lead Tags, Event Conversation Notes, Next Follow-up Date and LinkedIn Profile come back with the person, so edits made in Pipedrive show up on the Pana lead — on every contact sync, and live through the Pipedrive webhook. This works for leads that came from Pipedrive and for leads captured in Pana and pushed to Pipedrive.
- A note changed in Pipedrive joins the lead's notes thread as the newest note.
- Job title comes back too, from Pipedrive's own Job title field (or the one Pana created).
- Tags Pana does not provision are left on the lead untouched; Decision Maker keeps the lead's decision-maker flag in step.
- An empty field in Pipedrive never clears the lead.
- Lead Source, Event Name and Pana Lead URL are set by Pana and are not read back.
Re-create the fields
Connecting creates the fields, and a push quietly re-creates a missing one (at most once an hour). To re-run it right away — after someone deleted a field, or after you add the contact-fields:full scope — call:
POST /api/v1/integrations/pipedrive/provision-fields/
{ "workspace_id": "<workspace id>" }
The response lists the fields created and reused, and any errors Pipedrive returned. Existing fields are reused, never duplicated.
Push leads to Pipedrive
Use this when leads were captured in Pana (QR, manual entry, import) and you want them in Pipedrive.
Single lead
- Open Leads.
- On a lead row, click Push to Pipedrive (cloud icon).
- Pana searches Pipedrive by email, links an existing person, or creates a new one.
The lead must have an email address. Company name is synced when present (Pana finds or creates the organization in Pipedrive).
Bulk push
- Select one or more leads in Leads.
- Click Push to Pipedrive (N) in the toolbar.
Leads already linked to HubSpot or Salesforce are skipped.
Automatic push
When Pipedrive is connected, saving a lead that is linked to Pipedrive (or pushing it once) keeps the person updated on later edits — without using the push button again.
Webhooks
Click Copy webhook on the connected card to copy the inbound webhook URL:
https://eventsapi.pana.space/api/v1/integrations/webhooks/pipedrive/{workspace_id}/
Pana registers this webhook with Pipedrive for you when you connect, so changes in Pipedrive (new or updated persons) sync into Pana without a manual sync. Every call must carry the webhook's password, and anything else is ignored. If it could not be registered at connect (for example, without a public https API_BASE_URL), click Register webhook on the Pipedrive card. Registering again replaces the existing Pana webhook in Pipedrive rather than adding a second one.
You can also paste the webhook URL manually in Pipedrive’s webhook settings, or call POST …/connections/{connection_id}/actions/register-webhook/ — see Integrations API.
Disconnect
In Pana
Turn off the toggle on the Pipedrive card. Synced leads stay in Pana; the live connection is removed.
In Pipedrive (full uninstall)
- Open Settings → Installed apps.
- Click Pana Events.
- Click Uninstall application on the right.
After uninstall, manual sync, push to Pipedrive, automatic push, and inbound webhooks stop working.
Troubleshooting
| Issue | What to try |
|---|---|
redirect_uri_mismatch | Callback URL in Pipedrive must be https://events.pana.space/auth/oauth/callback?provider=pipedrive exactly. |
| OAuth fails mid-flow | Complete authorization in the same browser session; check workspace membership. |
| Wrong client in OAuth URL | Railway PIPEDRIVE_CLIENT_ID must match the Pipedrive app where the callback URL is registered. |
Stale PIPEDRIVE_REDIRECT_URI on Railway | Delete or update — frontend sends the production URL; an old localhost value can confuse debugging. |
| Webhook not registering | Copy the webhook URL manually into Pipedrive; confirm webhooks:write scope. |
| Missing contacts | Run Sync contacts; confirm persons have email addresses in Pipedrive. |
| Push failed / no person created | Lead needs an email; confirm persons:write / contacts:write on your Pipedrive app. |
| Bulk push skipped some leads | Leads linked to HubSpot or Salesforce are not pushed to Pipedrive. |
Callback URL checklist
-
https://events.pana.space/auth/oauth/callback?provider=pipedrive - Query string
?provider=pipedriveincluded - Same app as
PIPEDRIVE_CLIENT_IDon Railway