How to Set Up Google Sheets → Pipedrive Lead Import (Auto-Sync) in n8n
Your leads live in a Google Sheet. Your sales pipeline lives in Pipedrive. Between them sits a human — copying names, emails, and company details from one screen to the other, usually hours after the
Your leads live in a Google Sheet. Your sales pipeline lives in Pipedrive. Between them sits a human — copying names, emails, and company details from one screen to the other, usually hours after the lead came in. That gap is where deals die. This guide shows you how to close it permanently with an n8n workflow that turns every new spreadsheet row into a Pipedrive contact and deal automatically, checking for new leads every five minutes.
The Problem: Manual Lead Entry Is Costing You Deals
Most teams collect leads faster than they can process them. A webform, a lead-gen ad, a scraped list, or a partner referral drops rows into a Google Sheet. Someone is supposed to move those into Pipedrive. In practice, that "someone" is busy, so leads sit for hours or days before anyone reaches out.
The cost is measurable. Response-time research consistently shows that contacting a lead within five minutes dramatically outperforms contacting them an hour later — often by an order of magnitude in conversion. Every row that waits in a spreadsheet is a lead going cold while a competitor answers first. Manual entry also introduces silent failures: typos in email addresses, skipped rows, duplicated contacts, and deals created without an owner. None of these show up on a dashboard until your pipeline reporting is already wrong.
The deeper issue is that manual entry doesn't scale. Ten leads a day is annoying. A hundred leads a day is a full-time job that no one wants and everyone does badly. You don't need a bigger team for data entry — you need to remove the data entry entirely.
The Solution: A Google Sheets → Pipedrive Auto-Sync in n8n
n8n is an open-source workflow automation tool that connects APIs without you writing integration code. The workflow described here does one job reliably: it watches your Leads spreadsheet, and whenever a new row appears, it creates the matching contact (Person) and deal in Pipedrive, then marks the row as synced so it never gets processed twice.
The logic runs on a schedule — every five minutes — so it behaves like a real-time sync without needing a public webhook or any changes to how your team fills the sheet. People keep pasting leads into Google Sheets exactly as they do today. n8n handles the rest in the background. Because n8n can self-host, your lead data never passes through a third-party SaaS connector you don't control, which matters for teams with data-residency or privacy requirements.
Step-by-Step: Building the Workflow in n8n
Here is the node-by-node structure. If you're building it yourself, this is the full path from trigger to Pipedrive deal.
1. Schedule Trigger
Add a Schedule Trigger node. Set the interval to every 5 minutes. This is what makes the sync feel automatic — n8n wakes up, checks for new rows, and goes back to sleep. Avoid intervals shorter than a minute unless you genuinely need them; five minutes stays well inside Google Sheets and Pipedrive API rate limits.
2. Google Sheets — Get Rows
Add a Google Sheets node set to the Get Row(s) operation. Authenticate with a Google OAuth2 credential, select your Leads spreadsheet and the correct sheet tab. The key design decision is how you identify "new" rows. Add a Status column to your sheet (values like blank or synced). Use a Filter in the node, or a downstream IF node, so only rows where Status is empty pass through. This is your idempotency guard — it guarantees a lead is never imported twice.
3. Filter / IF — Only Unsynced Rows
Add an IF node (or Filter node) with the condition {{ $json.Status }} is empty. Only rows that have never been synced continue down the pipeline. Everything else is ignored. This one node is the difference between a clean pipeline and one full of duplicate deals.
4. Pipedrive — Create or Update Person
Add a Pipedrive node, resource Person, operation Create. Authenticate with a Pipedrive API token (found under Settings → Personal → API in Pipedrive). Map the spreadsheet fields to Pipedrive fields:
name→{{ $json.Name }}email→{{ $json.Email }}phone→{{ $json.Phone }}
To avoid duplicate contacts, you can first add a Search Person operation by email and branch on whether a match exists — updating the existing Person instead of creating a new one. For a first version, Create is fine; add the search step once volume grows.
5. Pipedrive — Create Deal
Add a second Pipedrive node, resource Deal, operation Create. Set the title to something meaningful like {{ $json.Name }} – Inbound Lead, assign the person_id using the ID returned by the previous node ({{ $node["Pipedrive"].json.id }}), and set the stage_id to your first pipeline stage. You can also map value, currency, and owner if those columns exist in your sheet.
6. Google Sheets — Update Row (Mark as Synced)
Close the loop with a final Google Sheets node set to Update Row. Write synced back into the Status column for that row (matched on the row number or a unique ID). This step is not optional — without it, the next run five minutes later will re-import the same lead. Marking the row is what keeps the whole system idempotent and safe to run forever.
The Benefits: What You Actually Get
Once this is live, the change is immediate and permanent.
- Speed to lead. Every lead lands in Pipedrive within five minutes, complete with a deal in your first stage — ready for a rep to act on while the lead is still warm.
- Zero manual entry. Nobody copies rows anymore. That time goes back to selling.
- No duplicates, no dropped leads. The Status-column guard means every lead is imported exactly once, and none are ever skipped.
- Clean pipeline data. Deals are created consistently with the same title format, stage, and owner logic every time — so your reporting is trustworthy.
- It scales for free. Whether you get 10 or 1,000 leads a day, the workflow cost is the same. There's no headcount attached to volume.
Common Pitfalls (and How to Avoid Them)
The workflow is simple, but a few mistakes are easy to make on the first build.
- Forgetting the Status update. The single most common failure: leads get imported every five minutes forever, flooding Pipedrive with duplicates. Always include the final Update Row node and confirm it writes back before you trust the workflow.
- Matching rows by position instead of a stable key. If you sort or delete rows in the sheet, row-number matching breaks. Add a unique
Lead IDcolumn and match on that instead. - No error handling. If Pipedrive rejects a malformed email, the run can fail silently. Turn on Continue On Fail for the Pipedrive nodes, and add an error branch that logs the bad row or sends a Slack alert, so one broken lead doesn't stall the batch.
- Hitting rate limits. If you paste hundreds of rows at once, the batch can hit Pipedrive's API limit. Add a Loop / Split In Batches node with a small wait between batches to stay under the ceiling.
- OAuth token expiry. Google credentials can lapse. Re-authenticate the Google Sheets credential in n8n if you suddenly see auth errors, and monitor the workflow's execution log during the first week.
- Blank required fields. Pipedrive needs at least a name to create a Person. Add an IF check that skips or flags rows missing the essentials rather than pushing empty records into your CRM.
Build it once, test it with a handful of sample rows, confirm each imports a single contact and deal, and watch the Status column flip to synced. From that point on, your Google Sheet becomes a genuine front door to Pipedrive — and your team stops doing the one job software should have taken years ago.
Ja construimos isso pra voce
Nao comece do zero. O Google Sheets → Pipedrive Lead Import (Auto-Sync) e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.
Instalar por $39.0 →