Skip to main content
HubSpot is a comprehensive customer relationship management (CRM) and marketing automation platform that helps businesses attract, engage, and delight customers. It provides tools for marketing, sales, customer service, and content management, all integrated into a single platform. For more info on the streams and permissions, check the Hubspot API Documentation.

Configuring HubSpot as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Hubspot option from the list of connectors. Click Next and you’ll be prompted to add your access. Login with a Hubspot account that has Super Admin permissions in order to install the Nekt app into the workspace.

1. Add account access

Configure the following settings:
  • Start Date: The date of the first record you want to sync with.
  • Enable Leads Stream (Optional): Enable to extract leads data (requires HubSpot Pro, Enterprise, or Enterprise Plus).
  • Extract Deal Associations (Optional): Enable to extract related entities for deals.
  • Deal Associations List (Optional): If enabled above, specify which associations to extract (comma-separated). Default includes: calls, commerce_payments, communications, companies, contacts, deal_split, deals, emails, invoices, line_item, meetings, notes, orders, postal_mail, quotes, services, subscriptions, tasks, tickets.
  • Extract Deal Property History (Optional): Enable to track property changes for deals.
  • Deal Property History Fields (Optional): If enabled above, specify which properties to track (comma-separated). Default: dealstage.
  • Extract Contact Associations (Optional): Enable to extract related entities for contacts.
  • Contact Associations List (Optional): If enabled above, specify which associations to extract (comma-separated). Default includes: calls, communications, companies, contacts, emails, meetings, notes, subscriptions, tasks, tickets.
  • Extract Contact Property History (Optional): Enable to track property changes for contacts.
  • Contact Property History Fields (Optional): If enabled above, specify which properties to track (comma-separated). Default: lifecyclestage.
  • Extract Ticket Associations (Optional): Enable to extract related entities for tickets.
  • Ticket Associations List (Optional): If enabled above, specify which associations to extract (comma-separated). Default includes: calls, communications, companies, contacts, emails, meetings, notes, subscriptions, tasks, tickets.
  • Extract Lead Associations (Optional): Enable to extract related entities for leads (requires Enable Leads Stream).
  • Lead Associations List (Optional): If enabled above, specify which associations to extract (comma-separated). Default includes: calls, communications, companies, contacts, emails, meetings, notes, subscriptions, tasks, tickets.
  • Extract Company Associations (Optional): Enable to extract related entities for companies.
  • Company Associations List (Optional): If enabled above, specify which associations to extract (comma-separated). Default includes: calls, communications, companies, contacts, emails, meetings, notes, subscriptions, tasks, tickets.
  • Extract Email Associations (Optional): Enable to extract related entities for emails.
  • Email Associations List (Optional): If enabled above, specify which associations to extract (comma-separated). Default includes: companies, contacts, deals, tickets.
  • Property objects (Optional): Comma separated list of HubSpot object types to fetch property definitions for. Default: calls, communication, company, contacts, deals, email, line_item, meeting, notes, postal_mail, product, task, tickets.
  • Properties as JSON string (Optional): When enabled, the properties column in CRM object streams (contacts, companies, deals, tickets, etc.) is emitted as a JSON string instead of a structured object. Enable this if your HubSpot account has a very large number of custom properties and you are hitting destination limits on nested fields (e.g. BigQuery’s 10,000 field limit). Default: false.
Note: Enabling association and history options will increase extraction time but provide more detailed relationship data. Click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: you can choose between INCREMENTAL and FULL_TABLE. Read more about Sync Types here.
Once you are done configuring, click Next.

4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Below you’ll find all available data streams from HubSpot and their corresponding fields:
Alongside all the fields listed here, most of the streams have additional/custom fields from Hubspot, specific to each workspace and account type. These fields are dynamically included based on your HubSpot configuration.
HubSpot accounts with a very large number of custom properties may exceed destination limits on nested fields. For example, BigQuery enforces a maximum of 10,000 fields per table, and the properties column in CRM object streams (contacts, companies, deals, tickets, etc.) can exceed this limit. If you run into this issue, enable the Properties as JSON string option in your source configuration to emit the properties column as a flat JSON string instead of a structured object.
Account activity audit logs. Tracks user actions such as CRM object creation, property updates, and security activity. Note: Requires a HubSpot Enterprise account and the account-info.security.read scope.
FieldTypeDescription
idStringUnique identifier of the audit log entry
categoryStringCategory of the audit event (e.g. PIPELINE, PROPERTY_VALUE)
subCategoryStringSub-category of the audit event (e.g. DEAL, CONTACT)
actionStringAction performed (e.g. UPDATE, PERFORM, CREATE)
targetObjectIdStringID of the object that was acted upon
occurredAtDateTimeTimestamp when the audit event occurred
actingUserObjectUser who performed the audited action (contains userId and userEmail)
Call activity and engagement data.
FieldTypeDescription
idStringUnique identifier for the call
properties.hs_call_directionStringCall direction (inbound/outbound)
properties.hs_call_durationStringDuration of the call
properties.hs_call_statusStringCall status
properties.hs_timestampStringWhen the call occurred
properties.hubspot_owner_idStringCall owner
properties.hs_call_titleStringCall title or subject
properties.hs_call_bodyStringCall notes or description
properties.hs_lastmodifieddateStringLast modification timestamp
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
Communication activities and engagements (SMS, WhatsApp, LinkedIn messages, etc.).
FieldTypeDescription
idStringUnique identifier for the communication
properties.hs_communication_channel_typeStringChannel type (SMS, WhatsApp, etc.)
properties.hs_communication_bodyStringCommunication content
properties.hs_timestampStringWhen the communication occurred
properties.hubspot_owner_idStringCommunication owner
properties.hs_lastmodifieddateStringLast modification timestamp
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
Company and organization records.
FieldTypeDescription
idStringUnique identifier for the company
properties.nameStringCompany name
properties.domainStringCompany website domain
properties.industryStringIndustry classification
properties.phoneStringCompany phone number
properties.addressStringCompany address
properties.cityStringCompany city
properties.stateStringCompany state/region
properties.countryStringCompany country
properties.zipStringPostal code
properties.numberofemployeesStringEmployee count
properties.annualrevenueStringAnnual revenue
properties.lifecyclestageStringCompany lifecycle stage
properties.hubspot_owner_idStringAssigned owner
properties.createdateStringCreation date
properties.hs_lastmodifieddateStringLast modification date
associationsArrayRelated records (if enabled)
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
Individual contact records and their properties.
FieldTypeDescription
idStringUnique identifier for the contact
properties.emailStringEmail address
properties.firstnameStringFirst name
properties.lastnameStringLast name
properties.phoneStringPhone number
properties.companyStringCompany name
properties.jobtitleStringJob title
properties.lifecyclestageStringContact lifecycle stage
properties.hubspot_owner_idStringAssigned owner
properties.createdateStringCreation date
properties.lastmodifieddateStringLast modification date
associationsArrayRelated records (if enabled)
propertiesWithHistoryObjectProperty change history (if enabled)
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
Custom objects defined in your HubSpot account. These are automatically discovered and extracted.Note: Each custom object will appear as a separate stream with its own name based on the object definition in HubSpot. The fields are dynamic and depend on the custom object schema configured in your HubSpot account.
FieldTypeDescription
idStringUnique identifier for the custom object record
properties.hs_lastmodifieddateStringLast modification timestamp
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
archivedBooleanWhether the record is archived
Sales deals and opportunities.
FieldTypeDescription
idStringUnique identifier for the deal
properties.dealnameStringDeal name
properties.amountStringDeal amount
properties.dealstageStringCurrent stage
properties.pipelineStringPipeline ID
properties.closedateStringExpected close date
properties.hubspot_owner_idStringAssigned owner
properties.createdateStringCreation date
properties.hs_lastmodifieddateStringLast modification date
associationsArrayRelated records (if enabled)
propertiesWithHistoryObjectProperty change history (if enabled)
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
Deal pipeline configurations and stages for sales workflows.
FieldTypeDescription
labelStringDisplay name of the pipeline
displayOrderIntegerOrder in which the pipeline is displayed
activeBooleanWhether the pipeline is active
stagesArrayArray of pipeline stages with their configurations
objectTypeStringType of object this pipeline applies to
objectTypeIdStringID of the object type
pipelineIdStringUnique identifier for the pipeline
createdAtStringDate when pipeline was created
updatedAtStringLast modification timestamp
defaultBooleanWhether this is the default pipeline
Email communications and messaging data.
FieldTypeDescription
idStringUnique identifier for the email
properties.hs_email_subjectStringEmail subject line
properties.hs_email_textStringEmail body content
properties.hs_email_directionStringEmail direction (inbound/outbound)
properties.hs_email_statusStringEmail status
properties.hs_email_sender_emailStringSender email address
properties.hs_email_sender_firstnameStringSender first name
properties.hs_email_sender_lastnameStringSender last name
properties.hs_email_to_emailStringRecipient email address
properties.hs_email_to_firstnameStringRecipient first name
properties.hs_email_to_lastnameStringRecipient last name
properties.hs_timestampStringEmail timestamp
properties.hubspot_owner_idStringAssigned owner
properties.createdateStringDate when email was created
properties.hs_lastmodifieddateStringLast modification timestamp
associationsArrayRelated records (if enabled)
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
archivedBooleanWhether the email is archived
Email subscription type definitions (e.g., marketing, legal basis) used for consent and preferences.
FieldTypeDescription
idStringUnique identifier for the subscription type
portalIdIntegerAssociated portal ID
nameStringName of the subscription type
descriptionStringDescription of the email subscription
activeBooleanWhether the subscription type is active
internalBooleanWhether the subscription is for internal use only
categoryStringCategory classification of the subscription
channelStringChannel associated with the subscription
internalNameStringInternal name of the subscription
businessUnitIdIntegerAssociated business unit ID
Form definitions and configurations.
FieldTypeDescription
idStringUnique identifier for the form
nameStringForm name
submitTextStringSubmit button text
formTypeStringType of form
createdAtStringCreation timestamp
updatedAtStringLast update timestamp
fieldsArrayArray of form fields and their properties
Submitted form data and responses.
FieldTypeDescription
idStringUnique identifier for the submission
formIdStringAssociated form ID
submittedAtStringSubmission timestamp
valuesObjectSubmitted form values
contactIdStringAssociated contact ID
Feedback and survey submissions from contacts.
FieldTypeDescription
idStringUnique identifier for the feedback submission
properties.nameStringSubmitter name
properties.cityStringCity from the submission
properties.stateStringState or status
properties.industryStringIndustry
properties.domainStringAssociated domain
properties.phoneStringPhone number
properties.createdDateStringWhen the record was created
properties.hs_lastmodifieddateStringLast modification timestamp
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
archivedBooleanWhether the record is archived
Goal targets and tracking for sales and marketing performance.
FieldTypeDescription
idStringUnique identifier for the goal
properties.hs_goal_nameStringName of the goal
properties.hs_target_amountStringTarget value or amount
properties.hs_start_datetimeStringStart date and time of the goal period
properties.hs_end_datetimeStringEnd date and time of the goal period
properties.hs_created_by_user_idStringUser who created the goal
properties.createdateStringWhen the record was created
properties.hs_lastmodifieddateStringLast modification timestamp
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
archivedBooleanWhether the record is archived
Lead records for sales prospecting.Note: This stream is only available for accounts with HubSpot Pro, Enterprise, or Enterprise Plus. Enable via “Enable Leads Stream” in the source configuration.
FieldTypeDescription
idStringUnique identifier for the lead
properties.hs_lead_nameStringLead name
properties.hs_lead_statusStringLead status
properties.hubspot_owner_idStringAssigned owner
properties.hs_lastmodifieddateStringLast modification timestamp
associationsArrayRelated records (if enabled)
propertiesWithHistoryObjectProperty change history (if enabled)
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
archivedBooleanWhether the lead is archived
Individual items within deals and quotes.
FieldTypeDescription
idStringUnique identifier for the line item
properties.nameStringLine item name
properties.priceStringUnit price
properties.quantityStringQuantity ordered
properties.hs_product_idStringAssociated product ID
properties.hs_recurring_billing_periodStringBilling period
properties.createdateStringDate when line item was created
properties.hs_lastmodifieddateStringLast modification timestamp
properties.recurringbillingfrequencyStringRecurring billing frequency
createdAtStringDate when record was created
updatedAtStringLast modification timestamp
archivedBooleanWhether the line item is archived
Marketing email campaigns and their performance statistics.
FieldTypeDescription
idStringUnique identifier for the marketing email
nameStringEmail name
subjectStringEmail subject line
stateStringEmail state (draft, published, etc.)
typeStringEmail type
isPublishedBooleanWhether email is published
publishedAtStringPublication timestamp
publishDateStringScheduled publish date
campaignStringAssociated campaign ID
campaignNameStringCampaign name
fromObjectSender information (fromName, replyTo, customReplyTo)
toObjectRecipient configuration (contactIds, contactLists, suppressGraymail)
subscriptionDetailsObjectSubscription information (subscriptionId, subscriptionName, officeLocationId)
contentStringEmail content (JSON string)
emailTemplateModeStringTemplate mode (e.g., DRAG_AND_DROP)
isAbBooleanWhether it’s an A/B test
isTransactionalBooleanWhether it’s a transactional email
languageStringEmail language
archivedBooleanWhether the email is archived
createdAtStringCreation timestamp
updatedAtStringLast update timestamp
stats.countersObjectEmail performance counters (sent, delivered, open, click, bounce, etc.)
stats.ratiosObjectPerformance ratios (openratio, clickratio, bounceratio, etc.)
stats.deviceBreakdownObjectOpens/clicks by device type (computer, mobile, unknown)
webversion.enabledBooleanWhether web version is enabled
webversion.urlStringWeb version URL
Scheduled meetings and appointments.
FieldTypeDescription
idStringUnique identifier for the meeting
properties.hs_meeting_titleStringMeeting title
properties.hs_meeting_bodyStringMeeting description
properties.hs_meeting_start_timeStringStart time
properties.hs_meeting_end_timeStringEnd time
properties.hs_meeting_outcomeStringMeeting outcome
properties.hubspot_owner_idStringMeeting owner
createdAtStringCreation timestamp
updatedAtStringLast update timestamp
Notes and annotations on records.
FieldTypeDescription
idStringUnique identifier for the note
properties.hs_note_bodyStringNote content
properties.hubspot_owner_idStringNote creator
properties.hs_timestampStringCreation timestamp
properties.hs_attachment_idsStringAttached file IDs
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
Custom properties and field definitions for all HubSpot objects. This stream merges all individual property streams into a single comprehensive properties table. The hubspot_object field indicates which object the property belongs to.
FieldTypeDescription
updatedAtStringTimestamp when the record was last updated
createdAtStringTimestamp when the record was created
nameStringInternal name of the property
labelStringDisplay label of the property
typeStringType classification of the record
fieldTypeStringField type used in forms and UI
descriptionStringDescription of the property
groupNameStringName of the property group
optionsArrayList of options for the property
displayOrderIntegerOrder in which the property is displayed
calculatedBooleanWhether the property is calculated
externalOptionsBooleanWhether the property uses external options
hasUniqueValueBooleanWhether the property must have a unique value
hiddenBooleanWhether the property is hidden
hubspotDefinedBooleanWhether the property is defined by HubSpot
modificationMetadataObjectMetadata about property modification permissions
formFieldBooleanWhether the property is used in forms
hubspot_objectStringHubSpot object type the property belongs to
createdUserIdStringID of the user who created the property
updatedUserIdStringID of the user who last updated the property
referencedObjectTypeStringObject type referenced by this property (e.g. OWNER)
calculationFormulaStringFormula used for calculated properties
archivedBooleanWhether the property is archived
dataSensitivityStringData sensitivity level of the property
HubSpot user and owner information.
FieldTypeDescription
idStringUnique identifier for the owner
emailStringOwner’s email address
firstNameStringOwner’s first name
lastNameStringOwner’s last name
userIdStringAssociated user ID
createdAtStringDate when owner was created
updatedAtStringLast modification timestamp
archivedBooleanWhether the owner is archived
Postal mail activities and engagements for direct mail campaigns.
FieldTypeDescription
idStringUnique identifier for the postal mail
properties.hs_postal_mail_bodyStringPostal mail content
properties.hs_timestampStringWhen the postal mail was sent
properties.hubspot_owner_idStringOwner
properties.hs_lastmodifieddateStringLast modification timestamp
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
Product catalog and inventory information.
FieldTypeDescription
idStringUnique identifier for the product
properties.nameStringProduct name
properties.descriptionStringProduct description
properties.priceStringProduct price
properties.hs_skuStringStock keeping unit
properties.hs_cost_of_goods_soldStringCost of goods sold
properties.createdateStringDate when product was created
properties.hs_lastmodifieddateStringLast modification timestamp
properties.hs_recurring_billing_periodStringRecurring billing period
createdAtStringDate when record was created
updatedAtStringLast modification timestamp
archivedBooleanWhether the product is archived
Sales quotes and proposals.
FieldTypeDescription
idStringUnique identifier for the quote
properties.hs_titleStringQuote title
properties.hs_quote_amountStringTotal quote amount
properties.hs_quote_numberStringQuote number
properties.hs_statusStringQuote status
properties.hs_expiration_dateStringQuote expiration date
properties.hs_termsStringQuote terms
properties.hubspot_owner_idStringAssigned owner
properties.hs_createdateStringDate when quote was created
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
archivedBooleanWhether the quote is archived
Task assignments and to-dos.
FieldTypeDescription
idStringUnique identifier for the task
properties.hs_task_subjectStringTask subject
properties.hs_task_statusStringTask status
properties.hs_task_priorityStringPriority level
properties.hs_task_typeStringTask type
properties.hs_timestampStringCreation timestamp
properties.hubspot_owner_idStringTask owner
properties.hs_task_bodyStringTask description
properties.hs_task_due_dateStringDue date
createdAtStringRecord creation timestamp
updatedAtStringRecord update timestamp
Customer support tickets and service requests.
FieldTypeDescription
idStringUnique identifier for the ticket
properties.subjectStringTicket subject
properties.hs_ticket_priorityStringPriority level
properties.hs_pipelineStringAssociated pipeline
properties.hs_pipeline_stageStringCurrent stage
properties.hubspot_owner_idStringAssigned owner
properties.createdateStringDate when ticket was created
properties.hs_lastmodifieddateStringLast modification timestamp
associationsArrayRelated records (if enabled)
createdAtStringDate when record was created
updatedAtStringLast modification timestamp
archivedBooleanWhether the ticket is archived
Ticket pipeline configurations and stages for customer support workflows.
FieldTypeDescription
labelStringDisplay name of the pipeline
displayOrderIntegerOrder in which the pipeline is displayed
activeBooleanWhether the pipeline is active
stagesArrayArray of pipeline stages with their configurations
objectTypeStringType of object this pipeline applies to
objectTypeIdStringID of the object type
pipelineIdStringUnique identifier for the pipeline
createdAtStringDate when pipeline was created
updatedAtStringLast modification timestamp
defaultBooleanWhether this is the default pipeline
HubSpot portal user information.
FieldTypeDescription
idStringUnique identifier for the user
emailStringUser’s email address
roleIdsArrayArray of role IDs assigned to the user
primaryteamidStringID of the user’s primary team

Common data transformations

Many streams from Hubspot send all the relevant data in a single column, called properties. For you to remove them from this single array and transform each one in a new and individual column, use the following template:
SELECT
	-- list the regular columns you want to see in the final table
	id,
	createdat,
	updatedat,
	archived,
	_nekt_sync_at,
	-- list the fields that come inside 'properties' column and you want to have a specific column for
	properties.name,
	properties.price,
	properties.description
FROM
   -- example: "nekt.raw"."hubspot_products"
	"nekt_layer"."table_name"

Use Cases for Data Analysis

HubSpot data can be leveraged for comprehensive business intelligence and analytics. Here are some common use cases with SQL transformations:

1. Sales Performance Analytics

Objective: Track sales team performance, deal velocity, and revenue forecasting.

SQL code

Sales Performance Dashboard
-- Sales Performance Dashboard
WITH
   deal_metrics AS (
      SELECT
         d.properties.hubspot_owner_id AS hubspot_owner_id,
         o.firstname || ' ' || o.lastname AS owner_name,
         COUNT(*) AS total_deals,
         SUM(
            CAST(NULLIF(d.properties.amount, '') AS DECIMAL(15, 2))
         ) AS total_value,
         AVG(
            CAST(NULLIF(d.properties.amount, '') AS DECIMAL(15, 2))
         ) AS avg_deal_size,
         COUNT(
            CASE
               WHEN d.properties.dealstage = 'closedwon' THEN 1
            END
         ) AS won_deals,
         COUNT(
            CASE
               WHEN d.properties.dealstage = 'closedlost' THEN 1
            END
         ) AS lost_deals
      FROM
         "nekt_raw"."hubspot_deals" d
         LEFT JOIN "nekt_raw"."hubspot_owners" o ON d.properties.hubspot_owner_id = o.id
      WHERE
         CAST(SUBSTRING(d.properties.createdate, 1, 10) AS DATE) >= DATE_ADD ('month', -6, CURRENT_DATE)
      GROUP BY
         d.properties.hubspot_owner_id,
         o.firstname,
         o.lastname
   )
SELECT
   owner_name,
   total_deals,
   total_value,
   avg_deal_size,
   won_deals,
   lost_deals,
   ROUND((won_deals * 100.0 / total_deals), 2) AS win_rate,
   ROUND((total_value / NULLIF(total_deals, 0)), 2) AS avg_deal_value
FROM
   deal_metrics
ORDER BY
   total_value DESC

2. Customer Journey Analysis

Objective: Understand customer lifecycle stages and conversion rates.
-- Customer Journey Funnel
WITH
   contact_stages AS (
      SELECT
         properties.lifecyclestage,
         COUNT(*) AS contact_count,
         COUNT(
            CASE
               WHEN properties.lifecyclestage IN (
                  'lead',
                  'marketingqualifiedlead',
                  'salesqualifiedlead'
               ) THEN 1
            END
         ) AS qualified_leads,
         COUNT(
            CASE
               WHEN properties.lifecyclestage = 'opportunity' THEN 1
            END
         ) AS opportunities,
         COUNT(
            CASE
               WHEN properties.lifecyclestage = 'customer' THEN 1
            END
         ) AS customers
      FROM
         "nekt_raw"."hubspot_contacts"
      WHERE
         createdat >= DATE_ADD ('month', -12, CURRENT_DATE)
      GROUP BY
         properties.lifecyclestage
   ),
   funnel_metrics AS (
      SELECT
         'Total Contacts' AS stage,
         SUM(contact_count) AS COUNT,
         100.0 AS conversion_rate
      FROM
         contact_stages
      UNION ALL
      SELECT
         'Qualified Leads' AS stage,
         SUM(qualified_leads) AS COUNT,
         ROUND(
            (SUM(qualified_leads) * 100.0 / SUM(contact_count)),
            2
         ) AS conversion_rate
      FROM
         contact_stages
      UNION ALL
      SELECT
         'Opportunities' AS stage,
         SUM(opportunities) AS COUNT,
         ROUND(
            (SUM(opportunities) * 100.0 / SUM(qualified_leads)),
            2
         ) AS conversion_rate
      FROM
         contact_stages
      UNION ALL
      SELECT
         'Customers' AS stage,
         SUM(customers) AS COUNT,
         ROUND((SUM(customers) * 100.0 / SUM(opportunities)), 2) AS conversion_rate
      FROM
         contact_stages
   )
SELECT
   *
FROM
   funnel_metrics
ORDER BY
   COUNT DESC
These use cases demonstrate how HubSpot data can be transformed into actionable business intelligence, enabling data-driven decision making across sales, marketing, and customer service operations.

Implementation Notes

  • API Limits & Performance: Extracting association lists and property history involves making additional requests to HubSpot’s API per record. While the connector has been optimized with robust connection pooling to execute these details reliably, enabling multiple association lists simultaneously will still significantly impact the overall duration of the sync. Enable these features only when necessary.

Skills for agents

Download HubSpot skills file

HubSpot connector documentation as plain markdown, for use in AI agent contexts.