Pricing

How to Connect HubSpot to Google Sheets

docs.google.com/spreadsheetsFile Edit View Insert Format Data Tools Extensions HelpA1ABCcontact_namedeal_stagedeal_value2Alice JohnsonClosed Won$48,5003Bob MartinezNegotiation$32,0004Carol LeeProposal$21,7005David KimQualified$15,2006Emma ParkNew Lead$8,900HubSpot dataSheet2BrookedHubSpotOpen BrookedExtensions → Brooked → Open+ New importSelect objectContactsDealsCompaniesTicketsFilter dealsStageAll stagesOwnerAll ownersClose dateThis quarterImporting deals…Fetching 5 records from HubSpot…Writing to Sheet1!A1Import complete ✓5 records importedAuto-refreshEvery hourEvery dayEvery week
JW
James Whitfield

5 ways to sync HubSpot with Google Sheets: official add-on vs Workflows vs Apps Script vs Brooked. Two-way sync, scheduled refresh, no Operations Hub.

HubSpot owns the CRM data for most modern SaaS go-to-market teams. The friction is that the people who need to slice, filter, and reconcile that data (RevOps, finance, leadership) usually want it in a spreadsheet, not in HubSpot's filtered list views. This guide walks through every realistic path: HubSpot's native CSV exports, Zapier or Make for trigger-based flows, HubSpot's own Operations Hub Data Sync, Apps Script + HubSpot API, and a full Brooked walkthrough including the OAuth flow and the AI agent for plain-English pipeline questions.

Tying pipeline to revenue? Finance teams pull QuickBooks into the same workbook to reconcile HubSpot deals against booked revenue , or compare Brooked to the connector RevOps usually reaches for in Brooked vs Coefficient.

HubSpot's official add-on vs a two-way sync connector

HubSpot now ships its own free HubSpot for Google Sheets add-on from the Workspace Marketplace, and it's worth being upfront about what it does and doesn't cover before you spend time evaluating anything else. It's a contacts-focused sidebar: you select rows in a sheet and push them into HubSpot as new or updated contacts, or look up a contact's HubSpot record without leaving the sheet. For teams whose only need is "get this spreadsheet of leads into HubSpot," it's genuinely the right, zero-cost answer: don't install a third-party connector just for that.

Where it stops: the official add-on does not do scheduled exports of deals, tickets, or companies into a sheet; it doesn't support two-way write-back on arbitrary properties (it's a one-directional push into HubSpot, plus read-only lookups); and it has no concept of multi-portal reporting if you manage more than one HubSpot account. It also doesn't expose custom objects or let you build a filtered, recurring pull of pipeline data the way a reporting workflow needs.

If what you're doing is data entry: cleaning a list in Sheets and syncing it into HubSpot contacts: stop reading and install the free add-on from the Marketplace. If you need the reverse (HubSpot data landing in Sheets on a schedule), any CRM object beyond contacts, write-back that isn't just contact upserts, or reporting that spans multiple portals, you need a dedicated connector. That's the gap Brooked and Coefficient fill, and it's also the gap HubSpot's own Operations Hub Data Sync only closes if you're already paying $720+/mo for Operations Hub Pro (more on that below).

The rest of this guide covers the five realistic paths for getting HubSpot CRM data into Sheets on a recurring basis: starting with a quick comparison table, then a walkthrough of each method.

Quick comparison: 5 ways to get HubSpot data into Sheets

MethodCostSetupAuto-refreshTwo-way syncCodeBest for
HubSpot native CSV exportFree30 seconds per exportManualNoNoneOne-off snapshots
Zapier / Make / n8nFrom $20/month1 hourTrigger-basedLimitedNoneReactive workflows (new deal → row appended)
HubSpot Operations Hub Data SyncOperations Hub Pro $720/mo+1 hourReal-timeYesNoneEnterprise customers already on Operations Hub Pro
Apps Script + HubSpot APIFree2–3 hoursTime-driven triggerDIYRequiredOne-developer custom workflows
Brooked add-onFree tier · Pro $29/userUnder 3 min15 min / hourly / dailyYesNoneRevOps teams who want live pipeline reporting in Sheets with AI

Quick clarification: HubSpot Data Sync is NOT a Google Sheets connector

Every team that goes looking for a HubSpot-to-Sheets path eventually lands on Operations Hub Data Sync and assumes that's the answer. It isn't. Data Sync syncs HubSpot with other CRMs (Salesforce, Pipedrive, Microsoft Dynamics) and a few line-of-business apps. It does not write to Google Sheets, and there's no Sheets destination in the picker. Stop searching for it. It doesn't exist.

The two things you actually have inside HubSpot for Sheets are: (1) a Workflow action (Operations Hub Professional or Enterprise only: gated behind the $720+/year tier), which creates new rows or updates rows in a Sheet whenever a HubSpot record changes; and (2) the official HubSpot for Google Sheets extension, which is for pushing data into HubSpot from Sheets (bulk contact updates, AI-assisted email drafting). Neither of these covers the most common task: pulling HubSpot CRM data out and into a sheet.

For that, you need one of the methods below: Apps Script + the HubSpot CRM API, a third-party connector, or a manual CSV export.

The lifecycle date properties RevOps actually needs

Most HubSpot exports default to the same five columns (email, first name, last name, company, lifecycle stage) and miss the time-stamped properties that make pipeline analysis possible. The two property families that matter:

  • hs_lifecyclestage_subscriber_date, hs_lifecyclestage_lead_date, hs_lifecyclestage_marketingqualifiedlead_date, hs_lifecyclestage_salesqualifiedlead_date, hs_lifecyclestage_opportunity_date, hs_lifecyclestage_customer_date: when each contact entered each lifecycle stage. Lets you build a conversion waterfall and compute stage-to-stage rates.
  • hs_v2_date_entered_<stage> and hs_v2_date_exited_<stage>, when each deal entered and exited every pipeline stage. Lets you compute stage velocity and identify which deals are stuck.

These properties exist on every HubSpot account but are invisible in default list views and the standard CSV export. To pull them via the API, name them explicitly in the properties parameter of the contact or deal request. In Brooked, they show up in the property picker when you start a query on the Contact or Deal object.

Method 1. HubSpot native CSV export

Every HubSpot list, report, and object table has an Export button. Click it, HubSpot emails a CSV or .xlsx, you upload it to Sheets. Free, native, no setup. Snapshot only: every refresh is manual.

Method 2. Zapier / Make / n8n

Automation platforms with rich HubSpot triggers, new deal, new contact, property changed, list membership change. Build a flow that fires on a trigger and appends a row to a sheet. Strong for reactive workflows; weak for analytical reporting (per-task pricing scales fast on high-volume orgs).

Method 3. HubSpot Operations Hub Data Sync

HubSpot's first-party bi-directional sync product. Sheets is a supported destination. Strong syncing semantics with conflict resolution. Requires Operations Hub Professional or Enterprise ($720+/mo), overkill for "I want HubSpot data in a sheet" unless you're already paying for it.

Method 4. Apps Script + HubSpot API

HubSpot has a comprehensive REST API. From Apps Script, OAuth into HubSpot, call /crm/v3/objects/deals, parse JSON, write to a sheet, schedule with time-driven triggers.

Pros: Free, customizable. Cons: OAuth token refresh management. 6-minute Apps Script timeout. You maintain the script.

Trigger Google Sheets updates from HubSpot webhooks

If you want a sheet to update the instant something happens in HubSpot: a deal closes, a ticket is created, a property changes - rather than on a polling schedule, the webhook path is the closest thing to real-time without paying for Operations Hub Data Sync. A HubSpot Workflow (the webhook action requires Operations Hub, though basic workflow enrollment is available on lower tiers) can POST a JSON payload to any URL when it fires. Point that at an Apps Script Web App deployment and you have a standing endpoint that appends a row every time the workflow runs - no polling, no time-driven trigger, no wasted API calls checking for changes that haven't happened.

The Apps Script side is a doPost(e) function deployed as a Web App. HubSpot's webhook action sends the payload as the request body, so you parse e.postData.contents as JSON and append whatever fields you care about:

function doPost(e) {
  const SECRET = "your-shared-secret";
  const params = JSON.parse(e.postData.contents);

  if (params.token !== SECRET) {
    return ContentService.createTextOutput("unauthorized").setMimeType(
      ContentService.MimeType.TEXT
    );
  }

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Webhook Log");
  sheet.appendRow([
    new Date(),
    params.objectId,
    params.dealname,
    params.dealstage,
    params.amount,
  ]);

  return ContentService.createTextOutput("ok").setMimeType(
    ContentService.MimeType.TEXT
  );
}

The auth caveat: Apps Script Web Apps deployed with "Anyone" access are reachable by anyone who has the URL, and there's no built-in request signing from HubSpot's side to verify the sender. Deploy as "Anyone with the link," then enforce your own shared-secret check inside doPost (as above), pass the token as a query param or in the JSON body from the Workflow's webhook action, and reject anything that doesn't match. Rotate the secret if the URL ever leaks, and don't rely on obscurity alone.

HubSpot to Looker Studio via Google Sheets

Looker Studio doesn't have a native HubSpot connector, and the third-party ones in the Looker Studio gallery generally charge per-connector fees on top of whatever you're already paying for HubSpot. The common workaround is to use Sheets as a buffer: sync HubSpot deals, contacts, or tickets into a sheet on a schedule (via Apps Script, Brooked, or Coefficient), then point Looker Studio at that sheet with the native, free Google Sheets connector.

This pattern also tends to make dashboards noticeably faster, since Looker Studio is reading a flat, pre-shaped sheet instead of paginating live API calls through a connector on every load. See why Looker Studio dashboards load slowly for more on that. If you're comparing connector options for Looker Studio generally, the Looker Studio connector directory covers what's free vs. paid across the ecosystem.

Method 5, A Google Sheets add-on (Brooked)

Brooked's HubSpot connector OAuths into your portal, exposes every standard and custom object in a sidebar browser, lets you pick properties and apply filters using HubSpot's native filter syntax, schedules refresh, supports two-way write-back, and includes the AI agent for plain-English pipeline questions.

Step 1. Install Brooked

Install from the Workspace Marketplace. Free tier: 100 imports/month with AI Analyst.

Step 2. Connect HubSpot via OAuth

Brooked sidebar → Add data source → HubSpot. OAuth redirects you to HubSpot, you authorize the requested scopes (read on CRM objects + optional write for two-way sync), HubSpot redirects back. OAuth tokens refresh automatically.

Step 3. Pick objects, properties, and filters

Brooked's HubSpot browser shows every standard object (Contacts, Companies, Deals, Tickets, Line Items, etc.) plus any custom objects. Pick one, pick properties (Brooked surfaces every property including custom ones with custom_ prefixes), apply filters with HubSpot's native filter syntax (date ranges, stage, owner, amount), pick a destination range, click Import.

Step 4. Schedule refresh and configure write-back

Gear icon on the import → Auto-refresh, pick cadence. For two-way sync, click 'Convert to two-way sync', map sheet columns to HubSpot properties, pick HubSpot ID as the unique key, choose write mode (UPDATE only is the safest default). Writes go through HubSpot's API and appear in HubSpot's standard activity log.

Using the AI agent with HubSpot

Open Chat. Ask: "How many deals closed last quarter, average size?" or "Show me deals over $50K that haven't had activity in 14 days". The agent picks the right HubSpot objects + properties, builds the filter, fetches the data, and lands it in the sheet with derived columns added (days_stale, % of quota, etc.).

BrookedBrooked AI, HubSpot
Live
Ask anything about your HubSpot data…

What about Microsoft Excel?

HubSpot's native CSV export delivers .xlsx natively. Coefficient supports HubSpot on both Excel and Sheets on Pro tier. Most RevOps teams that try Excel-as-live for HubSpot land on Sheets + Brooked for live reporting and export to .xlsx for board snapshots.

The verdict, which method when

  • I just need this list of deals once

    HubSpot CSV export. Click Export on the HubSpot list, get an email with CSV, upload to Sheets. Don't overengineer.

  • I want a new deal to automatically append a row

    Zapier or Make. Trigger-based row appends are exactly what Zapier excels at. Per-task pricing scales fast for high-volume orgs.

  • I want live pipeline reporting in Sheets across many properties

    Brooked. Visual property picker, filter builder using HubSpot's native filter syntax, scheduled refresh, AI for plain-English pipeline questions.

  • We're already on Operations Hub Pro

    HubSpot Operations Hub Data Sync. If you already pay $720+/mo for Operations Hub Pro, you have HubSpot's native bi-directional sync. Sheets is one of its destinations.

Troubleshooting common issues

Frequently asked questions

Which HubSpot tiers does Brooked work with?

Every tier. Free, Starter, Professional, Enterprise. Brooked uses HubSpot's standard CRM API, available on all tiers. Higher tiers have higher daily API quotas, which matters at scale.

Does Brooked support HubSpot custom objects?

Yes. Any custom object defined in your account appears alongside standard objects (Contacts, Companies, Deals, Tickets).

Can Brooked write data back to HubSpot?

Yes. Update existing records, create new ones. Every write goes through HubSpot's API and is captured in HubSpot's standard activity log.

Can I blend HubSpot with my warehouse data in one sheet?

Yes: one of Brooked's strongest use cases. HubSpot deals in one tab, Snowflake or Postgres revenue actuals in another, reconcile with XLOOKUP or the AI agent.

How does Brooked compare to Coefficient or Supermetrics for HubSpot?

Coefficient has a strong HubSpot connector (~$83/user/mo annual on Pro). Supermetrics is more marketing-channel-focused; HubSpot is one of many sources. Brooked's edge: HubSpot + database/warehouse in the same sheet with AI and two-way write-back at $29/user.

Does Brooked work with HubSpot Marketing Hub data (emails, workflows, forms)?

Yes. Email statistics, workflow membership, form submissions, and landing page performance are accessible via the marketing scopes. Apply filters before importing. These can be very high-volume.

Is the OAuth connection secure?

Yes. HubSpot's official OAuth 2.0 flow. Tokens encrypted at rest. Brooked never sees your HubSpot password. Disconnect any time from HubSpot Settings → Integrations → Connected apps.

What about HubSpot Operations Hub Data Sync?

It's HubSpot's first-party bi-directional sync product, available on Operations Hub Professional+ ($720+/mo). If you already pay for that, use it for system-of-record syncing. Brooked is for ad-hoc and live pipeline reporting in Sheets, which Operations Hub doesn't really cover.

I have HubSpot and a bunch of spreadsheets: how do I connect them?

Install Brooked in Google Sheets, connect HubSpot via OAuth, and pull contacts, companies, deals, or pipeline straight into the tabs you already use, no copy-paste, no separate dashboard. The data refreshes on a schedule, and you can reconcile it against your existing spreadsheet models or ask the AI Analyst questions like 'deals by stage created this quarter.'

Connect HubSpot to Sheets in 3 minutes.

Free tier · 100 imports/month with AI for pipeline reporting. Two-way sync supported. See the full HubSpot integration details.

Install Brooked free →

Also in CRM

More CRM guides

CRM

How to Connect Salesforce to Google Sheets

Every realistic way to get Salesforce data into Google Sheets in 2026, manual report exports, Data Loader, Zapier, Apps Script with SOQL, and a no-code connector, plus the API-edition gotcha that blocks most setups.

BT
Brooked Team
Read

Get your spreadsheet hours back

Brooked sets up in seconds. Your team is querying live data before lunch.

Get started free