Customization Options
You can customize:- Custom Fields: Add new fields to tickets, contacts, and other documents
- Ticket Types: Define categories for different issue types
- Ticket Statuses: Create custom statuses and status categories
- Ticket Priorities: Define priority levels with custom labels
- Ticket Templates: Pre-filled ticket forms for common scenarios
- Workflows: Custom automation and state transitions
- Saved Replies: Template responses for common questions
- Form Scripts: Client-side JavaScript for dynamic forms
Custom Fields
Add fields to capture additional information on tickets and related documents.Adding Custom Fields
Select Document Type
Choose the DocType to customize:
- HD Ticket: Main ticket document
- HD Customer: Customer information
- HD Contact: Contact details
- HD Article: Knowledge base articles
Add New Field
Click “Add Row” in the Fields table:
- Field Type: Data, Select, Link, Date, etc.
- Label: Display name for the field
- Field Name: Internal identifier (auto-generated)
- Options: For Select/Link fields
- Required: Make field mandatory
- Read Only: Prevent editing
Configure Field Properties
Set additional properties:
- In List View: Show in ticket list
- In Standard Filter: Enable filtering by this field
- In Global Search: Include in search
- Default Value: Pre-fill with default
- Depends On: Show field conditionally
Field Types
Common field types for tickets:- Data: Single-line text (e.g., reference number)
- Text: Multi-line text (e.g., detailed notes)
- Select: Dropdown with predefined options
- Link: Reference to another document
- Date: Date picker
- Datetime: Date and time picker
- Check: Boolean checkbox
- Int/Float: Numeric values
- Currency: Monetary values
- Attach: File upload
- Table: Child table with multiple rows
Example Custom Fields
Product Version Field:Ticket Templates
Ticket templates provide pre-configured ticket forms for specific scenarios.Template Structure
Based on HD Ticket Template doctype (hd_ticket_template.json):
- Template Name: Unique identifier
- About: Additional information (HTML)
- Fields: Custom fields for this template
- Description Template: Pre-filled description
The Ticket Template feature is marked as deprecated (
hd_ticket_template.json:6) and may be replaced in future versions. Use Custom Fields and Forms for new customizations.Template Fields
Each template can have custom fields (HD Ticket Template Field):- Fieldname: Field identifier
- Required: Make field mandatory
- Hide from Customer: Agent-only field
- URL/Method: Dynamic field options
- Placeholder: Hint text
Ticket Types
Categorize tickets by type to enable specialized handling.Creating Ticket Types
Create New Type
Click “New” and configure:
- Name: Type identifier (e.g., “Bug”, “Feature Request”, “Billing”)
- Description: Brief explanation
- Priority: Default priority for this type
Common Ticket Types
- Bug Report: Software defects and errors
- Feature Request: New functionality requests
- Technical Support: Technical assistance
- Billing: Payment and invoice questions
- General Inquiry: General questions
- Account Management: Account changes and setup
Using Ticket Types
Ticket types enable:- Routing: Assignment rules based on type
- SLA: Different SLAs per type
- Reporting: Analytics by ticket category
- Templates: Type-specific ticket templates
- Workflows: Custom workflows per type
Ticket Statuses
Define custom statuses to match your support workflow.Status Categories
All statuses belong to one of three categories:- Open: Active tickets requiring attention
- Paused: Tickets on hold or waiting
- Resolved: Closed or completed tickets
- SLA timer behavior
- Ticket visibility in views
- Reporting and analytics
- Agent workload calculations
Creating Custom Statuses
Create New Status
Click “New” and configure:
- Status Name: Display name (e.g., “Waiting on Customer”)
- Category: Open, Paused, or Resolved
- Description: When to use this status
Example Status Workflows
Basic Support Workflow:- Open (new tickets)
- In Progress (being worked on)
- Waiting on Customer (need info)
- Resolved (completed)
- Closed (verified resolution)
- New (just created)
- Assigned (agent assigned)
- In Progress (actively working)
- Waiting on Engineering (escalated)
- Waiting on Customer (need response)
- Pending Release (fix scheduled)
- Resolved (completed)
- Closed (verified)
Ticket Priorities
Define priority levels to categorize urgency.Creating Priorities
Create Priority Levels
Create priorities with:
- Priority Name: Display label (e.g., “Urgent”, “High”, “Medium”, “Low”)
- Integer Value: Numeric value for sorting (higher = more urgent)
- Color: Visual indicator
- Description: When to use this priority
Priority Best Practices
4-Tier System (Recommended):- Urgent: System down, critical business impact
- High: Significant functionality affected
- Medium: Minor issues, workaround available
- Low: Enhancement requests, cosmetic issues
- Critical: Complete service outage
- High: Major feature broken
- Medium: Moderate impact
- Low: Minor inconvenience
- Planning: Future enhancements
Priority and SLA
Link priorities to SLA response times:Saved Replies
Create template responses for common questions.Creating Saved Replies
Create New Reply
Configure:
- Title: Short identifier
- Message: Template response text
- Teams: Which teams can use this reply
Saved Reply Scope
Control reply visibility (seehd_settings.json:15-16):
- Global Scope: All agents see all replies
- Team Scope Only:
disable_saved_replies_global_scoperestricts to team-specific replies
Using Saved Replies
When responding to tickets:- Click “Insert Saved Reply”
- Search for the appropriate template
- Select the reply
- Customize as needed
- Send response
desk/src/components/SavedRepliesSelectorModal.vue
Form Scripts
Add client-side JavaScript to customize form behavior.Creating Form Scripts
Create New Script
Configure:
- Document Type: HD Ticket or other DocType
- Script: JavaScript code
- Enabled: Activate the script
Form Script Examples
Auto-populate fields:Field Dependencies
Create dynamic forms with field dependencies.Conditional Display
Show fields based on other field values:Dynamic Options
Change field options based on conditions:Workflow Customization
Auto-Update Status
Configure automatic status updates (seehd_settings.json:31-33):
- Auto Update Status: Enable automatic status changes
- Update Status To: Target status for auto-update
Auto-Close Tickets
Automatically close inactive tickets:- Auto Close Tickets: Enable auto-closing
- Auto Close After Days: Inactivity period before closing
- Auto Close Status: Status to set when auto-closing
hd_settings.json:34-37
Branding Customization
Customize the appearance to match your brand.Brand Settings
Configure in HD Settings > Branding:- Brand Name: Your company name
- Brand Logo: Company logo (appears in header)
- Favicon: Browser tab icon
hd_settings.json:51-55
Portal Customization
Customize the customer portal:- Upload brand logo
- Set brand name
- Customize email templates with branding
- Add custom CSS via Frappe website settings
Comments and Reactions
Enhance collaboration with comments and reactions.Comment Reactions
Enable emoji reactions to comments (seehd_settings.json:28-29):
- Enable Comment Reactions: Allow agents to react to comments
- Helps acknowledge comments without adding noise
- Implemented via HD Comment Reaction doctype
Comment Configuration
- Internal Comments: Only visible to agents
- Public Comments: Visible to customers
- Email Comments: Sent via email to customers
Best Practices
Custom Fields
- Plan Before Adding: Ensure fields are necessary
- Use Clear Labels: Make purpose obvious
- Set Appropriate Types: Choose correct field type
- Document Purpose: Add descriptions for complex fields
- Test Thoroughly: Verify fields work in all contexts
- Avoid Duplication: Check for existing fields first
Ticket Types and Statuses
- Keep it Simple: Start with fewer types/statuses
- Clear Definitions: Document when to use each
- Train Team: Ensure consistent usage
- Review Regularly: Remove unused types/statuses
- Map to Workflows: Align with actual processes
Saved Replies
- Use Variables: Make replies dynamic with template variables
- Keep Current: Update replies when processes change
- Organize by Category: Group similar replies
- Personal Touch: Encourage customization before sending
- Review Metrics: Track which replies are most used
Form Scripts
- Test Thoroughly: Verify scripts don’t break functionality
- Handle Errors: Add try-catch blocks
- Comment Code: Explain complex logic
- Performance: Avoid heavy operations on every keystroke
- Version Control: Track script changes
Advanced Customization
Custom DocTypes
Create entirely new document types:- Define in Frappe DocType builder
- Add fields and permissions
- Link to HD Ticket via Link field
- Create forms and lists
Server Scripts
Add Python logic without code deployment:- Create Server Script in Frappe
- Choose trigger (Before Save, After Insert, etc.)
- Write Python code
- Enable and test