IT / Administrator
Roles covered: System Administrator · IT Manager · Super Admin · Platform Configurator
Primary modules: Settings · Staff · Roles & Permissions · Custom Fields · API · Webhooks · Workflow Automation · 2FA · Utilities · Theme · Import/Export
Who this guide is for
| Role | What they do in CRMConnect |
|---|---|
| System Administrator | Full platform configuration, user management, security |
| IT Manager | API/Webhook integrations, automations, data import/export |
| Super Admin | Full access, role and permission configuration, activity auditing |
| Platform Configurator | Custom fields, themes, menus, business-specific settings |
IT/Admin responsibility map
USERS & ACCESS PLATFORM CONFIGURATION
────────────── ──────────────────────
Staff Management General Settings (all categories)
Roles & Permissions Company Branding (logo, colours, CSS)
Two-Factor Authentication Email / SMTP
Custom Fields Billing Config (invoice series)
Contact Permissions Localization (language, date, currency)
INTEGRATIONS & AUTOMATIONS MONITORING & AUDIT
────────────────────────── ──────────────────
API Management Activity Log
Webhooks Ticket Pipe Log
Workflow Automation Email Queue
Zapier / Make Webhook Debug Log
External CRM Sync
DATA & UTILITIES SECURITY
──────────────── ────────
Excel Import 2FA enforcement
Media Files Seat limit management
Bulk PDF Export Admin protection rules
Tag Management Password policies
Database / Backup
System Administrator routine
On initial setup (one-time)
1. Company details /admin/settings (tab: General)
2. Logo + favicon /admin/settings → upload logo
3. SMTP email /admin/settings (tab: Email) → test
4. Invoice series /admin/billing/config
5. VAT rates /admin/taxes
6. Currencies + exchange /admin/currencies
7. Payment methods /admin/paymentmodes
8. Custom roles /admin/roles
9. Departments /admin/departments
10. Staff users /admin/staff
11. 2FA for admins /admin/authenticator_2fa
12. Custom fields /admin/custom_fields
13. Core automations /admin/workflow_automation
14. Webhooks /admin/webhooks
15. API integration /admin/api/api_management
Daily / Weekly (Monitoring)
- Activity Log
/admin/utilities/activity_log— who did what in the platform - Email Queue
/admin/utilities→ Email Queue — blocked or errored emails - Ticket Pipe Log
/admin/utilities/pipe_log— email import errors - Webhook Logs
/admin/webhooks→ Logs per webhook — failed requests - API Usage
/admin/api/api_management— API usage per token
General Settings
Where: /admin/settings
Settings are organised in tabs. Here is what you configure in each:
Tab: General
| Setting | Description |
|---|---|
| Company name | Appears on all documents and emails |
| Logo (light mode) | PNG/JPG — shown in admin header and on PDF documents |
| Logo (dark mode) | Version for dark theme |
| Favicon | Browser tab icon |
| Signature | Stamp/signature image on documents |
| PDF logo width | Logo width on PDF invoices |
| Physical address | Company address on documents |
Tab: Email
| Setting | Description |
|---|---|
email_protocol |
smtp (recommended) / crmconnect (default server) |
smtp_host |
SMTP server (e.g. smtp.gmail.com, mail.company.com) |
smtp_port |
Port: 587 (TLS), 465 (SSL), 25 (plain) |
smtp_email |
Sending address (From) |
smtp_username |
SMTP authentication username |
smtp_password |
Password (stored encrypted) |
smtp_encryption |
tls / ssl / none |
| Email header/footer | Custom HTML for all emails |
| Email signature | Automatic signature on emails |
SMTP Test: Send Test Email button after saving — verify emails arrive before activating the platform.
CRMConnect default server (fallback if you have no own SMTP):
- Host:
45.87.122.101:2525 - From:
[email protected]
Tab: Localization
| Setting | Description |
|---|---|
| Default language | Admin interface language |
| Date format | DD/MM/YYYY or MM/DD/YYYY |
| Thousands separator | . or , |
| Decimal separator | , or . |
| Timezone | Critical for correct timestamps |
Tab: Clients (Client Portal)
Configure what the client sees and can do in their own portal:
- Visible tabs on the client profile
- Default contact permissions (what contacts can see)
- Document visibility (invoices, proposals, contracts)
Tab: Cronjob
Configure the cron URL and check the last execution. The cron is essential for:
- Recurring invoice generation
- WooCommerce synchronisation
- Email queue processing
- Contract expiry notifications
- Marketing Automation
Server cron job configuration:
* * * * * wget -q -O /dev/null "https://company.com/cron/index"
Or with curl:* * * * * curl -s "https://company.com/cron/index" > /dev/null
Tab: Security / E-Sign
- Electronic signature configuration (for contracts and documents)
- Authentication settings
Staff Management
Where: /admin/staff
Adding a new user
- Add Staff → fill in:
- Email (unique in the system — is the username)
- First name, Last name
- Role (from the configured roles list)
- Departments (can be in multiple)
- Temporary password
- Tick Send welcome email (with password setup link)
- Save
Key fields from `tblstaff` (IT perspective)
| Field | Notes |
|---|---|
email |
Username and notifications address (unique) |
active |
1 = can access CRM; 0 = blocked |
admin |
1 = full access without permission checks |
role |
ID of the assigned role |
last_login |
Last login timestamp |
last_ip |
IP from last login |
last_password_change |
Date password was changed |
two_factor_auth_enabled |
1 = 2FA enabled for the user |
new_pass_key |
Password reset token (expires) |
Deactivation vs. deletion
| Action | When | Effects |
|---|---|---|
Deactivate (active = 0) |
Employee on temporary leave or suspicious | Cannot log in, data remains |
| Delete | Employee who has left permanently | All data (tickets, tasks, leads) reallocated to another selected staff member |
Important: On deletion, the system forces selection of another staff member to take over all records — no deletion without reallocation.
Licensing limits (Seat Management)
The number of active users is limited by licence:
MEMBERS_INCLUDED— seats included in the base licenceextra_seats— additionally purchased seats
If you try to activate more staff than the licence allows → error. Deactivate an inactive user or purchase additional seats.
Administrator protection
The system prevents:
- Deleting the last active administrator
- Self-revoking admin rights (if you are the only admin)
- Blocking your own admin account
Roles and Permissions
Where: /admin/roles
Access hierarchy
Super Admin (admin = 1)
→ Full access to everything, permissions not checked
Staff with Role
→ Inherit role permissions
→ Individual override via staff_permissions (if configured)
Client Contact
→ Separate permissions (what they can see in portal)
→ Configured per contact or as global default
Permission structure per module
Each module supports combinations of:
| Permission | Description |
|---|---|
view |
Sees all records (everyone's) |
view_own |
Sees only their own records |
create |
Can create new records |
edit |
Can edit records |
delete |
Can delete records |
Example "Sales Agent" role:
Leads: view_own + create + edit
Proposals: view + create + edit
Invoices: view_own
Clients: view + create
Settings: — (no access)
Reports: view
Creating a custom role
/admin/roles→ Add Role- Name the role (e.g. "Warehouse Operator", "Accountant", "Sales Manager")
- Tick permissions per module
- Save → role appears in dropdown when adding staff
Individual permission override
If one employee needs different permissions from their role:
- From the staff record → Permissions tab
- Set a specific override — takes priority over the general role
Client Contact Permissions (Portal)
Where: /admin/settings → Clients tab → Default Contact Permissions
Configure what a contact can see in the portal by default:
- Invoices
- Sales Orders
- Proposals
- Contracts
- Projects
- Tickets
- Files
You can set different permissions per individual contact from the contact record.
Two-Factor Authentication (2FA)
Where: /admin/authenticator_2fa/userlist
Supported method
TOTP (Time-based One-Time Password) — compatible with:
- Google Authenticator
- Microsoft Authenticator
- Authy
- Any standard TOTP app
Activation flow per user
User activates themselves:
- From personal profile → Security section → Enable 2FA
- Scan QR code with authentication app
- Enter the 6-digit code for verification
- 2FA activated →
two_factor_auth_enabled = 1
Admin resets 2FA:
/admin/authenticator_2fa/userlist— list with status per user- Identify the user who lost access (changed phone, etc.)
- Reset →
enrollment_request = 1→ user can re-enrol
View 2FA status
List of users with:
- User (staff or client contact)
- Type: Admin / Customer
- Status: Enrolled / Not enrolled / Reset requested
- Actions: Reset, Revoke
Security recommendation
Enforce 2FA for all admins and staff with financial access (Finance, Legal). You can communicate the requirement via internal Announcement.
Custom Fields
Where: /admin/custom_fields
Entities that support custom fields
| Entity | Typical use |
|---|---|
| Leads | Industry, employee count, estimated budget, detailed source |
| Clients | VAT number, trade register number, ERP client code, credit category |
| Contacts | Detailed function, LinkedIn, communication preferences |
| Invoices | Customer order number, internal reference, project |
| Sales Orders | Quote reference, special terms |
| Proposals | Acceptance deadline, proposal version |
| Contracts | File number, legal basis, confidentiality level |
| Expenses | Receipt number, cost centre, approved by |
| Tickets | Equipment serial number, software version, SLA priority |
| Tasks | Sales order hours, difficulty level, external reference |
| Projects | Internal project number, client manager, project type |
| Items | Catalogue number, origin, warranty term |
| Staff | Badge number, ID number, grade |
| Vendors | ERP supplier code, category, internal rating |
Available field types
| Type | Use |
|---|---|
text |
Short text — code, number, reference |
number |
Numeric value |
textarea |
Long text — description, notes |
select |
Dropdown — predefined values |
checkbox |
Yes/No |
date_picker |
Date selector |
date_picker_time |
Date + time selector |
email |
Email format validation |
Field configuration
| Option | Description |
|---|---|
required |
Mandatory field on creation |
show_on_pdf |
Appears on PDF documents (invoices, contracts) |
show_on_table |
Appears as a column in the module list |
show_on_client_portal |
Visible/editable by client in portal |
disallow_client_to_edit |
Visible but read-only for client |
only_admin |
Visible only to admins (hidden from regular staff) |
bs_column |
Column width in form (Bootstrap grid: 3/4/6/12) |
API Management
Where: /admin/api/api_management
Creating an API token
- Add Token → fill in:
- Name (e.g. "Zapier Integration", "Mobile App", "ERP Sync")
- Associated staff (the token acts on behalf of that staff member)
- Token generated → copy it — shown only once
- The API client sends header:
authtoken: {token}with every request
Entities accessible via API
The REST API covers all main modules:
CRM: Leads, Clients, Contacts, Opportunities, Contracts
Sales: Invoices, Sales Orders, Proposals, Payments, Items
Operations: Projects, Tasks, Tickets, Expenses, Milestones
HR: Staff, Departments, Roles
Finance: Currencies, Taxes, Expense Categories
Knowledge: Knowledge Base, Surveys, Goals
Warehouse: Warehouses, Commodities
Marketing: Marketing Campaigns
Misc: Custom Fields, Files, Tags
Base URL: https://company.com/api/
Auth header: authtoken: {token}
Monitoring API usage
The API dashboard shows:
- Number of requests per token
- Top accessed routes
- Daily/weekly/monthly statistics
- Errors and failed requests
Rate Limiting
Rate limiting is applied per token to prevent abuse.
Webhooks
Where: /admin/webhooks
Webhook configuration
| Field | Notes |
|---|---|
name |
Internal webhook name |
request_url |
Destination URL (HTTPS recommended) |
request_method |
POST (most common), GET, PUT, DELETE, PATCH |
request_format |
JSON / XML / URL-encoded |
webhook_for |
The module/entity that triggers |
webhook_action |
Specific events (create, update, delete, status change) |
request_header |
Custom headers (e.g. Authorization: Bearer token) |
request_body |
Custom fields in payload |
active |
1 = active / 0 = disabled |
debug_mode |
1 = logs every request and response in detail |
Debugging a webhook
When a webhook isn't working:
- Enable
debug_mode = 1on the webhook - Send a test event
- From the webhook list → View Logs → see the request sent and response received
- Identify the problem (wrong URL, authentication, payload format)
- Fix and disable debug mode
Clearing logs
Debug logs can grow quickly — clear them periodically or after resolving the issue.
Workflow Automation — admin perspective
Where: /admin/workflow_automation
What the admin configures
| Element | Description |
|---|---|
| Workflow definitions | Create/edit/delete automations |
| Enable/Disable | Activate or stop a workflow without deletion |
| Private workflows | Workflows visible only to their creator |
| Task templates | Templates for tasks automatically created by workflows |
| Execution logs | Run history — what worked, what failed |
| Categories | Organising workflows by category |
Entities supported as triggers (50+ types)
Leads, Clients, Opportunities, Proposals, Sales Orders, Contracts, Invoices, Payments, Tasks, Projects, Tickets, Expenses, Purchase Orders, Receipt Notes, Manufacturing Orders, Staff, Recruitment, etc.
Monitoring execution
From tbwa_flows_logs and tbwa_action_logs:
- Which workflows executed
- Result of each action (success/error)
- Execution timestamp
- Entity that triggered execution
Automatic task templates
Configure templates for tasks created by automations:
- Task title (with merge fields)
- Assigned person
- Followers
- Start date, due date (relative to trigger)
- Description
- Priority
Email Queue — queue management
Where: /admin/utilities → Email Queue (or directly from Settings → Email)
What you find in the email queue
All platform emails (notifications, invoices, proposals, ticket notifications) pass through the queue before sending. Blocked emails remain in the queue.
| Action | When |
|---|---|
| Process All | Force sending all pending emails |
| Send Single | Send a specific email immediately |
| Retry Failed | Resend errored emails |
| Delete | Delete emails you no longer want sent |
Common causes for blocked emails
| Problem | Cause | Solution |
|---|---|---|
| Authentication failed | Wrong SMTP password | Reconfigure SMTP in Settings → Email |
| Connection refused | Wrong host or port | Verify with email provider |
| SSL/TLS error | Wrong encryption | Switch from ssl to tls or vice versa |
| Rate limit exceeded | Too many emails per hour | Configure throttling or upgrade email plan |
Audit & User Action Monitoring
CRMConnect has two parallel systems for recording actions, plus specialised logs per channel.
1. Global Activity Log
Where: /admin/utilities/activity_log
Records chronologically any action across the entire system called via log_activity(). Fields stored in tblactivity_log:
| Field | Content |
|---|---|
description |
Action text (e.g. Invoice Created #INV-0042 for ACME Ltd) |
date |
Exact timestamp YYYY-MM-DD HH:MM:SS |
staffid |
Full name of the user; [CRON] if automatic |
Recorded actors: Logged-in staff · portal clients (with contact name) · automatic cron ([CRON])
Recorded actions (examples):
| Module | Example descriptions |
|---|---|
| Clients | New Client Added · Client Deleted: ACME Ltd · Client Updated |
| Invoices | Invoice Created #INV-0042 · Invoice Sent · Payment Recorded |
| Leads | New Lead Added · Lead Status Changed · Lead Converted to Client |
| Staff | Staff Member Added · Staff Member Deleted: John Doe · Password Changed |
| Settings | Settings Updated (any change, without field detail) |
| Roles | Role Created · Role Updated · Role Deleted |
| Proposals | Proposal Accepted by Client · Proposal Declined |
| Contracts | Contract Signed Digitally |
| Automations | Workflow Automation Executed: [Name] |
Filtering:
- By date — isolate activity from a period (incident, audit)
- By user — everything a specific staff member did
Export: CSV for external audit or compliance archiving.
Clear: Permanently deletes the entire log — irreversible. Always export before clearing.
2. Entity Activity Log (per record)
Where: "Activity" tab from any record's detail view
Each lead, client, invoice, project, ticket has its own change timeline visible directly in the interface. Stored in tblgeneral_activity_log.
Key fields:
| Field | Content |
|---|---|
full_name |
The user who acted |
description |
What happened to that record |
additional_data |
Old → new values (for modified fields) |
date |
Exact timestamp |
Use case: When a client claims something changed on their account, open the record → Activity tab → see exactly who, when and what was modified.
3. Specialised logs
| Log | URL | What it records |
|---|---|---|
| Email Pipe Log | /admin/utilities/pipe_log |
Emails received via pipe: sender, subject, status, exact error |
| WhatsApp Activity | /admin/whatsapp/activity_log |
Messages, campaigns, bot triggers, template sends |
| API Usage Stats | /admin/api/usage_stats |
API calls per endpoint, per token, per day |
| Innoship Audit | /admin/innoship/audit |
Each AWB request: request sent, response, errors |
Audit scenarios — how to investigate
"Who deleted record X?"
/admin/utilities/activity_log→ filter approximate date- Search
Deleted+ record name in description field staffidcolumn = responsible user
"What did user Y do yesterday?"
- Activity Log → filter yesterday + user name
- Complete list of their actions in chronological order
"Who changed a lead's status?"
- Open the lead → Activity tab
- The
Lead Status Changedline shows the user + exact timestamp
"Settings were modified — who and when?"
- Activity Log → search
Settings Updated - Note: the log records that settings changed but not the exact field — also check by comparing current config with backup
"Activity outside working hours?"
- Export log for a period (CSV) → filter in Excel by hour in the
datecolumn - Actions at unusual hours (e.g. 3:00 AM) are a warning signal
"Why was an unexpected automatic email sent?"
- Activity Log → search
Workflow Automation Executedor[CRON] - Identify the responsible automation →
/admin/workflow_automation→ check the trigger
Compliance recommendations
| Action | Frequency |
|---|---|
| Export Activity Log | Monthly — archive the CSV |
| Check users with admin rights | Quarterly — /admin/staff → "Admin" column |
| Review roles and permissions | Every staff departure/hire |
| Clear old log | Annually — after archiving |
| Check active API tokens | Semi-annually — /admin/api/api_management → delete expired or unused tokens |
Theme & Branding — visual customisation
Where: /admin/settings → General (logo, favicon) + /admin/theme_style (CSS)
Logo and images
| Element | Where | Format |
|---|---|---|
| Logo (light) | Settings → General | PNG/JPG, transparent recommended |
| Logo (dark mode) | Settings → General | PNG/JPG, white/light version |
| Favicon | Settings → General | ICO or PNG 32×32 |
| PDF Signature/Stamp | Settings → General | Transparent PNG |
Custom CSS
You can add CSS that overrides the platform's default style:
| Field | Application |
|---|---|
theme_style_custom_admin_area |
Admin interface only |
theme_style_custom_clients_area |
Client portal only |
theme_style_custom_clients_and_admin_area |
Both |
Custom CSS example:
/* Change accent colour from purple to blue */
:root { --accent: #0066cc; }
/* Larger logo in sidebar */
.brand { padding: 20px; }
.brand img { max-width: 180px; }
Data Import (Excel Import)
Where: /admin/excelimport/import_data
What you can import
| Entity | Mapped fields |
|---|---|
| Clients | Name, VAT number, address, contact, email, phone |
| Leads | Name, email, phone, company, source, status |
| Staff | Email, first name, last name, department, role |
| Items | Code, name, price, VAT, group |
| Commodities (Warehouse) | Code, name, initial stock, purchase price |
| Expenses | Date, amount, category, payment method |
Import process
1. Download Excel template for the desired entity
↓
2. Fill in data in the template
↓
3. Upload Excel file to CRM
↓
4. Map Excel columns → CRM fields
↓
5. Dry run / Simulation (preview errors without actual import)
↓
6. Confirm actual import
↓
7. Results report: imported / errors / duplicates
Recommendation: Always do a dry run before the actual import — identify format errors without compromising existing data.
Media Files Manager
Where: /admin/utilities/media
File manager based on elFinder — visual browser for the /uploads/ directory:
- Browse folder structure
- Upload new files
- Create/delete folders
- Preview images
- Download individual files
- Delete unused files
Useful for: cleaning old files, checking uploads, managing PDF templates.
Tag Management
Where: /admin/settings → Misc tab → Tags
Available operations
| Operation | Description |
|---|---|
| Create tag | Add new tags at global level |
| Merge tags | Combine two tags into one (e.g. "client" + "clients" → "clients") |
| Compress | Remove duplicates and unused tags |
| Delete | Delete a tag from all entities where it appears |
Tags apply to: Leads, Clients, Contracts, Tasks, Projects and others.
Ticket Pipe Log Management
Where: /admin/utilities/pipe_log
Logs all emails processed via pipe.php:
- Accepted emails (ticket created or reply added)
- Rejected emails (spam filter, loop detection, rate limit)
- Processing errors
Useful for debugging when clients report "the email didn't create the ticket".
Logged fields:
- Date and time
- Sender address
- Email subject
- Action (ticket creation / reply addition / blocked)
- Reason for blocking (if applicable)
Clear log: Clear Pipe Log button — permanently deletes (archive if needed).
Complete initial setup checklist
Recommended order for a new instance:
Phase 1 — Basic configuration
- Company details + Logo + Favicon
/admin/settings - SMTP Email — test send
/admin/settings→ Email - Timezone + Date format + Currency
/admin/settings→ Localization - VAT rates
/admin/taxes - Payment methods (bank accounts)
/admin/paymentmodes - Invoice series
/admin/billing/config - Currencies (if multi-currency)
/admin/currencies
Phase 2 — Users and access
- Custom roles
/admin/roles - Departments
/admin/departments - Staff users
/admin/staff - 2FA for admins
/admin/authenticator_2fa - Client contact permissions
/admin/settings→ Clients
Phase 3 — Data customisation
- Custom fields per entity
/admin/custom_fields - Contract templates
/admin/contracts/templates - Contract types
/admin/contracts/types - Lead statuses + pipelines
/admin/leads/statuses - Ticket statuses + priorities
/admin/tickets/statuses - Predefined ticket replies
/admin/tickets/predefined_replies
Phase 4 — Integrations
- API tokens for external integrations
/admin/api/api_management - Webhooks for external notifications
/admin/webhooks - WooCommerce/Shopify store config
/admin/woocommerce/stores - Innoship API credentials
/admin/innoship/settings - SAGA/WinMentor connection
/admin/sagaor/admin/winmentor
Phase 5 — Automation
- Workflow Automation — essential flows
/admin/workflow_automation - Cron job configured on server
- Custom email templates
- Spam filters
/admin/spam_filters
Phase 6 — Security and audit
- 2FA enabled for all admins
- Activity Log verified (logging is working)
- Backup plan defined
- Complete end-to-end test on all main flows
REST API — Complete Architecture
Where: /admin/api/api_management
Base URL: https://company.com/api/
API Reference: crmconnect_api_docs.md
CRMConnect exposes a complete REST API built on CodeIgniter with the REST_Controller extension. It covers 101 controllers organised by module.
Authentication:
| Method | Token header | Expires | Use |
|---|---|---|---|
| API Token (standard) | authtoken: {token} |
~10 years | Server-to-server integrations |
| JWT (Flutter/Mobile) | Authorization: Bearer {jwt} |
7 days | Mobile applications |
Supported response formats:
| Format | Query param | Use |
|---|---|---|
JSON |
default | All modern integrations |
XML |
?format=xml |
Legacy systems, EDI-adjacent |
CSV |
?format=csv |
Tabular data export |
JSONP |
?format=jsonp |
Browser cross-origin |
HTML |
?format=html |
Debug/preview |
Available endpoints — complete map
CRM & Sales:
GET/POST/PUT/DELETE /api/leads
GET/POST/PUT/DELETE /api/opportunities
GET/POST/PUT/DELETE /api/clients
GET/POST/PUT/DELETE /api/contacts
GET/POST/PUT/DELETE /api/contracts
GET/POST/PUT/DELETE /api/proposals
GET/POST/PUT/DELETE /api/estimates
GET/POST/PUT/DELETE /api/invoices
GET/POST/PUT/DELETE /api/payments
GET/POST/PUT/DELETE /api/expenses
GET/POST/PUT/DELETE /api/projects
GET/POST/PUT/DELETE /api/tasks
GET/POST/PUT/DELETE /api/tickets
GET/POST/PUT/DELETE /api/milestones
GET/POST/PUT/DELETE /api/goals
GET/POST/PUT/DELETE /api/surveys
GET/POST/PUT/DELETE /api/marketing_campaigns
WMS — Warehouse Management System:
GET/POST/PUT/DELETE /api/wms/warehouses
GET/POST/PUT/DELETE /api/wms/commodities
GET/POST/PUT/DELETE /api/wms/goods_receipt
GET/POST/PUT/DELETE /api/wms/goods_delivery
GET/POST/PUT/DELETE /api/wms/stocks
GET/POST/PUT/DELETE /api/wms/transfers
Purchase Management:
GET/POST/PUT/DELETE /api/purchase/vendors
GET/POST/PUT/DELETE /api/purchase/purchase_orders
GET/POST/PUT/DELETE /api/purchase/purchase_requests
GET/POST/PUT/DELETE /api/purchase/vendor_invoices
OmniSales:
GET/POST/PUT/DELETE /api/omni_sales/orders
GET/POST/PUT/DELETE /api/omni_sales/channels
GET/POST/PUT/DELETE /api/omni_sales/returns
Config & Reference Data:
GET /api/departments
GET /api/roles
GET /api/staff
GET /api/taxes
GET /api/currencies
GET /api/countries
GET /api/payment_modes
GET /api/expense_categories
GET /api/custom_fields
GET /api/items
Pagination
GET /api/leads?nr_page=1&per_page=50
Standard response
{
"status": true,
"data": [...],
"total_pages": 10,
"current_page": 1
}
Mobile Applications — Android & iOS
CRMConnect has native mobile apps for Android and iOS, available in the Google Play Store and Apple App Store.
The mobile apps are 1:1 with the web platform — any module, feature and data available in the web interface is also accessible from the mobile app, adapted for mobile screens. Users work with the same data in real time, regardless of whether they access CRMConnect from a browser or from their phone.
Deployment: Cloud (AWS) and On-Premise
Application architecture
| Component | Technology |
|---|---|
| Backend | PHP (CodeIgniter) |
| Database | MySQL / MariaDB |
| Web Server | Apache or Nginx |
| Containerisation | Docker + Kubernetes |
| Cron jobs | Kubernetes CronJob |
| Cache | Redis / Memcached |
Cloud — AWS with Kubernetes (CRMConnect standard infrastructure)
CRMConnect runs on Amazon Web Services using Kubernetes as the container orchestration platform. Each client receives their own dedicated instance — complete single-tenant architecture.
Single-tenant model — why it matters:
| Aspect | Single-Tenant (CRMConnect) | Multi-Tenant |
|---|---|---|
| Data isolation | Complete — separate instance | Partial — data in the same DB |
| Customisation | Per client, no impact on others | Limited by common schema |
| Performance | Dedicated, predictable | Shared, variable |
| Security | Complete segregation at pod level | Logical isolation in DB |
| Updates | Controlled per client | Simultaneous for all |
On-Premise (Self-hosted)
CRMConnect can also be installed on-premise, on the client's own infrastructure — physical server, VMware/Hyper-V or private cloud.
Minimum requirements:
- PHP 7.4+ (8.1+ recommended)
- MySQL 5.7+ / MariaDB 10.3+
- Apache 2.4+ or Nginx
- PHP extensions:
mysqli,curl,mbstring,gd,zip,json,openssl - SSL/HTTPS — mandatory for mobile apps and API
- Cron job configured on server
Open Platform
CRMConnect as a platform, not a fixed product
CRMConnect is an open platform — not a rigid product with fixed features. The modular architecture allows extending and adapting the platform to any business need without compromising stability or updateability.
Core principles:
| Principle | Description |
|---|---|
| Open API | Any external system can integrate CRMConnect via REST API — ERP, WMS, e-commerce, BI, RPA |
| Module system | Any new functionality is built as an independent module without modifying the core |
| Shared modules | Any custom module developed can be activated on any other client's instances |
| Dev freedom | Clients can work with their own dev team or own development partners |
| No vendor lock-in | Integrates with any ERP, WMS, e-commerce platform or third-party app |
EDI & AS2 — EDIconnect
CRMConnect offers native EDI capability via EDIconnect — an integrated module that makes CRMConnect not just an EDI data consumer, but an EDI service provider for its clients.
EDI (Electronic Data Interchange) = automatic exchange of commercial documents (orders, confirmations, invoices, delivery notes, manifests) between trading partners' IT systems, without human intervention.
AS2 (Applicability Statement 2) = the secure transport protocol for EDI over HTTPS, with mutual authentication and digital signature (EDIINT/RFC 4130 standard). AS2 is the preferred protocol in retail, automotive, logistics and global supply chains.
Where: /admin/edi
EDIconnect manages the exchange of commercial documents with business partners using EDI standards.
Supported EDI formats:
| Standard | Typical use | Industries |
|---|---|---|
| ANSI X12 | USA/Canada supply chain | Retail, Automotive, Healthcare |
| EDIFACT | International | Logistics, Shipping, Europe |
| UBL 2.1 | European eInvoicing | Public administration, EU |
| JSON/XML | Modern API integrations | Tech, SaaS, Fintech |
External ERP integrations
CRMConnect connects bidirectionally with multiple Romanian and international ERPs:
- Merlin ERP — 23-step bidirectional sync (items, partners, documents, transactions)
- Triton ERP (SoftOne) — 15-step sync (references, partners, transactions); imported invoices are locked in CRM
- MerchantPro — bidirectional e-commerce sync (products, clients, orders, stock, prices)
- SmartCRM — REST API sync
- SAGA & WinMentor — accounting integrations (see Finance Department)
- ParsePilot — OCR for scanning and extracting data from received invoices (PDF, image)
International ERP & Accounting integrations
CRMConnect integrates with major international ERP and accounting platforms via REST API, Zapier, Make, Boomi, MuleSoft or custom middleware:
- SAP (S/4HANA, Business One, ECC) — via OData / Service Layer / RFC; invoices, clients, payments, stock
- QuickBooks Online — via Zapier or direct OAuth 2.0 API; invoices, clients, payments, expenses
- Oracle NetSuite — via SuiteScript, Celigo, or direct REST API; sales orders, invoices, stock
- Xero — via Zapier or direct OAuth 2.0 API; invoices, credit notes, clients, payments
Advanced security checklist
Infrastructure
- HTTPS/SSL on all endpoints (mandatory for mobile apps + API)
- Firewall — restrict MySQL port access to web server only
- Fail2ban or similar — block IPs after repeated login failures
- WAF (Web Application Firewall) — recommended in cloud (AWS WAF, Cloudflare)
- Automated backup DB +
/uploads/with at least 30 days off-site retention
Application
- Mandatory 2FA for all admins and users with financial access
- API tokens rotated periodically (at least annually)
- Webhook URLs — use HTTPS with secret header validation
- SMTP credentials — rotated and never in plain text in repository
- Activity Log — monitored weekly for suspicious actions
- Seat management — accounts deactivated immediately when employee leaves
Quick reference
Modules: General Settings · Custom Fields · GDPR · Two-Factor Authentication · My Profile · Utilities · Miscellaneous · Team Password Manager · API Management · Webhooks · Workflow Automation · Excel Import · Staff · Roles & Permissions · Departments
Workflows: Workflow Automation · Webhooks
Test every integration (SMTP, API tokens, webhooks) immediately after configuration using the platform's built-in test functions — a broken integration discovered at 9 AM on Monday when invoices aren't sending is always more urgent than it needed to be.
Offboarding is as important as onboarding. Staff account deactivation, role permission removal, and API/portal credential revocation should be executed on the last day as a single checklist — not discovered weeks later during an access audit.