FrancodesystemsFran<code>systems
CRMCustom integration

Holded Pipedrive integration

Pipedrive and Holded sharing a single source of truth for customers and invoicing.

HoldedHolded
PipedrivePipedrive

Implementation time · 5-8 días laborables

Diagnosis

The problem

Pipedrive is ideal for the sales rep: simple, visual, fast. But without Holded connected, every won deal turns into 20-30 minutes of admin: copy the contact, validate the tax ID, create the estimate, issue the invoice. In teams with 40-100 deals/month that is between 15 and 50 monthly hours the admin team spends on copy-paste, with typing errors the accountant then has to fix. The Marketplace plugins available for Pipedrive-Holded are scarce, fragile and do not handle real scenarios well, such as deals with line items, per-line discounts or multiple pipelines.

Proposal

The solution

Pipedrive contacts, organizations and deals sync with Holded customers, estimates and invoices with no duplicates or manual reconciliation. Each deal in a configurable stage triggers an estimate in Holded; when it is marked as won, it generates the corresponding invoice. The payment status flows back to Pipedrive as a custom field and sales reps see the financial status without opening Holded. It supports multiple pipelines, products with discounts and the Pipedrive Web Forms add-ons.

Scope

What we automate

  • Pipedrive person and organization to Holded contact with validated tax ID
  • Deal in stage X to Holded estimate; won deal to issued invoice
  • Deal products to invoice lines with quantity, price and discount
  • Payment status to a custom field on the deal and the person in Pipedrive
  • Deal owner (sales rep) to salesperson on the Holded invoice
  • Multi-pipeline to different invoicing series in Holded depending on the pipeline
  • Activities marked as 'billable' to lines on a recurring invoice
  • Reopening a won deal to allow issuing a corrective invoice or credit note
Who uses it

Real use cases

These are the profiles that most ask us for the HoldedPipedrive integration and what they get in the end.

Case 01

B2B consultancy with 60 deals/month across 3 pipelines

Before: They mixed invoices from 3 service lines into a single Holded series, muddying financial reporting.

After: Each pipeline mapped to its own series. Reporting by service line without recalculating anything in Holded.

Case 02

Services company with packages plus add-ons

Before: Deal products with optional add-ons were lost when copied into Holded.

After: Each product and add-on as a separate invoice line. Per-line discounts respected.

Case 03

Sales team without access to Holded

Before: Sales reps did not know which invoices were paid and went through Slack asking for the status.

After: Custom field 'Payment status' updated in real time on the deal. Zero questions to admin.

Before / After

What changes exactly

Without the integration

  • 20-30 min of admin per closed deal
  • Sales reps asking via Slack whether the invoice is paid
  • Multi-pipeline mixed into a single invoicing series
  • Duplicate contacts between Pipedrive and Holded

With the integration

  • Won deal to issued invoice in seconds with no intervention
  • Payment status visible on the deal in Pipedrive
  • Each pipeline with its own series in Holded
  • Matching by email + tax ID: zero duplicates
Architecture

How we build it

Pipedrive v2 webhooks (deal.change, person.change) to a persisted queue. The worker matches contacts by primary email and tax ID to avoid duplicates. We call the Holded REST API with exponential backoff and store the Holded ID in a Pipedrive custom field for bidirectional sync. Idempotency guaranteed with the webhook request_id. All the mapping (stage to action) lives in versioned config that you can adjust without a redeploy.

flow.ts
webhook pipedrive.event
queue.enqueue(jobId)
worker.handle() // idempotent
holded.api.call() // retries with backoff
log.emit({ status: 'ok' })
FAQ

Frequently asked questions

What happens if the deal is reopened after being won?

We treat the invoice as already issued (it is not deleted). If there are real changes, we generate a corrective invoice in Holded or a credit note as appropriate for tax purposes. We flag the deal with a custom field so admin can review it.

Does it work with Pipedrive Web Forms and LeadBooster?

Yes. Leads coming in through forms can generate pre-created contacts in Holded marked as 'lead' (no invoice), ready to convert when the deal is won.

Multi-pipeline?

Yes. We map each pipeline to a different invoicing series in Holded with its own VAT matrix and payment method. It is the standard configuration for teams with several business lines.

Does it map deal products to invoice lines?

Yes. Each product added to the deal (with quantity, unit price and discount) goes as a separate line on the Holded invoice. If you have custom products in Pipedrive, we create them automatically in the Holded catalog the first time they appear.

What about Pipedrive v2 webhooks?

We use v2 webhooks exclusively. They are more stable and offer better granularity than v1. If your account has legacy v1, we migrate them as part of the implementation.

How long does it take to be up and running?

Between 5 and 8 days for a standard single-pipeline integration. Multi-pipeline with complex custom fields can add 3-4 days.

Shall we talk about your Pipedrive integration?

A 30-minute call, no strings. You leave with scope and a price.