Google Drive to Notion, clean contact imports
CSV contact imports are where “quick task” turns into an hour of cleanup. One wrong column, one weird phone format, one blank row, and suddenly you’re fixing Notion records one-by-one.
If you’re a marketer cleaning up lead lists, a small business owner moving contacts out of a legacy tool, or an ops lead trying to keep your CRM tidy, this Drive Notion import automation gets you back to clean data you can actually use.
This workflow pulls a CSV from Google Drive, parses it, transforms the fields you care about, and writes each contact into your Notion database. You’ll see exactly how it works, what you need, and where people usually get stuck.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Drive to Notion, clean contact imports
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Download file", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Create a database page"]
n4@{ icon: "mdi:cog", form: "rounded", label: "Extract from File", pos: "b", h: 48 }
n2 --> n3
n1 --> n4
n4 --> n2
n0 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n3 database
class n2 code
classDef customIcon fill:none,stroke:none
class n2,n3 customIcon
The Problem: CSV Imports Create Messy Notion Databases
You start with a simple goal: “get contacts into Notion.” Then reality shows up. CSVs exported from contact managers rarely match your Notion properties perfectly, so names split oddly, phone numbers get treated like math, and a column you thought was “Company” turns into empty records. Even when you do get the import right, you still have to check the database after the fact, because one bad file can pollute your whole workspace. It’s not hard work. It’s fragile work, and it’s the kind that steals focus.
It adds up fast. Here’s where it usually breaks down.
- You spend about 30 minutes re-mapping properties every time a CSV format changes.
- Copy-paste imports lead to quiet errors, like emails shifting into the phone field.
- Teams avoid updating the database because they don’t trust the last import.
- Duplicates sneak in, so outreach gets awkward and reporting gets unreliable.
The Solution: Import a Drive CSV into Notion Automatically
This n8n workflow turns your contact CSV into clean, consistent Notion records without the manual juggling. You run it, it grabs the CSV from Google Drive, and it extracts the file contents so n8n can read each row. From there, a transformation step shapes the data into the exact fields you want in Notion. In the provided setup, it moves four core pieces of contact info: full name, email, phone, and company. Finally, each row becomes a new record in your Notion contacts database, so you can open Notion and see a structured list you can filter, tag, and use immediately.
The workflow starts with a manual trigger, which is great for imports you run weekly or whenever a new file arrives. Google Drive provides the source file, the parsing step turns the CSV into usable rows, and the Notion node writes the final records. Simple path. Clean output.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you get a fresh CSV export every Friday with about 200 contacts. Manually, you might spend 20 minutes downloading, importing, fixing columns, and spot-checking, then another 30 minutes cleaning weird rows and duplicates (so roughly an hour). With this workflow, you upload the CSV to the right Google Drive folder, run the automation, and wait for Notion to populate. That’s closer to 5 minutes of hands-on time, and you’re done.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Drive to store and retrieve the CSV file.
- Notion to save contacts into a database.
- Google Drive API key (create credentials in Google Cloud Console).
- Notion integration token (create an integration in Notion and share the database).
Skill level: Beginner. You’ll connect accounts, pick your Drive file, and match Notion properties to the fields you want.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
You trigger the import manually. Run it when you have a new CSV ready in Google Drive, like after exporting contacts from your email platform or CRM.
The workflow retrieves the file from Google Drive. n8n pulls the exact CSV you specify, so you’re not dragging files between tabs or emailing them around.
The CSV contents get parsed, then cleaned up. The extraction step turns the file into rows, and the transformation logic shapes each row into a predictable contact object (full name, email, phone, company).
Notion receives one new record per contact. The Notion node adds each contact to your chosen database, using your existing property names so the data lands cleanly.
You can easily modify which CSV columns you extract to match your database setup based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
This workflow starts with a manual run, so you can test and run it on demand.
- Add and open Manual Run Trigger.
- Leave the default settings as-is (no parameters required).
- Connect Manual Run Trigger to Retrieve Drive File.
Step 2: Connect Google Drive and Download the CSV
Pull the contact CSV from Google Drive and make it available as binary data for parsing.
- Open Retrieve Drive File and set Operation to
download. - Set File to the CSV you want to import (currently
[YOUR_ID]). - In Options, set Binary Property Name to
data. - Credential Required: Connect your googleDriveOAuth2Api credentials in Retrieve Drive File.
- Connect Retrieve Drive File to Parse File Contents.
Step 3: Parse and Transform Contact Data
Parse the CSV file and standardize the fields needed for Notion.
- Open Parse File Contents and keep the default settings (it will parse the binary
datafrom the previous node). - Connect Parse File Contents to Transform Contact Data.
- In Transform Contact Data, keep the JavaScript Code as provided to map:
name,email,phone, andcompany. - Verify the logic uses fields like
First Name,Last Name,Display Name,E-mail Address,Mobile Phone,Home Phone, andCompanyfrom the CSV.
Step 4: Configure Notion Output
Create a Notion database page for each contact.
- Open Add Notion Record and set Resource to
databasePage. - Select your target database in Database (currently
[YOUR_ID]with nameContacts). - Set Title to
={{ $json.name }}. - Configure property mappings in Properties:
- Email Address|email →
={{ $json.email ? $json.email : null}} - Phone Number|phone_number →
={{ $json.phone ? $json.phone : null}} - Company|rich_text →
={{ $json.company ? $json.company : "N/A" }}(with Rich Text set to={{ false }})
- Email Address|email →
- Credential Required: Connect your notionApi credentials in Add Notion Record.
- Connect Transform Contact Data to Add Notion Record.
Step 5: Test and Activate Your Workflow
Run the workflow end-to-end and confirm new entries appear in Notion.
- Click Execute Workflow on Manual Run Trigger to test.
- Confirm Retrieve Drive File downloads the CSV and Parse File Contents outputs parsed rows.
- Check Transform Contact Data outputs
name,email,phone, andcompanyfields. - Verify new records appear in your Notion database from Add Notion Record.
- When ready, toggle the workflow to Active for production use.
Common Gotchas
- Google Drive credentials can expire or need specific permissions. If things break, check the Google Cloud Console credential status and the account access to the file first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Notion database permissions are easy to miss. Make sure the database is shared with your Notion integration, or the “Add Notion Record” step will fail even though your token looks valid.
Frequently Asked Questions
About 30 minutes if your Notion database is already created.
No. You’ll mostly connect Google Drive and Notion, then confirm which CSV columns map to which Notion properties.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in any tool-side costs (Google and Notion are usually free at this scale).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll need to add the fields in two places. First, add the new columns in the transformation step (the “Transform Contact Data” code) so n8n outputs them consistently. Then map those outputs to matching properties in your Notion database in the “Add Notion Record” step. Common additions are address, tags/segments, and lifecycle stage.
Most of the time it’s permissions. Confirm your Notion integration token is correct and that the Notion database is explicitly shared with that integration. If it still fails, the property names in your Notion node may not match what’s actually in the database, especially after you rename fields.
Hundreds at a time is normal, and thousands are usually fine if your Notion workspace and n8n instance are stable. On n8n Cloud Starter, you’re limited by monthly executions, so very large imports may push you to a higher plan. If you self-host, there’s no execution cap, but you may need to slow requests if Notion rate limits. Practically, most small teams run this weekly or monthly and never hit a ceiling.
Often, yes, because CSV parsing and field transformations are easier to control in n8n, and you’re not paying per tiny step. If you want a simple “new row in Sheets → add Notion record” flow, Zapier or Make can be quicker. For file-based imports from Google Drive, n8n is usually the less frustrating option, honestly. If you’re on the fence, Talk to an automation expert and you can pick the simplest tool for your situation.
Clean contact data makes everything else easier: outreach, handoffs, reporting. Set this up once, and your Notion database stays trustworthy the next time a CSV lands in Google Drive.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.