Skip to main content

Support & Helpdesk Module

Complete customer support solution with public portal for customers and helpdesk for agents.

Two interfaces: The Support Portal (app.proign.com/[tenant]/support) is customer-facing, while the Helpdesk (www.proign.com/tenants/[slug]/support) is for your team to manage tickets.

Support Portal (Customer-Facing)

Public portal where customers can:

  • Submit support tickets without login
  • Track existing tickets via email + ticket number
  • Search knowledge base articles
  • Reply to tickets and add attachments
  • Rate support quality when ticket closes

Portal URL

# Default portal
https://app.proign.com/[tenant]/support

# Custom domain (configured in settings)
https://support.yourdomain.com

Helpdesk (Agent Interface)

Internal interface for your support team to:

  • View and manage all tickets
  • Assign tickets to agents
  • Reply to customers
  • Set priority and status
  • Track SLA and response times
  • View performance metrics

API Integration

Integrate support functionality into external systems like canik.com or counter.canik.com:

Create Ticket (Public)

POST https://www.proign.com/api/tenants/[tenant]/support/public/tickets
Content-Type: application/json

{
  "email": "customer@example.com",
  "name": "John Customer",
  "subject": "Product inquiry",
  "description": "I have a question about my order...",
  "category_id": "cat_123",              // optional
  "priority": "medium",                   // low, medium, high, urgent
  "source_module": "rewards",             // optional - which module created it
  "metadata": {                           // optional custom data
    "order_id": "ORD-123",
    "product_sku": "ABC-456"
  },
  "turnstile_token": "<token>"            // required if Turnstile enabled
}

// Response
{
  "ticket_number": "TKT-2024-001234",
  "access_token": "guest_abc123...",      // for ticket lookup
  "message": "Your support ticket has been created."
}

Ticket Lookup (Guest)

GET https://app.proign.com/[tenant]/support/tickets/[ticket_number]?token=[access_token]

// Response
{
  "ticket_number": "TKT-2024-001234",
  "subject": "Product inquiry",
  "status": "in_progress",
  "priority": "medium",
  "created_at": "2024-01-10T12:00:00Z",
  "messages": [
    {
      "from": "customer",
      "message": "I have a question...",
      "created_at": "2024-01-10T12:00:00Z"
    },
    {
      "from": "agent",
      "message": "Thank you for contacting us...",
      "created_at": "2024-01-10T14:30:00Z"
    }
  ]
}

List Tickets (Authenticated)

# Requires API key or JWT cookie
GET https://www.proign.com/api/tenants/[tenant]/support/tickets
X-API-Key: pk_live_xxx

// Query parameters
?status=open,in_progress       // filter by status
&priority=high,urgent          // filter by priority
&assigned_to=agent_id          // filter by agent
&category_id=cat_123           // filter by category
&search=keyword                // search subject/description
&page=1&limit=50               // pagination

// Response
{
  "data": [...tickets],
  "meta": { "page": 1, "limit": 50, "total": 234 }
}

Ticket Details & Messages

# Get ticket details
GET /api/tenants/[tenant]/support/tickets/[ticketId]

# Update ticket (status, priority, assignment)
PATCH /api/tenants/[tenant]/support/tickets/[ticketId]

# List messages
GET /api/tenants/[tenant]/support/tickets/[ticketId]/messages

# Add message/reply
POST /api/tenants/[tenant]/support/tickets/[ticketId]/messages

Public Ticket Lookup

# Lookup ticket by number + access token
POST /api/tenants/[tenant]/support/public/tickets/lookup
{
  "ticket_number": "TKT-2024-001234",
  "access_token": "guest_abc123..."
}

# Get public ticket messages
GET /api/tenants/[tenant]/support/public/tickets/[ticketNumber]/messages

# Reply to public ticket
POST /api/tenants/[tenant]/support/public/tickets/[ticketNumber]/messages

Categories

# Public categories (for forms)
GET /api/tenants/[tenant]/support/public/categories

# Admin category management
GET  /api/tenants/[tenant]/support/categories
POST /api/tenants/[tenant]/support/categories
PATCH /api/tenants/[tenant]/support/categories/[categoryId]
DELETE /api/tenants/[tenant]/support/categories/[categoryId]

Attachments

# Public attachment upload (for ticket creation)
POST /api/tenants/[tenant]/support/public/attachments

# Authenticated attachment operations
POST /api/tenants/[tenant]/support/attachments
GET /api/tenants/[tenant]/support/attachments/[attachmentId]
DELETE /api/tenants/[tenant]/support/attachments/[attachmentId]

Helpdesk Configuration

# Get/update helpdesk settings
GET /api/tenants/[tenant]/support/helpdesk
PUT /api/tenants/[tenant]/support/helpdesk

# Email domain configuration
GET /api/tenants/[tenant]/support/email-domain
POST /api/tenants/[tenant]/support/email-domain    # Register domain
PUT /api/tenants/[tenant]/support/email-domain     # Verify domain
DELETE /api/tenants/[tenant]/support/email-domain  # Remove domain

AI Features

# AI ticket triage (auto-categorize, suggest priority)
POST /api/tenants/[tenant]/support/ai/triage

# AI suggest response
PUT /api/tenants/[tenant]/support/ai/triage

Global Endpoints

# Get user's tickets across all tenants
GET /api/support/my-tickets

# Inbound email webhooks
POST /api/support/inbound-email    # Resend/Cloudflare
POST /api/support/email-webhook    # Microsoft 365

Ticket Sources

Tickets can originate from multiple sources, tracked via source_module:

SourceDescription
supportSupport portal web form
rewardsDealer rewards portal
aftersaleWarranty/RMA related
fulfillmentOrder/shipping issues
emailInbound email
apiExternal API integration

Email Integration

Configure email handling for your support domain:

  • Inbound - Emails to support@yourdomain.com create tickets
  • Outbound - Replies sent from your domain (not @proign.com)
  • Threading - Email replies update existing tickets

Configuration

Configure in Tenant Settings → Support:

  • Categories - Define ticket categories
  • Email Domain - Custom from address
  • Branding - Logo, colors, portal name
  • SLA Rules - Response time targets
  • Auto-Assignment - Route tickets to agents
  • Turnstile - CAPTCHA for spam protection

Related