Creates and manages ManyChat messaging flows, syncs subscribers, configures webhooks, manages tags and custom fields, and triggers flows via API within Nicolify's connections module. Use when the user asks about ManyChat integration, chatbot automation, subscriber sync, webhook setup, or managing messaging flows in ManyChat. Trigger terms: 'manychat', 'many chat', 'chatbot automation', 'subscriber sync', 'messaging flow', 'send content API', 'manychat webhook', 'manychat tag', 'manychat custom field', 'trigger flow'.
72
87%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
You are an expert in ManyChat's API, messaging automation, and its integration with Nicolify's connections module. ManyChat updates their API frequently — always fetch fresh docs before coding.
Before writing ANY ManyChat-related code, you MUST:
Resolve the ManyChat library on context7:
mcp__plugin_context7_context7__resolve-library-id("ManyChat API")Then query the resolved library for the specific topic you need:
mcp__plugin_context7_context7__query-docs(library_id, topic="<your topic>")Example topics: "subscribers", "tags", "custom fields", "flows", "send content", "webhooks", "whatsapp templates", "rate limits"
Web search for recent changes:
WebSearch("ManyChat API changelog 2026")
WebSearch("ManyChat API updates <topic>")Cross-reference context7 results with what you find via web search. If there's a conflict, the web search result is likely more recent.
Do NOT skip this step. Do NOT rely on cached knowledge. ManyChat deprecates and changes endpoints without long notice periods.
Use this as a starting point — always verify against fresh docs (Step 0).
| Area | Key Endpoints | Rate Limit |
|---|---|---|
| Subscribers | GET/POST find by ID/email/custom field, create, update | 10 rps |
| Tags | List, create, add/remove from subscriber | 10 rps |
| Custom Fields | Set individual, batch (up to 20), create new | 10 rps |
| Flows | List all flows | 10 rps |
| Flows (trigger) | Trigger a flow for a subscriber | 20 rps, 100/sub/hour |
| Send Content | Send messages (text, image, card, etc.) | 25 rps |
| WhatsApp Templates | List templates, send template message | Requires Meta review |
| Page/Bot Info | getInfo, getWidgets, getGrowthTools, bot fields | 10 rps |
Authorization: Bearer <API_TOKEN>These features are NOT available via the ManyChat API — do not attempt to build them:
Implication for Nicolify: Pre-build flows and automations in ManyChat UI. Use the API for data sync (subscribers, tags, custom fields) and triggering pre-built flows.
Read references/nicolify-integration.md for the full file map. Summary:
| Layer | File | What It Does |
|---|---|---|
| Connector | infrastructure/marketing_connectors/manychat.py | ManyChatConnector.verify_connection() — validates API key via /fb/page/getInfo |
| API | api/manychat.py | 4 endpoints: /status, /connect, /disconnect, /test |
| Enum | domain/enums.py | ChannelType.MANYCHAT |
| Router | main.py:199 | Mounted at /api/v1/connections/manychat with tenant context |
| Frontend | features/connections/components/manychat-view.tsx | Connect/disconnect/test UI |
| API Client | lib/api/connections.ts | connectionsApi.{getManyChatStatus,connectManyChat,testManyChat,disconnectManyChat} |
sync_contacts — ManyChatConnector inherits from BaseConnector but doesn't implement sync_contacts() or sync_events()When adding new ManyChat features, follow the established connections module architecture:
Connector method — Add to ManyChatConnector in infrastructure/marketing_connectors/manychat.py:
httpx.AsyncClient for all HTTP callsAuthorization: Bearer {api_key} headerTuple[bool, Dict] for consistency with verify_connection()DTOs — Create in api/dto/manychat_dto.py (Pydantic v2 BaseModel)
API route — Add to api/manychat.py:
user: User = Depends(get_current_user) and repo: ChannelConnectionRepository = Depends(_get_repo)user.tenant_id — never skip tenant isolationconnection.credentials.get("api_key")Router registration — Already mounted in main.py:199, new routes on the existing router are auto-included
Migration — If new DB fields needed, use idempotent raw SQL (see CLAUDE.md)
ManyChatView in features/connections/components/manychat-view.tsxlib/api/connections.ts following the existing connectionsApi.{method} patternfetchClient with Authorization: Bearer ${token} header# Backend
1. ManyChatConnector.get_subscribers(api_key, params) -> calls GET /fb/subscriber/getSubscribers
2. ManyChatConnector.find_subscriber_by_email(api_key, email) -> calls GET /fb/subscriber/findByCustomField
3. ManyChatSyncService.sync_subscribers(tenant_id) -> orchestrates fetch + upsert to CRM
4. POST /api/v1/connections/manychat/sync-subscribers endpoint
# Frontend
5. connectionsApi.syncManyChatSubscribers(token) in connections.ts
6. "Sync Subscribers" button in ManyChatView connected stateManyChat works best as a messaging execution layer driven by Nicolify's intelligence. Apply these patterns in order of dependency:
qualified, hot-lead, booked) via API; wire ManyChat automations to trigger the correct flow on each tag./fb/sending/sendFlow to push a subscriber into a specific flow (e.g., post-purchase onboarding, abandoned cart recovery).ManyChatConnector to maintain control over error handling, rate limiting, and tenant isolation.user.tenant_idconnection.credentials, never hardcodedManyChatConnector + api/manychat.py)d31f7bc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.