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

waba-embedded-signup — скилл для Claude Code: онбординг WABA

Помогает подключить WhatsApp Business Account через Sent и не перепутать три разных пути интеграции. Пригодится при настройке профилей, токенов и колбэков.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add sentdm/sent-plugin --skill waba-embedded-signup -a claude-code
Открыть на GitHub

Что делает waba-embedded-signup

Скилл разводит три сценария, которые часто называют одним словом «Embedded Signup». Первый — подключение WABA организации из дашборда Sent через хостингуемый флоу Meta. Второй — наследование: дочерний профиль создаётся через POST /v3/profiles без поля whatsapp_business_account и берёт WABA организации. Третий — свой WABA у дочернего профиля, когда в запросе передаются waba_id и access_token, а phone_number_id можно опустить.

Аутентификация идёт либо ключом профиля в x-api-key, либо ключом организации плюс x-profile-id для работы с существующим дочерним профилем. Только организация может использовать x-profile-id; с ключом профиля придёт 403. Если credentials не переданы, а у организации нет подключённого WABA, создание профиля вернёт 422 — это повод сначала проверить подключение, а не искать несуществующий публичный эндпоинт Embedded Signup.

Токен WABA нужно выдавать из секрет-менеджера и не логировать, не возвращать в браузер и не хранить в общем профиле. Завершение профиля — вызов POST /v3/profiles/{profileId}/complete с обязательным webHookUrl; ответ 202 означает только старт фоновой обработки, финальный статус придёт в колбэке с полем event (COMPLETED, SUBMITTED, failed). Обработку колбэка стоит делать идемпотентной.

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

  • развести три пути онбординга WABA и не свести их к одному эндпоинту
  • создать дочерний профиль с наследованием WABA организации
  • подключить отдельный WABA с собственным access_token
  • разобраться, почему создание профиля вернуло 422 или 403
  • сделать колбэк завершения профиля идемпотентным

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

  • помоги подключить WABA организации через дашборд Sent и проверить, что она видна
  • создай дочерний профиль с наследованием WABA организации
  • профиль вернул 422 при создании — что проверить сначала?

Как установить waba-embedded-signup

1Через Skills CLI (Vercel)

npx skills add sentdm/sent-plugin --skill waba-embedded-signup -a claude-code

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

~/.claude/skills/waba-embedded-signup/SKILL.md

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

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

Вопросы о waba-embedded-signup

Как установить waba-embedded-signup в Claude?

Выполните npx skills add sentdm/sent-plugin --skill waba-embedded-signup -a claude-code. Скилл появится в ~/.claude/skills/waba-embedded-signup/SKILL.md.

Что делает waba-embedded-signup?

Ведёт по онбордингу WhatsApp Business Account через Sent: подключение WABA организации, наследование её дочерним профилем и вариант с отдельными credentials. Отдельно разбирает аутентификацию, завершение профиля и колбэк.

Чем отличаются наследование WABA и собственный WABA у профиля?

При наследовании поле whatsapp_business_account в запросе не передаётся, и дочерний профиль делит границу WABA организации. Во втором случае вы указываете waba_id и access_token явно, а phone_number_id можно не указывать.

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

SKILL.md · MIT
---
name: waba-embedded-signup
description: Guides WhatsApp Business Account onboarding through Sent, separating dashboard Embedded Signup, organization WABA inheritance, and direct child-profile credentials. Use for WABA connection, Meta signup, profile creation, access-token handling, phone number mapping, completion callbacks, or WhatsApp onboarding failures.
---

# WABA Onboarding and Embedded Signup

Keep three integration paths distinct. Calling all of them “Embedded Signup” creates wrong API designs and unsafe credential handling.

## The three paths

| Path | Where it starts | Profile behavior |
| --- | --- | --- |
| Organization Embedded Signup | Sent dashboard | Connects the organization's WABA through the hosted Meta flow. There is no public Sent endpoint that starts this flow. |
| Organization WABA inheritance | `POST /v3/profiles` | Omit `whatsapp_business_account`; the child inherits the organization's connected WABA. |
| Dedicated child-profile WABA | `POST /v3/profiles` | Supply `whatsapp_business_account.waba_id` and `.access_token`; `phone_number_id` is optional. |

If credentials are omitted and the organization has no connected WABA, profile creation returns `422`. Direct WABA credentials are a profile-creation feature, not a public “Embedded Signup endpoint.”

## Authentication

Use either:

- a profile-specific key in `x-api-key`; or
- an organization key in `x-api-key` plus `x-profile-id` when operating for an existing child profile.

Only organization keys may use `x-profile-id`; profile keys receive `403`. `x-sender-id` is legacy v1/v2 terminology.

## Path A: organization Embedded Signup

1. An authorized organization administrator opens the Sent dashboard WhatsApp connection flow.
2. The hosted Meta Embedded Signup UI collects the Meta authorization and WABA/number choices.
3. Confirm the organization shows a connected WABA before creating inheriting children.
4. Record non-secret identifiers and audit who completed the action.

Do not invent a `POST /embedded-signup` or token-exchange endpoint in Sent's public API. If building your own Meta Tech Provider integration outside the Sent dashboard, follow Meta's current documentation and keep that system separate from the Sent API contract.

Meta's browser `postMessage` events use an `event` field and nested data/session information. Do not rewrite them as Sent webhook `sub_type` envelopes.

## Path B: inherit the organization WABA

Omit `whatsapp_business_account`:

```json
{
  "name": "Tenant Support",
  "description": "Synthetic child profile",
  "short_name": "SUPPORT",
  "inherit_templates": true,
  "billing_model": "organization",
  "sandbox": true
}
```

Use this only after the organization WABA is connected. Inheritance means the tenant shares that WABA boundary; confirm this matches the tenant/brand architecture.

## Path C: dedicated WABA credentials

```json
{
  "name": "Dedicated Tenant",
  "whatsapp_business_account": {
    "waba_id": "123456789012345",
    "phone_number_id": "987654321098765",
    "access_token": "<injected secret>"
  },
  "sandbox": true
}
```

`waba_id` and `access_token` are required. `phone_number_id` is optional: when omitted, the current contract describes provisioning and registration during onboarding.

The token needs the applicable WhatsApp Business messaging and management permissions. Inject it from a secret manager. Never log it, echo it, write it to fixtures, return it to the browser, include it in support output, or retain it in general profile storage. Sent does not return it in API responses.

## Complete the profile

Call `POST /v3/profiles/{profileId}/complete` with the required `webHookUrl`:

```json
{
  "webHookUrl": "https://example.com/webhooks/profile-complete",
  "sandbox": true
}
```

- `202` means background processing started; there is no final status in that response.
- `200` can mean the profile was already complete and currently demonstrates lowercase `completed`.
- The completion callback can report `COMPLETED`, `SUBMITTED`, or `failed`.

Treat the completion callback as its own integration surface. Its envelope uses `event`, not `sub_type`:

```json
{
  "event": "COMPLETED",
  "profile_id": "00000000-0000-0000-0000-000000000000",
  "timestamp": "2026-08-09T12:00:00Z"
}
```

Preserve unknown event strings. Verify authenticity using the mechanism Sent documents for the callback endpoint and make processing idempotent.

## Verify operational readiness

- Profile WABA ID matches the intended business.
- Selected number is mapped to the intended profile.
- Template sharing/inheritance is intentional.
- A test template can be created with `sandbox: true`.
- The completion callback is reachable and idempotent.
- Returned message IDs are stored against the tenant/profile before webhook processing.
- Tokens and payment values are absent from logs.

For ordinary message and template webhooks, follow Sent's current events reference; those are separate from Meta browser events and profile-completion callbacks.

## Failure routing

| Failure | Next action |
| --- | --- |
| `422` when credentials are omitted | Connect the organization WABA or provide dedicated credentials. |
| `403` with profile key and `x-profile-id` | Remove `x-profile-id` or use an authorized organization key. |
| Wrong WABA/number | Stop before completion and correct the profile mapping. |
| Expired/under-scoped token | Replace it securely; never print it while diagnosing. |
| Completion remains submitted | Inspect prerequisite and callback evidence; do not assume final failure from the `202`. |

Use [references/waba-embedded-signup-spec.md](references/waba-embedded-signup-spec.md), [references/waba-onboarding-runbook.md](references/waba-onboarding-runbook.md), and [references/whatsapp-sender-profile-mapping.md](references/whatsapp-sender-profile-mapping.md). Use `sender-profile-architect` for tenant boundaries and `waba-template-author` for the first template.

© sentdm · MIT · sentdm/sent-plugin

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

Всё по теме «Бэкенд и API» →
integrate-whatsapp gokapso Скилл подключает WhatsApp к продукту через Kapso, помогает выдавать ссылки на онбординг, ловить события через вебхуки и отправлять сообщения. CX Codex +1 4 700установок twilio-conversations-classic-api официальный Twilio Скилл для Codex и ChatGPT, который помогает собирать многоканальные переписки на Twilio Conversations (classic) API: SMS, WhatsApp и веб-чат в одном треде. CX Codex GP ChatGPT ★ 7 596звёзд репо twilio-whatsapp-send-message официальный Twilio Справочник по отправке сообщений WhatsApp через Twilio: 24-часовое окно, шаблоны, песочница и разбор ошибок доставки. CX Codex GP ChatGPT 2установок resend resend Скилл для работы с Resend Email API: отправка транзакционных писем, приём входящих через вебхуки, шаблоны, домены и логи запросов. CX Codex +1 23 400установок configuring-exports celigo Скилл для настройки экспортов в Celigo: подключение к внешней системе, выбор адаптора, дельта-выгрузки, вебхуки и lookup-шаги. CX Codex +1 3 000установок build-zoom-team-chat-app официальный anthropics Справочный скилл для разработки интеграций с Zoom Team Chat: ботов, интерактивных карточек, слэш-команд и отправки сообщений от имени пользователя. CX Codex +1 2 100установок

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

sender-profile-architect Скилл помогает спроектировать архитектуру профилей отправителя в Sent v3 для мультиарендных систем. Пригодится при настройке биллинга, номеров WABA и 10DLC. CX Codex +1 2 900установок sms-10dlc-registration Готовит и проверяет заявку на регистрацию бренда и кампании US A2P 10DLC в Sent: доказательства согласия, сценарии использования, примеры сообщений. CX Codex +1 2 900установок rcs-agent-onboarding Проведёт по шагам подключения RCS и RBM в Sent: чек-лист доказательств, проверка Sender Profile, шаблоны и тесты маршрутизации. CX Codex +1 2 900установок template-builder-ui Скилл помогает спроектировать интерфейс конструктора шаблонов под контракт Sent v3, настроить предпросмотр каналов и валидацию перед отправкой на модерацию. CX Codex +1 2 900установок waba-template-author Скилл преобразует текст рассылки в валидный payload для Sent v3 API и проверяет шаблон на требования политик WhatsApp. Пригодится при сборке служебных, рекламных и OTP-сообщений. CX Codex +1 2 900установок sent Разбирает расплывчатые просьбы про Sent и отправляет их в нужный скилл или операцию через MCP-сервер. CX Codex +1 2 900установок sent-profile-provisioning Скилл проводит создание, правку и удаление Sender Profiles в Sent через MCP-инструменты и REST-жизненный цикл профиля. Пригодится, когда нужно завести тенанта и довести профиль до состояния, в котором он может отправлять. CX Codex +1 2 700установок sent-routing-strategist Разбирает, как сообщение Sent доходит до получателя: автоматическая маршрутизация или закреплённый канал, что реально делает массив channel и почему сообщение получило статус FAILED, FILTERED или BLOCKED. CX Codex +1 2 700установок

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

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