Repository navigation
docs(source-hubspot): document prefix_colliding_custom_objects (6.13.0), flows stream (6.12.0), property history filters (6.11.0), engagements_task_pipelines (6.10.0), and earlier changes - #83199
Conversation
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
👋 Greetings, Airbyte Team Member!Here are some helpful tips and reminders for your convenience. 💡 Show Tips and TricksPR Slash CommandsAirbyte Maintainers (that's you!) can execute the following slash commands on your PR:
📚 Show Repo GuidanceHelpful Resources
|
|
Deploy preview for airbyte-docs ready!
Deployed with vercel-action |
65d39e2 to
ba330b4
Compare
There was a problem hiding this comment.
Pull request overview
Updates the HubSpot source connector documentation to reflect recent connector changes: documenting the now-functional num_worker concurrency setting, expanding/clarifying Web Analytics (experimental) stream guidance, and correcting changelog dates to match merge history.
Changes:
- Add a Sync concurrency section (1–40 threads, default 10) and reference it from both Cloud and OSS setup steps.
- Expand Experimental streams documentation for Web Analytics (stream mapping table, access requirements, sync behavior, record shape) and update supported streams list.
- Fix changelog dates for 6.8.0 and 6.8.1; clarify 6.8.1 behavior change description.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
132c24e to
a819229
Compare
efe19e2 to
2cbedeb
Compare
There was a problem hiding this comment.
[markdownlint-fix] reported by reviewdog 🐶
airbyte/docs/integrations/sources/hubspot.md
Lines 509 to 510 in 2cbedeb
There was a problem hiding this comment.
🚫 Not fixing. This is the changelog table's column padding, which is cosmetic and pre-existing throughout the table — every earlier row is unpadded the same way. markdownlint-cli2 on this file reports 30 findings on this branch and the same 30 with identical signatures on master, and the Docs / MarkDownLint check passes, so nothing new was introduced. Reflowing the whole table would add churn to a docs-only diff without changing rendered output.
There was a problem hiding this comment.
🟡 Changes recommended
Clarify concurrency, backfill, Web Analytics parent-discovery, and startup-crash guidance.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (3)
docs/integrations/sources/hubspot.md:206
- As written, this estimates every sync from the configured Start date, but after the initial run
DatetimeBasedCursorstarts each partition from its persistedoccurredAtstate. Clarify that the Start date × 30-day estimate applies to the initial backfill; otherwise users may overestimate recurring daily usage.
These streams sync incrementally on the `occurredAt` timestamp, and Airbyte keeps a separate cursor for each parent record. Because HubSpot returns events for one object at a time, each stream issues at least one request per parent record, per event type, per 30-day window between your **Start date** and now. On a portal with tens of thousands of contacts, that adds up quickly against your account's [daily API limit](#rate-limiting).
docs/integrations/sources/hubspot.md:211
- These Web Analytics streams use the object stream as a
SubstreamPartitionRouterparent, so the samestart_datealso filters which parent records are discovered (for example, contacts are filtered bylastmodifieddate). Recommending the event date alone can omit events for older parent records that still have activity; document this parent-discovery constraint.
- Set **Start date** to the earliest date you actually need events for. If you leave it empty, the connector backfills from `2006-06-01T00:00:00Z`.
docs/integrations/sources/hubspot.md:491
- The crash also occurs when a full-refresh association stream is changed to incremental, not only when it is deselected. Users in that state will see the same startup error but will not match this troubleshooting entry; mention both ways the stream can leave the full-refresh set.
- Versions 6.6.0 through 6.8.1 crash at startup, failing the whole sync, if your connection deselects an association stream whose parent object stream syncs incrementally.
- Files reviewed: 1/1 changed files
- Comments generated: 2
- Review effort level: Lite
|
☑️ Resolved in a245752. Also applied the three suppressed comments from the latest Copilot review, since all three checked out against the code:
markdownlint is at parity with |
There was a problem hiding this comment.
🔵 Needs a closer look
Three unresolved documentation nit comments remain.
Review details
Suppressed comments (3)
Previously missed (1) — in code that hasn't changed since the last review.
docs/integrations/sources/hubspot.md:495
- This statement is too broad for legacy blob-destination versions: the S3 migration guide says the schema-driven drop behavior was introduced in destination-s3 1.0.0, while older Avro/Parquet writers accumulated undeclared fields in
_airbyte_additional_properties; the GCS migration likewise documents legacy 0.4.x output. Qualify the affected destinations as V2/current S3/GCS formats (or link the migration guide), otherwise users on legacy versions may be told their fields were dropped when they were retained in the catch-all.
docs/integrations/sources/hubspot.md:202
- Re-authentication is not sufficient for Airbyte Cloud's managed OAuth unless the shared HubSpot OAuth app is also registered for these scopes. The Web Analytics PR notes that without the shared app's
business-intelligenceregistration, re-auth cannot grant the scope and these streams continue to fail with 403; please document that prerequisite or provide the own-OAuth-app/private-app alternative.
If you authenticate with OAuth, `business-intelligence` and `crm.objects.line_items.read` were added to the scopes Airbyte requests in version 6.8.0. Sources authorized before that version don't have them. Open the HubSpot source's settings and re-authenticate, then refresh the source schema, or these streams return 403 errors.
docs/integrations/sources/hubspot.md:206
- Each Web Analytics request is partitioned by both the parent ID and the
event_typerouter, so the cursor is not solely per parent record. Describing later syncs as resuming from “that record's last event” can imply that one event type's cursor applies to the other and misstates the backfill/resume behavior; document the parent/event-type partition instead.
These streams sync incrementally on the `occurredAt` timestamp, and Airbyte keeps a separate cursor for each parent record. Because HubSpot returns events for one object at a time, the initial backfill issues at least one request per parent record, per event type, per 30-day window between your **Start date** and now. On a portal with tens of thousands of contacts, that first sync adds up quickly against your account's [daily API limit](#rate-limiting). Later syncs resume from each parent record's saved cursor, so they only request the windows after that record's last event.
- Files reviewed: 1/1 changed files
- Comments generated: 0 new
- Review effort level: Lite
a245752 to
8836900
Compare
8836900 to
3bab405
Compare
| | `engagements` | `crm.objects.companies.read`, `crm.objects.contacts.read`, `crm.objects.deals.read`, `tickets`, `e-commerce` | | ||
| | `engagements_emails` | `sales-email-read` | | ||
| | `engagements_task_pipelines` | `crm.objects.contacts.read` | | ||
| | `engagements_task_pipelines` | `crm.objects.contacts.read` | |
There was a problem hiding this comment.
[markdownlint] reported by reviewdog 🐶
error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
3bab405 to
a12e2b7
Compare
a12e2b7 to
a4dc746
Compare
| | `properties` | No additional scopes required | | ||
| | `workflows` | `automation` | | ||
| | `flows` | `automation` (plus `*.sensitive.read` for flows touching sensitive data) | | ||
| | `flows` | `automation`. Flows that reference sensitive data properties also need the matching sensitive data read scope. See [Flows vs. workflows](#flows-vs-workflows). | |
There was a problem hiding this comment.
[markdownlint] reported by reviewdog 🐶
error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
…s, and beta status; fix 6.12.0 changelog date Rebased onto master, carrying forward the earlier docs work on this branch (property history filters, engagements_task_pipelines, concurrency, custom object identifier errors). Co-Authored-By: bot_apk <apk@cognition.ai>
…0) and fix changelog date Co-Authored-By: bot_apk <apk@cognition.ai>
a4dc746 to
bb0ed2e
Compare
| | Version | Date | Pull Request | Subject | | ||
| |:------------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
There was a problem hiding this comment.
[markdownlint-fix] reported by reviewdog 🐶
| | Version | Date | Pull Request | Subject | | |
| |:------------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | |
| | Version | Date | Pull Request | Subject | | |
| | :------------ | :----------- | :--------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
Triggering Context
Run triggered by: A connector commit merged to
master:feat(source-hubspot): add opt-in prefix for custom objects that collide with built-in stream names(6.13.0), which the autodoc workflow flagged for documentation review. This is the deterministic per-connector docs branch, so it also carries earlier sessions' unmerged work (6.8.0 Web Analytics, 6.8.1 concurrency, 6.8.2 startup crash, 6.9.0 schema additions, 6.9.2 custom object identifier errors, 6.10.0 task pipelines, 6.11.0 property history filters, 6.12.0 flows), rebased onto currentmaster.Relevant context:
config_error#86350, feat(source-hubspot): declare marketing_emailstesting.isAbVariationand ownersteams[].primary#82769, chore(source-hubspot): update CDK to 7.28.0 to fix association-stream startup crash #84917, fix(source-hubspot): honor num_worker concurrency config field #84411, feat(source-hubspot): restore 12 Web Analytics streams removed in v5.8.0 #80806Confidence impact: 6.13.0 is a merged, additive, off-by-default config option with a clear scope and unit tests, and the connector PR already added a first pass at the docs. This revision restructures that text, adds the setup steps, and fixes the changelog date.
Documentation Confidence Assessment
Overall Confidence: 3/5
specfield plus a JinjaComponentMappingDefinitioninmanifest.yaml); carried-forward content touches small custom components.ql: 400,sl: 300).raw_score = 0.154 + 0.154 + 0.252 + 0.105 + 0.151 + 0.104 + 0.10*4 = 3.15 -> confidence 3.
Adjustments based on code comprehension
Baseline 4 (low-code connector with custom Python components). No net adjustment:
spec.prefix_colliding_custom_objectsanddefinitions.custom_object_stream_nameinmanifest.yaml, with nocomponents.pychanges.test_custom_object_colliding_with_builtin_stream_name_is_unchanged_by_default,test_custom_object_colliding_with_builtin_stream_name_is_prefixed, andtest_custom_object_prefixed_stream_reads_from_fully_qualified_entitycover default behavior, the rename, and that only colliding names change.HubspotFlowDetailsTransformation, schema loaders), so I kept the baseline for the PR overall.What I Verified vs. What I Inferred
prefix_colliding_custom_objectsis an optional boolean, defaultfalse, titled Prefix custom objects that share a name with a built-in stream, placed aftertreat_numbers_and_booleans_as_stringsand beforenum_workerin the spec; the stream name becomescustom_object_<name>only when the flag is on andcomponents_values.nameis in the built-in list; thename,full_refresh_stream.name, andincremental_stream.namemappings all use the same definition; theentityparameter is unchanged.form_submissionsstreams; with it on, it emits oneform_submissions,custom_object_form_submissions, and an unchangedcars.Areas of Concern
flowstier list omitscrmHub, and the property history backfill note and Sync concurrency tuning advice are reasoned rather than measured.What
Documents the
prefix_colliding_custom_objectssetting added in 6.13.0 and fixes the 6.13.0 changelog date. Carries forward the earlier unmerged work on this branch.How
New in this revision (6.13.0)
FieldAnchor-wrapped subsection, Custom objects that share a name with a built-in stream. It explains why the error happens, what the setting renames, that it's off by default, and what to do if a connection was already syncing the colliding built-in stream.2026-10-14->2026-10-20; shortened the subject.Carried forward from earlier commits on this branch (rebased onto
master; one changelog conflict resolved)flowsstream docs and date fix (2026-10-10), 6.11.0 property history filters (2026-10-09), 6.10.0engagements_task_pipelines(2026-10-05), custom object association identifier errors, Avro/Parquet troubleshooting, Sync concurrency, Web Analytics stream docs,line_itemsscope row, and earlier changelog date fixes.Review guide
docs/integrations/sources/hubspot.mdis the only file changed.Custom CRMObjects, and the 6.13.0 changelog row.User Impact
If connection setup fails with a duplicate stream name error because a custom object shares a built-in stream's name, you can find the fix from the setup steps and know what to clean up afterward. No connector behavior changes.
Verification
markdownlint-cli2onhubspot.md: no findings on changed lines (the remaining MD032/MD022/MD029/MD060 findings are pre-existing).pnpm installfailed withERR_PNPM_LOCKFILE_BREAKING_CHANGEbecause the local pnpm version doesn't match the lockfile (environment issue, unrelated to this change). Relying on the CI docs build and Vercel preview for link and anchor checks. Vale not run.Can this PR be safely reverted and rolled back?
Link to Devin session: https://app.devin.ai/sessions/d4791a8c95794b9ead2cd2a8d8522adc
Open in Devin Desktop: https://app.devin.ai/desktop/session/d4791a8c95794b9ead2cd2a8d8522adc?variant=devin