HubSpot connects to Google Sheets through its free Google Sheets app and two workflow actions, Create Google Sheet row and Update data in a Google Sheet, available on any Professional or Enterprise hub. You connect a Google account once, then add the action to a workflow and map HubSpot properties to the columns in your sheet.
Checked against the HubSpot Knowledge Base and App Marketplace on October 20, 2026.
That is the main way to push HubSpot data into a sheet without exporting files. It is not the only way, and it is not a true two-way sync, so this guide covers the native setup step by step, HubSpot's own limits, and what to use when you need data to flow from Sheets back into HubSpot.
Ways to connect HubSpot and Google Sheets
| Method | Direction | When data moves | HubSpot plan | Cost |
|---|---|---|---|---|
| Export records (CSV, XLSX or XLS) | HubSpot to file | Only when you export | All plans | Included |
| Google Sheets workflow actions | HubSpot to Sheets | When a record reaches the action in a workflow | Professional or Enterprise | Free app |
| HubSpot for Google Sheets extension | Sheets to HubSpot (import) | When you run an import | All plans | Free extension |
| Import tool (upload or paste) | Sheets to HubSpot | When you run an import | All plans | Included |
| Zapier or Make | Either direction | On each trigger, on the tool's polling schedule | Any plan (some HubSpot steps need paid tiers) | Free tiers, then paid |
| Sheets add-ons such as G-Integrator | HubSpot to Sheets, with edits pushed back | Manual or scheduled refresh | Varies | Trial, then paid |
If you are on Professional or Enterprise and want HubSpot to feed a reporting sheet, the workflow actions are the place to start. If you are on a free or Starter plan, or you need edits in the sheet to update HubSpot, look at the last rows of the table.
What you need before you start
Subscription. HubSpot lists the Google Sheets workflow actions for Marketing Hub, Sales Hub, Service Hub, Data Hub, Smart CRM and Revenue Hub, each at the Professional or Enterprise tier. Older guides say you need Operations Hub. HubSpot's October 6, 2025 product announcement states that Data Hub replaces Operations Hub, and any qualifying Professional or Enterprise hub works.
Permissions. You need Super Admin or Edit Workflows permission to create and edit the workflow.
The app. HubSpot builds the Google Sheets app (listed in the App Marketplace as Google Sheets Workflows for HubSpot) and lists it at $0. You can connect it from the App Marketplace or from inside a workflow.
A sheet HubSpot can see. The spreadsheet must be in the connecting user's Google Drive, already shared with that user, or in a shared drive that user can access. If a spreadsheet is missing from the dropdown, check who connected the integration.
A clean header row. The header row must start in cell A1, and every column in the table needs a label. Blank headers inside the range cause errors.
How to connect the Google Sheets app
- In HubSpot, open the App Marketplace and search for Google Sheets. Choose the listing built by HubSpot, Google Sheets Workflows for HubSpot.
- Install it and connect the Google account that owns or can access your target spreadsheets.
HubSpot also lets you connect the app from inside a workflow, so you can skip the marketplace if you prefer. Whichever Google user you connect decides which spreadsheets HubSpot can see.
How to add HubSpot records to a sheet (Create Google Sheet row)
Use this action for a running log: every new lead, every closed deal, every new ticket.
- Go to Automation > Workflows. If you see More in the navigation, click it first.
- Edit an existing workflow or create a new one. The marketplace listing says the actions work with all workflow types, so choose the object you want to log (contacts, deals, tickets and so on).
- Set the enrollment trigger, for example "Deal stage is Closed won."
- Click the + icon to add an action.
- Under Google Sheets, select Create Google Sheet row.
- Choose the Spreadsheet from the dropdown.
- Choose the Sheet, which is the tab at the bottom of the spreadsheet.
- For each column, select a Header, then select the HubSpot Property that should fill it.
- Click Save, review the workflow, and turn it on.
Each time a record reaches this action, HubSpot adds a new row below the existing data. It never fills or overwrites existing rows, so formulas that point at fixed cell ranges may need to be written as whole columns.
How to keep a row current (Update data in a Google Sheet)
Use this action when you want one row per record that changes as the record changes, such as a pipeline tracker with one row per deal.
- Go to Automation > Workflows and edit or create a workflow.
- Click the + icon and select Update data in a Google Sheet from the left panel.
- Choose the Spreadsheet and the Sheet.
- Set a Lookup column header and the matching Lookup column property. This is how HubSpot finds the right row, so pick a value that is unique per record, such as Record ID or email.
- Under Create a new row if none match, choose Yes if you want new records added automatically, or No to update existing rows only.
- Under Select columns to update, pick each column and set its value from a HubSpot property or the outcome of an earlier action. Use Add a column to add more.
- Click Save.
By default, HubSpot enrolls a record in a workflow only the first time it meets the enrollment triggers, so the row would update once. To keep the sheet current as deals move, turn on re-enrollment: click the enrollment trigger box, open the Settings tab, turn on Re-enroll, check the triggers to use (for example, deal stage or amount), and click Save. Contact-based workflows use a Re-enrollment tab instead. A record that is still in the workflow cannot re-enroll until it completes it.
Create vs update at a glance
| Create Google Sheet row | Update data in a Google Sheet | |
|---|---|---|
| What it does | Adds a new row below existing data | Changes cells in a row that matches a lookup value |
| Existing rows | Never touched | Only the first matching row is updated |
| No match found | Not applicable | Adds a row only if you chose Yes |
| Best for | Logs and event history | One-row-per-record trackers |
HubSpot's limits for the Google Sheets actions
These are HubSpot's documented limits. They are lower than Google's own cap, so they are the numbers to plan around.
| Limit | What HubSpot says |
|---|---|
| Cells per row | Each action can send up to 20 cells per row |
| Spreadsheet size | The spreadsheet cannot exceed 5,000,000 cells |
| Duplicate rows | Requests can time out and create a duplicate row, which you must delete manually |
| Matching | Update data in a Google Sheet changes only the first matching row |
| Dates | Dates arrive as Unix timestamps in milliseconds |
| Sheet performance | Large or formula-heavy sheets slow updates and can cause errors |
For context, Google raised the Google Sheets limit from five million to ten million cells in March 2022, according to the Google Workspace Updates blog. HubSpot's 5,000,000-cell limit for this action still applies.
If you need more than 20 columns from one record, add a second action that writes to another tab, or use a separate workflow. Keep in mind HubSpot's advice not to update the same sheet from multiple workflows.
Fixing dates. HubSpot suggests a sheet formula to convert the timestamp: `=A1/1000/60/60/24 + DATE(1970,1,1)`, then format the cell as a date. Data Hub Professional accounts can instead add a Format data action before the Sheets action.
Readable values. Reviews on the marketplace listing mention that some fields, such as owners, can arrive as internal IDs rather than names. Test each property you map and check the output before sharing the sheet.
Is the HubSpot Google Sheets integration real time?
Close, but it is not a live sync. The workflow action runs when a record reaches that step, so new rows appear shortly after the trigger fires. Nothing happens for records that never enroll, and edits made in the sheet do not flow back to HubSpot.
Three habits keep the data trustworthy:
- Do not type in the target sheet. HubSpot advises against manual data entry there. Build charts and formulas on a separate tab that references the synced tab.
- One workflow per sheet. Two workflows writing to the same sheet make it hard to trace which one wrote a row.
- Plan for duplicates. Because timeouts can create duplicate rows, add a Record ID column and a quick duplicate check (for example, conditional formatting on repeated IDs).
How to send Google Sheets data into HubSpot
The workflow actions only go one way. For the other direction you have three main options.
1. HubSpot for Google Sheets extension. This is a separate, free Google Workspace extension, available on all HubSpot plans. A Google Workspace administrator who is also a HubSpot user installs it from the Google Workspace Marketplace. Then, in a sheet, go to Extensions > HubSpot for Google Sheets > Open, click Sign in, and connect your HubSpot account. From the Home tab, click Import and choose:
- AI contact sync, where HubSpot suggests a property for each header that does not match exactly, or
- Import manually, which hands you off to HubSpot's standard import screen.
You need permission to create contacts and segments. If Sensitive Data is turned on in your HubSpot account, the extension cannot access any data.
2. HubSpot's import tool. Go to Data Management > Data Integration (click More first if you see it), or click Import on any object index page. You can upload a file or paste data copied from Google Sheets. To update existing records instead of creating duplicates, include a unique identifier: Record ID, email for contacts, company domain name for companies, or a custom property that requires unique values. You need import and edit permissions for the object.
3. A connector such as Zapier or Make. Zapier offers Google Sheets triggers such as New or Updated Spreadsheet Row and HubSpot actions such as Create or Update Contact, Update Deal and Create Ticket. Zapier's pricing page lists a free plan with 100 tasks a month, two-step Zaps and a 15-minute update interval, and a Professional plan with a 2-minute interval. Make's pricing page lists a free plan with 1,000 credits a month. This is the usual route for teams that want the sheet to act as an input form for HubSpot.
Troubleshooting the Google Sheets actions
| Problem | Likely cause | Fix |
|---|---|---|
| Spreadsheet missing from the dropdown | The connected Google user cannot access it | Share the file with that user or move it to a shared drive they can access |
| "Spreadsheet" options could not load due to 3rd-party API failure | The HubSpot user who connected the app was deactivated | Disconnect the integration and reconnect with an active HubSpot user and a Google account that can access the sheets |
| Columns not mapping or errors on save | Header row does not start in A1, or a header is blank | Move headers to row 1 starting at A1 and label every column |
| Updates failing or slow | Very large or formula-heavy sheet | Test with a simpler sheet and move formulas to another tab |
| Duplicate rows | A request timed out | Delete the duplicates by hand and add a Record ID check |
| Dates show as long numbers | Unix timestamps in milliseconds | Use the conversion formula or a Format data action |
Also confirm the spreadsheet still exists, the right tab is selected, and the mapped headers have not been renamed. Disconnecting and reconnecting with a different Google user can change which spreadsheets HubSpot can see.
A worked example (hypothetical)
Imagine a sales team at a software company that wants a shared pipeline sheet for leadership, one row per open deal.
- The operations lead creates a sheet with headers in row 1, starting at A1: Record ID, Deal name, Stage, Amount, Owner, Close date.
- They build a deal-based workflow that enrolls deals when the deal is created and re-enrolls when deal stage or amount changes.
- The workflow uses Update data in a Google Sheet, with Record ID as the lookup column and Create a new row if none match set to Yes.
- On a second tab, they convert close dates with HubSpot's formula, total amounts by stage, and flag deals with no stage change in 14 days.
- Reps keep working in HubSpot. Leadership reads the second tab, never the synced one.
When a deal moves from Proposal to Negotiation, the workflow re-enrolls it and HubSpot updates that deal's existing row. When a new deal is created, HubSpot adds a row. If a timeout creates a duplicate, the Record ID check flags it.
Getting help with HubSpot and Sheets reporting
INSIDEA is an Elite HubSpot Partner and the growth operating system for modern businesses. If your team relies on spreadsheets that drift away from your CRM, our HubSpot team can help you decide what belongs in a sheet, what belongs in HubSpot reports, and set up the workflows to match.




