CRM
Unified CRM — conversations, messages, deals pipeline, and agency client management
CRM
MisarMail's built-in CRM connects your outreach activity to a full sales pipeline. Conversations track replies across all channels; Deals move through a kanban pipeline; Clients let agencies manage multiple sub-entities under one account.
Auth: Session cookie (dashboard UI) or API key with crm scope.
Overview
| Resource | Description | |----------|-------------| | Conversations | Thread of messages between you and a lead across email, WhatsApp, SMS, or LinkedIn | | Messages | Immutable message log within a conversation | | Deals | Sales opportunities linked to a conversation — move through pipeline stages | | Clients | Agency sub-entities for scoping campaigns and reporting (agency plans only) |
Conversations
Endpoints
| Method | Path | Description |
|--------|------|-------------|
| GET | /api/v1/crm/conversations | List conversations |
| GET | /api/v1/crm/conversations/:id | Get a single conversation |
| PATCH | /api/v1/crm/conversations/:id | Update status or intent |
| GET | /api/v1/crm/conversations/:id/messages | List messages in a conversation |
GET /api/v1/crm/conversations
curl "https://api.misar.io/mail/v1/crm/conversations?status=active&page=1" \
-H "Authorization: Bearer msk_YOUR_API_KEY"
Query Parameters
| Param | Default | Notes |
|-------|---------|-------|
| status | — | Filter by active, closed, or snoozed |
| channel | — | Filter by email, whatsapp, sms, linkedin |
| campaign_id | — | Filter by originating campaign |
| page | 1 | Page number |
| per_page | 25 | Results per page (max 100) |
Response
{
"success": true,
"conversations": [
{
"id": "conv-uuid-...",
"lead_email": "[email protected]",
"lead_name": "Priya Sharma",
"channel": "email",
"campaign_id": "campaign-uuid-...",
"contact_id": "contact-uuid-...",
"status": "active",
"intent": "interested",
"last_message": "Yes, I'd love to learn more about pricing.",
"last_message_at":"2026-04-13T09:00:00Z",
"created_at": "2026-04-10T08:00:00Z"
}
],
"pagination": { "page": 1, "per_page": 25, "total": 14 }
}
Intent Values (AI-detected from reply content)
| Intent | Meaning |
|--------|---------|
| interested | Positive — wants more info or a demo |
| not_interested | Opted out or asked to stop |
| question | Reply contains a question |
| booking | Requested or confirmed a meeting |
| objection | Price or fit objection raised |
| out_of_office | Auto-reply or OOO response |
PATCH /api/v1/crm/conversations/:id
Update conversation status or manually override the AI-detected intent.
curl -X PATCH https://api.misar.io/mail/v1/crm/conversations/conv-uuid-... \
-H "Authorization: Bearer msk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "status": "closed", "intent": "not_interested" }'
Messages
GET /api/v1/crm/conversations/:id/messages
Returns the full message history for a conversation, oldest first.
curl https://api.misar.io/mail/v1/crm/conversations/conv-uuid-.../messages \
-H "Authorization: Bearer msk_YOUR_API_KEY"
Response
{
"success": true,
"messages": [
{
"id": "msg-uuid-...",
"direction": "outbound",
"body": "Hi Priya, I'm reaching out about...",
"sent_at": "2026-04-10T08:00:00Z"
},
{
"id": "msg-uuid-2...",
"direction": "inbound",
"body": "Yes, I'd love to learn more about pricing.",
"received_at":"2026-04-13T09:00:00Z"
}
]
}
Deals
Deals represent sales opportunities. Each deal is linked to a conversation and moves through pipeline stages.
Pipeline Stages
| Stage | Meaning |
|-------|---------|
| new | Just created — lead replied positively |
| contacted | Follow-up sent |
| interested | Confirmed interest or demo requested |
| negotiating | Pricing or contract discussion underway |
| won | Deal closed successfully |
| lost | Deal closed — not won |
Endpoints
| Method | Path | Description |
|--------|------|-------------|
| GET | /api/v1/crm/deals | List deals (optionally filter by stage) |
| POST | /api/v1/crm/deals | Create a deal |
| GET | /api/v1/crm/deals/:id | Get a deal |
| PATCH | /api/v1/crm/deals/:id | Update deal stage, value, or notes |
| DELETE | /api/v1/crm/deals/:id | Delete a deal |
GET /api/v1/crm/deals
curl "https://api.misar.io/mail/v1/crm/deals?stage=interested" \
-H "Authorization: Bearer msk_YOUR_API_KEY"
Response
{
"success": true,
"deals": [
{
"id": "deal-uuid-...",
"conversation_id": "conv-uuid-...",
"lead_email": "[email protected]",
"lead_name": "Priya Sharma",
"stage": "interested",
"value": 50000,
"currency": "INR",
"notes": "Wants annual pricing",
"created_at": "2026-04-13T09:30:00Z",
"updated_at": "2026-04-13T09:30:00Z"
}
]
}
value is in the smallest currency unit (paise for INR, cents for USD).
POST /api/v1/crm/deals
curl -X POST https://api.misar.io/mail/v1/crm/deals \
-H "Authorization: Bearer msk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"conversation_id": "conv-uuid-...",
"stage": "interested",
"value": 50000,
"currency": "INR",
"notes": "Wants annual pricing"
}'
Clients (Agency)
Clients are sub-entities within your account — useful for agencies managing campaigns for multiple brands or end-clients. Each client can own separate campaign and contact data.
Clients are available on Max and Enterprise plans. On lower plans, this endpoint returns 403.
Endpoints
| Method | Path | Description |
|--------|------|-------------|
| GET | /api/v1/crm/clients | List clients |
| POST | /api/v1/crm/clients | Create a client |
| PATCH | /api/v1/crm/clients/:id | Update client details |
| DELETE | /api/v1/crm/clients/:id | Delete a client |
POST /api/v1/crm/clients
curl -X POST https://api.misar.io/mail/v1/crm/clients \
-H "Authorization: Bearer msk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Brand XYZ",
"domain": "brandxyz.com",
"notes": "E-commerce client — 3 active campaigns"
}'
Response
{
"success": true,
"client": {
"id": "client-uuid-...",
"name": "Brand XYZ",
"domain": "brandxyz.com",
"notes": "E-commerce client — 3 active campaigns",
"created_at": "2026-04-13T10:00:00Z"
}
}