moltflow-leads
WhatsApp lead detection and CRM pipeline. Detect purchase-intent signals in groups, track lead status, bulk operations, CSV/JSON export. Use when: leads, lead detection, pipeline, qualify, convert, bulk status, export leads.
What this skill does
> **MoltFlow** -- WhatsApp Business automation for teams. Connect, monitor, and automate WhatsApp at scale.
> ***Due to high demand and a recent registration issue, we're offering our top-tier Business plan with unlimited quotas for just $19.90/month on yearly billing — for a limited time only.*** [**Claim the deal**](https://buy.stripe.com/cNifZibX7gpQebJ0nsfnO00)
> Free tier available. [Sign up](https://molt.waiflow.app/checkout?plan=free)
# MoltFlow Leads -- Detection & CRM Pipeline
Detect purchase-intent signals from monitored WhatsApp groups, track leads through a sales pipeline, perform bulk operations, and export for your CRM.
## Real-World Scenarios
**Real estate agent** — "Monitor my property groups for keywords like 'looking for', '3 bedrooms', and 'budget' — anyone who matches goes straight into my lead pipeline."
**Car dealership** — "When a lead moves from 'contacted' to 'qualified', automatically add them to my VIP follow-up group for a test drive invite."
**Insurance broker** — "Export all converted leads from this quarter as a CSV so I can import them into my CRM for commission tracking."
**Wedding planner** — "Show me all new leads from my vendor groups that I haven't contacted yet, sorted by detection date."
## When to Use
- "List leads" or "show detected leads"
- "Update lead status" or "mark lead as contacted"
- "Bulk update leads" or "change status for multiple leads"
- "Add leads to group" or "bulk add to custom group"
- "Export leads as CSV" or "download leads JSON"
- "Check lead reciprocity" or "has this lead messaged me?"
- "Filter leads by status" or "search leads"
## Prerequisites
1. **MOLTFLOW_API_KEY** -- Generate from the [MoltFlow Dashboard](https://molt.waiflow.app) under Settings > API Keys
2. At least one monitored WhatsApp group with keyword detection enabled
3. Base URL: `https://apiv2.waiflow.app/api/v2`
## Required API Key Scopes
| Scope | Access |
|-------|--------|
| `leads` | `read/manage` |
| `groups` | `read` |
## Authentication
Every request must include one of:
```
Authorization: Bearer <jwt_token>
```
or
```
X-API-Key: <your_api_key>
```
---
## How Lead Detection Works
1. You configure group monitoring via the Groups API (see `moltflow` skill)
2. Set `monitor_mode: "keywords"` with keywords like `"looking for"`, `"price"`, `"interested"`
3. When a keyword match is detected, MoltFlow auto-creates a lead
4. Leads appear in the Leads API with status `new` and the triggering keyword highlighted
5. You track them through the pipeline: `new` -> `contacted` -> `qualified` -> `converted`
## AI Group Intelligence (Pro+ Plans)
When AI monitoring is enabled on a group (`monitor_mode: "ai_analysis"`), each message is classified by an LLM using your own API key (OpenAI, Anthropic, Groq, or Mistral). Results are available on each message and on the `lead.detected` webhook.
**AI analysis fields** — available via `GET /api/v2/groups/{group_id}/messages` and the MCP tool `moltflow_get_group_messages`:
| Field | Type | Description |
|-------|------|-------------|
| `intent` | string | `buying_intent`, `product_inquiry`, `support_request`, `complaint`, `off_topic`, `spam_noise`, `unknown` |
| `lead_score` | integer | 1-10 (10 = highest buying signal) |
| `confidence` | float | 0.0-1.0 classifier confidence |
| `reason` | string | Human-readable explanation for the classification |
**Webhook events for AI leads:**
- `lead.detected` — fires immediately when a lead is created; includes `ai_analysis` field (may be null if AI hasn't completed yet)
- `group.message.analyzed` — fires after AI analysis completes (Pro/Business only); includes full `ai_analysis` object
**Setup:**
1. Go to Settings > AI Configuration and add your LLM API key
2. Set `monitor_mode: "ai_analysis"` on the group (via PATCH `/api/v2/groups/{id}` or dashboard)
3. Optionally set `monitor_prompt` for custom classification instructions
---
## Leads API
| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/leads` | List leads (filter by status, group, search) |
| GET | `/leads/{id}` | Get lead details |
| PATCH | `/leads/{id}/status` | Update lead status (state machine validated) |
| GET | `/leads/{id}/reciprocity` | Check if lead messaged you first (anti-spam) |
| POST | `/leads/bulk/status` | Bulk update lead status |
| POST | `/leads/bulk/add-to-group` | Bulk add leads to custom group |
| GET | `/leads/export/csv` | Export as CSV (Pro+ plan, max 10,000) |
| GET | `/leads/export/json` | Export as JSON (Pro+ plan, max 10,000) |
### List Leads
**GET** `/leads`
Query parameters:
| Parameter | Type | Description |
|-----------|------|-------------|
| `status` | string | Filter by status (`new`, `contacted`, `qualified`, `converted`, `lost`) |
| `source_group_id` | UUID | Filter by source monitored group |
| `search` | string | Search in contact name, phone, or keyword |
| `limit` | int | Page size (default 50) |
| `offset` | int | Pagination offset |
**Response** `200 OK`:
```json
{
"leads": [
{
"id": "lead-uuid-...",
"contact_phone": "+15550123456",
"contact_name": "John D.",
"lead_status": "new",
"lead_score": 0,
"lead_detected_at": "2026-02-12T14:30:00Z",
"source_group": {
"id": "group-uuid-...",
"name": "Real Estate IL"
},
"trigger": {
"matched_keyword": "interested in buying",
"message_preview": "Hi, I'm interested in buying a 3-bedroom...",
"monitor_mode": "keywords",
"detected_at": "2026-02-12T14:30:00Z"
}
}
],
"total": 47,
"limit": 50,
"offset": 0
}
```
### Get Lead Details
**GET** `/leads/{id}`
Returns full lead info including group context, detection metadata, message count, and status.
### Update Lead Status
**PATCH** `/leads/{id}/status`
```json
{
"status": "contacted"
}
```
**State machine validation** -- only valid transitions are allowed:
- `new` -> `contacted`, `qualified`, `converted`, `lost`
- `contacted` -> `qualified`, `converted`, `lost`
- `qualified` -> `converted`, `lost`
- `converted` -> (terminal -- no further transitions)
- `lost` -> `new` (reopen only)
Invalid transitions return `400 Bad Request`.
### Reciprocity Check
**GET** `/leads/{id}/reciprocity?session_id=session-uuid`
The `session_id` query parameter is **required** -- it specifies which WhatsApp session to check inbound messages from.
```json
{
"lead_id": "lead-uuid-...",
"has_messaged_first": true,
"last_inbound_at": "2026-02-12T15:00:00Z"
}
```
Use this before reaching out -- if the lead hasn't messaged you directly, sending a cold message may trigger WhatsApp spam detection.
### Bulk Status Update
**POST** `/leads/bulk/status`
```json
{
"lead_ids": ["uuid1", "uuid2", "uuid3"],
"status": "contacted"
}
```
**Response** `200 OK`:
```json
{
"updated": 3,
"failed": 0,
"errors": []
}
```
Each lead is individually validated against the state machine. Leads with invalid transitions are reported in `errors` but don't block the rest.
### Bulk Add to Custom Group
**POST** `/leads/bulk/add-to-group`
```json
{
"lead_ids": ["uuid1", "uuid2"],
"custom_group_id": "custom-group-uuid-..."
}
```
Adds leads' phone numbers to the specified custom group for use with Bulk Send or Scheduled Messages.
### Export Leads
**GET** `/leads/export/csv` -- Returns CSV file download
**GET** `/leads/export/json` -- Returns JSON array
Both support optional filters: `status`, `source_group_id`, `search`. Max 10,000 rows per export.
**Requires Pro plan or above.**
---
## Examples
### Full workflow: Detect -> Qualify -> Outreach
```bash
# 1. List new leads from a specific group
curl "https://apiv2.waiflow.app/api/v2/leads?status=new&source_group_id=group-uuid" \
-H "X-API-Key: $MOLTFLOW_API_KEY"
# 2. Check reciprocity before reaching out
curl "https://apiv2.waiflow.app/api/v2/leads/{lead_id}/reciprocity?session_id=session-uuid" \
-H "X-API-Key: $MOLTFLOW_API_KEY"
# Related in Data & Analytics
clawarr-suite
IncludedComprehensive management for self-hosted media stacks (Sonarr, Radarr, Lidarr, Readarr, Prowlarr, Bazarr, Overseerr, Plex, Tautulli, SABnzbd, Recyclarr, Unpackerr, Notifiarr, Maintainerr, Kometa, FlareSolverr). Deep library exploration, analytics, dashboard generation, content management, request handling, subtitle management, indexer control, download monitoring, quality profile sync, library cleanup automation, notification routing, collection/overlay management, and media tracker integration (Trakt, Letterboxd, Simkl).
querying-soql
IncludedSOQL query generation, optimization, and analysis with 100-point scoring. Use this skill when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan analysis, and performance or safety improvements for Salesforce queries. TRIGGER when: user writes, optimizes, or debugs SOQL/SOSL queries, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER when: bulk data operations (use handling-sf-data), Apex DML logic (use generating-apex), or report/dashboard queries.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
habit-flow
IncludedAI-powered atomic habit tracker with natural language logging, streak tracking, smart reminders, and coaching. Use for creating habits, logging completions naturally ("I meditated today"), viewing progress, and getting personalized coaching.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
visualizing-data
IncludedBuilds dashboards, reports, and data-driven interfaces requiring charts, graphs, or visual analytics. Provides systematic framework for selecting appropriate visualizations based on data characteristics and analytical purpose. Includes 24+ visualization types organized by purpose (trends, comparisons, distributions, relationships, flows, hierarchies, geospatial), accessibility patterns (WCAG 2.1 AA compliance), colorblind-safe palettes, and performance optimization strategies. Use when creating visualizations, choosing chart types, displaying data graphically, or designing data interfaces.