tap-hubspot is a Singer tap for Hubspot.
Built with the Meltano Singer SDK.
catalogstatediscoveraboutstream-mapsschema-flatteningbatch
| Setting | Required | Default | Description |
|---|---|---|---|
| access_token | False | None | Token to authenticate against the API service |
| client_id | False | None | The OAuth app client ID. |
| client_secret | False | None | The OAuth app client secret. |
| refresh_token | False | None | The OAuth app refresh token. |
| start_date | False | None | Earliest record date to sync |
| end_date | False | None | Latest record date to sync |
| stream_maps | False | None | Config object for stream maps capability. For more information check out Stream Maps. |
| stream_map_config | False | None | User-defined config values to be used within map expressions. |
| flattening_enabled | False | None | 'True' to enable schema flattening and automatically expand nested properties. |
| flattening_max_depth | False | None | The max depth to flatten schemas. |
| batch_config | False | None | |
| custom_object_types | False | None | List of HubSpot custom CRM object type names to sync (e.g. ['patches']). Requires HubSpot Enterprise and crm.objects.custom.read + crm.schemas.custom.read scopes. |
A full list of supported settings and capabilities is available by running: tap-hubspot --about
The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license to use, copy, distribute, make available, and prepare derivative works of the software.
pipx install git+https://github.com/MeltanoLabs/tap-hubspot.gitThis Singer tap will automatically import any environment variables within the working directory's
.env if the --config=ENV is provided, such that config values will be considered if a matching
environment variable is set either in the terminal context or in the .env file.
A Hubspot access token is required to make API requests. (See Hubspot API docs for more info)
| Stream | Replication | Description |
|---|---|---|
contacts |
Incremental | People in your HubSpot CRM |
companies |
Incremental | Company records in your CRM |
deals |
Incremental | Sales opportunities and pipeline deals |
leads |
Incremental | Individual sales leads linked to a contact and company (objectTypeId: 0-136) |
line_items |
Incremental | Products attached to deals |
goal_targets |
Incremental | Sales and activity goal records |
calls |
Incremental | Call engagement records |
communications |
Incremental | Communication engagement records |
emails |
Incremental | Email engagement records |
meetings |
Incremental | Meeting engagement records |
notes |
Incremental | Note engagement records |
postal_mail |
Incremental | Postal mail engagement records |
tasks |
Incremental | Task engagement records |
owners |
Full Table | HubSpot users who own CRM records |
users |
Full Table | Users in your HubSpot account |
teams |
Full Table | HubSpot Teams and their member user IDs |
products |
Full Table | Product library items |
tickets |
Full Table | Customer support tickets |
quotes |
Full Table | Sales quotes |
feedback_submissions |
Full Table | Customer feedback survey responses |
ticket_pipelines |
Full Table | Ticket pipeline and stage definitions |
deal_pipelines |
Full Table | Deal pipeline and stage definitions |
email_subscriptions |
Full Table | Email subscription type definitions |
properties |
Full Table | Property definitions for all CRM object types |
The following scopes need to be added to your access token to access the following endpoints:
- Contacts:
crm.objects.contacts.read - Companies:
crm.objects.companies.read - Deals:
crm.objects.deals.read - Leads:
crm.objects.leads.read - Owners:
crm.objects.owners.read - Users:
settings.users.read - Teams:
settings.users.teams.read - Feedback Submissions:
crm.objects.feedback_submissions.read - Calls:
crm.objects.calls.read - Communications:
crm.objects.communications.read - Emails:
sales-email-read - Meetings:
crm.objects.meetings.read - Notes:
crm.objects.notes.read - Postal Mail:
crm.objects.postal_mail.read - Tasks:
crm.objects.tasks.read - Line Items:
e-commerce - Products:
e-commerce - Tickets:
tickets - Ticket Pipelines:
tickets - Deal Pipelines:
crm.objects.deals.read - Quotes:
crm.objects.quotes.read - Goal Targets:
crm.objects.goals.read - Email Subscriptions:
content - Properties: same scopes as the corresponding object type
- Custom Objects:
crm.objects.custom.readandcrm.schemas.custom.read(HubSpot Enterprise only)
For more info on the streams and permissions, check the Hubspot API Documentation.
You can easily run tap-hubspot by itself or in a pipeline using Meltano.
The following Streams use the v1 (legacy) endpoint in the Hubspot API:
- TicketPipeline & DealPipeline: The v3 endpoint requires a pipeline ID parameter to make calls to the API. Because of this, you are limited to only pulling data for a single pipeline ID from v3, whereas the v1 API allows you to pull from all pipelines.
- EmailSubscriptions: The v3 endpoint requires you to set a single email address to pull subscription data, whereas the v1 endpoint allows you to pull data from all emails.
This project uses parent-child streams. Learn more about them here.
tap-hubspot --version
tap-hubspot --help
tap-hubspot --config CONFIG --discover > ./catalog.jsonFollow these instructions to contribute to this project.
curl -LsSf https://astral.sh/uv/install.sh | sh # https://docs.astral.sh/uv/getting-started/installation/
uv syncCreate tests within the tests subfolder and
then run:
uv run pytestYou can also test the tap-hubspot CLI interface directly using uv run:
uv run tap-hubspot --helpTesting with Meltano
Note: This tap will work in any Singer environment and does not require Meltano. Examples here are for convenience and to streamline end-to-end orchestration scenarios.
Your project comes with a custom meltano.yml project file already created. Open the meltano.yml and follow any "TODO" items listed in
the file.
Next, install Meltano (if you haven't already) and any needed plugins:
# Install meltano
uv tool install meltano
# Initialize meltano within this directory
cd tap-hubspot
meltano installNow you can test and orchestrate using Meltano:
# Test invocation:
meltano invoke tap-hubspot --version
# OR run a test EL pipeline:
meltano run tap-hubspot target-jsonlSee the dev guide for more instructions on how to use the SDK to develop your own taps and targets.