Skip to main content
HubSpot is Available Now as a source-only connector. Arcyria uses dlt to extract selected HubSpot data into isolated staging, applies your SQL/dbt models, and delivers the result to existing PostgreSQL or Airtable tables.
Validated paths include HubSpot → PostgreSQL and HubSpot → Airtable. HubSpot cannot be selected as a destination.

Authentication

The connector supports a HubSpot private app access token. OAuth is not currently supported.
  1. In HubSpot, open Settings → Integrations → Private Apps.
  2. Create or open a read-only private app.
  3. Add only the read scopes required by the streams you plan to sync.
  4. Copy the access token.
  5. In Arcyria, open Connections, choose Source, and select HubSpot.
  6. Enter a connection name and the private app access token.
  7. Test the connection, then save it.
Arcyria encrypts the saved credential and masks it in connection responses. Never place the token in SQL, pipeline names, logs, or AI chat.

Supported streams

HubSpot exposes 18 supported streams: Discovery checks each stream against the connected account. A stream can appear as available, missing a scope, unavailable for the account, or temporarily unknown. This lets one valid token expose only the streams it can read without returning CRM records during the connection test.

Configure a HubSpot pipeline

  1. Create or choose a PostgreSQL or Airtable destination connection.
  2. Create a pipeline using the saved HubSpot source.
  3. Open Source and click Discover catalog.
  4. Select one or more available streams.
  5. Configure the extraction window and custom-property option.
  6. Preview the selected stream. HubSpot previews mask email local parts, phone numbers, and sensitive free-text fields.
  7. Open Destinations, add the delivery target, and save it.
  8. Open Transformations, select that destination, and create destination-owned SQL models for the selected streams. Save, validate, preview, and publish each revision.
  9. Return to the destination editor and assign final tables and Upsert keys. Airtable also requires writable field mappings and merge fields.
  10. Validate from Overview, click Run all, and inspect Runs.
The connector does not silently select every stream. At least one stream must be selected before a run can start.

UTC extraction window

Incremental object streams support:
  • a required or previously saved UTC start time;
  • an optional UTC end time, captured at run start when omitted; and
  • a lookback from 0 through 2592000 seconds (30 days), with a default of 3600 seconds. A lookback of 0 is honored. You can also set a lookback on an individual stream in its sync settings; a stream setting of 0 uses the source-level value.
The lookback overlaps adjacent runs so late updates can be read again and deduplicated by the stable object key and update timestamp. Owners and the two pipeline-definition streams are small full snapshots.

Custom properties

Custom properties are supported for contacts, companies, deals, tickets, products, line items, and quotes. Keep Include custom properties enabled to request permitted custom fields, or disable it to use the stable default field set. Sensitive HubSpot properties are excluded from discovery. Each custom property adds to the size of every request. When the selected properties are too many to read safely, the run stops before reading data and asks you to select fewer properties or turn custom properties off for the pipeline. The raw properties value preserves the returned property payload, while your SQL model promotes the fields you want into destination columns.

Archived records

By default, records archived or deleted in HubSpot are not updated in your destination. Turn on Flag archived records in the pipeline’s Source settings to read archived records for contacts, companies, deals, tickets, products, line items, and quotes. They are written with archived set to true through the normal Upsert; rows are never removed. HubSpot cannot filter archived records by time, so each run reads the whole archived list. Merged contacts are not detected.

Rate limits

HubSpot limits private apps per 10 seconds and per day, and the daily limit is shared by every private app on the account. Search is limited to 5 requests per second. Runs pace their requests and retry when HubSpot asks them to wait. When the daily limit is reached, the run stops with a clear message and can run again after the limit resets at midnight in the HubSpot account time zone. Avoid schedules more frequent than every 5 minutes.

Destination requirements

Create or explicitly reconcile PostgreSQL destination schemas and tables before delivery. For Airtable, create the table and fields first, then refresh and map them in the destination editor. The pipeline runner does not create target tables during a run.
  • Use a primary key or stable merge key for each table.
  • Keep model output columns aligned with destination column names and types.
  • Use Upsert delivery for repeatable incremental runs.
  • Keep the legacy _mantrixflow_run_id field if you need row-level run lineage, and extracted_at if you need extraction-time auditing. The legacy field name remains part of the current runtime contract until a separately versioned data-schema migration is available.
  • Do not include internal _dlt_* staging columns in destination models.
Empty but valid HubSpot streams still produce a typed staging relation, so a 18-stream run can validate and deliver successfully even when some streams have no records.

Current limitations

  • OAuth, webhooks, write-back, standalone association streams, and property history are not supported. Engagement records may contain association JSON.
  • Calls, meetings, notes, tasks, lists, memberships, engagements, and custom objects currently use Full Table only; deleted records are not propagated.
  • Contact list memberships depend on readable contact lists. Custom object access depends on account features and the private app permissions.
  • Quotes depend on the HubSpot products enabled for the connected account.
  • Calculated-property-only changes may not advance the HubSpot update timestamp and may require a later full reconciliation.
  • Line-item associations are not included.

Coming Soon

Emails, Forms, Form Submissions, Email Events, Campaigns, and a standalone Properties stream are planned. They are not selectable or previewable today. No delivery date is promised. CRM property metadata still powers the schemas of supported streams; it is not a separate selectable stream. For destination setup, see PostgreSQL destination or Airtable destination. For a complete 18-stream configuration with sample SQL and composite pipeline keys, see the HubSpot-to-PostgreSQL example.