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://mail.misar.io/api/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": "priya@example.io",
"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://mail.misar.io/api/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://mail.misar.io/api/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://mail.misar.io/api/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": "priya@example.io",
"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://mail.misar.io/api/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://mail.misar.io/api/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"
}
}