Pipedrive
Renta writes rows from your data warehouse into Pipedrive: persons, organizations, deals, and leads.
Each row becomes one CRM record. Renta looks the record up by the field you nominate, updates it when it finds one, and creates it when it does not, so the same model can keep a segment current instead of piling up duplicates.
Authentication
Renta authenticates with a personal Pipedrive API token. The token carries the permissions of the user it belongs to, so use an account that can see and edit the records you plan to sync.
Connect Pipedrive destination
- Navigate to the Connections > Catalog section in the left sidebar and open the Destinations tab.
- Open the Reverse ETL category and click the Pipedrive card.

- Destination name.
Specify a name for this destination. This is used exclusively in the Renta interface. - API token.
Your personal Pipedrive API token, found in Pipedrive under Settings > Personal preferences > API.
Click Save. Renta verifies the token against your Pipedrive account before storing it, so a wrong or revoked token is rejected here rather than on the first run.

The new destination appears in the Destinations list with the Active status. You can now use it in Reverse ETL pipelines.

Prepare a data model
A Reverse ETL pipeline reads from a data model: a SQL query saved in the Data models section that decides which warehouse rows to sync and what each row holds. Build it before the pipeline, because the mapping dropdowns are filled from its columns.
Give every row the column you will match on and the fields Pipedrive needs to create the record. For persons that is a name, for deals and leads a title.
-- Contacts prepared for Pipedrive persons.
-- The query returns rows only, no table is created.
WITH demo_persons AS (
SELECT
'james.miller@example.com' AS email,
'James Miller' AS name,
'+12125550101' AS phone
UNION ALL SELECT 'olivia.johnson@example.com','Olivia Johnson','+13125550102'
UNION ALL SELECT 'william.davis@example.com', 'William Davis', '+12145550103'
)
SELECT * FROM demo_personsCreate the data model
In the left sidebar, open Data models and click New model. Then:
- Source.
Choose the warehouse connection the query runs against. - Write your model query.
Paste your SQL. Keep SQL query as the query type. - Run preview.
Check the rows and column names before moving on.
Choose Reverse ETL only as the scope, then click Next step.

Review the columns Renta read from the query and mark the one that identifies a row. Pick the column you will also match on in Pipedrive, such as the email, so a changed row keeps updating the same record.
Name the model on the last step and click Create model. The name is what you pick from the Data model dropdown when you build the pipeline.

Create a Pipedrive pipeline
The destination and the data model have to exist before you start.
In the left sidebar, click New pipeline. On the Source step, switch the toggle to Reverse ETL and pick your data warehouse, such as Google BigQuery.

Choose the warehouse connection that holds your data models and click Next step.

On the Destination step, select Pipedrive under Already connected and click Next step.

Choose the Pipedrive connection you created earlier and click Next step.

Pipeline configuration
On the final step, choose which Pipedrive object the rows become and how Renta recognises a record it has already written.
What Renta sends
Pick the object and the data model.

| Object | Description |
|---|---|
| Persons | Contacts. Match on email, name, phone, or the Pipedrive ID. |
| Organizations | Companies. Match on name or the Pipedrive ID. |
| Deals | Deals in a pipeline. Match on title or the Pipedrive ID. |
| Leads | Leads in the Leads Inbox. Match on title or the Pipedrive ID. |
Data model chooses the rows to sync. The columns available for matching and mapping below come from it.
Record matching
Tell Renta which column identifies the record. Pipedrive has no upsert of its own, so every object is written by searching first and then updating or creating, and this is the field that search runs on.

The left dropdown offers the unique key of the data model, and the right one offers the match fields the selected object supports. Renta also writes the matched value into the record it creates, so the next run finds it instead of creating a second one.
Pipedrive ID is available only in Update mode. A record cannot be created from an internal id, so pairing it with Upsert or Mirror stops the pipeline from being saved.
Field mapping
Connect warehouse columns to Pipedrive fields. Renta pre-selects the field the object cannot be created without, and the list holds both the standard fields and the custom fields your account already has.

| Object | Required field |
|---|---|
| Persons | Name |
| Organizations | Name |
| Deals | Title |
| Leads | Title, plus Person ID or Organization ID |
A lead has to belong to a person or an organization that already exists in Pipedrive. Renta does not create the parent record, so map Person ID or Organization ID to a column holding an id that is already there.
Renta never creates custom fields. Create the field in Pipedrive first and it appears in this list. A monetary field also needs its currency mapped, otherwise Pipedrive cannot tell what the amount is denominated in and Renta asks for it before saving.
Sync behavior
Decide how a matched record is written and what happens to one whose row disappears, then name the pipeline.

-
Sync mode How a row is written.
Mode Description Upsert Update the matched record, or create it when there is no match. The default. Update Update matched records only. A row with no match is rejected instead of creating anything. Mirror Upsert the rows that are present and apply the deleted-rows policy to the ones that left the model. -
When a source row is deleted What happens to a record whose row is gone. This only acts in Mirror mode.
Option Description Ignore Leave the Pipedrive record untouched. This is the default. Delete Delete the record. It lands in the Pipedrive trash and stays recoverable for 30 days. -
Integration name.
The name of your pipeline. Edit it to match your preferences.
Schedule
Choose how often the pipeline runs.

| Schedule type | Description |
|---|---|
| Manual | The pipeline runs only when triggered manually through the interface or via API. |
| Daily | The pipeline runs once a day at the specified update time. |
| Interval | The pipeline runs at specified time intervals. |
| Cron Expression | The pipeline runs on a schedule defined by a cron expression. |
For Daily schedules, set the Update time (the exact time each run starts), then click Create pipeline.
Renta also supports API triggers and integration with external orchestrators such as Apache Airflow, Dagster, and Prefect. See the full scheduling documentation for details.
The new pipeline appears in the Pipelines section under the Reverse ETL tab, where you can track its runs and progress.

Sync strategy
Renta syncs incrementally. A run compares the data model against the state the previous run recorded and sends only what moved, so a nightly sync touches a handful of records rather than the whole list. The first run has nothing to compare against and delivers the model in full.
| Row state | What Renta does |
|---|---|
| New | Searches by the match field, then updates the record it finds or creates one. In Update mode a row with no match is rejected. |
| Changed | Writes the new values onto the matched record. |
| Unchanged | Sends nothing. |
| Deleted | Follows the deleted-rows policy, which only acts in Mirror mode: leaves the record alone, or deletes it. |
Limits
- Every write costs a search.
Pipedrive has no upsert, so each row is a lookup followed by a write. Renta keeps the two within separate request budgets because Pipedrive rate-limits its Search API far more tightly than the rest, but a large first run still takes noticeably longer than an incremental one. - The search index lags a few seconds.
A record created moments ago may not be findable yet, so a run started immediately after another can duplicate it. Scheduled runs sit far outside that window. - Custom fields have to exist first.
Renta maps to the fields your account already has and never creates them. - Leads need an existing parent.
A lead is rejected unless it references a person or an organization that is already in Pipedrive. - A run stops when rejections pile up.
Renta halts the run when more than 30% of a batch, or more than 10% of the rows delivered so far, come back rejected. Records already written stay, and the next run picks up where this one stopped.
Ready to get started?
Build your data pipeline today or get a personalized demo. Start free!
Need help?
Get expert support to ensure your project succeeds. We're here to help!
Feature requests?
Help shape our product! Share your ideas for new features and integrations.