К основному содержанию
скилл CX Codex

bounce-monitoring-workflow — скилл для Claude Code

Скилл собирает в HubSpot три воркфлоу для контроля отскоков: подавляет контакты после нескольких bounce, шлёт алерты и помечает адреса на ручную проверку.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add TomGranot/hubspot-admin-skills --skill bounce-monitoring-workflow -a claude-code
Открыть на GitHub

Что делает bounce-monitoring-workflow

Скилл разворачивает в HubSpot автоматический контроль отскоков, чтобы репутация отправителя не проседала. Вместо одной ветвистой схемы он собирает три линейных воркфлоу: подавление жёстких отскоков, отключение от маркетинговых писем после N отскоков и пометку контактов для еженедельного разбора. Пороги SUPPRESSION_THRESHOLD и REVIEW_THRESHOLD задаются в execute.py.

Внутри три скрипта. before.py инвентаризует существующие воркфлоу и проверяет совпадения имён. execute.py создаёт свойство email_health_flag, если его нет, и три воркфлоу через POST /automation/v4/flows — всегда выключенными, чтобы вы сначала проверили их в интерфейсе. after.py подтверждает, что воркфлоу на месте, и показывает состояние включения.

Для работы нужен план HubSpot Marketing Professional или Enterprise, сервисный ключ с областью automation в HUBSPOT_ACCESS_TOKEN внутри .env, Python 3.10+ с uv и адрес админа или канал Slack для алертов. Workflows API в HubSpot помечен как beta: если создание начнёт падать, остаётся ручная сборка в интерфейсе. Уведомления и статус маркетингового контакта скрипт не добавляет — их придётся доставить руками при проверке.

Какие задачи решает

  • подавлять контакты после нескольких отскоков без ручного перебора
  • получать алерт сразу при жёстком отскоке
  • помечать проблемные адреса и разбирать их раз в неделю
  • проверить, не занято ли имя воркфлоу перед созданием
  • убедиться, что созданные воркфлоу действительно включены

Примеры запросов агенту

  • Собери воркфлоу для контроля отскоков в HubSpot, порог подавления 2, порог проверки 4
  • Запусти uv run scripts/before.py и покажи, какие воркфлоу уже есть
  • Проверь через after.py, включены ли созданные воркфлоу

Как установить bounce-monitoring-workflow

1Через Skills CLI (Vercel)

npx skills add TomGranot/hubspot-admin-skills --skill bounce-monitoring-workflow -a claude-code

2Вручную: положить файлы

~/.claude/skills/bounce-monitoring-workflow/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/bounce-monitoring-workflow/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о bounce-monitoring-workflow

Как установить bounce-monitoring-workflow в Claude Code?

Выполните npx skills add TomGranot/hubspot-admin-skills --skill bounce-monitoring-workflow -a claude-code. Скилл окажется в ~/.claude/skills/bounce-monitoring-workflow/SKILL.md.

Что делает bounce-monitoring-workflow?

Создаёт в HubSpot три воркфлоу: подавляет жёсткие отскоки, отключает контакты от маркетинговых писем после заданного числа отскоков и помечает адреса для еженедельного разбора.

Что нужно для работы скилла?

План HubSpot Marketing Professional или Enterprise, сервисный ключ с областью automation в .env, Python 3.10+ с uv и получатель для алертов о жёстких отскоках.

Исходный текст

SKILL.md · MIT
---
name: bounce-monitoring-workflow
description: "Build a workflow to protect sender reputation through automated bounce monitoring. Auto-suppresses contacts above a configurable bounce threshold, alerts on hard bounces, and flags high-bounce contacts for weekly manual review."
license: MIT
metadata:
  author: tomgranot
  version: "1.1"
  category: automation-workflows
---

# Bounce Monitoring Workflow

Protect your email sender reputation with automated bounce detection and suppression. This workflow catches bounces as they happen rather than waiting for periodic cleanup.

## How It Works

| Condition | Action |
|-----------|--------|
| Hard bounce detected | Alert admin immediately, suppress contact |
| Suppression threshold reached (commonly 2-3 bounces) | Auto-suppress from marketing emails |
| Review threshold reached (commonly 3-5 bounces) | Flag for weekly manual review (delete vs. recover) |

## Prerequisites

- HubSpot Marketing Professional or Enterprise plan
- A HubSpot service key (`HUBSPOT_ACCESS_TOKEN` in `.env`; an existing legacy private app token also works) with the `automation` scope (for the API path)
- Python 3.10+ with [`uv`](https://github.com/astral-sh/uv)
- A custom contact property for review flagging (default: `email_health_flag` — the execute script creates it if missing)
- Admin email or Slack channel for hard bounce alerts

## Scripts

Script paths are relative to this skill's directory. Run them from your project directory so `.env`, `data/`, and `reports/` resolve there: prefix each path with wherever this skill is installed (`skills/bounce-monitoring-workflow/` in a clone of the repo).

| Stage | Script | Run with |
|-------|--------|----------|
| Before | [`scripts/before.py`](./scripts/before.py) | `uv run scripts/before.py` |
| Execute | [`scripts/execute.py`](./scripts/execute.py) | `uv run scripts/execute.py` |
| After | [`scripts/after.py`](./scripts/after.py) | `uv run scripts/after.py` |

`before.py` inventories existing workflows and checks name collisions. `execute.py` creates the `email_health_flag` property (if missing) and three bounce workflows via `POST /automation/v4/flows` — **always disabled, for review before enabling**. `after.py` verifies and reports enabled state.

## Building the Workflow: Two Options

### Option A: Create via the v4 Automation API (primary)

**API status:** HubSpot documents the Workflows API as **beta** and subject to change. Its current reference is the date-based beta path `/automation/v4/2027-03-beta/flows`; this skill's scripts still call the unversioned `/automation/v4/flows` path, which v4's end of support on March 30, 2027 also covers. Creating workflows disabled and reviewing them in the UI is what makes a beta API acceptable here. If a script's create call starts failing, the manual UI build below is the fallback.

Instead of one workflow with three nested branches, the script decomposes the design into **three linear workflows** — the same coverage, cleanly expressible via the API and independently tunable:

1. **Hard Bounce Suppression**: enrollment = `hs_email_hard_bounce_reason_enum` is known. Actions: set `email_health_flag`, set marketing contact status to non-marketing.
2. **Suppress at N+ Bounces**: enrollment = `hs_email_bounce` >= suppression threshold (re-enrollment on). Action: set marketing contact status to non-marketing.
3. **Flag for Review at M+ Bounces**: enrollment = `hs_email_bounce` >= review threshold (re-enrollment on). Action: set `email_health_flag` (feeds `/review-bounced-contacts`).

Configure `SUPPRESSION_THRESHOLD` and `REVIEW_THRESHOLD` in `execute.py`, then:

```bash
uv run scripts/before.py
uv run scripts/execute.py
```

**Safety model:** all three workflows are created with `isEnabled: false`. During UI review: add the internal-notification actions (hard bounce alert, review alert — notification recipients are portal-specific), add "Set marketing contact status" manually if the script reported it had to omit it, then turn the workflows on.

### Option B: Manual UI Build (single workflow with nested branches)

Follow the step-by-step instructions in Stage 3 below — the original single-workflow design with three branch levels. Use this on portals where the Automation API is unavailable.

**Alternatives:** HubSpot Breeze AI can scaffold a similar workflow from a prompt, but it creates event-based (OR) triggers, cannot configure re-enrollment, and may flatten nested branches — verify everything it builds. The Claude Chrome extension can drive the workflow builder UI directly. Both are secondary options.

## Step-by-Step Build Instructions

### Stage 1: Plan

1. Choose your **suppression threshold** (commonly 2-3 bounces) and **review threshold** (commonly 3-5).
2. Decide who receives hard-bounce and review alerts.

### Stage 2: Before

1. Run `uv run scripts/before.py` to inventory workflows and check name collisions.
2. Identify your current bounce baseline — run a quick search for contacts where `hs_email_bounce` > 0 to understand the starting volume.
3. If building manually, create your bounce review property (checkbox or dropdown) — the API path creates it automatically.

### Stage 3: Execute

**Option A:** run `uv run scripts/execute.py`, then complete the UI review steps listed above.

**Option B — manual UI build:** build a single contact-based workflow with branching logic.

1. **Trigger:** `hs_email_bounce` is known (fires when bounce count updates)

2. **Branch 1: Hard bounce check**
   - Condition: `hs_email_hard_bounce_reason_enum` is known
   - **YES:**
     - Send internal notification: "Hard bounce: {email} — {hs_email_hard_bounce_reason_enum}"
     - Set `hs_marketable_status` to non-marketing (workflow action)
   - **NO:** Continue to Branch 2

3. **Branch 2: Bounce count >= your suppression threshold (commonly 2-3)**
   - Condition: `hs_email_bounce` is greater than or equal to your suppression threshold
   - **YES:**
     - Set `hs_marketable_status` to non-marketing (workflow action)
     - Continue to Branch 3
   - **NO:** No action (below threshold — monitor only)

4. **Branch 3: Bounce count >= your review threshold (commonly 3-5)**
   - Condition: `hs_email_bounce` is greater than or equal to your review threshold
   - **YES:**
     - Set your bounce review property = flagged
     - Send internal notification: "Contact {email} has [review threshold]+ bounces — review for deletion"
   - **NO:** No further action

5. **Settings:**
   - Re-enrollment: ON (contact should re-enter if bounce count increases)
   - Goal: None

6. **Turn on the workflow.**

### Stage 4: After

1. Run `uv run scripts/after.py` (API path) to confirm the workflows exist and report enabled state.
2. Check workflow history after the first week of email sends.
3. Review the flagged contacts list weekly — decide for each contact:
   - **Delete** if the email is clearly invalid (typo domain, defunct company)
   - **Attempt recovery** if the domain is valid (could be a temporary mailbox issue)
4. Monitor overall bounce rate in HubSpot email health dashboard.

## Rollback

1. Turn off the workflow.
2. Contacts already suppressed remain non-marketing. To reverse:
   - Filter contacts suppressed by this workflow (check your bounce review property or workflow history)
   - Manually set back to marketing contacts in the UI
3. Clear your bounce review property values in bulk if needed.

## Weekly Review Process

For contacts flagged at your review threshold:

1. Export the flagged contacts list.
2. For each contact, check:
   - Is the email domain still active? (Quick MX record check)
   - Is this a known customer or high-value contact?
   - Was the bounce recent or historical?
3. **Delete** contacts with invalid domains or clearly fake emails.
4. **Keep suppressed** contacts with valid domains but repeated soft bounces.
5. Clear the bounce review property after review.

© tomgranot · MIT · TomGranot/hubspot-admin-skills

Похожие скиллы

Все скиллы по теме «Автоматизация и no-code: n8n, Zapier, Make» →
workflow-automation HubSpot Скилл учит агента управлять автоматизациями HubSpot через агентский CLI hubspot. Помогает создавать, читать, обновлять и удалять сценарии v4 flows API прямо из терминала. CX Codex +1 1 800установок canva-creator официальный anthropics Берёт готовый бриф контента и пошагово разворачивает кампанию: строит календарь публикаций, создаёт макеты в Canva для соцсетей, пишет тексты и отправляет посты в HubSpot. CX Codex +1 1 900установок customer-retention HubSpot Находит клиентов без контакта и с риском оттока через фильтры CRM HubSpot, затем создаёт задачи на дозвон пачкой. CX Codex +1 1 700установок hubspot OpenClaudia Скилл управляет контактами, компаниями и сделками HubSpot через API, а также работает со страницами CMS. Пригодится для поиска записей и сводки по воронке продаж. CX Codex +1 438установок closed-lost-revival Cogny AI Разбирает проигранные сделки в CRM, записывает настоящую причину отказа и условие для возврата, а потом следит за этим условием. CX Codex +1 ★ 111звёзд репо call-list официальный anthropics Собирает список лидов на сегодня, ранжирует их по срочности, готовит тезисы для разговора и черновики писем. Полезен, если продажи идут через звонки. CX Codex +1 1 600установок

Из того же набора11

review-bounced-contacts Еженедельный ручной разбор контактов с 3+ отскоками: удалить или попробовать восстановить. Помогает не переусердствовать с подавлением и убрать мусор. CX Codex +1 ★ 78звёзд репо new-contact-hygiene-workflow Создаёт в HubSpot воркфлоу, который при появлении контакта ставит стадию жизненного цикла и подтягивает компанию с отраслью. CX Codex +1 ★ 78звёзд репо enrich-company-name Копирует название компании из связанной записи в пустое поле контакта HubSpot. Пригодится, если сегментация и токены персонализации ломаются из-за пустых значений. CX Codex +1 ★ 78звёзд репо create-segment-lists Собирает в HubSpot библиотеку списков сегментов: клиенты, партнёры, конкуренты, сотрудники, уровни ICP и отрасли. Нужна для таргетинга, подавления рассылок и отчётности. CX Codex +1 ★ 78звёзд репо cleanup-workflows Находит в HubSpot воркфлоу, которые никогда не запускались, отключены больше 90 дней или остались от тестов, и помогает их удалить. CX Codex +1 ★ 78звёзд репо cleanup-lead-owners Убирает из HubSpot уволенных сотрудников и переназначает их контакты, компании и сделки. Нужен, когда человек уходит, а его записи остаются висеть. CX Codex +1 ★ 78звёзд репо cleanup-dashboards Наводит порядок в дашбордах HubSpot: находит заброшенные, дубли и тестовые, помогает свести отчёты к нескольким рабочим экранам. CX Codex +1 ★ 78звёзд репо assign-unowned-contacts Проставляет владельца маркетинговым контактам HubSpot, у которых его нет. Пригодится, когда отчёты по владельцам не сходятся с реальной базой. CX Codex +1 ★ 78звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой