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.

1. Add your HubSpot access

  1. 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.
  2. 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.
  3. The Start Date is the date of the first record you want to sync with.
  4. Configure the following optional settings:
    • Enable Leads Stream: Enable to extract leads data (requires HubSpot Pro, Enterprise, or Enterprise Plus)
    • Extract Contact Associations: Enable to extract related entities for contacts
    • Contact Associations List: If enabled above, specify which associations to extract (comma-separated)
    • Extract Contact Property History: Enable to track property changes for contacts
    • Contact Property History Fields: If enabled above, specify which properties to track (comma-separated)
    • Extract Deal Associations: Enable to extract related entities for deals
    • Deal Associations List: If enabled above, specify which associations to extract (comma-separated)
    • Extract Deal Property History: Enable to track property changes for deals
    • Deal Property History Fields: If enabled above, specify which properties to track (comma-separated)
    • Extract Ticket Associations: Enable to extract related entities for tickets
    • Ticket Associations List: If enabled above, specify which associations to extract (comma-separated)
    • Extract Lead Associations: Enable to extract related entities for leads (requires Enable Leads Stream)
    • Lead Associations List: If enabled above, specify which associations to extract (comma-separated)
    Note: Enabling these options will increase extraction time but provide more detailed relationship data.
  5. Click Next.

2. Select your Hubspot streams

  1. The next step is letting us know which streams you want to bring. You can select entire groups of streams or only a subset of them.
    Tip: The stream can be found more easily by typing its name.
  2. Click Next.

3. Configure your Hubspot data streams

  1. 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: depending on the data you are bringing to the lake, you can choose between INCREMENTAL and FULL_TABLE. Read more about Sync Types here.
  1. Click Next.

4. Configure your Hubspot data source

  1. Describe your data source for easy identification within your organization. You can inform things like what data it brings, to which team it belongs, etc.
  2. 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).
  3. Optionally, you can define some additional settings (if available).
  • Configure Delta Log Retention and determine for how log 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.

Check your new source!

  1. Click Next to finalize the setup. Once completed, you’ll receive confirmation that your new source is set up!
  2. You can view your new source on the Sources page. Now, for you to be able to see it on your Catalog, you have to wait for the pipeline to run. You can now monitor it on the Sources page to see its execution and completion. If needed, manually trigger the pipeline by clicking on the refresh icon. Once executed, your new table will appear in the Catalog section.
If you encounter any issues, reach out to us via Slack, and we’ll gladly assist you!

Available 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.
Call activity and engagement data.Key Fields:
  • id - Unique identifier for the call
  • properties.hs_call_direction - Call direction (inbound/outbound)
  • properties.hs_call_duration - Duration of the call
  • properties.hs_call_status - Call status
  • properties.hs_timestamp - When the call occurred
  • properties.hubspot_owner_id - Call owner
  • properties.hs_call_title - Call title or subject
  • properties.hs_call_body - Call notes or description
  • properties.hs_lastmodifieddate - Last modification timestamp
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
Communication activities and engagements (SMS, WhatsApp, LinkedIn messages, etc.).Key Fields:
  • id - Unique identifier for the communication
  • properties.hs_communication_channel_type - Channel type (SMS, WhatsApp, etc.)
  • properties.hs_communication_body - Communication content
  • properties.hs_timestamp - When the communication occurred
  • properties.hubspot_owner_id - Communication owner
  • properties.hs_lastmodifieddate - Last modification timestamp
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
Company and organization records.Key Fields:
  • id - Unique identifier for the company
  • properties.name - Company name
  • properties.domain - Company website domain
  • properties.industry - Industry classification
  • properties.phone - Company phone number
  • properties.address - Company address
  • properties.city - Company city
  • properties.state - Company state/region
  • properties.country - Company country
  • properties.zip - Postal code
  • properties.numberofemployees - Employee count
  • properties.annualrevenue - Annual revenue
  • properties.lifecyclestage - Company lifecycle stage
  • properties.hubspot_owner_id - Assigned owner
  • properties.createdate - Creation date
  • properties.hs_lastmodifieddate - Last modification date
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
Individual contact records and their properties.Key Fields:
  • id - Unique identifier for the contact
  • properties.email - Email address
  • properties.firstname - First name
  • properties.lastname - Last name
  • properties.phone - Phone number
  • properties.company - Company name
  • properties.jobtitle - Job title
  • properties.lifecyclestage - Contact lifecycle stage
  • properties.hubspot_owner_id - Assigned owner
  • properties.createdate - Creation date
  • properties.lastmodifieddate - Last modification date
  • associations - Related records (if enabled)
  • propertiesWithHistory - Property change history (if enabled)
  • createdAt - Record creation timestamp
  • updatedAt - Record 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.Default HubSpot Fields:
  • id - Unique identifier for the custom object record
  • properties.hs_lastmodifieddate - Last modification timestamp
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
  • archived - Whether the record is archived
Sales deals and opportunities.Key Fields:
  • id - Unique identifier for the deal
  • properties.dealname - Deal name
  • properties.amount - Deal amount
  • properties.dealstage - Current stage
  • properties.pipeline - Pipeline ID
  • properties.closedate - Expected close date
  • properties.hubspot_owner_id - Assigned owner
  • properties.createdate - Creation date
  • properties.hs_lastmodifieddate - Last modification date
  • associations - Related records (if enabled)
  • propertiesWithHistory - Property change history (if enabled)
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
Deal pipeline configurations and stages for sales workflows.Key Fields:
  • label - Display name of the pipeline
  • displayOrder - Order in which the pipeline is displayed
  • active - Whether the pipeline is active
  • stages - Array of pipeline stages with their configurations
  • objectType - Type of object this pipeline applies to
  • objectTypeId - ID of the object type
  • pipelineId - Unique identifier for the pipeline
  • createdAt - Date when pipeline was created
  • updatedAt - Last modification timestamp
  • default - Whether this is the default pipeline
Email communications and messaging data.Key Fields:
  • id - Unique identifier for the email
  • properties.hs_email_subject - Email subject line
  • properties.hs_email_text - Email body content
  • properties.hs_email_direction - Email direction (inbound/outbound)
  • properties.hs_email_status - Email status
  • properties.hs_email_sender_email - Sender email address
  • properties.hs_email_sender_firstname - Sender first name
  • properties.hs_email_sender_lastname - Sender last name
  • properties.hs_email_to_email - Recipient email address
  • properties.hs_email_to_firstname - Recipient first name
  • properties.hs_email_to_lastname - Recipient last name
  • properties.hs_timestamp - Email timestamp
  • properties.hubspot_owner_id - Assigned owner
  • properties.createdate - Date when email was created
  • properties.hs_lastmodifieddate - Last modification timestamp
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
  • archived - Whether the email is archived
Form definitions and configurations.Key Fields:
  • id - Unique identifier for the form
  • name - Form name
  • submitText - Submit button text
  • formType - Type of form
  • createdAt - Creation timestamp
  • updatedAt - Last update timestamp
  • fields - Array of form fields and their properties
Submitted form data and responses.Key Fields:
  • id - Unique identifier for the submission
  • formId - Associated form ID
  • submittedAt - Submission timestamp
  • values - Submitted form values
  • contactId - Associated contact ID
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.Key Fields:
  • id - Unique identifier for the lead
  • properties.hs_lead_name - Lead name
  • properties.hs_lead_status - Lead status
  • properties.hubspot_owner_id - Assigned owner
  • properties.hs_lastmodifieddate - Last modification timestamp
  • associations - Related records (if enabled)
  • propertiesWithHistory - Property change history (if enabled)
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
  • archived - Whether the lead is archived
Individual items within deals and quotes.Key Fields:
  • id - Unique identifier for the line item
  • properties.name - Line item name
  • properties.price - Unit price
  • properties.quantity - Quantity ordered
  • properties.hs_product_id - Associated product ID
  • properties.hs_recurring_billing_period - Billing period
  • properties.createdate - Date when line item was created
  • properties.hs_lastmodifieddate - Last modification timestamp
  • properties.recurringbillingfrequency - Recurring billing frequency
  • createdAt - Date when record was created
  • updatedAt - Last modification timestamp
  • archived - Whether the line item is archived
Marketing email campaigns and their performance statistics.Key Fields:
  • id - Unique identifier for the marketing email
  • name - Email name
  • subject - Email subject line
  • state - Email state (draft, published, etc.)
  • type - Email type
  • isPublished - Whether email is published
  • publishedAt - Publication timestamp
  • publishDate - Scheduled publish date
  • campaign - Associated campaign ID
  • campaignName - Campaign name
  • from - Sender information (fromName, replyTo, customReplyTo)
  • to - Recipient configuration (contactIds, contactLists, suppressGraymail)
  • subscriptionDetails - Subscription information (subscriptionId, subscriptionName, officeLocationId)
  • content - Email content (JSON string)
  • emailTemplateMode - Template mode (e.g., DRAG_AND_DROP)
  • isAb - Whether it’s an A/B test
  • isTransactional - Whether it’s a transactional email
  • language - Email language
  • archived - Whether the email is archived
  • createdAt - Creation timestamp
  • updatedAt - Last update timestamp
  • createdById - Creator user ID
  • updatedById - Last updater user ID
  • publishedById - Publisher user ID
  • publishedByName - Publisher name
  • publishedByEmail - Publisher email
Stats Object:
  • stats.counters - Email performance counters: sent, delivered, open, click, bounce, hardbounced, softbounced, unsubscribed, spamreport, reply, dropped, pending, suppressed, contactslost, notsent, selected
  • stats.ratios - Performance ratios (openratio, clickratio, bounceratio, etc.)
  • stats.deviceBreakdown - Opens/clicks by device type (computer, mobile, unknown)
Webversion Object:
  • webversion.enabled - Whether web version is enabled
  • webversion.url - Web version URL
  • webversion.domain - Domain
  • webversion.slug - URL slug
Scheduled meetings and appointments.Key Fields:
  • id - Unique identifier for the meeting
  • properties.hs_meeting_title - Meeting title
  • properties.hs_meeting_body - Meeting description
  • properties.hs_meeting_start_time - Start time
  • properties.hs_meeting_end_time - End time
  • properties.hs_meeting_outcome - Meeting outcome
  • properties.hubspot_owner_id - Meeting owner
  • createdAt - Creation timestamp
  • updatedAt - Last update timestamp
Notes and annotations on records.Key Fields:
  • id - Unique identifier for the note
  • properties.hs_note_body - Note content
  • properties.hubspot_owner_id - Note creator
  • properties.hs_timestamp - Creation timestamp
  • properties.hs_attachment_ids - Attached file IDs
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
Custom properties and field definitions for note objects. This stream merges all property streams into a single comprehensive properties table.Key Fields:
  • updatedAt - Last modification timestamp
  • createdAt - Date when property was created
  • name - Property name
  • label - Display label
  • type - Property data type
  • fieldType - Field type
  • description - Property description
  • groupName - Property group
  • options - Available options for enum types
  • displayOrder - Display order
  • calculated - Whether it’s a calculated property
  • externalOptions - Whether it has external options
  • hasUniqueValue - Whether it requires unique values
  • hidden - Whether the property is hidden
  • hubspotDefined - Whether it’s a HubSpot-defined property
  • modificationMetadata - Metadata about modification made
  • formField - Whether it’s used in forms
  • hubspot_object - Associated HubSpot object type
HubSpot user and owner information.Key Fields:
  • id - Unique identifier for the owner
  • email - Owner’s email address
  • firstName - Owner’s first name
  • lastName - Owner’s last name
  • userId - Associated user ID
  • createdAt - Date when owner was created
  • updatedAt - Last modification timestamp
  • archived - Whether the owner is archived
Postal mail activities and engagements for direct mail campaigns.Key Fields:
  • id - Unique identifier for the postal mail
  • properties.hs_postal_mail_body - Postal mail content
  • properties.hs_timestamp - When the postal mail was sent
  • properties.hubspot_owner_id - Owner
  • properties.hs_lastmodifieddate - Last modification timestamp
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
Product catalog and inventory information.Key Fields:
  • id - Unique identifier for the product
  • properties.name - Product name
  • properties.description - Product description
  • properties.price - Product price
  • properties.hs_sku - Stock keeping unit
  • properties.hs_cost_of_goods_sold - Cost of goods sold
  • properties.createdate - Date when product was created
  • properties.hs_lastmodifieddate - Last modification timestamp
  • properties.hs_recurring_billing_period - Recurring billing period
  • createdAt - Date when record was created
  • updatedAt - Last modification timestamp
  • archived - Whether the product is archived
Sales quotes and proposals.Key Fields:
  • id - Unique identifier for the quote
  • properties.hs_title - Quote title
  • properties.hs_quote_amount - Total quote amount
  • properties.hs_quote_number - Quote number
  • properties.hs_status - Quote status
  • properties.hs_expiration_date - Quote expiration date
  • properties.hs_terms - Quote terms
  • properties.hubspot_owner_id - Assigned owner
  • properties.hs_createdate - Date when quote was created
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
  • archived - Whether the quote is archived
Task assignments and to-dos.Key Fields:
  • id - Unique identifier for the task
  • properties.hs_task_subject - Task subject
  • properties.hs_task_status - Task status
  • properties.hs_task_priority - Priority level
  • properties.hs_task_type - Task type
  • properties.hs_timestamp - Creation timestamp
  • properties.hubspot_owner_id - Task owner
  • properties.hs_task_body - Task description
  • properties.hs_task_due_date - Due date
  • createdAt - Record creation timestamp
  • updatedAt - Record update timestamp
Customer support tickets and service requests.Key Fields:
  • id - Unique identifier for the ticket
  • properties.subject - Ticket subject
  • properties.hs_ticket_priority - Priority level
  • properties.hs_pipeline - Associated pipeline
  • properties.hs_pipeline_stage - Current stage
  • properties.hubspot_owner_id - Assigned owner
  • properties.createdate - Date when ticket was created
  • properties.hs_lastmodifieddate - Last modification timestamp
  • associations - Related records (if enabled)
  • createdAt - Date when record was created
  • updatedAt - Last modification timestamp
  • archived - Whether the ticket is archived
Ticket pipeline configurations and stages for customer support workflows.Key Fields:
  • label - Display name of the pipeline
  • displayOrder - Order in which the pipeline is displayed
  • active - Whether the pipeline is active
  • stages - Array of pipeline stages with their configurations
  • objectType - Type of object this pipeline applies to
  • objectTypeId - ID of the object type
  • pipelineId - Unique identifier for the pipeline
  • createdAt - Date when pipeline was created
  • updatedAt - Last modification timestamp
  • default - Whether this is the default pipeline
HubSpot portal user information.Key Fields:
  • id - Unique identifier for the user
  • email - User’s email address
  • roleIds - Array of role IDs assigned to the user
  • primaryteamid - ID 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

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.