Skip to main content

Metadata Coverage: Extract & Deploy Status

Last updated: 2026-07-28. HubSpot API research: актуально на июль 2026.


Легенда​

СимволЗначение
✅Реализовано и работает надёжно
⚠️Реализовано с оговорками / частично
🔴Не деплоится (read-only или заблокировано)
➕Не реализовано, но API HubSpot позволяет
❌HubSpot API не поддерживает (read-only или нет публичного API)

1. Что сейчас реализовано​

CRM — Схемы​

ТипЭкстрактДеплойПодводные камни
custom_objects✅✅При create — properties/associations вкладываются иерархически в payload
standard_objects✅⚠️Всегда update — стандартные объекты уже есть на любом портале, нельзя создать
custom_object_property✅✅Batch create (100/запрос), sequential update. Calculation properties нового custom object создаются вторым шагом через Properties API, чтобы не потерять calculationFormula
standard_object_property✅✅Аналогично custom
crm_properties✅✅Простые свойства (contact, company, deal и т.д.)
property_groups✅✅Должны деплоиться до properties — порядок в DependencyGraph исправлен
association_definitions✅✅Требуют чтобы оба объекта уже существовали на таргете
association_limits✅✅Лимиты на пары CRM-объектов синхронизируются отдельно от labels
property_validation_rules✅✅Правила валидации значений свойств через Property Validations API
pipelines✅✅Включая ticket pipelines и остальные public pipeline object types
pipeline_stages✅✅При create pipeline — stages вкладываются в payload

Маркетинг и автоматизация​

ТипЭкстрактДеплойПодводные камни
forms✅⚠️V3/V1-legacy — ок. V4-формы помечаются not_deployable=true и блокируются до backup/API-вызова
workflows✅⚠️Полный деплой с actions через /automation/v4/flows; unresolved известные source IDs/URNs блокируют деплой до API-вызова
hubspot_lists✅⚠️Работает через Lists API v3. Dynamic/Snapshot — ok; manual lists создаются без filter rules
custom_behavioral_events✅✅Схемы событий через Event Definitions API
campaigns✅⚠️Кампания создаётся, но ассоциации с ассетами (письма, страницы) — отдельный API, не реализованы
ctas✅⚠️Legacy V1 CTA deprecated. Новые Button CTA (V3) поддержаны. Роутинг по ctaType
sequences✅🔴ReadOnlyHandler — HubSpot не поддерживает запись sequences через public API

CMS контент​

ТипЭкстрактДеплойПодводные камни
cms_files✅⚠️Developer File System через Source Code API 2026-03: извлекаются configured roots из HUBSPOT_CMS_SOURCE_ROOTS, потому что API не перечисляет корень Design Manager. Read-only @hubspot исключён. Деплой в published сразу меняет live-сайт и очищает draft
email_templates✅⚠️template_path должен существовать на таргете. Если нет — 400 или пустой шаблон без ошибки
landing_pages✅⚠️Аналогично: зависимость от шаблонов и модулей. Переносить без предварительного деплоя тем через HubSpot CLI бессмысленно
site_pages✅⚠️Аналогично landing_pages
cms_domains / cms_blogs✅🔴Домены и настройки блогов дают стабильный контекст, но изменяются вне обычного metadata deploy
blog_authors / blog_tags✅✅ID стабилизируются по language-aware slug; переводы создаются через explicit language-variation endpoints
blog_posts✅⚠️URN строится из parent blog + language + slug; старые name-only URN продолжают разрешаться. Draft/live и template orchestration остаются отдельной задачей

Служебные​

ТипЭкстрактДеплойПодводные камни
account_settings✅🔴Read-only snapshot account type, timezone, currency and hosting location
hubspot_users✅🔴User provisioning write API существует, но намеренно не включён: обычный metadata deploy не должен создавать доступ или paid seats
hubspot_teams✅🔴Команды доступны публично только на чтение; IDs стабилизируются по имени
hubspot_roles✅🔴Permission sets создаются в UI; IDs стабилизируются по имени
hubspot_brands✅🔴Brands API доступен только через конкретного пользователя: extractor собирает union брендов всех account users и стабилизирует IDs по имени
company_currency✅✅Изменение влияет на deal totals и отчёты всего портала
currency_exchange_rates✅⚠️Переносятся current rates и visibility; self-rate пропускается. Central FX rates стабилизируются как auto-managed и создаются через отдельный endpoint
tax_rates✅🔴Публичный API предоставляет только GET; ID стабилизируется по internal name
communication_subscription_types✅🔴Типы email-подписок и переводы через Communication Preferences 2026-03. Default brand переносим; при scopes settings.users.read + business_units_view.read брендовые IDs стабилизируются по имени. Без них item явно помечается как portal-local
quote_templates✅⚠️Требует Sales Hub. На порталах без плана — 403
hubspot_owners✅🔴Read-only. Используются только для reference resolution при экстракте. Owners создаются только добавлением пользователя

2. Что можно добавить: HubSpot API это поддерживает​

Низкий приоритет​

ТипAPI HubSpotПримечание
Products catalog/crm/v3/objects/productsГраница между данными и метаданными. Скорее для data backup
Webhooks subscriptions/webhooks/v3Конфиги вебхуков — переносимы

3. Что не покрыть никогда: нет публичного API​

ТипСтатус
Reporting dashboards / custom reports❌ Нет публичного API
Playbooks❌ Нет публичного API
Approval workflows (Sales Hub)❌ Нет публичного API
Chat flows / Bot flows (Conversations)❌ Ограниченный API, запись недоступна
Meeting scheduler settings❌ Нет публичного API
Sequences❌ Нет write API (только read)
SLA configurations❌ В публичном OpenAPI-каталоге HubSpot нет SLA endpoints; UI использует непубличные настройки

3.1. Что не является metadata портала​

Custom workflow action definitions принадлежат developer app. На актуальной developer platform это файлы src/app/workflow-actions/*-hsmeta.json, которые загружаются вместе с app project, а затем становятся доступны в установивших приложение порталах. Их следует версионировать и деплоить в репозитории приложения, а не извлекать из портала как account metadata. См. Custom workflow actions.


4. Срочные проблемы в текущей реализации​

✅ not_deployable проверяется до API-вызова​

DeploymentOrchestrator превращает такие элементы в blocked result до scope validation, backup и strategy dispatch. Причина из not_deployable_reason возвращается в deployment log.


✅ Lists API v1 больше не используется​

ListHandler и extractor используют Lists API v3; sunset v1 не влияет на текущую реализацию.


✅ Workflows: известные битые ссылки блокируются​

WorkflowHandler fail-closed отклоняет unresolved URN и известные source IDs до отправки workflow в HubSpot. Неизвестные plan-specific action payloads всё ещё требуют authenticated fixtures.


⚠️ CMS: публикация Developer Files меняет live-сайт сразу​

cms_files синхронизирует Developer File System раньше страниц и писем. Запись в environment published немедленно публикуется и сбрасывает draft-версию файла. Удаления из обычного changeset намеренно остаются заблокированными.


5. Предупреждения для assisted deploy UI​

ТипТекст предупреждения
forms + V4"V4 forms cannot be deployed via API. Deploy manually in HubSpot."
workflows"Workflow triggers and actions referencing lists, forms or other objects require those to exist on the target portal first."
cms_files"Publishing CMS developer files changes the live site immediately. Review the file diff before deploy."
landing_pages / site_pages / email_templates"CMS templates must be included as cms_files or already exist on the target portal."
sequences"Sequences are read-only and cannot be deployed via API."
hubspot_owners"Owners cannot be created via API. Add users manually in HubSpot."
quote_templates"Requires Sales Hub subscription on the target portal."
campaigns"Campaign asset associations (emails, pages) will not be migrated — link them manually after deploy."
hubspot_lists (manual)"Manual lists cannot have filter rules deployed. List will be created empty."

6. Дорожная карта по покрытию​

  1. ✅ Developer File System как отдельный тип cms_files.
  2. ✅ Users/teams/roles и account settings как read-only snapshots; currencies как read/write metadata.
  3. ✅ Communication subscription types как read-only snapshot с переводами.
  4. ✅ Brands/business units и переносимая нормализация брендовых subscription types.
  5. Расширение workflow action registry на authenticated plan-specific fixtures.