How to Enable IMAP support in PHP

The IMAP extension in PHP enables you to communicate with email servers via both the IMAP and POP protocols. Without it enabled, all plugins that use imap_* functions won’t work. KSD Mail is one such plugin. To allow you to seamlessly manage your customer support tickets from one pretty interface ( including tickets logged by sending emails to, KSD Mail interacts with your email server using IMAP.

As handy as it is, the extension isn’t always enabled by default by all web hosts. The method you’ll need to use to enable IMAP support in PHP will depend on your access level, expertise and preference. We highly, highly recommend method 1

1. Ask for it

Your host ought to have the extension enabled; if they don’t, they should be able to enable it without you jumping through hoops. Here’s a (tried & tested) letter:

Hi {hosting company} support,I hope this finds you kicking dragons, taking names and being super awesome. I’d like you to enable the PHP IMAP extension for my account. It’ll go a long way to further cement this long-running (hosting) relationship of ours. Thanks!

Then sit back and watch your (hosting) relationship grow. If that fails, you have two options – start hosting with us or move on to the next steps

2. Modify php.ini

Php.ini holds PHP’s configuration. You’ll need to modify this. You can do this in different ways but we’ll go through how to do it using your account’s FTP credentials.

Put this in a file:
<?php phpinfo(); ?>

Save it as info.php. Use your FTP credentials and upload that file to the public_html (or www) directory on your account.

In your browser, navigate to Copy the line that contains Loaded Configuration File


Also, copy the line that contains DOCUMENT_ROOT
Put this in another file:
<?php system( "cp /path1/copied/in/the/previous/step/php.ini /home/yourusername/public_html/php.ini");?>

Replace /path/copied/in/the/previous/step/php.ini with the first path you copied in the previous step. Replace /home/yourusername/public_html/php.ini with the second path

Save that file as copy.php and upload it to your server. Navigate to

Congratulations! We are almost done. You’ve successfully copied your web host’s PHP configuration. Now, FTP into your account and navigate to the public_html (or www) directory. There should be a php.ini file in there. Download that file and open it with Notepad. Search for ‘imap’. You’ll find this line:


Remove the semi-colon at the beginning of that line.

If that line doesn’t exist, find any line that starts with extension= and below it, add

Save the file and upload it to your account. That’s it. All is well – you are done. IMAP is enabled. Have a drink on us and send the bill using a carrier pigeon

NB: Be sure to delete copy.php and info.php created during this process

KSD replies quick start

After activating your KSD Replies license, you should be ready to join customer service ninjas who respond super fast (and probably don’t only wear black). When you activate the license, reload your settings page. An additional tab will be added to your settings. Go to that tab.

The replies tab anatomy. That could become a TV show one day

Give  a category, title and subject to your reply before entering content and saving it.

To edit/delete a reply, hover on it and ‘Edit’ and ‘Delete’ links will appear in the right corner of the reply, next to its category name.

So, what’s the deal with category/title/subject you ask? It’s easier to explain the  distinction when you see them in action. Let’s see that…

Now, if you have AT LEAST ONE saved reply, every time you create a new ticket or a new ticket reply, you’ll have an ‘Insert Reply’ button in your WordPress editor. Click on that button to view your replies.

PS: Create at least one reply for the magic to happen

Insert a WordPress help desk reply
Insert a WordPress help desk reply

As you can see, the categories group your replies while the titles help you easily identify them. On clicking a title, the ticket subject and content are automatically populated. In the case of a reply, the subject is ignored since the ticket will already have a subject.

That’s it! Go ye forth and reply like a….

Knowledge Base quick start

After activating your license, the knowledge base comes alive! Your knowledge base presents information to your customers before they create a support ticket. This allows them to ‘self-serve’ (like at an all-you-can-eat buffet). When a customer goes to your ticket submission form (wherever you’ve added it), the articles you created in your knowledge base will be presented to them broken down by category.

See creating content on how to make the most of this

Also, you can also create a beautiful knowledge base landing page that showcases your most important content. See add a landing page for this

Your knowledge base articles have a navigational sidebar automatically appended to them. Check out more details on how it works here

Your content’s only good to the extent to which your customers find it helpful. Each article automatically has a form to receive feedback on how good (or not so good) the article is. See more here on how to check article feedback

Creating content

More on this here:

Creating Knowledge Base content

Landing page

The landing page shows all your knowledge base articles grouped by categories. The landing page is automatically created when you install the add-on named knowledge-base

The Sidebar

Every knowledge base article has a sidebar that helps users navigate through articles and view related content. It displays your knowledge base articles grouped by category.

Feedback & Related content

Every knowledge base article has a form automatically appended to it  that requests the user to rate the article.  This feedback allows you to improve your articles. Also, related content is added to allow your users to seamlessly navigate to other content in the category.

Article feedback and related content
Article feedback and related content

The collected feedback is displayed in the admin end, next to each article:

and on the article’s edit screen.

 Restrict Article Access

When you are creating a new knowledge base article you can restrict who is allowed to view that article based on four parameters namely All, None, Username, Role.

  • All restricts everyone from viewing.
  • None removes all restrictions. to viewing the article
  • Username allows only specified logged in users to view the articles
  • Role restricts viewing the article based on one or more roles.


Restrict Topic Access

It is possible to restrict entire topics from being viewed.



Creating Knowledge Base content

This is at the heart of how useful your knowledge base is. Let’s see how to do this…

First, on license activation, a ‘Knowledge Base’ item will be added to your admin dashboard:

WordPress Help Desk knowledge base link
Where the knowledge base magic happens…

To add anything to your knowledge base, go to that item, select ‘Add New’ and enter the details of your knowledge base article as you would for a normal post.

Categorization of your content is very important. Go to Knowledge Base > Categories to create the relevant categories that you’ll add your articles to. Customer-facing interfaces that show knowledge base articles will generally first show the categories before showing the actual articles. This allows your customer to easily select what they want to see without having to sift through all your articles.

For example, if you have three categories, add-ons, advertising and installation, this is what your customer will see when they access your knowledge base. More on accessing your knowledge base here

Knowledge base support tab

As you can see, your customer’s able to search by keyword, question or knowledge base article.

Add headers

For long knowledge base articles, consider breaking the content into sections and adding subheadings to each section. For example, an article on How to become a superhero could have a section on Finding a spider, Getting bitten by the spider, Creating a superhero costume and then Swinging from building to building

We recommend that you use h3 headings for each of these subheadings.

Table of contents

After adding headers, add a table of contents to the top of your article. Do this by using the shortcode [ksd_kb_toc]

By default, this uses h3 to create table of content entries and h4 to create child entries for each entry. Below’s an example of this in action:

Table of content entries

Below’s the table of contents generated:

Table of contents display
Table of contents display

Use different tags

If you don’t want to use h3 and h4 for your headings, you can specify that tags you’ve used as attributes of the ksd_kb_toc shortcode. For example, if you used h5 and h6 as your headings and subheadings respectively, use the following shortcode:

[ksd_kb_toc tag="h5" child_tag="h6"]

 Add Notices

Notices allow you to highlight some text. You can use shortcode [kb_notice]]  to generate different kinds of notices. The shortcode has the following options:

  1. type  – Possible values are warning, error, info and success. Default is info
  2. width – This is a percentage of how much of the content it should take up. The default is 100%
  3. align –  Where the text should align to. Possible values are: center,left,right and justify. Default is center

Below are some examples of these in action:

Code [[kb_notice]Do not try swinging like spiderman at home[/kb_notice]

Results in:

Do not try swinging like spiderman at home


[kb_notice type="error"]Do not try swinging like spiderman at home[/kb_notice]

Results in:

Do not try swinging like spiderman at home


[kb_notice width="50%"]Do not try swinging like spiderman at home[/kb_notice]

Results in:

Do not try swinging like spiderman at home


[kb_notice align="left" type="success"]We need to insist on this – Do not try swinging like spiderman at home[/kb_notice]

Results in:

We need to insist on this – Do not try swinging like spiderman at home



Your simple WordPress helpdesk plugin – Quick Start

Kanzu Support Desk(KSD) is a simple WordPress helpdesk plugin that keeps your interactions with your customers fast and personal. A basic understanding of WordPress’s administrative panel and plugin activation is assumed in this overview. Let’s get a quick overview of how it works.

Support Form

This is where it all starts for your customer. There are different ways you can add a support form to your site. You can do it using;

  1. A shortcode: Place the shortcode [ksd_support_form] in any page or post. Your support form will be displayed there. By default, a page is created at {}/submit-ticket and the shortcode is added to it. So, after activating the plugin, visit the ‘Submit Ticket’ page on your site to view the form. You can change this to fit your requirements.
  2. A widget:  In your widgets is one called “Kanzu Support Desk support form”. Place that anywhere on your site and the form’ll show up there
  3. Support button: There’s a support button that’s added at the bottom right of your website. When that button is clicked, a support form is displayed. By default, the button is shown when you activate the plugin. To disable it, go to the settings

Here’s what a basic support form looks like:

Basic wordpress helpdesk support form

This is what a logged-in user sees. The default setting is that a user needs to login to create a ticket. If they don’t have an account, they need to create one first. Note that the styling is taken from your theme so it won’t look exactly the same as what’s pictured above

If, in your settings, allow tickets to be created anonymously, this is what will be displayed:

WordPress helpdesk anonymous support form
WordPress helpdesk anonymous user support form

You can learn more about anonymous tickets here.

In your settings, you can make changes to your form to show:

  • Your products (which are retrieved from WooCommerce, Easy Digital Downloads and the custom products you define)
  • Your categories (sales, presales, FAQs, etc. Any category you create to help group your tickets easier)
  • The ticket severity (low, medium, high, urgent )
  • Google reCAPTCHA to prevent spam

More on these here

Managing tickets

When a ticket is submitted using one of your support forms above (or using Email, Facebook or Twitter if you have one of our add-ons enabled), you can view and make changes to it in your administrative panel. First off, you need to be either a site administrator, a KSD agent or a KSD supervisor to manage tickets. More on ticket management roles here

If you have the right permissions, you’ll see a ‘Tickets’ menu item in your admin panel. Go to it. It’ll display a list of all tickets

WordPress support plugin ticket grid

This is where the magic happens – or at least some of it.

  1. The filters at the top (All/Pending/Open/Resolved/Mine) allow you to quickly look at tickets in  a certain state or those assigned to you (Mine).
  2. These filters allow you to view only tickets of a certain severity or status
  3. This red line indicates a ticket with a severity of ‘urgent’. The orange line indicates one of severity ‘high’
  4. The ticket’s current status
  5. The number of replies a ticket has

To manage a single ticket, click to open it.

WordPress helpdesk plugin single ticket view
The anatomy of a WordPress helpdesk plugin ticket. Biology class all over again

Let’s break down the ticket.

  1. The ticket subject
  2. The ticket URL
  3. The ticket body
  4. Type your awesome support reply and click send
  5. Private notes allow agents to communicate among each other about a ticket. They are not sent to customers. Click ‘Private note’ to create one
  6. The ticket information box is where you change the ticket’s severity, status and who it’s assigned to
  7. Shows your customer’s information. If the ticket was logged by a different customer, change by clicking ‘Edit’
  8. The ticket activity is a log of the various events of a ticket’s life. It shows ticket reassignment, severity change & creation (when an agent creates the ticket on the customer’s behalf)
  9. Shows other tickets logged by the customer

There you have it! For more on how to customize your installation using the plugin settings, checkout settings

KSD WordPress helpdesk plugin settings

Kanzu Support Desk (KSD), your simple WordPress helpdesk plugin, allows you to customize your installation to suite your needs. Here’s a deeper look at how you can do that.

Your default installation has 2 tabs in Tickets > Settings: General and Support Form

General Settings

WordPress helpdesk general settings
KSD general settings

Enable auto-reply

When a new ticket is created, an automatic response is sent to the ticket creator

From (Name)

The name displayed in the automatic response

From ( Email Address )

The email address from which the automatic response will be sent


The subject of the automatic response


The body of the automatic email response

 Auto-assign new tickets to

When a new ticket’s created, auto-assign tickets to this individual. They’ll be notified when a new ticket’s created. By default, tickets are auto-assigned to the primary administrator. Using our Rules add-on, you can create custom rules to assign tickets that meet certain criteria to certain users

Your Agents

Add/View your agents. KSD agents are WordPress users with the role “ksd_agent”. To make an existing user an agent, simply change their role to “KSD Agent”. To create a new agent, create a new user with the role “KSD Agent”. Agents can view and manage tickets – reply, change status, change severity, create private notes – name it APART FROM deleting tickets. So, you might have an agent called “Agent 007”; they’ll be able to do all these awesome things but they won’t be able to delete tickets.

Your Supervisors

Add/View your supervisors. KSD supervisors are WordPress users with the role “ksd_supervisor”. To make an existing user a supervisor, simply change their role to “KSD Supervisor”. Supervisors can do everything an agent can do AND can delete tickets. They can also view the dashboard, view and change settings and also view the KSD add-ons list.

Your Customers

Add/View your customers. Your customers, in KSD’s eyes, are all users with the role “ksd_customer”. When a new user creates a ticket from a KSD support form, this is the role that’ll be assigned to them.

Generate debug File

This is only useful if you contact our support team and have a complex issue that has us scratching our heads and pacing up and down endlessly. Use this to create a file that you’ll send to us to help us troubleshoot the issue easier.

Support Form settings

WordPress helpdesk support form settings
WordPress helpdesk support form settings

Support Form Page

The page which users will use to submit tickets. By default, a ‘Submit Ticket’ page is created on installation. Whichever page you choose must have the ksd_support_form shortcode in it

Enable Support Button

Adds a button to the bottom right of the front-end of your website. When clicked, a support form is displayed

Support Button Text

The text to display on the support button. By default, it says “Click here for help”

My Tickets Page

The page which lists your customer’s tickets. When your customer logs in, they need to navigate to this page to view their tickets. Whatever page you choose, you need to add the shortcode ksd_my_tickets to it.


WordPress helpdesk plugin customer tickets list
WordPress helpdesk plugin customer tickets list

When your customer (Any user with role ksd_customer, the role assigned to users created during the KSD ticket-submission process) logs in, they’ll have a button added to their WordPress personal profile page that allows them to go to the ‘My tickets’ page.

If you use WooCommerce, by default, your customers are automatically redirected to the ‘My Account’ page. Their list of KSD tickets is displayed at the bottom of that page.

WooCommerce 'My Account' page
WooCommerce ‘My Account’ page

Enable customer registration

When enabled, customers need to first create an account and login to submit a ticket. When this happens,  if they were to return to your site to check ticket progress, all they’d have to do would be to login. Note that your responses to tickets would still be emailed to them

If you disable this, anyone can submit a ticket anonymously; they won’t need to login/create an account first – they’ll just need to provide their email address for ticket replies to be sent to them. A unique hash URL will be created for this ticket and sent to the customer when you reply. Your customer will need to access the ticket by going to that URL. Accessing the ticket without using that unique hash URL will result in a “This content is password protected. To view it please enter your password below” error.

WordPress helpdesk password protected post

Show categories

Under Tickets > Categories, you can define categories for your tickets. These can be your departments (sales, marketing,etc.), different functions or whatever you decide. If you enable this, your customer will be able to choose a category when creating a ticket

Show products

Under Tickets > Products, you can define the different products you provide. When enabled, your customer will choose what product they are referring to when creating a ticket. If you have Easy Digital Downloads or WooCommerce enabled, the products you create are automatically created as KSD products as well.

Show severity options

KSD ticket severities are low, medium, high and urgent. If you enable this, your customer will be able to choose the severity of the ticket when creating it.

Enable Google reCAPTCHA

Add a Google reCAPTCHA widget to your support form. This is a very effective way to prevent spam tickets from being created. On enabling it, you’ll need to provide a site key and secret key which you’ll get from here

Help Desk User Roles

Kanzu Support Desk gives you fine-grained control over who can view and make changes to your support tickets. There are 3 user roles:

  1. KSD Customer
  2. KSD Agent
  3. KSD Supervisor

KSD Customer

This is the default role assigned to anyone who submits a ticket. It is equivalent to the WordPress Subscriber role. This user can login to reply to tickets they’ve created and also make changes to their own profile.

KSD Agent

Users with this role manage support conversations with your customers. They can create and reply to tickets. They can also make other changes to tickets – reassign, change status and change severity. They cannot delete tickets.

KSD Supervisor

In a support environment, supervisors oversee the work of agents. They can do everything an agent can do and can also delete tickets.

Note that the WordPress administrator role has full access to all areas of the help desk

Changing a user’s role

To assign a different help desk role to a specific user, navigate to Users in your WordPress administrative dashboard and select the user. Specify the role in the roles menu and click “Change”.