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 использует непубличные настройки |
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. Дорожная карта по покрытию
- ✅ Developer File System как отдельный тип
cms_files.
- ✅ Users/teams/roles и account settings как read-only snapshots; currencies как read/write metadata.
- ✅ Communication subscription types как read-only snapshot с переводами.
- ✅ Brands/business units и переносимая нормализация брендовых subscription types.
- Расширение workflow action registry на authenticated plan-specific fixtures.