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]/messagesCategories
# 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:
| Source | Description |
|---|---|
support | Support portal web form |
rewards | Dealer rewards portal |
aftersale | Warranty/RMA related |
fulfillment | Order/shipping issues |
email | Inbound email |
api | External 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