User Interface
Reference
- Activity
- Addresses
- Calls
- Chat
- Custom Field Groups
- Custom Fields
- Customers
- Deals
- Deliveries
- Email Marketing
- Files
- Invoices
- Labels
- Lead Sources
- Leads
- Lunches
- Meetings
- Notes
- Orders
- Organisations
- People
- Permissions
- Pipelines
- Product Attributes
- Product Categories
- Products
- Purchase Orders
- Quotes
- Roles
- SMS Marketing
- Tasks
- Tax Rates
- Teams
- Users
Configuration
After publishing the package assets, a configuration file will be located at config/laravel-crm.php. Below is a reference for all available settings.
CRM Owner
The primary owner of the CRM. This must be set to the email address of a registered user so you can access the CRM initially.
'crm_owner' => env('LARAVEL_CRM_OWNER', ''),
| Environment Variable | Default | Description |
|---|---|---|
LARAVEL_CRM_OWNER |
'' |
Email address of the CRM owner |
Teams Support
Enable multi-tenant support using Laravel Jetstream or Spark teams. Each team acts as a separate account with its own users, contacts, leads, etc.
'teams' => env('LARAVEL_CRM_TEAMS', false),
| Environment Variable | Default | Description |
|---|---|---|
LARAVEL_CRM_TEAMS |
false |
Enable teams/multi-tenant support |
Important: Only enable this if you are using Jetstream or Spark teams. Enabling without the feature installed will break your installation. This requires Spatie Permissions v5+ with teams support enabled. See the Spatie docs for setup.
Note: This is unrelated to the user teams feature within the CRM itself, which is simply a way of grouping users.
Default Settings
These defaults are also used each time a user creates a new team when team support is enabled.
'currency' => env('LARAVEL_CRM_CURRENCY', 'USD'),
'country' => env('LARAVEL_CRM_COUNTRY', 'United States'),
'language' => env('LARAVEL_CRM_LANGUAGE', 'english'),
'timezone' => env('LARAVEL_CRM_TIMEZONE', 'UTC'),
'date_format' => env('LARAVEL_CRM_DATE_FORMAT', 'Y-m-d'),
'time_format' => env('LARAVEL_CRM_TIME_FORMAT', 'g:i A'),
'tax_name' => env('LARAVEL_CRM_TAX_NAME', 'Tax'),
'tax_rate' => env('LARAVEL_CRM_TAX_RATE', null),
| Environment Variable | Default | Description |
|---|---|---|
LARAVEL_CRM_CURRENCY |
USD |
Default currency code |
LARAVEL_CRM_COUNTRY |
United States |
Default country |
LARAVEL_CRM_LANGUAGE |
english |
Default language |
LARAVEL_CRM_TIMEZONE |
UTC |
Default timezone |
LARAVEL_CRM_DATE_FORMAT |
Y-m-d |
PHP date format string |
LARAVEL_CRM_TIME_FORMAT |
g:i A |
PHP time format string |
LARAVEL_CRM_TAX_NAME |
Tax |
Label for tax on quotes/invoices |
LARAVEL_CRM_TAX_RATE |
null |
Default tax rate percentage |
Route Subdomain
Serve the CRM on a subdomain, e.g. https://crm.yourdomain.com.
'route_subdomain' => env('LARAVEL_CRM_ROUTE_SUBDOMAIN', null),
| Environment Variable | Default | Description |
|---|---|---|
LARAVEL_CRM_ROUTE_SUBDOMAIN |
null |
Subdomain for CRM routes |
Route Prefix
Define the URL prefix for the CRM. Set to a subfolder like crm or leave blank to serve from the root.
'route_prefix' => env('LARAVEL_CRM_ROUTE_PREFIX', 'crm'),
| Environment Variable | Default | Description |
|---|---|---|
LARAVEL_CRM_ROUTE_PREFIX |
crm |
URL prefix (e.g. /crm) |
Tip: Use a subfolder prefix if you are installing the CRM into an existing Laravel project that already has its own routes and controllers.
Route Middleware
Add any custom middleware to the CRM routes.
'route_middleware' => [],
Pass an array of middleware class names or aliases to apply to all CRM routes.
Database Table Prefix
All CRM database tables are prefixed with this value.
'db_table_prefix' => env('LARAVEL_CRM_DB_TABLE_PREFIX', 'crm_'),
| Environment Variable | Default | Description |
|---|---|---|
LARAVEL_CRM_DB_TABLE_PREFIX |
crm_ |
Prefix for all CRM tables |
Tip: If installing into an existing project, keep the default
crm_prefix to avoid table name conflicts.
Database Field Encryption
Encrypt personal information in certain database fields as an added layer of privacy protection.
'encrypt_db_fields' => env('LARAVEL_CRM_ENCRYPT_DB_FIELDS', false),
| Environment Variable | Default | Description |
|---|---|---|
LARAVEL_CRM_ENCRYPT_DB_FIELDS |
false |
Enable encryption of sensitive fields |
User Interface
The CRM comes with a built-in user interface. Disable this if you want to build your own frontend.
'user_interface' => env('LARAVEL_CRM_USER_INTERFACE', true),
| Environment Variable | Default | Description |
|---|---|---|
LARAVEL_CRM_USER_INTERFACE |
true |
Enable the built-in UI |
Note: When disabled, routes using the CRM route prefix will not load, preventing users from accessing the default views.
Optional Modules
Enable or disable CRM modules based on your business needs. Remove a module from the array to disable it.
'modules' => [
'leads',
'deals',
'quotes',
'orders',
'invoices',
'deliveries',
'purchase-orders',
'teams',
'chat',
'email-marketing',
'sms-marketing',
],
| Module | Description |
|---|---|
leads |
Lead management and pipeline tracking |
deals |
Deal/opportunity tracking through pipeline stages |
quotes |
Quote generation with line items and PDF export |
orders |
Order management with fulfillment tracking |
invoices |
Invoice management with payment tracking and PDF export |
deliveries |
Delivery tracking for physical goods |
purchase-orders |
Purchase order management for suppliers |
teams |
User team grouping within the CRM |
chat |
Live chat with embeddable widget — see Chat |
email-marketing |
Email campaigns and templates — see Email Marketing |
sms-marketing |
SMS campaigns and templates — see SMS Marketing |
Tip: If you sell digital products or services, you can remove
deliveriessince it won't be relevant.
Update Notifications
Show or hide package update notifications for CRM users.
'update_notifications' => env('LARAVEL_CRM_UPDATE_NOTIFICATIONS', true),
| Environment Variable | Default | Description |
|---|---|---|
LARAVEL_CRM_UPDATE_NOTIFICATIONS |
true |
Show update notifications |
Models with Global
In multi-tenant mode, certain model tables can have rows marked as global (shared across all teams) using a global column.
'model_with_global' => [
'settings',
],
By default, only settings are global. Add other model names to share their data across teams.