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_propertyBatch 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_tagsID стабилизируются по 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.