CRM Factory logoCRM Factory

Cases & Helpdesk

Manage support cases with queues, SLA tracking, AI assistance, and automation from a unified helpdesk.

Cases in CRM Factory represent support tickets, service requests, and customer issues. The helpdesk includes queue-based routing, SLA enforcement, AI-powered assistance, and full integration with the rest of the CRM.

Case Management

Creating Cases

Cases can be created from multiple sources:

  • Manually — Click "New Case" from the Cases page or from a contact/account record
  • APIPOST /api/v1/cases with subject, description, priority, and optional queue
  • Voicemail — The voicemail pipeline auto-creates cases from transcribed messages
  • Automation — Workflow actions can create cases based on triggers
  • Conversations — AI escalation from messaging channels can generate cases

Case Fields

FieldDescription
subjectShort description of the issue
descriptionFull details
statusnew, open, pending, resolved, closed
prioritylow, medium, high, critical
queueAssignment queue for routing
ownerAssigned user
account / contactRelated customer records
opportunityOptionally linked sales opportunity
custom_fieldsOrg-defined extensions via Custom Fields

Case Timeline

Each case has a timeline showing:

  • Status changes and field updates
  • Comments (internal and customer-facing)
  • Linked activities (calls, emails, tasks)
  • AI-generated summaries and suggestions

Queues

Queues organize cases by team, skill, or topic and control how cases are assigned.

Assignment Methods

MethodBehavior
Round RobinDistributes cases evenly across queue members in rotation
Least ActiveAssigns to the member with the fewest open cases

Creating a Queue

POST /api/v1/case-queues
Content-Type: application/json

{
  "name": "Tier 1 Support",
  "description": "First-line support for general inquiries",
  "assignment_method": "round_robin"
}

When a case is created with a queue_id, the queue router automatically assigns it to a member and applies the queue's SLA policy.

SLA Policies

SLA policies define response and resolution time targets per priority level.

Policy Structure

Each policy contains rules per priority:

POST /api/v1/sla-policies
Content-Type: application/json

{
  "name": "Standard SLA",
  "rules": [
    { "priority": "critical", "first_response_minutes": 30, "resolution_minutes": 240 },
    { "priority": "high", "first_response_minutes": 60, "resolution_minutes": 480 },
    { "priority": "medium", "first_response_minutes": 240, "resolution_minutes": 1440 },
    { "priority": "low", "first_response_minutes": 480, "resolution_minutes": 2880 }
  ]
}

SLA Tracking

When a case is routed through a queue with an SLA policy:

  • First response due is calculated from creation time + the policy's first response window
  • Resolution due is calculated from creation time + the policy's resolution window
  • SLA breached flag is set automatically when deadlines pass

SLA breach status is visible on the Cases list, dashboards, and reports. Filter cases by sla_breached to surface at-risk tickets.

AI Assistance

Each case has AI-powered tools accessible from the case detail page or via API:

Available Actions

ActionDescription
summarizeGenerate a concise summary of the case and its comment thread
categorizeAuto-classify the case by type, topic, and suggested priority
suggest_replyDraft a customer-facing response based on case context
evaluateAssess case complexity and recommend next steps

API Usage

POST /api/v1/cases/{id}/ai
Content-Type: application/json

{
  "action": "suggest_reply",
  "erp_context": {
    "orders": [...],
    "shipments": [...],
    "credit": { ... }
  }
}

The optional erp_context parameter provides ERP data (orders, shipments, credit status) to the AI for more informed responses — useful when cases involve order or delivery issues.

API Reference

List Cases

GET /api/v1/cases

Paginated list with filtering support. Returns cases with account, contact, and SLA context.

Get Case Detail

GET /api/v1/cases/{id}

Returns the case with related account, contact, opportunity, and full comment thread.

Create a Case

POST /api/v1/cases
Content-Type: application/json

{
  "subject": "Order #4521 arrived damaged",
  "description": "Customer reports box was crushed during shipping...",
  "priority": "high",
  "contact_id": "cnt_abc123",
  "account_id": "acc_xyz789",
  "queue_id": "q_support_t1"
}

Update a Case

PATCH /api/v1/cases/{id}
Content-Type: application/json

{
  "status": "resolved",
  "resolution_notes": "Replacement shipped via overnight delivery"
}

Comments

GET /api/v1/cases/{id}/comments
POST /api/v1/cases/{id}/comments

{
  "body": "Reached out to shipping — replacement is on the way.",
  "internal": true
}

Automation

Cases integrate with the workflow builder. Common patterns:

  • Auto-assign critical cases — Trigger on case.created with priority: critical, action assign_to_queue
  • Escalation alerts — Trigger on SLA breach, action send_notification
  • Customer acknowledgment — Trigger on case.created, action channel_notify with a template message

On this page