Data Migration from Pipedrive to Bitrix24
Pipedrive is a CRM focused on visual sales pipeline management. Its distinguishing feature is a simple, flat data model with no complex hierarchies. The Pipedrive API is well-documented, making export predictable. The main effort lies in correctly mapping concepts.
Pipedrive Object Model
Pipedrive is built around five core entities:
- Person — a contact (individual)
- Organization — a company/organisation
- Deal — a deal moving through the pipeline
- Activity — an activity (call, meeting, task, email, deadline)
- Lead — an incoming lead (introduced relatively recently; not the same as a lead in Bitrix)
There are also Products, Notes, and Files (attachments).
Pipedrive API: Specifics
Pipedrive API v1 works with an API key or OAuth2. The rate limit is 100 requests per 10 seconds (for most plans). Pagination is offset-based using start and limit parameters:
$start = 0;
$allDeals = [];
do {
$response = $pipedrive->get('/deals', [
'start' => $start,
'limit' => 500,
'status' => 'all_not_deleted',
]);
$allDeals = array_merge($allDeals, $response['data'] ?? []);
$start = $response['additional_data']['pagination']['next_start'] ?? null;
} while ($start !== null && $response['additional_data']['pagination']['more_items_in_collection']);
Object Mapping: Pipedrive → Bitrix24
| Pipedrive | Bitrix24 | Notes |
|---|---|---|
| Person | Contact | name → NAME, LAST_NAME |
| Organization | Company | |
| Deal | Deal | pipeline_id → direction |
| Stage | Deal stage | Recreated |
| Activity | CRM activity | type is mapped to TYPE_ID |
| Lead | Lead | If the leads module is used |
| Note | Timeline comment | |
| File | File on Drive | disk.folder.uploadfile |
| User | Bitrix24 user | Mapped by email |
Custom Fields in Pipedrive
Pipedrive allows adding custom fields to each object. The field schema is retrieved via /dealFields, /personFields, /organizationFields. Each field has a key (a unique identifier like abc123def456) and a field_type.
// Retrieving the deal fields schema
$dealFields = $pipedrive->get('/dealFields')['data'];
$customFields = array_filter($dealFields, fn($f) => !$f['edit_flag'] === false && $f['id'] > 12);
// Fields with id > 12 are custom (system fields have small IDs)
Pipedrive field types and their Bitrix24 equivalents:
| Pipedrive field_type | Bitrix24 |
|---|---|
varchar |
string |
text |
string |
double |
double |
monetary |
double (+ currency) |
date |
date |
enum |
enumeration |
set |
enumeration (multiple) |
phone |
string |
user |
employee |
org |
crm (company link) |
people |
crm (contact link) |
Pipelines and Stages
Pipedrive supports multiple pipelines. Each pipeline has its own set of stages. In Bitrix24 the equivalent is "Deal directions" (deal categories) with their own stages.
Steps:
- Fetch pipelines via
/pipelines - Fetch stages via
/stages?pipeline_id=X - Create directions in Bitrix24 via
crm.dealcategory.add - Create stages via
crm.status.addwithENTITY_ID = DEAL_STAGE_<category_id> - Save the mapping: Pipedrive stage_id → Bitrix24 STATUS_ID
Activities and Types
Pipedrive activity types: call, meeting, task, deadline, email, lunch. Bitrix24 CRM activities (crm.activity) have types: 1 (call), 2 (meeting), 4 (email), 6 (task). Non-standard types (lunch, deadline) are mapped to tasks or a custom activity type.
Typical Timelines
| Volume | Timeline |
|---|---|
| Up to 8,000 records, 1–2 pipelines | 1–2 weeks |
| 8,000–40,000 records, custom fields | 3–5 weeks |
| 40,000+ records, attachments, history | 6–10 weeks |
Pipedrive has no equivalents of Bitrix24's Drive, chat, and task tracker — after the CRM migration, users learn those tools separately.







