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

review-bounced-contacts — скилл для Claude Code

Еженедельный ручной разбор контактов с 3+ отскоками: удалить или попробовать восстановить. Помогает не переусердствовать с подавлением и убрать мусор.

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

Что делает review-bounced-contacts

Скилл описывает недельный процесс для контактов, помеченных email_health_flag. Автоматический мониторинг отскоков такие адреса уже подавляет, но решение удалить навсегда или попытаться восстановить остаётся за человеком. Скрипт на Python через CRM Search API выгружает помеченные контакты в CSV — с email, именем, компанией, причиной отскока, стадией жизненного цикла и владельцем.

Дальше по каждому контакту проверяют три вещи: жив ли домен (MX-запись), известный ли это клиент, и какой был отскок — жёсткий или мягкий. По таблице решений домен без записей уходит в удаление, а живой домен с мягким отскоком остаётся подавленным до следующей проверки. В конце удалённые контакты чистят через UI или batch delete, флаг email_health_flag снимают со всех просмотренных, а результаты пишут в отчёт за квартал.

Перед запуском нужен активный workflow мониторинга отскоков и свойство email_health_flag на контактах. Для скриптовой выгрузки понадобится ключ HubSpot в HUBSPOT_ACCESS_TOKEN в .env; подойдёт и старый токен приватного приложения. Удалённые контакты лежат в корзине HubSpot 90 дней — восстановить можно, но только в этот срок.

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

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

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

  • Выгрузи контакты с email_health_flag через CRM Search API и сохрани в CSV
  • Проверь домен и историю сделок по каждому помеченному контакту, скажи, что делать — удалять или восстанавливать
  • Сними email_health_flag со всех просмотренных контактов и посчитай, сколько удалили

Как установить review-bounced-contacts

1Через Skills CLI (Vercel)

npx skills add TomGranot/hubspot-admin-skills --skill review-bounced-contacts -a claude-code

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

~/.claude/skills/review-bounced-contacts/SKILL.md

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

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

Вопросы о review-bounced-contacts

Как установить review-bounced-contacts в Claude Code?

Выполните npx skills add TomGranot/hubspot-admin-skills --skill review-bounced-contacts -a claude-code. Скилл появится в ~/.claude/skills/review-bounced-contacts/SKILL.md.

Что делает review-bounced-contacts?

Описывает недельный разбор контактов с 3+ отскоками: выгрузка через CRM Search API, проверка домена и типа отскока, решение удалить или восстановить, снятие флага и логирование.

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

Активный workflow мониторинга отскоков, свойство email_health_flag на контактах и ключ HubSpot в HUBSPOT_ACCESS_TOKEN в .env для скриптовой выгрузки.

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

SKILL.md · MIT
---
name: review-bounced-contacts
description: "Weekly manual review of contacts with 3+ bounce events. Decide whether to delete or attempt recovery for each flagged contact. Prevents over-suppression while removing truly bad data."
license: MIT
metadata:
  author: tomgranot
  version: "1.1"
  category: ongoing-maintenance
---

# Review Bounced Contacts

A weekly manual review process for contacts flagged with 3+ bounces. The bounce monitoring workflow auto-suppresses these contacts, but a human should decide whether to permanently delete or attempt recovery.

## Prerequisites

- Bounce monitoring workflow active (run `/bounce-monitoring-workflow` first)
- `email_health_flag` custom property exists on contacts
- A HubSpot service key (`HUBSPOT_ACCESS_TOKEN` in `.env`; an existing legacy private app token also works) for scripted pre-filtering

## Step-by-Step Instructions

### Stage 1: Before

Use the CRM Search API to pull contacts where `email_health_flag` is set:

```python
import os, requests
from dotenv import load_dotenv

load_dotenv()
TOKEN = os.environ["HUBSPOT_ACCESS_TOKEN"]
BASE = "https://api.hubapi.com"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}

resp = requests.post(f"{BASE}/crm/v3/objects/contacts/search", headers=HEADERS, json={
    "filterGroups": [{"filters": [
        {"propertyName": "email_health_flag", "operator": "EQ", "value": "true"},
    ]}],
    "properties": ["email", "firstname", "lastname", "company",
                   "hs_email_bounce", "hs_email_hard_bounce_reason_enum",
                   "lifecyclestage", "hubspot_owner_id"],
    "limit": 100,
})
resp.raise_for_status()
results = resp.json()["results"]
```

Export results to a CSV for review.

### Stage 2: Execute — Review Each Contact

For each flagged contact, check:

1. **Is the email domain active?** Run a quick MX record lookup or visit the domain.
2. **Is this a known customer or high-value contact?** Check lifecycle stage and deal history.
3. **What is the bounce reason?** Hard bounce (invalid mailbox) vs. soft bounce (mailbox full, temporary error).

**Decision matrix:**

| Domain active? | High value? | Bounce type | Action |
|---------------|-------------|-------------|--------|
| No | Any | Any | Delete |
| Yes | No | Hard | Delete |
| Yes | No | Soft | Keep suppressed, recheck next quarter |
| Yes | Yes | Hard | Attempt to find updated email |
| Yes | Yes | Soft | Keep suppressed, monitor |

### Stage 3: After — Apply Decisions and Log

1. **Delete** contacts marked for deletion via the HubSpot UI or API batch delete.
2. **Clear** the `email_health_flag` on all reviewed contacts.
3. Log the review results (deleted count, kept count, recovery attempts) for the quarterly report.

## Rollback

- Deleted contacts can be restored from HubSpot's recycling bin within 90 days.
- Contacts kept as suppressed can be restored to marketing status via a workflow or manual update in the UI.

## MCP Note

This weekly triage is exactly the interactive, judgment-heavy work HubSpot's MCP server is good at (see `/connect-hubspot-mcp`): ask Claude to pull each flagged contact's details, deal history, and bounce reason conversationally while you decide delete-vs-recover.

## Frequency

Run weekly, ideally Monday morning. Should take 5-15 minutes depending on volume. If volume exceeds 50 contacts per week, investigate the root cause (bad list source, form spam, etc.).

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

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

Всё по теме «Маркетинг и контент» →
seo-audit coreyhaines31 Скилл проводит технический и on-page аудит сайта: краулинг, индексация, Core Web Vitals, метатеги, hreflang. Пригодится, когда трафик упал или страницы застряли на второй выдаче. CX Codex +1 238 500установок programmatic-seo coreyhaines31 Скилл помогает планировать генерацию сотен посадочных страниц на базе шаблонов и структурированных данных. Позволяет избежать санкций поисковиков за пустой контент. CX Codex +1 150 800установок copy-editing coreyhaines31 Правит уже написанный маркетинговый текст: убирает речевые штампы, чистит формулировки и обновляет устаревшие страницы. Для нового текста с нуля не подходит. CX Codex +1 149 800установок marketing-ideas coreyhaines31 Скилл помогает подобрать маркетинговые идеи для SaaS или другого программного продукта с учётом этапа развития и доступных ресурсов. Пригодится, когда непонятно, с какого канала начать. CX Codex +1 147 400установок sales-enablement coreyhaines31 Скилл для ИИ-агента, который собирает презентации, one-pager'ы, скрипты демо и документы для отработки возражений. Пригодится, когда команда продаж просит материалы, а не очередную презентацию о продукте. CX Codex +1 119 400установок revops coreyhaines31 Скилл помогает проектировать RevOps: вести лидов по этапам, считать скоринг и выстраивать передачу из маркетинга в продажи. Нужен для CRM-процессов. CX Codex +1 114 000установок

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

waterfall-enrich-contacts Достаёт из внешних провайдеров почту, телефон и должность контактов HubSpot и записывает их обратно с журналом изменений. CX Codex +1 ★ 78звёзд репо suppress-ghost-contacts Находит в HubSpot контакты, которым доставили письма, но которые ни разу их не открыли. Готовит аудит и подсказывает, кого вывести из маркетинговых. 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звёзд репо

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

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