# CSV to HubSpot Uploader with Google Sheets Integration: n8n workflow

> Started by someone submitting a form, and works across Google Sheets. 26 steps, 1 branch: large, and worth reading before you trust it with anything live.

Source: https://millionrounds.com/workflow/csv-to-hubspot-uploader-with-google-sheets-integration (Millionrounds; every figure on the page links to its filing or article)

[Automation library](https://millionrounds.com/workflows) · [Data collection](https://millionrounds.com/workflows?category=Data+collection#library)

# CSV to HubSpot Uploader with Google Sheets Integration

Started by someone submitting a form, and works across Google Sheets. 26 steps, 1 branch: large, and worth reading before you trust it with anything live.

Large

[Download free](https://millionrounds.com/login?next=%2Fapp%2Fworkflow%2Fcsv-to-hubspot-uploader-with-google-sheets-integration)

**26 steps** Large: read it before trusting it with anything live

**1** Branch: places the flow splits

**0** Loops or waits

**1** Service it connects to

## The flow

Starts it 2 Logic 15 Service 9

The steps in the order they run, from what starts it.

- 1 **Start here to update your field list** Manual trigger *Starts it*
- 2 **File upload form** Form trigger *Starts it*
- 3 **Erase Google sheet** Google Sheets *Service*
- 4 **To get the first line of file** Extract From File *Service*
- 5 **Get the content of file** Extract From File *Service*
- 6 **Define array of objects** Set *Logic*
- 7 **Set the real fields** Set *Logic*
- 8 **Merge fields and data** Merge *Logic*
- 9 **Split by object** Split Out *Logic*
- 10 **Get the fields from the sheet** Google Sheets *Service*
- 11 **Fetch properties from Hubspot** Http Request *Service*
- 12 **Check if all fields from input are defined** Code *Logic*
- 13 **Define crm_type** Code *Logic*
- 14 **If all fields are defined** If *Logic*
- 15 **Split results** Split Out *Logic*
- 16 **Set the values for each field** Code *Logic*
- 17 **Creates the correspondance table** Code *Logic*
- 18 **Remove hidden and starting with hs_ props fields** Filter *Logic*
- 19 **Split all records to import** Split Out *Logic*
- 20 **Form to set the correponding field for each input field** Form *Service*
- 21 **Transforms the results** Code *Logic*
- 22 **Define properties** Set *Logic*
- 23 **Set the values for each field1** Code *Logic*
- 24 **Append to Google sheet** Google Sheets *Service*
- 25 **Uploads to Hubspot** Http Request *Service*
- 26 **Form response** Form *Service*

## How it's built

- **Starts on:** Someone submitting a form
- **Steps:** 26, with 1 branch
- **Size:** Large: read it before trusting it with anything live
- **Connects to:** Google Sheets
- **Model:** None. This is plumbing, not judgement

## Questions

What does it need to run?

An n8n account, plus your own Google Sheets account. You connect your own accounts after importing it; none are included.

What starts it?

It starts on someone submitting a form.

Does it use AI?

No. Every step is fixed logic or a call to a service, so it does the same thing every time.

How long does it take to set up?

Take your time. At 26 steps it is large: read it before trusting it with anything live.

How do I import it?

Copy the workflow, open a new workflow in n8n and paste. The steps appear on the canvas, ready for your own accounts.

**Before you run it**

Nothing here has been tested by us. It is somebody's working automation, read and described from its own steps. Treat the connections it wants as a list of accounts it will touch, and read the 26 steps before you point it at anything that matters.

## Run it in n8n

- **Create your n8n account** Free to start. n8n is where the workflow runs. [Create an n8n account ↗](https://millionrounds.com/n8n)
- **Download the workflow** Free with a Millionrounds account. [Download free](https://millionrounds.com/login?next=%2Fapp%2Fworkflow%2Fcsv-to-hubspot-uploader-with-google-sheets-integration)
- **Paste it into n8n** Open a new workflow in n8n and paste. Then connect your own accounts.

Stored with the author's traces removed: canvas notes, instance identifiers, saved credential names and any live document they had left behind.

## Connects to

Each opens the other workflows that use it.

[Google Sheets](https://millionrounds.com/workflows?service=Google+Sheets#library)

## Workflows like it

Also data collection, with the same services where possible, closest in size first.

- [**Prepare Whisk AI product image briefs with Google Sheets** 26 steps · Google Drive, Google Sheets](https://millionrounds.com/workflow/prepare-whisk-ai-product-image-briefs-with-google-sheets)
- [**Recover unclaimed credits from Gmail with OpenRouter** 26 steps · Gmail, Google Sheets](https://millionrounds.com/workflow/recover-unclaimed-credits-from-gmail-with-openrouter)
- [**Track OpenAI Admin API usage and costs with Google Sheets** 26 steps · Google Sheets](https://millionrounds.com/workflow/track-openai-admin-api-usage-and-costs-with-google-sheets)
- [**Track employee onboarding forms with Google Sheets and Gmail** 26 steps · Gmail, Google Sheets](https://millionrounds.com/workflow/track-employee-onboarding-forms-with-google-sheets-and-gmail)
- [**AI-powered Reddit brand promotion with Claude** 26 steps · calls a model · Google Sheets, Reddit](https://millionrounds.com/workflow/ai-powered-reddit-brand-promotion-with-claude)
- [**PPC: automate ad scraping and editing with OpenAI** 26 steps · calls a model · Google Drive, Google Sheets](https://millionrounds.com/workflow/ppc-automate-ad-scraping-and-editing-with-openai)
