n8n Tutorial: Google Sheets → Pipedrive Lead Import (Auto-Sync) Automation
Your sales team just watched three warm leads go cold. Not because the pitch was wrong — because a form submission sat in a Google Sheet for two days before anyone opened it. By the time someone copy-
Your sales team just watched three warm leads go cold. Not because the pitch was wrong — because a form submission sat in a Google Sheet for two days before anyone opened it. By the time someone copy-pasted the name, email, and company into Pipedrive, the prospect had already booked a demo with a competitor. If your lead capture lives in a spreadsheet and your pipeline lives in Pipedrive, every manual transfer between them is a delay, a typo, and a missed follow-up waiting to happen.
The problem: spreadsheets and CRMs never talk
Google Sheets is where leads land. It's the destination for your webform, your Facebook Lead Ads export, your event sign-up sheet, and the row your SDR pastes in after a cold call. It's fast, free, and everyone knows how to use it. That's exactly why it becomes a graveyard.
Pipedrive is where deals actually move. Stages, activities, reminders, reporting — none of it fires until a lead exists as a contact and a deal inside the CRM. So someone has to bridge the gap manually. That person forgets. They batch it "end of day." They fat-finger an email domain. They create duplicate contacts because they didn't check first. Every one of those small failures is quantifiable lost revenue, and it scales linearly with lead volume: the more leads you generate, the more the manual bottleneck costs you.
The core issue is that there is no native, reliable, field-mapped sync between an arbitrary Google Sheet and Pipedrive. Zapier can do it but charges per task and gets expensive fast at volume. Native Pipedrive imports are one-shot CSV uploads, not continuous. What you need is an automation you own, that runs on your schedule, maps your exact columns, and never asks for permission.
The solution: a 5-minute auto-sync built in n8n
This is a self-hosted (or n8n Cloud) workflow that polls your Leads spreadsheet every 5 minutes. When it finds a new row, it creates a Pipedrive person (contact), then a linked deal attached to that person, and finally marks the row as processed so it never gets imported twice. No middleman SaaS, no per-task billing, no leads decaying in a tab.
The logic is deliberately simple and idempotent — meaning you can run it a thousand times and it will never create duplicates. It reads only rows that haven't been flagged, acts on them, and writes back a status. That write-back is the piece most naive automations skip, and it's why they double-import. The workflow uses four core nodes plus a filter, and once it's live you never touch it again.
Step-by-step: building it in n8n
Here is the exact node chain. You can build this from scratch in about 20 minutes, or skip straight to the pre-built template linked below.
1. Schedule Trigger. Add a Schedule Trigger node. Set the interval to every 5 minutes (Trigger Interval → Minutes → 5). This is your heartbeat. If your lead volume is lower, 15 minutes is fine and lighter on API quota; for high-velocity paid campaigns, keep it at 5.
2. Google Sheets — Get Rows. Add a Google Sheets node, operation Get Row(s) in Sheet. Authenticate with a Google OAuth2 credential (or a service account for headless setups). Point it at your spreadsheet ID and the "Leads" tab. Under Options, enable Return only rows where a column has a value is not available directly, so instead pull all rows and filter next — or better, add a helper column called synced and use the node's filter to read the sheet fully, then screen in n8n.
3. Filter — only new rows. Add a Filter node. Condition: {{ $json["synced"] }} is empty (or not equal to yes). This guarantees you only process rows that haven't already been pushed to Pipedrive. This single node is what makes the whole thing idempotent — it's non-negotiable.
4. Pipedrive — Create Person. Add a Pipedrive node, resource Person, operation Create. Connect your Pipedrive API token credential (Settings → Personal preferences → API in Pipedrive). Map fields:
Name→{{ $json["name"] }}Email→{{ $json["email"] }}Phone→{{ $json["phone"] }}
Add the company or source as custom fields if your Pipedrive schema has them.
5. Pipedrive — Create Deal. Add a second Pipedrive node, resource Deal, operation Create. This is where the magic linkage happens: set Title to something like {{ $json["name"] }} — Inbound Lead, set Person ID to {{ $node["Pipedrive"].json["id"] }} (the ID returned by the person you just created), and pick the target Stage ID for your "New Leads" pipeline stage. Optionally set a value and expected close date.
6. Google Sheets — Update Row. Add a final Google Sheets node, operation Update Row. Write yes back into the synced column for that row, matched on the row number or a unique key column. This closes the loop and prevents re-imports on the next 5-minute cycle.
Wire them in order — Schedule → Get Rows → Filter → Create Person → Create Deal → Update Row — activate the workflow, and you're live.
Why this beats every manual process
Speed of response. A lead entered at 2:03pm is a Pipedrive deal by 2:05pm, triggering whatever activity automation and Slack alert you've wired to new deals. Lead-response research consistently shows contacting a prospect within five minutes dramatically outperforms even a one-hour delay. This automation makes five minutes your default, not your best case.
Zero data-entry errors. The email that goes into Pipedrive is the exact string from the sheet. No transcription mistakes, no swapped fields, no "was that gmail or gmall."
It scales for free. Whether you get 5 leads a day or 500, the workflow costs the same to run. Compare that to per-task pricing on hosted automation platforms, where volume is a tax.
Full ownership and auditability. Every execution is logged in n8n. You can see exactly which rows synced, when, and whether any failed — something a manual copy-paste process can never give you.
Common pitfalls (and how to avoid them)
Duplicate imports. The number-one failure. It happens when you skip the synced write-back or when the update node matches the wrong row. Always update the sheet in the same execution that created the deal, and match on a stable unique key (an ID or timestamp column), never on row position — inserting a row shifts positions and corrupts your matching.
Creating a deal without a person. If the Create Person node fails silently, the Create Deal node may still fire with no Person ID, creating an orphan deal. Add an IF node after Create Person to confirm an ID was returned, and route failures to a notification instead of blindly continuing.
Google API rate limits. Polling every 5 minutes across a huge sheet can hit read quotas. Keep the Leads tab lean — archive processed rows to a second tab periodically, or read only a bounded range.
Pipedrive custom-field IDs. Pipedrive doesn't accept custom field names, only their hashed API keys. If a mapped field won't save, pull the field's API key from Pipedrive's data-fields settings and use that exact string in the node.
Empty or malformed rows. A blank row or a lead with no email will error the Pipedrive node. Add validation in your Filter — require email to be non-empty — so junk rows are skipped instead of breaking the run.
Build it once, and your spreadsheet stops being a leaky bucket. Every lead that lands becomes a tracked, actionable deal in Pipedrive within five minutes — automatically, forever.
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 →