Skip to content

Push your data to a Google Sheet

A destination tells Crowflow where to put your synced data. You can create a brand-new Sheet from scratch or pick an existing one with the Google Picker.

5-min read, last updated 31 October 2026

Connect Google Sheets

Before you can push anywhere, you need to connect Google Sheets as an additional platform. This is separate from Google Ads: Sheets uses a different OAuth scope (drive.file) and its own connection card on the dashboard.

  1. Open Connections and click Connect Google Sheets.
  2. Sign in with the Google account that owns the Sheet you want to use.
  3. Approve the permission prompt.

You can use a different Google identity for Sheets than the one you used for Google Ads. Most users do.

Pick or create a Sheet

You have two options when you set up a destination:

  • Pick an existing Sheet using the Google Picker. Only Sheets you select via the Picker become accessible to Crowflow. We can’t see anything else in your Drive.
  • Create a new Sheet from scratch. Crowflow makes a fresh Sheet, names it, and remembers its ID.

Either way, the result is the same: a destination row pointing at a specific spreadsheet ID. You can have multiple destinations (Pro and Agency), useful for sharing different views with different clients.

With HubSpot connected on Pro or Agency, the box also asks What goes in it. Ad data is the Sheet described on this page. Sales only makes a Sheet that only gets the HubSpot Sales tab, and sends it straight away. You can do the same from the Sales page; see The Sales tab in your Sheet.

The tabs in your Sheet

Your ad data goes in a tab named Crowflow data. If the tab doesn’t exist when the push runs, Crowflow creates it. If it does, Crowflow writes there. With HubSpot or Salesforce connected on Pro or Agency, a Sheet can also get the CRM tabs and the HubSpot Sales tab.

With HubSpot or Salesforce connected, each kind of tab has a switch on the destination card, the ad data tab included. Turn the ad data off for a Sheet that should only get other tabs, such as a Sheet for your sales team. The rows already in a tab you turn off stay as they were: Crowflow never deletes a tab. A Sheet needs at least one tab, so the last one on stays on: turn another tab on first, or remove the destination.

Each tab of a Sheet has one writer. If two of your destinations point at the same Sheet, they cannot both write the same tab, or each push would overwrite the other’s: turn the tab off on one before you turn it on for the other. Picking a Sheet that is already one of your destinations does not add it a second time: Crowflow points you at its card, where you can change its tabs.

Important:
Don’t share a tab with manual work. If you add notes, charts, or formulas in the same tab as Crowflow’s data and you’re in REPLACE mode, our next push will overwrite your additions. In APPEND mode, a change to the columns clears the tab too. Use a separate tab for your analysis.

REPLACE vs APPEND

Each destination has a mode:

  • REPLACE (default): every push clears the tab and writes the full filtered window from scratch. Good when you want your tab to reflect “the last 30 days” and not grow indefinitely.
  • APPEND: every push adds only rows newer than the latest date already in the tab. Good for archival, year-over-year reporting, or when your Sheet feeds a chart you don’t want to disturb. The CRM tabs are still replaced on every push, so they hold only the date range, not the history the data tab builds up.

You can flip modes any time from the destination card on the dashboard. The next push respects the new mode.

Filters

By default, every destination receives every platform and the last 30 days. You can narrow it from the destination card:

  • Platforms: restrict to one or more of the ad platforms Crowflow supports (or any combination). Leave all on for “everything.”
  • Days: choose a rolling window from 7 days to a year. The window never reaches past your plan’s history (30 days on Free, 31 days on Starter, 6 months on Pro and 13 months on Agency), so on Free and Starter it is a month at most and on Pro six months. Useful when one Sheet is for “this week” and another for “this year.” The window covers every tab in the Sheet, not only your ad data: contacts, leads, deals and opportunities by the day they were created in your CRM, and the Blended and Sales tabs by day. A deal’s contacts can be older than the window, so some of them may not be on the Contacts tab.
Note:
To pick which accounts or campaigns flow into the destination, change the time grain to weekly / monthly / yearly, or choose and order the columns, including lifecycle stage and HubSpot property columns, see Customise the Sheet export. Every destination has its own Customise page with all of that.

When the push runs

A push runs automatically right after a successful sync, so once Crowflow has new data, your Sheet has it too within seconds.

The first push waits for the first sync, which starts by itself as soon as you pick an account and usually takes 10 to 30 minutes, depending on how much data there is. Set up your Sheet while it runs and the push at the end fills it in. If the sync finished first, push from the destination card.

You can also trigger a push manually from the destination card if you’ve, say, just changed the filter window and want to see it reflected immediately.

Spreadsheet size

Google caps a spreadsheet at 20 million cells, counting every tab and every blank cell. Crowflow keeps the tabs it writes close to their data: after each push it removes blank rows that have piled up under a table, leaving about a thousand spare rows below the last one.

The HubSpot Contacts tab holds one row per contact created in the destination’s date range, with a column per lifecycle stage and per property you picked. A range with 100,000 contacts takes about three million cells on its own, and the Deals and Blended tabs come on top. If a push stops with a message about the cell limit, pick a shorter date range, delete tabs or rows you no longer need, or point the destination at a new spreadsheet, then push again. Giving Crowflow a spreadsheet of its own is the simplest way to stay clear of the limit.

If a formula, pivot table or chart on another tab points at a fixed range such as A2:A1000, use a whole column such as A:A instead, so it keeps up as the data grows. Tabs get shorter too: the CRM tabs shrink when you pick a shorter date range, and when Crowflow removes the spare rows below a tab, a fixed range that reached into them shrinks with them and does not grow back.

Why drive.file is the right scope

Crowflow uses the drive.file OAuth scope, the narrowest one Google offers for the Sheets API. It’s a non-sensitive scope, which means:

  • We can only access Sheets you create with Crowflow or explicitly pick via the Google Picker.
  • We cannot list, search, or read anything else in your Drive.
  • Even our database doesn’t store a way to discover other Sheets you own. We only know about the ones you’ve told us about.

See our Security § OAuth for more.

Related help