ml-connector
FreshBooksPipedrive

FreshBooks and Pipedrive integration

FreshBooks runs your invoicing and accounting. Pipedrive runs your sales pipeline. Connecting the two keeps your sales team aligned with accounting: clients created in FreshBooks appear as organizations in Pipedrive, and invoices become deals linked to the correct account. Invoice status changes (sent, viewed, paid, overdue) flow into Pipedrive so your sales team sees cash flow against each deal without switching systems. ml-connector bridges the OAuth2 on both sides, verifies the signatures FreshBooks sends, and maps the data so your sales and accounting workflows stay in sync.

How FreshBooks works

FreshBooks exposes invoices, bills, expenses, clients, payments, chart of accounts, and journal entries through a REST API at https://api.freshbooks.com. It uses OAuth 2.0 user-delegated authorization (not client credentials), with granular scopes per resource. FreshBooks pushes updates to invoices, clients, expenses, bills, and other objects via webhooks to a customer-supplied endpoint, with an HMAC-SHA256 signature in the X-FreshBooks-Hmac-SHA256 header. Webhook events can take seconds to several minutes to arrive, and FreshBooks retries non-2xx and timeout responses until the callback is explicitly disabled. Status fields on invoices and payments are read-only; they are computed by the system.

How Pipedrive works

Pipedrive exposes deals, organizations, persons, activities, products, pipelines, and custom fields through a REST API at https://api.pipedrive.com. It accepts either an API token scoped to a user (header: x-api-token) or OAuth2 bearer token. Pipedrive can receive webhooks in either v1 (action.object format) or v2 (meta block with separate action and entity fields), with optional HMAC-SHA256 signature verification via X-Pipedrive-Signature header. Pipedrive has no native invoicing or accounting features; it is CRM-only and receives data only through inbound API writes. Custom fields are opaque hashes and require separate lookup of field definitions. Burst rate limits vary by plan: API token users face 20 to 120 requests per 2-second window depending on plan; OAuth users face 80 to 480 per 2-second window.

What moves between them

The main flow moves from FreshBooks into Pipedrive. When a client is created or updated in FreshBooks, ml-connector writes it as an organization to Pipedrive with the client name, address, and currency. When an invoice is created or updated in FreshBooks, ml-connector creates or updates a deal in Pipedrive linked to the matching organization, with invoice amount, due date, and invoice status mapped to custom deal fields. Invoice status transitions (draft to sent to viewed to paid) update the deal stage, advancing it through the pipeline. Bill records in FreshBooks are not synced to Pipedrive. Data moves on FreshBooks' webhook delivery schedule, typically within a few minutes of a change in FreshBooks.

How ml-connector handles it

ml-connector listens for FreshBooks webhook POST requests at a dedicated endpoint, verifies the HMAC-SHA256 signature in the X-FreshBooks-Hmac-SHA256 header against the shared webhook secret, and decodes the payload. For client events (client.create, client.update), it looks up the organization in Pipedrive by FreshBooks client ID; if not found, it creates a new organization with the client name, address, and currency mapped to Pipedrive fields. For invoice events (invoice.create, invoice.update), it ensures the matching organization exists in Pipedrive first, then creates or updates a deal linked to that organization. Invoice totals, due dates, and status (draft, sent, viewed, paid, overdue) map to custom deal fields and pipeline stage. FreshBooks and Pipedrive both support OAuth2, but use different token formats and lifetimes; ml-connector stores both credential sets and handles each vendor's token refresh independently. Pipedrive's rate limits (20 to 480 requests per 2 seconds depending on plan and auth type) are respected via queuing; if a write hits the limit, ml-connector backs off and retries. All records carry full audit trail for replay if a Pipedrive write fails.

A real-world example

A small professional services firm uses FreshBooks to manage invoicing and expenses, and Pipedrive to track sales deals. Before the integration, the sales team tracked revenue manually by searching Pipedrive notes or spreadsheets, and the accounting team had no visibility into which deals had turned into invoiced revenue. With FreshBooks and Pipedrive connected, each client created in FreshBooks appears as an organization in Pipedrive, and each invoice is represented as a deal showing amount, due date, and payment status. When an invoice is marked paid in FreshBooks, the deal advances automatically in the pipeline. The sales team can now see which deals have been invoiced and which invoices are outstanding, and the accounting team has a clear revenue pipeline view without manual work.

What you can do

  • Sync FreshBooks clients into Pipedrive organizations with address and currency information preserved.
  • Create and update Pipedrive deals from FreshBooks invoices, linked to the correct organization.
  • Map invoice status (sent, viewed, paid, overdue) to Pipedrive deal custom fields and pipeline stages.
  • Verify FreshBooks webhook signatures with HMAC-SHA256 and handle OAuth2 token refresh for both platforms.
  • Track every record with a full audit trail for replay and reconciliation if a Pipedrive write fails.

Questions

Which direction does data move between FreshBooks and Pipedrive?
The main flow is from FreshBooks into Pipedrive. Clients become organizations and invoices become deals in Pipedrive. FreshBooks bills are not synced to Pipedrive because Pipedrive is CRM-only and has no accounting features. Updates to clients and invoices in FreshBooks flow into Pipedrive via webhook, but changes in Pipedrive do not flow back to FreshBooks.
How does ml-connector handle FreshBooks webhooks and Pipedrive rate limits?
ml-connector verifies the HMAC-SHA256 signature in FreshBooks webhook headers before processing, ensuring only legitimate events are synced. Pipedrive imposes burst rate limits of 20 to 480 requests per 2 seconds depending on plan and authentication type. ml-connector queues writes, respects the limit, and backs off if a write hits the ceiling, retrying when capacity returns.
What happens if an invoice is created in FreshBooks before its client is synced to Pipedrive?
ml-connector ensures the matching organization exists in Pipedrive before creating the deal. If the client is not yet synced, ml-connector first creates the organization in Pipedrive, then creates the deal linked to that organization. This ensures referential integrity and prevents orphaned deals.

Related integrations

Connect FreshBooks and Pipedrive

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started