---
title: "Documentation"
---

# Documentation

## Website Support for Perfex CRM

**Version:** 1.0.0  
**Author:** Cloudmill  
**Support:** [support@cloudmill.nl](mailto:support@cloudmill.nl)

 
---

 
## 1. Introduction

 **Website Support** is a powerful visual feedback tool designed for web agencies and developers. It allows your clients to submit feedback, bug reports, and change requests directly from their own website. With integrated screenshot capabilities, the module automatically creates organized support tickets in your Perfex CRM, complete with technical browser metadata.

  
## 2. Installation

  
### Core Module Installation

  1. Log in to your **Perfex CRM Admin Panel** and navigate to: `Setup → Modules`

 2. Click **Upload Module** and select: `website_support.zip`

 ``3. Click **Activate** to enable the module.

  
### Automated Server Configuration

  Upon activation, the module attempts to automatically add CSRF exclusions to your `application/config/config.php` file. This is required for the external widget to communicate with your CRM.

  If your configuration file is not writable, you must manually add the following lines to the the bottom of your `application/config/config.php` file. 

  `// website_support_csrf_exclude
$config['csrf_exclude_uris'][] = 'website_support/feedback_api/submit';
$config['csrf_exclude_uris'][] = 'website_support/feedback_api/widget(.*)';`   
---

 
## 3. Global Widget Settings

  Before creating tokens, configure the default look and feel of the widget via **Support > Website Support > Widget Settings**.

  
### Appearance

  **Accent Color:** Choose a color that matches your brand or the client's website.  
**Logo:** Upload a logo or provide a URL to display in the widget header.  
**Text Color:** Switch between Light (white) and Dark (black) for optimal contrast on your accent color.  
**Custom Text:** Override the default labels for the floating button (Trigger), header title, and introduction message.

  
### Button Styling & Position

  **Positioning:** Place the button in any corner (Top/Bottom, Left/Right) with pixel-perfect offsets.  
**Styling:** Customize the font size, border radius (e.g., "50px" for a pill shape), and padding.

  
### Default Ticket Behavior

  **Global Defaults:** Set a default department, priority, and assigned staff member. These will be used if not specified otherwise in a specific token.  
**Screenshots:** Enable or disable the screenshot feature globally. You can also choose if the "Include screenshot" checkbox should be checked by default.

  
---

  
## 4. Token Management

  Tokens act as the "bridge" between a client's website and your CRM. Each token is tied to a specific project and domain.

  
### Creating a Token

  1. Go to **Support > Website Support** and click **Create New Token**.  
2. **Project:** Select the project this feedback should be linked to.  
3. **Allowed Domain:** Enter the full URL of the client's site (e.g., `[https://clientwebsite.com`](https://clientwebsite.com`)). Requests from other domains will be blocked.  
4. **Default Contact:** (Optional) Select a contact person. If selected, the widget will pre-select this sender. If left empty, visitors must enter their name and email manually.  
5. **Require Login:** If enabled, the widget only appears if the visitor is logged into your Perfex Client Portal.

  
### The JS Snippet

  Once a token is saved, a unique **JS Snippet** is generated. Copy this code and paste it just before the closing `</body>` tag on the client's website.

  
---

  
## 5. CMS Plugins

  To make integration even easier, we provide dedicated plugins for popular CMS platforms.

  
### WordPress Plugin

  1. Install the **Cloudmill - Website Support** plugin on the client's WordPress site.  
2. Go to **Settings > Website Support**.  
3. Paste your **Perfex CRM URL** and the **API Token**.  
4. Use the **Visibility Controls** to show the widget only to specific User Roles (e.g., 'Administrator' or 'Editor'), Users or on specific environments (Frontend vs. Backend).

  
### Joomla Plugin

  1. Install the **plg_system_websitesupport** extension via the Joomla System Dashboard.  
2. Enable the plugin and paste your **Perfex CRM URL** and the **API Token**.  
3. Set the **Access Level** or use the plugin settings to restrict the widget to specific User Groups or Users.

  
---

  
## 6. Using the Widget

  When a visitor clicks the feedback button on the client's site:

  1. **Subject & Message:** The user describes the issue.  
2. **Screenshot**: Include Screenshots in your Ticket  
3. **Technical Meta:** The widget automatically collects the User Agent, Resolution, Viewport size, and current URL.

  
### Processing Feedback in Perfex

  New submissions appear as standard tickets in your CRM.

  **Attachments:** Screenshots are automatically added to the ticket.  
**Browser Info Tab:** A dedicated tab appears in the Ticket View showing all technical metadata, helping your developers reproduce bugs faster without asking the client for their browser version.

  
---

  
## 7. Use Case Examples

  
### Scenario A: Bug Reporting during Development

  Link a token to an internal "Development" project. Give your client the WordPress plugin and restrict visibility to 'Administrators'. The client can navigate the site and "snag" bugs as they find them. Each report becomes a ticket assigned to your lead developer.

  
### Scenario B: Support for Live Websites

  Create a token for a live project with **Require Login** disabled. Place the snippet on the client's "Contact" page. Visitors can now send visual feedback about broken links or styling issues, which are routed to your "Support" department.

  
### Scenario C: Managed Maintenance

  Use the **Default Staff** setting in the token configuration to ensure that all feedback from a specific high-priority client is automatically assigned to their dedicated Account Manager.


[Lees meer...](https://www.cloudmill.nl/documentation/website-support-for-perfex-crm.md)

## Secure Messages for Perfex CRM

**Version:** 1.0.0  
**Author:** Cloudmill  
**Support:** [support@cloudmill.nl](mailto:support@cloudmill.nl)

 
---

 
## 1. Introduction

 **Secure Message**is a high-security extension for Perfex CRM that allows you to safely share sensitive information such as passwords, login credentials, API keys, or private notes.

 Unlike traditional messaging systems, this module uses **Zero-Knowledge AES-256 encryption**. All encryption happens **directly in the user's browser**, which means the server never receives or stores the original plaintext message.

 Only an encrypted version of the message is stored in the database, ensuring that sensitive data remains protected at all times.

 This approach significantly reduces the risk of data leaks or unauthorized access.

 
---

 
## 2. Installation

 Follow these steps to install the module in Perfex CRM.

 
### Step 1 – Download

 Download the module ZIP file from CodeCanyon.

 
### Step 2 – Upload the Module

 Log in to your **Perfex CRM Admin Panel** and navigate to: `Setup → Modules
`

 Click **Upload Module** and select: `secure_messages.zip
`

 
### Step 3 – Activate the Module

 After uploading, click **Activate** to enable the module.

 
### Step 4 – Configure Permissions

 Navigate to: `Setup → Staff → Permissions
`

 Enable the **Secure Messages** permission for the staff members who should be allowed to create and manage secure messages.

 
---

 
## 3. Data Destruction & Security

 The module is designed to ensure that sensitive information does **not remain stored longer than necessary**.

 Two independent mechanisms ensure automatic data removal.

 
### Burn-After-Reading

 When the **Burn-After-Reading** option is enabled:

 
1. The recipient opens the secure message.
2. The message is decrypted locally in the browser.
3. Once the message is opened, the encrypted record is **immediately deleted from the database**.

 This ensures that the message can **only be viewed once**.

 
---

 
### Automated Expiration via Cronjob

 Messages that are not configured for burn-after-reading are automatically removed using the **Perfex CRM Cronjob system**.

 The system performs the following actions:

 
1. The module stores an **expiration timestamp** when the message is created.
2. The **Perfex Cronjob runs**.
3. During each Cronjob execution, the module scans the database for expired messages.
4. Any message whose expiration time has passed is **permanently deleted** from the database.

 
### Cronjob Requirement

 Your **Perfex CRM Cronjob must be configured correctly** on the server. This ensures that expired secure messages are removed automatically and the database remains clean.

 
---

 
## 4. How the Encryption Works

 The module follows a **Zero-Knowledge security model**, meaning the server never has access to the decryption key.

 The process works as follows:

 
### Step 1 – Client-Side Encryption

 When a user creates a secure message, JavaScript encrypts the message using **AES-256 encryption** directly in the browser.

 
### Step 2 – Server Storage

 Only the **encrypted message blob** is sent to the server and stored in the database.

 The **decryption key is never stored on the server**.

 
### Step 3 – Secure Link

 The decryption key is embedded in the **URL fragment**, for example:

 
```
https://example.com/secure-message/abc123#decryptionkey
```

 Everything after the `#` symbol is **never transmitted to the server** and only exists in the recipient's browser.

 
### Step 4 – Decryption

 When the recipient opens the link:

 
1. The browser extracts the key from the URL fragment.
2. The encrypted message is fetched from the server.
3. The browser decrypts the message locally.

 
### Step 5 – Cleanup

 When the message is read or when it expires, the encrypted data is **permanently removed from the database**.

 
---

 
## 5. Configuration

 You can configure the module defaults via: `Secure Messages → Settings
`

 Available configuration options include:

 
### Default Expiration

 Set the default lifetime for messages.

 Available options:

 
- 1 day
- 3 days
- 7 days
- 30 days
- Never expire

 
### Default Self-Destruction

 Define the default behavior for new messages:

 
- **Burn After Reading**
- **Time-based Expiration**

 
### Cronjob Integration

 No additional configuration is required.

 The module automatically hooks into the **Perfex CRM Cronjob system** using the `after_cron_run` action to perform cleanup tasks.

 
---

 
## 6. Changelog

 
### Version 1.0.0 – March 2026

 Initial release.

 Features include:

 
- Client-side **AES-256 encryption**
- **Zero-Knowledge architecture**
- **Burn-after-reading** secure messages
- **Automatic Cronjob cleanup** for expired messages
- Support for **20+ languages**, including:

 
- Brazilian Portuguese
- Bulgarian
- Canadian French
- Catalan
- Chinese
- Czech
- Dutch
- English
- Finnish
- French
- German
- Greek
- Indonesia
- Italian
- Japanese
- Norwegian
- Persian
- Polish
- Portuguese
- Romanian
- Russian
- Slovak
- Spanish
- Swedish
- Turkish
- Ukrainian
- Vietnamese

 
---

 
## 7. Support

 If you encounter any issues or need help with installation, configuration, or usage, please contact:

 **[support@cloudmill.nl](mailto:support@cloudmill.nl)**


[Lees meer...](https://www.cloudmill.nl/documentation/secure-messages-for-perfex-crm.md)

## Memos for Perfex CRM

**Version:** 1.0.0  
**Author:** Cloudmill  
**Support:** [support@cloudmill.nl](mailto:support@cloudmill.nl)
---

 
## 1. Introduction

 The Memo Manager is a lightweight, fast, and searchable module seamlessly integrated with Perfex CRM. It allows staff members to quickly capture ideas, meeting notes, AI Prompts and code snippets, while organizing and sharing them effectively within the team. 

 
---

 
## 2. Installation

 Follow these steps to install the module in Perfex CRM.

 
### Step 1 – Download

 Download the module ZIP file from CodeCanyon.

 
### Step 2 – Upload the Module

 Log in to your **Perfex CRM Admin Panel** and navigate to: `Setup → Modules`

 Click **Upload Module** and select: `memos.zip`

 
### Step 3 – Activate the Module

 After uploading, click **Activate** to enable the module.

 
### Step 4 – Configure Permissions

 Navigate to: `Setup → Staff → Permissions`

 Enable the **Secure Messages** permission for the staff members who should be allowed to create and manage memos.

 
---

 
## 3. Features

 **Quick-Composer:** Capture memos instantly using the fast editor on the main page.

 **Hashtag Organization:** Use #hashtags in your text to automatically categorize and filter memos.

 **Customer Linking:** Link memos to specific customers to build a chronological log directly on the client profile.

 **Pin Function:** Pin important memos to the top so priorities always stay in view.

 **Attachments:** Add files and images to your memos.

 **Code Snippets:** Support for code blocks with syntax highlighting (e.g., PHP, JS, SQL, HTML).

 **Emoji Reactions:** Team members can react to memos using various emojis.

 
## 4. Usage

 
### Creating a New Memo

 Use the "New Memo" text area at the top of the page. You can type your text, add attachments, or select a customer to link the memo. Click Save to publish the memo.

 
### Organizing with Hashtags

 By simply typing # followed by a word (e.g., #meeting), that word is saved as a tag. You can click these tags in the sidebar to instantly see all related memos.

 
### Visibility

 When creating a memo, you can choose between:

 
- **Private:** Visible only to you.
- **Public:** Visible to all staff members with the appropriate permissions.

 
## 5. Settings

 Administrators can adjust global settings via Memos > Memo Manager Settings:

 **Default Visibility:** Set whether new memos are Private or Public by default.

 **File Size:** Determine the maximum size for attachments.

 **Retention Policy:** Set how many days memos should be kept before automatic deletion (set to 0 to disable).

 
## 6. Changelog

 
### Version 1.0.0 – March 2026

 Initial release.

 Features include:

 
- Quick-Composer
- Hashtag Organization
- Customer Linking
- Visibility Management
- Pin Function
- Attachments
- Code Snippets
- Emoji Reactions
- Live Search
- Retention Policy
- Support for **20+ languages**, including:   
- Brazilian Portuguese
- Bulgarian
- Canadian French
- Catalan
- Chinese
- Czech
- Dutch
- English
- Finnish
- French
- German
- Greek
- Indonesia
- Italian
- Japanese
- Norwegian
- Persian
- Polish
- Portuguese
- Romanian
- Russian
- Slovak
- Spanish
- Swedish
- Turkish
- Ukrainian
- Vietnamese

 
## 7. Known Issues

 **Emojis appearing as ????**  
If emoji reactions or emojis in text are not displayed correctly (appearing as question marks), it is because your Perfex installation's database settings do not support 4-byte characters.

 **Solution: (*Always create a full backup of your database and files before making changes!)***  
Open the file public_html/application/config/app-config.php.

 Locate the following lines:  
define('APP_DB_CHARSET', 'utf8');  
define('APP_DB_COLLATION', 'utf8_general_ci');

 Change them to:  
define('APP_DB_CHARSET', 'utf8mb4');  
define('APP_DB_COLLATION', 'utf8mb4_unicode_ci');  
  
Save the file. New memos and reactions will now display emojis correctly.


[Lees meer...](https://www.cloudmill.nl/documentation/memos-for-perfex-crm.md)

