Need to import HubSpot contacts to Google Sheets for reporting, sharing, or analysis? You are not alone. Sales and marketing teams constantly pull CRM data into spreadsheets for pipeline reviews, list segmentation, and ad-hoc reporting. The good news: there are several reliable ways to get your HubSpot contacts, deals, and companies into Google Sheets, ranging from a simple CSV export to live two-way sync.
In this guide, you will learn three methods to import HubSpot contacts to Google Sheets. We will cover the built-in CSV export, a live connector approach using Coefficient, and a developer-friendly HubSpot API method with Apps Script. We will also cover how to handle large contact lists (50K+ rows) without crashing your browser.
Key Takeaways:HubSpot's built-in CSV export works for up to 1 million contacts and is the simplest methodCoefficient enables live, two-way sync between HubSpot and Google Sheets without codeThe HubSpot API + Apps Script method gives full control but requires developer skillsFor exports over 50K rows, use SmoothSheet to import the CSV without browser crashes
Why Export HubSpot Contacts to Google Sheets?
HubSpot is a powerful CRM, but sometimes a spreadsheet is the right tool for the job. Here are the most common reasons teams pull contacts into Google Sheets:
- Custom reports and dashboards: Build pivot tables, charts, and summary views that HubSpot's built-in reports cannot easily produce. Google Sheets gives you complete flexibility over layout and formulas.
- Share data with non-HubSpot users: Not everyone on your team has a HubSpot seat. Sharing a Google Sheet is faster and cheaper than adding CRM licenses for people who only need to review data.
- Data analysis and cleanup: Spot duplicates, standardize formatting, and enrich records using spreadsheet formulas. Tools like SmoothSheet's CSV Duplicate Remover can help clean exported lists before re-importing.
- Cross-platform integrations: Feed contact data into other tools (email platforms, ad audiences, project management) by using Google Sheets as a central data hub.
Method 1: HubSpot CSV Export (Simplest Approach)
The fastest way to import HubSpot contacts to Google Sheets is through HubSpot's native export feature. This works for contacts, companies, deals, and tickets.
Step 1: Open Your Contact List
Log in to HubSpot and navigate to Contacts > Contacts. You can export your entire database or filter to a specific list, view, or segment first. For large databases, filtering before export saves time.
Step 2: Click Export
Click the Export button in the top-right corner of the contacts table. In the export dialog, choose CSV as the file format. You can also select which properties (columns) to include. Only export the fields you actually need, as fewer columns means a smaller, faster file.
Step 3: Download the CSV File
HubSpot will email you a download link once the export is ready. For small lists (under 10,000 contacts), this takes seconds. Larger exports with 100K+ records may take a few minutes. Check your email or the notification bell in HubSpot for the download link.
For detailed export steps, see HubSpot's official export documentation.
Step 4: Import CSV into Google Sheets
Open Google Sheets and go to File > Import > Upload. Select your downloaded CSV file. Choose "Replace spreadsheet" or "Insert new sheet" depending on your preference, then click Import data.
If you are importing for the first time, our guide on how to import CSV to Google Sheets covers all four methods in detail, including handling encoding issues and large files.
When to Use This Method
- One-time exports or infrequent reporting
- Lists under 50,000 contacts
- You do not need live, auto-refreshing data
Method 2: Live Sync with Coefficient
If you need your HubSpot data to stay current in Google Sheets without manual re-exports, a live connector is the way to go. Coefficient is a popular Google Sheets add-on that connects directly to HubSpot and syncs data on a schedule.
How It Works
- Install Coefficient from the Google Workspace Marketplace.
- Connect HubSpot by authenticating with your HubSpot account inside the add-on sidebar.
- Select your data object (contacts, deals, companies, tickets, or custom objects) and pick the properties you want.
- Set a refresh schedule (hourly, daily, or weekly) so your sheet always has fresh data.
- Enable two-way sync (optional) to push edits from Google Sheets back into HubSpot.
Pros and Cons
- Pros: No code required, scheduled auto-refresh, two-way sync, supports custom objects
- Cons: Free tier has row limits, paid plans start around $49/month, adds another dependency to your workflow
For a deeper comparison of data import add-ons, see our roundup of the best Google Sheets add-ons for data import.
When to Use This Method
- You need data refreshed automatically (daily or hourly)
- Multiple team members use the same reporting sheet
- You want two-way sync to update HubSpot records from Sheets
Method 3: HubSpot API + Google Apps Script
For developers or power users who want full control, you can use the HubSpot CRM API with Google Apps Script to pull contacts directly into your spreadsheet. This method is free and highly customizable.
Basic Setup
- Create a Private App in HubSpot (Settings > Integrations > Private Apps) and generate an access token with
crm.objects.contacts.readscope. - In your Google Sheet, open Extensions > Apps Script.
- Add the following script as a starting point:
function importHubSpotContacts() {
const token = 'YOUR_ACCESS_TOKEN';
const url = 'https://api.hubapi.com/crm/v3/objects/contacts?limit=100&properties=firstname,lastname,email,company';
const options = {
method: 'get',
headers: { 'Authorization': 'Bearer ' + token },
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Write headers
sheet.getRange(1, 1, 1, 4).setValues([['First Name', 'Last Name', 'Email', 'Company']]);
// Write contact rows
const rows = data.results.map(c => [
c.properties.firstname || '',
c.properties.lastname || '',
c.properties.email || '',
c.properties.company || ''
]);
if (rows.length > 0) {
sheet.getRange(2, 1, rows.length, 4).setValues(rows);
}
}Handling Pagination
The HubSpot API returns a maximum of 100 contacts per request. For larger lists, you need to follow the paging.next.after cursor in the response to fetch subsequent pages. Add a while loop that continues fetching until there are no more pages.
When to Use This Method
- You want a free solution with no third-party add-ons
- You need custom data transformations during import
- You are comfortable writing and maintaining Apps Script code
Handling Large Contact Lists (50K+ Contacts)
Here is where most teams run into trouble. Google Sheets can technically hold 10 million cells, but browser-based uploads start to struggle well before that. If your HubSpot export contains 50,000 or more contacts with 20+ columns, you are looking at over a million cells, and your browser tab may freeze or crash during import.
The Browser Limitation
When you import a CSV through Google Sheets' File > Import dialog, your browser has to parse the entire file in memory, then upload it to Google's servers. For files over 30 MB, this process frequently fails with timeout errors or the dreaded "File is too large" warning.
The Server-Side Solution
SmoothSheet solves this by processing your CSV server-side. Instead of loading the file in your browser, SmoothSheet uploads it directly to Google's servers and writes rows to your spreadsheet in the background. You can import files up to 10 million cells at $9/month flat, with no per-row pricing.
The workflow is simple:
- Export your contacts from HubSpot as CSV
- Open SmoothSheet in Google Sheets (Extensions > SmoothSheet)
- Select your CSV file and click Import
- SmoothSheet handles the rest, even for 500K+ row files
If your export has encoding issues with international characters (common with contact names), run it through the CSV Encoding Fixer before importing.
Keeping HubSpot Data in Sync
Once your contacts are in Google Sheets, the data starts going stale. How you keep it fresh depends on your use case.
Scheduled CSV Re-exports
For weekly or monthly reporting, a manual CSV re-export is often good enough. HubSpot lets you save filtered views, so re-exporting the same segment takes under a minute. Pair this with SmoothSheet for large files and you have a reliable, low-cost workflow.
Live Connectors
If your sheet powers a live dashboard or a team relies on up-to-the-hour data, use a connector like Coefficient (Method 2). The auto-refresh feature keeps data current without anyone remembering to run an export. This is especially useful for sales pipeline sheets that need daily updates.
Triggered API Pulls
With Apps Script (Method 3), you can set up time-based triggers to run your import function automatically. Go to Extensions > Apps Script > Triggers and add a time-driven trigger to run daily or hourly. This gives you automated sync without the cost of a paid add-on, though you will need to maintain the script yourself.
Frequently Asked Questions
Can I export HubSpot contacts to Google Sheets for free?
Yes. HubSpot's built-in CSV export is available on all plans, including the free CRM. You can export up to 1 million records at a time, then import the CSV into Google Sheets at no cost. The HubSpot API method with Apps Script is also completely free.
How many HubSpot contacts can Google Sheets handle?
Google Sheets supports up to 10 million cells per spreadsheet. If your contact export has 20 columns, that gives you a practical limit of about 500,000 rows. However, Sheets performance degrades noticeably above 100,000 rows, so consider splitting very large exports.
Does HubSpot have a native Google Sheets integration?
HubSpot does not offer a built-in, direct sync to Google Sheets. The native export produces a CSV file that you import manually. For live sync, you need a third-party connector like Coefficient, or a custom Apps Script using the HubSpot API.
How do I keep HubSpot data updated in Google Sheets automatically?
You have two main options. First, use a connector add-on like Coefficient that auto-refreshes on a schedule (hourly, daily, or weekly). Second, write a Google Apps Script that calls the HubSpot API and attach a time-driven trigger to run it automatically. The connector approach is easier; the script approach is free.
Conclusion
Importing HubSpot contacts to Google Sheets does not have to be complicated. For one-time exports, HubSpot's CSV download gets the job done in minutes. For live, always-current data, a connector like Coefficient automates the refresh. And for full control at zero cost, the HubSpot API with Apps Script is hard to beat.
If your contact lists are large (50K+ rows), skip the browser upload and use SmoothSheet to import your CSV server-side. It handles files up to 10 million cells for $9/month flat, so your browser never has to struggle with oversized imports again.