{
  "slug": "snowflake",
  "url": "https://apps.sectorgrowth.com/integrations/snowflake/",
  "name": "Snowflake",
  "vendor": "Snowflake",
  "aliases": [
    "Snowflake Data Cloud",
    "Snowflake warehouse",
    "Snowflake Data Share",
    "Snowflake AI Data Cloud"
  ],
  "website": "https://www.snowflake.com/en/",
  "category": {
    "slug": "data-and-sync-platforms",
    "name": "Data and sync platforms",
    "url": "https://apps.sectorgrowth.com/categories/data-and-sync-platforms/"
  },
  "summary": "Snowflake holds the accounts, usage and revenue a seller cannot see. HubSpot's own share moves data out, and the return trip is where the work sits.",
  "answer": "Yes, and HubSpot builds it. HubSpot publishes Snowflake Data Share in the HubSpot App Marketplace as of September 2026, and it sends HubSpot data one way into Snowflake for querying. Coming back the other way is the harder half: a beta direct sync on Data Hub Enterprise maps tables onto objects and their associations, and anything needing timeline events, write-back or per-record rules is a 70 to 150 hour build.",
  "nativeApp": {
    "status": "hubspot-built",
    "name": "Snowflake Data Share",
    "developer": "HubSpot",
    "verifiedAt": "2026-09-22"
  },
  "api": {
    "style": "sql",
    "auth": "oauth2",
    "webhooks": "no",
    "changedSince": "yes",
    "sandbox": "yes",
    "docsUrl": "https://docs.snowflake.com/en/developer-guide/sql-api/index"
  },
  "objects": [
    {
      "source": "Account table",
      "hubspot": "company",
      "direction": "to_hubspot",
      "key": "Account identifier in a custom HubSpot property",
      "notes": "The warehouse account identifier, never the company domain."
    },
    {
      "source": "User or contact table",
      "hubspot": "contact",
      "direction": "to_hubspot",
      "key": "Source contact identifier, with email as a tie breaker"
    },
    {
      "source": "Subscription or order table",
      "hubspot": "deal",
      "direction": "to_hubspot",
      "key": "Source order identifier",
      "notes": "One way. The warehouse stays the system of record for revenue."
    },
    {
      "source": "Usage or health metric view",
      "hubspot": "company",
      "direction": "to_hubspot",
      "key": "Account identifier, written to numeric company properties",
      "notes": "Properties, not a custom object, so workflows can read them."
    },
    {
      "source": "Product event table",
      "hubspot": "engagement",
      "direction": "to_hubspot",
      "key": "Event identifier, recorded in a sent ledger",
      "notes": "Custom behavioural events, capped by the account's monthly limit."
    },
    {
      "source": "HubSpot object tables in the share",
      "hubspot": "deal",
      "direction": "to_source",
      "key": "HubSpot record identifier, carried by the share",
      "notes": "Read only inside Snowflake. Nothing written there reaches the CRM."
    }
  ],
  "approaches": [
    {
      "kind": "custom",
      "fit": "recommended",
      "why": "A keyed service reads changed rows on a stream or a watermark, batches upserts into HubSpot, runs associations as a separate pass, and applies the per-record rules a scheduled table sync cannot."
    },
    {
      "kind": "native",
      "fit": "possible",
      "why": "HubSpot's outbound share plus its beta Snowflake direct sync cover a lot on Data Hub Enterprise: a table or view mapped onto one or more objects, with associations defined in the mapping, on a schedule. It applies no per-record rules and sends nothing back out of HubSpot."
    },
    {
      "kind": "ipaas",
      "fit": "possible",
      "why": "A reverse ETL product does the same scheduled load with no build and bills per synced row, which suits a stable mapping and gets expensive as the warehouse grows."
    }
  ],
  "effort": {
    "discoveryHours": [
      10,
      20
    ],
    "buildHours": [
      70,
      150
    ],
    "buildBand": "70 to 150 hours",
    "typicalElapsed": "4 to 8 weeks"
  },
  "pattern": "polling-watermark",
  "faqs": [
    {
      "q": "Is there a HubSpot app for Snowflake?",
      "a": "Yes. HubSpot publishes Snowflake Data Share itself, and it is listed in the HubSpot App Marketplace alongside third-party reverse ETL apps that appear in the same search. Installing the share needs a Data Hub Enterprise subscription and either super admin rights or app marketplace permissions in the portal."
    },
    {
      "q": "Which direction does the HubSpot Snowflake Data Share move data?",
      "a": "Out of HubSpot and into Snowflake, and only that way. It puts your HubSpot data in your Snowflake account for querying beside everything else you hold there. Nothing you write in Snowflake travels back through the share, so reporting is what it is for, and operational sync is not."
    },
    {
      "q": "Can Snowflake push a change to HubSpot the moment a row lands?",
      "a": "No. Snowflake's webhook notifications go to a fixed set of destinations, Slack, Microsoft Teams, PagerDuty, Jira and ServiceNow, and there is no row-level event feed to an arbitrary endpoint. Anything reaching HubSpot is pulled on a schedule, either by reading a stream or by filtering on a modified timestamp."
    },
    {
      "q": "How do we load Snowflake rows into HubSpot without creating duplicates?",
      "a": "Upsert on a unique identifier property that holds the warehouse key, in batches of a hundred, then run associations as a separate pass once the parent records exist. Matching on email or company name looks fine on the first load and produces duplicates on the second, when somebody in the warehouse corrects a name."
    },
    {
      "q": "What does the Snowflake direct sync beta not cover?",
      "a": "It runs one way, from a table or view into HubSpot objects on a schedule, and one table can feed several objects with associations defined in the mapping, up to 10 GB, 200 columns and 30 million records a run, in create and update, create only or update only mode. It cannot filter rows, apply per-record business rules, write timeline events, or carry anything back out of HubSpot. It also needs Data Hub Enterprise."
    },
    {
      "q": "Do we need Data Hub Enterprise to query HubSpot data in Snowflake?",
      "a": "Yes for the share itself, which HubSpot documents as a Data Hub Enterprise feature, and an account with HIPAA enabled needs a Snowflake Business Critical account on the other side. Below that tier the routes into a warehouse are an export, a third-party pipeline, or a service that reads the CRM API on a schedule."
    },
    {
      "q": "How do we test a Snowflake to HubSpot sync before it touches production?",
      "a": "Against a separate database or schema in the warehouse and a HubSpot sandbox portal, with the production cutover being a credential swap and nothing else. Snowflake also offers a free trial account for 30 days, which is enough to prove the shape of a pipeline when a second environment is not available yet."
    },
    {
      "q": "How does a Snowflake sync know which rows changed?",
      "a": "Either a stream, which records inserts, updates and deletes against an offset and only advances when a transaction consumes it, or a modified timestamp column read against a stored watermark. Streams are stronger because they catch deletes. Watermarks are simpler and survive a pipeline being rebuilt from scratch."
    }
  ],
  "sections": [
    {
      "depth": 2,
      "text": "Why teams connect Snowflake to HubSpot",
      "anchor": "#why-teams-connect-snowflake-to-hubspot",
      "url": "https://apps.sectorgrowth.com/integrations/snowflake/#why-teams-connect-snowflake-to-hubspot"
    },
    {
      "depth": 2,
      "text": "What syncs",
      "anchor": "#what-syncs",
      "url": "https://apps.sectorgrowth.com/integrations/snowflake/#what-syncs"
    },
    {
      "depth": 2,
      "text": "Architecture",
      "anchor": "#architecture",
      "url": "https://apps.sectorgrowth.com/integrations/snowflake/#architecture"
    },
    {
      "depth": 2,
      "text": "Three ways to connect",
      "anchor": "#three-ways-to-connect",
      "url": "https://apps.sectorgrowth.com/integrations/snowflake/#three-ways-to-connect"
    },
    {
      "depth": 2,
      "text": "What breaks and how we prevent it",
      "anchor": "#what-breaks-and-how-we-prevent-it",
      "url": "https://apps.sectorgrowth.com/integrations/snowflake/#what-breaks-and-how-we-prevent-it"
    },
    {
      "depth": 3,
      "text": "Stream offsets and failed pushes",
      "anchor": "#stream-offsets-and-failed-pushes",
      "url": "https://apps.sectorgrowth.com/integrations/snowflake/#stream-offsets-and-failed-pushes"
    },
    {
      "depth": 3,
      "text": "A daily budget shared across private apps",
      "anchor": "#a-daily-budget-shared-across-private-apps",
      "url": "https://apps.sectorgrowth.com/integrations/snowflake/#a-daily-budget-shared-across-private-apps"
    },
    {
      "depth": 3,
      "text": "Deleted rows a timestamp read misses",
      "anchor": "#deleted-rows-a-timestamp-read-misses",
      "url": "https://apps.sectorgrowth.com/integrations/snowflake/#deleted-rows-a-timestamp-read-misses"
    },
    {
      "depth": 3,
      "text": "Warehouse values that do not fit",
      "anchor": "#warehouse-values-that-do-not-fit",
      "url": "https://apps.sectorgrowth.com/integrations/snowflake/#warehouse-values-that-do-not-fit"
    },
    {
      "depth": 2,
      "text": "Our approach",
      "anchor": "#our-approach",
      "url": "https://apps.sectorgrowth.com/integrations/snowflake/#our-approach"
    }
  ],
  "caseStudies": [],
  "guides": [
    "https://apps.sectorgrowth.com/guides/choose-a-hubspot-integration-approach/"
  ],
  "builtBySectorGrowth": false,
  "status": "published",
  "verifiedAt": "2026-09-25",
  "updatedAt": "2026-09-25",
  "authors": [
    {
      "name": "Prash",
      "role": "Lead of Technical Integrations and AI Solutions"
    }
  ],
  "sources": [
    {
      "title": "Snowflake SQL API",
      "url": "https://docs.snowflake.com/en/developer-guide/sql-api/index"
    },
    {
      "title": "Introduction to streams",
      "url": "https://docs.snowflake.com/en/user-guide/streams-intro"
    },
    {
      "title": "Sending webhook notifications",
      "url": "https://docs.snowflake.com/en/user-guide/notifications/webhook-notifications"
    },
    {
      "title": "Trial accounts",
      "url": "https://docs.snowflake.com/en/user-guide/admin-trial-account"
    },
    {
      "title": "Connect HubSpot and Snowflake Data Share",
      "url": "https://knowledge.hubspot.com/integrations/connect-snowflake-data-share"
    },
    {
      "title": "Sync Snowflake data to HubSpot",
      "url": "https://knowledge.hubspot.com/integrations/sync-snowflake-data-to-hubspot"
    },
    {
      "title": "API usage guidelines and limits",
      "url": "https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines"
    }
  ]
}