Pipedrive
Pipedrive is a sales CRM. This integration lets Datafly Signal create a Person record in Pipedrive whenever a visitor identifies or converts on your site — so inbound web leads land in your CRM server-side, without a browser-side Pipedrive snippet and without losing leads to ad-blockers or consent gates.
Signal delivers to the Pipedrive Persons API (v2): one server-to-server POST per qualifying event.
Prerequisites
- A Pipedrive account with permission to create contacts.
- A Pipedrive API token. In Pipedrive, go to Settings > Personal preferences > API and copy the token. The token inherits the permissions of the user it belongs to, so use a user that is allowed to create Persons.
- A Datafly Signal pipeline already collecting events from your site via Datafly.js.
Configuration
| Field | Required | Description |
|---|---|---|
| API Token | Yes | Your personal Pipedrive API token from Settings > Personal preferences > API. Stored encrypted; sent as the api_token query parameter on every request. |
Configure in Signal
- In the Management UI, open your pipeline and choose Add integration > Pipedrive.
- Paste your API Token.
- Select the Lead Capture preset. It maps
Lead Generated,Signed Up, andIdentifiedevents to a Pipedrive Person; all other events are dropped. - Save. Signal validates the credential by attempting a contact write; a
success: trueresponse confirms the integration is live.
API Endpoint
POST https://api.pipedrive.com/api/v2/persons?api_token=YOUR_TOKEN
Content-Type: application/jsonA successful create returns 200/201 with:
{ "success": true, "data": { "id": 1234, "name": "Jane Doe" } }Identity Signals
Pipedrive is a first-party CRM that you own, so contact details are stored as plaintext (unlike advertising integrations, which hash PII). Signal sends:
| Signal source | Pipedrive field | Notes |
|---|---|---|
traits.name | name | The contact’s full name. |
traits.email | emails[].value | Trimmed and lower-cased. Marked primary: true, label work. |
traits.phone | phones[].value | Normalised to E.164. Marked primary: true, label work. |
Consent is honoured: when the visitor’s canonical marketing consent is granted, Signal sets marketing_status to subscribed; otherwise it sends no_consent. (Pipedrive only acts on marketing_status when the Campaigns add-on is enabled; on other accounts the field is safely ignored.)
Event Mapping
| Datafly.js event | Pipedrive action |
|---|---|
Lead Generated | Create Person |
Signed Up | Create Person |
Identified | Create Person |
| (everything else) | Dropped |
Example
When a visitor submits a contact form, fire a Lead Generated event with identity traits:
datafly.track("Lead Generated", {
name: "Jane Doe"
}, {
traits: {
name: "Jane Doe",
email: "Jane.Doe@Example.com ",
phone: "07700 900123"
}
});Signal transforms and delivers this to Pipedrive as:
{
"name": "Jane Doe",
"emails": [
{ "value": "jane.doe@example.com", "primary": true, "label": "work" }
],
"phones": [
{ "value": "+447700900123", "primary": true, "label": "work" }
],
"marketing_status": "subscribed"
}Note the email was trimmed and lower-cased and the phone normalised to E.164 before delivery.
Testing
- Submit a test form on your site (or fire
datafly.track("Lead Generated", ...)from the browser console) with a real name and email. - In Pipedrive, open Contacts > People and confirm the new Person appears with the correct email and phone.
- In the Signal Event Debugger, confirm the event delivered with a
200/201and asuccess: trueresponse body.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
401 Unauthorized | Invalid or revoked API token | Re-copy the token from Settings > Personal preferences > API and update the integration. |
403 Forbidden | The token’s user can’t create contacts | Use an API token from a user with contact-creation permission. |
400 Bad Request | Missing name, or malformed email/phone | Ensure your event carries traits.name; check the email/phone values are present and valid. |
| Person created but no email/phone | Traits not passed on the event | Pass traits.email / traits.phone in the event’s identity context, not just as event properties. |
marketing_status ignored | Campaigns add-on not enabled | Expected — Pipedrive only stores marketing_status on accounts with the Campaigns product. |