+1 (408) 320-0380

What makes EspoCRM a highly customizable CRM?

EspoCRM offers 60+ customization and configuration options covering both simple admin-level adjustments and code-level changes that allow companies to adapt the system to fit their business processes, security requirements, data structures, integration needs, and user experience preferences.

Almost every CRM on the market describes itself as flexible and customizable. Most of them are, indeed, but there’s a limit to how far that customization goes. You can rename a field, adjust a pipeline stage, maybe even add a custom list view filter. All of that counts as customization, technically. Issues arise when processes don’t fit the default model. Some businesses need record types that don’t exist yet or forms that respond to what’s being entered. And that’s exactly when you find out whether a system is merely configurable or actually customizable.

Customization was our main goal during EspoCRM’s development. That’s why nearly all aspects of the system (how data is structured, how records are displayed, and who can see what) are configurable. Whether you’re planning to customize the system or just want to understand its capabilities, we’ll look at each configuration and customization option and explain how it can be used in practice.

A Detailed Overview of Customization Capabilities in EspoCRM

Section 1. Data Structure & Entity Management

The foundation of any customizable CRM is how well it lets you model your own data. EspoCRM’s Entity Manager is a no-code tool that lets admins reshape the data model through the system UI.

1. Custom Entities

Administration > Entity Manager

CRMs come with a fixed set of entities (Contacts, Accounts, Leads, Opportunities, Cases, etc.), which are universal and match the needs of most companies. Still, your business often tracks information that doesn’t fit any of those categories. Entity Manager lets administrators create new entity types from scratch. A custom entity gets its own database table, views, and default relationships. From the user’s perspective, it works just like any other built-in entity.

Creating a new entity starts with choosing a type: Base, Base Plus, Person, Company, or Event. All entity types have a pre-configured set of default fields and panels. After that, you decide whether records should have Stream (so people can leave notes and track changes) and set the entity’s basic properties: Name, Labels, Icon, and Color.

2. Built-in Entities

Administration > Entity Manager > {Entity Name} > Edit

Built-in entities have names, layouts, fields, and relationships that were configured to fit a generic CRM use case. Businesses may eventually want to disable entities they do not use, change their settings to fit their processes or terminology, or even reset those settings to default at some point.

EspoCRM lets you adjust built-in entities without touching code. One of the most common changes is renaming; you can change Singular and Plural Labels for any entity and they will appear across all menus, list and detail views, reports, and relationships.

Beyond that, entities can have Colors and Icons assigned for quicker visual navigation. You can set the Default Order Field and Direction for the list view and define which fields the system checks when users search by text in Text Filter Fields. If your team doesn’t use a particular entity, you can disable it here by ticking Disabled. There are also two checkboxes that control whether Stream (activity feed) and the Stars bookmarking feature are used for that entity; both can be turned off when they’re not needed. And that’s only part of what you can configure.

3. Custom & Built-in Fields

Administration > Entity Manager > {Entity Name} > Fields

Fields are where data is entered and stored. EspoCRM gives you a lot of control over how fields behave, not just what they’re called and what type of information is entered. The system supports 20+ field types for storing different kinds of data, including text, numbers, dates and times, addresses, selection lists, checkboxes, links to other records, files and attachments, and barcodes.

Fields (both custom and built-in) have a set of parameters that vary by field type such as Labels that are displayed in the interface, Required (the record can’t be saved while the field is empty), Read-only (users can’t edit the field in the UI), Read-only After Create (the field is locked once the record is created), a Default value for new records, and Audited (changes to the field are logged in the record’s Stream). There are also many other field-type-specific configuration options.

4. Built-in & Custom Relationships

Administration > Entity Manager > {Entity Name} > Relationships

All CRM data is interconnected, and Relationships are the feature that shows how records from different entities are linked. For instance, reviewing a Contact record reveals the connections between that customer and their related tasks, open deals, and recent cases in its panels. Without the right relationships and layouts, the staff ends up cross-referencing separate pages to find the data they need.

EspoCRM allows you to create and manage relationships between built-in and custom entity types. It supports One-to-Many, Many-to-One, Many-to-Many, One-to-One in both directions, and Children-to-Parent relationships. During setup, you name the link on each side and can enable the Audited option to log the creation, linking, and unlinking of related records in Stream. You can also add its relationship panel to the detail view.

5. Dynamic Logic

Administration > Entity Manager > {Entity Name} > Fields > {Field Name} > Dynamic Logic panel

Most CRM forms are static, so all fields are always visible, editable, and show the same options (if they are enum/multi-enum). That’s fine if every field is needed all the time, but in some processes, that is not the case. Some fields are only relevant in certain situations, while others should be required or optional based on specific conditions.

Dynamic Logic makes forms respond to the data being entered. For any field on any entity, you can create rules that control the field’s behavior based on conditions you define. These rules can make fields visible, required, read-only, invalid, and define which options are available for Enum, Multi-Enum, Array, and Checklist fields when the user fills in the form.

In practice, the feature can be used to make the Competitor field visible only when an Opportunity is marked as Closed Lost or make a Reason field required when a Case Status is set to Rejected. Dynamic Logic updates forms in real time as users fill them out and prevents mistakes that come from static forms.

6. Formula

Administration > Entity Manager > {Entity Name} > Formula

Some business rules can’t be enforced through Dynamic Logic in field settings alone. In these cases, you can use EspoCRM’s formula language to define more complex custom logic.

Formula scripts let you calculate values and assign them to fields, apply conditional logic, call built-in functions, and access attributes from the current record or related records. You can write a Before-Save Custom Script and an API Before-Save Script for each entity type.

The Before-Save Custom Script runs on the server every time a record is saved, before the data is written to the database. The API Before-Save Script runs only when a record is created or updated through an API request, which includes saves from the EspoCRM interface itself but not mass updates or imports. Admins typically use it to reject invalid data with an error message, check for duplicates, or block changes that users aren’t allowed to make.

7. Multiple Pipelines

Administration > Entity Manager > {Entity Name} > Edit > Pipelines

Administration > Pipelines

A single sales pipeline can be limiting for businesses that handle different kinds of sales. For example, standard sales, renewals, and partner deals often follow different stages and therefore require separate pipelines. Pipelines let you set up several distinct pipelines for the same entity type. The feature can be enabled at Administration > Entity Manager > {Entity Name} > Edit > Pipelines for Leads, Opportunities, and custom entities of Base, Base Plus, Company, and Person types. Custom entities must have a Status field specified. It is selected from the available Enum fields at Administration > Entity Manager > {Entity Name} > Edit > Status Field.

After the feature is enabled for an entity, pipelines can be created and managed at Administration > Pipelines. Each pipeline has its own stages that map to values of the Status field. You can create as many pipelines as your sales process requires with their own stage sequences. They can be made available to all users or assigned to specific teams, so different teams can work with different pipelines for the same entity without seeing each other’s stages.

When adding a record to an entity that supports multiple pipelines, users have to select a pipeline in the required Pipeline field. The selected pipeline determines the available stages for the record, but users can reassign the record to a different pipeline if needed. In the Kanban view, the columns correspond to the stages of the currently selected pipeline. To switch to a different pipeline, users can select it from the dropdown.

8. Duplicate Check

Administration > Entity Manager > {Entity Name} > Edit > Duplicate check on update

Duplicate records are a frequent problem for businesses that manage customer data in a CRM. EspoCRM performs a duplicate check when users create new records. If a potential duplicate is detected, the system shows the matching records, and the user can either create the new record anyway or cancel and open the existing one.

EspoCRM can also perform duplicate checks every time a record is updated. It helps detect duplicates that arise when your team changes record information. The feature is configured at Administration > Entity Manager > {Entity Name} > Edit > Duplicate check on update. To determine which fields the system uses for comparison, use the Duplicate check fields setting.

Section 2. Configuring Views & Panels

After you’ve configured your data structure, you can use Layout Manager to determine how that data is presented. The system allows you to configure layouts for different entities, including list views, detail views, side and bottom panels, Kanban views, and more.

9. List & Detail Views

Administration > Layout Manager > {Entity Name} > List / Detail

The two main views for working with records are Detail view, where you view and edit a record, and List view, where multiple records are displayed at once. Both are configured in Layout Manager using a drag-and-drop interface.

In the Detail and Detail (Small) layouts, you arrange fields into panels and rows. Panels can be named, colored (even based on Dynamic Logic conditions), hidden by default, or grouped into tabs. Fields within panels can be arranged in one to four columns per row. If a field needs more space, you can make it span the entire row.

The List layout configuration starts with selecting the columns (fields). You can then set their width and alignment, decide which columns are non-sortable, and choose which field links to the record’s detail view, usually Name.

Administrators can also create Custom List Layouts for specific relationship panels, so each panel can display its own set of columns.

10. Side Panels & Bottom Panels

Administration > Layout Manager > {Entity Name} > Side Panels / Bottom Panels

When users open a record, they usually need more information than just the fields belonging to that entity. They want to see related documents, campaigns, emails, tasks, calls, and other relevant information. Detail views display this related data in two additional areas besides the main form: Side Panels on the right and Bottom Panels below the form.

Side Panels are smaller panels positioned alongside the main form that display supporting information about assigned users, teams, past and current activities, and tasks. These panels can be reordered, colored, and shown or hidden conditionally. The Side Panel Fields layout also lets you choose which fields, such as Assigned User or Teams, appear in the default side panel.

A Bottom Panel is a mini list of related records, e.g., the Contacts linked to an Account or the Documents attached to an Opportunity. You can configure bottom panels just like side panels: select which ones appear, arrange their order, set colors, and add conditions making them visible. It’s also possible to collapse them or group them into tabs to keep the detail view uncluttered.

Lastly, with the Advanced Pack extension, you can add Report Panels as side or bottom panels to display live record-related report results right on a record’s detail view.

11. Search Filters

Administration > Layout Manager > {Entity Name} > Search Filters

Every list view has a search bar at the top. The Search Filters layout controls which fields are available there as filter options. Each built-in entity has its own default filter field list that covers the record details users are most likely to search by, such as Assigned User, Teams, Status, Email, Address, the dates a record was created or modified, and similar fields. Custom entities have no default filter fields; they can be added separately. You can add any existing or custom field that your team uses to search and segment records, and also set the order they appear in.

12. Mass Update

Administration > Layout Manager > {Entity Name} > Mass Update

Mass Update is the action that gives a user the ability to select multiple records through a list view and update specific fields across all of them at once. In this layout, you define the field list that is displayed in the Mass Update Form. Use it only for the fields that need bulk editing to prevent accidental bulk overwrites.

13. Convert Lead

Administration > Layout Manager > Account / Contact / Opportunity > Convert Lead

The Convert Lead layout defines the fields available on the lead conversion form for creating a Contact, Account, and/or Opportunity. It determines what information users can view and enter during conversion. Selecting the appropriate fields ensures that existing Lead data (e.g., Email or Address) is transferred to the corresponding fields in the new records without manual re-entry. Fields that aren’t filled in automatically can be completed manually.

14. Kanban View

Administration > Layout Manager > {Entity Name} > Kanban

Kanban is a card-based view of records organized into columns, where each column represents a value of a specific field, usually a status or stage field. Users can drag cards between columns to update the record’s status or stage without opening it. The view can be enabled for any entity at Administration > Entity Manager > {Entity Name} > Edit > select an Enum type field as Status Field > tick the Kanban View checkbox. In Layout Manager, you choose which fields are displayed in cards, how they are aligned, whether they act as links, and whether they use large font sizes or muted colors.

15. Layout Sets for Teams & Portals

Administration > Layout Sets

By default, all users see the same layouts for a given entity. Layout Sets let you define alternative layouts for selected entity types and assign them to specific users, teams or portals. The underlying records and data model remain the same, but users see different fields, panels, and list columns depending on their layout set. This way, you can adapt views and panels to match what different teams or departments need to work with.

Section 3. User Interface & Branding Customizations

An intuitively organized interface helps users find what they need faster. Companies can configure EspoCRM’s interface elements to reflect their processes and branding.

16. UI Themes

System: Administration > User Interface > General tab > Theme

User: Dropdown menu > Preferences > User Interface

The system doesn’t have to retain its default appearance or look identical for every user. User Interface settings let you change the UI Theme and adjust the Navbar position. Themes change the color palette; light and dark variants are also available. The default theme is set by the system admin, but individual users can override it in their own Preferences unless the admin has disabled this option.

17. Company Logo & Application Name

Administration > User Interface > General tab > Company Logo / Application Name

After installation, the system shows EspoCRM’s default logo at the top of the navigation bar and on the login screen. The admin settings let you upload your own Company Logo and change the Application Name.

18. Navigation Menu

System: Administration > User Interface > Navbar tab

User: Dropdown menu > Preferences > User Interface tab > Custom Tab List

The left-side or top navigation bar displays entity tabs that let users switch between modules. By default, the system displays a set of commonly used entities in the menu, but not all of them are relevant to every team. Admins can configure the Navbar Tab List at the system level: add and remove tabs for unused entities, reorder them so the most-used modules are shown first, group related modules into dropdown menus, and disable and enable tab icons, scope and tab colors. In Preferences, users can customize the navbar by adding their own Custom Tab List.

19. Quick Create List

Administration > User Interface > Navbar tab > Quick Create List

The + button in the top bar is a shortcut for creating records quickly from any page. Quick Create List controls which entities are available in that menu. Out of the box, it includes a predefined set of entities, and administrators can add or remove any of them. The entities available to each user depend on the creation permissions defined in their Roles. If a user cannot create records for a particular entity, it won’t appear in their Quick Create List.

20. Custom Labels & Translations

Administration > Label Manager

Many businesses don’t use standard CRM terminology internally. The same entity can be called Opportunity, Deal, Project, or Quote depending on the industry and team preferences. In EspoCRM’s interface, entity names, field labels, status options, menu items, and other labels can be edited. Label Manager lets admins override any labels to adapt the system’s translations or use custom, business-specific terminology.

21. Dashboard & Dashlets

System: Administration > User Interface > Dashboard tab

Administration > Dashboard Templates

User: Dropdown menu > Preferences > User Interface tab

or Home > Dropdown menu > Edit Dashboard / Add Dashlet

Dashboard is the home page made up of configurable widgets Dashlets. The dashboard’s usefulness depends on its content, which is configurable at both the system and user levels.

Admin-configured dashboards define which dashlets are shown, how they’re arranged, and how many tabs there are on the home page by default. Administrators can manage these settings at Administration > User Interface > Dashboard tab. In addition, Dashboard Templates, available at Administration > Dashboard Templates, can be used to set custom dashboard layouts for teams or for individual users to reflect their roles.

Users can adjust their own dashboard on their home page (Home > Dropdown menu > Edit Dashboard / Add Dashlet) and through Preferences (Dropdown menu > Preferences > User Interface tab). The dashlet library includes Calendar, Stream, Activities (for a combined view of custom events, calls, tasks, and meetings), Records Lists (for a filtered live list of any entity), Reports, an Iframe (for pulling in external tools or pages), Memos (for notes), and others. Each dashlet has its own title and settings for display options and how often it refreshes. Users can also lock their dashboard to preserve its current layout and prevent accidental modifications.

Section 4. Administration & System Configuration

System configuration settings define application-wide behavior and defaults across EspoCRM.

22. Language & Locale Settings

System: Administration > Settings > Locale tab

User: Dropdown menu > Preferences > Locale tab

Language and locale settings ensure that the interface, dates, numbers, and addresses are displayed correctly both for employees working in the same country and for a distributed team spread across multiple regions. The settings are configurable globally and per user. The admin-configured system defaults apply to all users if no user-specific setting is chosen in Preferences. You can specify the default language for all UI labels, the system-wide timezone, date and time formats, the first day of the week, fiscal year start, thousand separator, decimal mark, and address format. Address input gets two additional configuration options: autocomplete lists for cities and states, which speed up data entry.

23. Notification & Reminder Settings

System: Administration > Notifications

User: Dropdown menu > Preferences > Notifications tab

Notification settings that aren’t customized create so much noise that people either start ignoring alerts or fail to flag important assignments and they get missed.

From the admin side, you decide which entities generate in-app notifications when a record is assigned and can also turn on a notification counter in the page title. Email notifications for Stream are controlled separately and allow you to set which entities send them, which event types are included (mentions in posts, status changes, received emails), whether they go to internal users, whether they go to portal users, and whether there’s a delay before sending them, allowing you to review and edit the message if needed.

On the user side, each person manages notifications in Preferences. Email notifications about Stream posts, mentions in posts, and status updates can be turned off. Users can choose which assignment types (Meetings, Calls, Tasks, Emails, Process User Tasks) generate in-app notifications and whether they receive in-app notifications about reactions, including the option to be notified about reactions for non-followed records. It’s possible to group related notifications and enable notification sounds to stay informed about new activity and review related updates together.

24. B2B & B2C Settings

Administration > Settings > General tab > B2C Mode

The default data model is built around a B2B approach, where businesses sell products or services to other businesses. Contact records are linked to Accounts, so all activities and emails related to those Contacts are associated with their Account automatically. It allows you to open an Account record and view the full history of interactions with all Contacts who work for that company.

The B2C Mode setting adjusts EspoCRM for businesses selling to individual customers. The Contact (customer) record holds their complete interaction history (emails, calls, meetings, and tasks). Lead conversion no longer offers the option to create an Account. Once admins remove the Account tab from the navigation menu, delete Account fields from layouts, and disable Account access in Roles, the system becomes focused entirely on individual customers.

25. Stream Settings

Administration > Settings > General tab > Stream Section

Stream is the activity feed attached to each record that tracks user posts, record updates, emails, logged calls, tasks, and meetings. To track changes to specific fields or relationships in Stream, you can enable the Audited checkbox at Administration > Entity Manager > {Entity Name} > Fields/Relationships > {Field/Relationship Name} > Audited.

Stream settings let you configure Reactions available to users and email body visibility in Stream notes. Reactions are the response options available on Stream posts; the default is Like, but the list can be extended. For email body visibility, admins choose which entity types show the full email body inline when an email is logged to a record. If you manage customer service requests through the CRM, seeing the complete email thread in a Case’s Stream record without opening a separate view is useful.

26. Follow Settings

Dropdown menu > Preferences > General tab

Following a record in EspoCRM means receiving Stream notifications for posts, status changes, emails, and other updates associated with it. Manually following every relevant record is time-consuming. Follow settings in Preferences give each user control over which records they follow automatically.

The settings go from specific to broad:

  • Auto-follow after posting in Stream: if you’ve engaged with a certain record, you may want to know what happens next.
  • Auto-follow when added as a collaborator: when a team member adds you to a record, you are automatically subscribed to all of its Stream updates.
  • Auto-follow created records of specific entity types: for example, you might want to auto-follow all Cases you created, even if they are assigned to other users.
  • Auto-follow created records: records you create automatically put you on the follower list.
  • Global Auto-Follow: subscribes the user to all records of selected entity types, not just the ones they created or were added to, but all of them. The setting is best used for managers or team leads who need visibility across all records of the entity.

27. Currency Settings

System: Administration > Currency

User: Dropdown menu > Preferences > Locale tab

EspoCRM supports multiple currencies across the system. The Default Currency is automatically preselected when creating new records, while the Base Currency is used to calculate exchange rates for other currencies. Both settings can use the same currency or different currencies.

Additional currencies can be added to the Currency List with their own exchange rates relative to the Base Currency; those rates can be updated as they change. In Preferences, each user can choose a personal Default Currency that will be preselected for new records.

28. Working Time Calendar

Administration > Working Time Calendars

When different users or teams work different hours, Working Time Calendars define when each of them is available. They let you specify a weekly schedule with working hours set per weekday, add exceptions for days with adjusted hours, and mark holidays and leave days. A Working Time Calendar can be assigned at the system level as the default or assigned to a specific team or user to reflect the cases when different parts of a business operate on different schedules.

Section 5. Access Control, Security & Identity

Different positions in a company have different responsibilities, and system access should match them. Next, we’ll describe how to manage employee accounts and teams, assign roles, and restrict access to sensitive business information.

29. Users

Administration > Users

Every person who uses the CRM needs a user account with access permissions and interface settings appropriate to their responsibilities. There are two types of internal users: Regular (who work within configured access controls) and Admin (who have unrestricted access to all records, settings, and features). It’s best to grant admin access only to users who need to manage the entire system.

User accounts store employees’ contact details: User Name, Type, Title, Email, Phone Number, and an Is Active checkbox that controls whether the user can log in. Unchecking it disables access without deleting the user account. More important configurations are related to which Teams the user belongs to, which Roles are assigned to them, and what their Default Team is.

When creating a user account, you can send an email with access info. Leaving the password empty lets the user set their own, which is more secure than sending a password by email.

30. Teams

Administration > Teams

Teams help you organize your employees and manage access to different records. They can be based on departments, regions, product lines, or any other grouping that works for your business. Every Team record consists of a group of users, where every member can have a designated position, such as Salesperson or Manager. It defines default Roles, Position List, Layout Set, and Working Time Calendar. The team’s Layout Set and Working Time Calendar apply to new users who have that team selected as their Default Team.

31. Roles

Administration > Roles

Roles control access at three levels: which records a user can interact with, which fields they can see and edit, and what system-wide actions they can perform.

Scope Level permissions define access to each entity. For every entity, you can allow or deny record creation and set an access level (all records, team records, own records, or none) for reading, editing, deleting, and viewing the Stream.

Field Level security provides the ability to configure permissions for specific fields. For any field on any entity, a Role can restrict Read access, Edit access, or both. When a user holds multiple Roles, field permissions merge using the most permissive setting across all applicable Roles. Still, field-level restrictions are not automatically lifted by another role that has no permissions configured for the same field. If one Role restricts field editing and another Role does not define any permissions for that field, the restriction remains in effect.

Permissions control whether users can assign records to other users, access group email accounts, export data, run mass updates, erase personal data, manage followers on records, send Stream messages to other users, and view the audit log.

32. Record Locking

Administration > Entity Manager > {Entity Name} > Edit > Lockable

Record Locking prevents users from making unintended changes or removing certain records. It is useful for protecting records that are considered final, such as closed won opportunities, closed cases, or other records, where accidental edits or removals usually cause problems.

The feature can be enabled for most built-in and custom entity types at Administration > Entity Manager > {Entity Name} > Edit > check the Lockable setting. By default, locking applies to all fields on the record. If there are specific fields that should remain editable even when a record is locked, admins can mark those fields as Not Lockable in the field settings at Administration > Entity Manager > {Entity Name} > Fields > {Field Name} > Not Lockable.

Records can be locked or unlocked from the dropdown menu in their detail view or in bulk from the list view using the Lock and Unlock options in the Actions menu. A locked record can’t be edited or removed until someone with the Lock Permission unlocks it. Admins can manage this permission through roles and restrict access to specific users.

33. Data Privacy & Personal Data

Administration > Entity Manager > {Entity Name} > Fields > {Field Name} > Is Personal Data

If your business is subject to data privacy regulations, such as the CCPA or GDPR, or simply needs a way to handle personal data erasure requests, EspoCRM has built-in tools for this. Admins can specify which fields contain personal data at Administration > Entity Manager > {Entity Name} > Fields > {Field Name} > Is Personal Data. By default, Name, Email, Phone, and Address are marked for Contacts and Leads, while Email is marked for Accounts. You can extend this list with other fields in these entities or mark personal data fields in custom entities of the Person type to match the personal information your business stores.

When a request comes in to view or erase someone’s personal data, users with the Data Privacy permission can open the relevant record, click View Personal Data in the dropdown menu next to the Edit button, and see all fields marked as personal data. There, individual field values can be erased if the user has edit access to the record.

34. Two-Factor Authentication

System: Administration > Authentication > 2-Factor Authentication

User: User Account > Security > Enable 2-Factor Authentication

Two-factor authentication adds one more verification step to the login process. The first step for users is providing the usual username and password. The second is a code that is generated by an authenticator app or delivered by email or SMS (requires a configured provider). Admins have to enable the feature globally and select allowed methods for regular and/or portal users, and after that users enable it for their own accounts. For app-based verification, employees can use Google Authenticator, Microsoft Authenticator, or any similar authentication app.

35. LDAP Authentication

Administration > Authentication > Authentication Method: LDAP > LDAP tab

LDAP authentication is for deployments where user identity is managed centrally in a corporate directory. Users authenticate directly against the corporate directory service (like Active Directory or OpenLDAP), so no separate EspoCRM credentials are needed.

Alongside authentication, the feature also allows the creation of new user accounts. When the Create User in EspoCRM setting is enabled, the system creates a new user record on the user’s first login and fills in their user fields (e.g., First Name, Last Name, Title, and Email Address) from directory attributes automatically. The new user can also be assigned to the predefined User Teams selected in the EspoCRM settings.

36. OpenID Connect

Administration > Authentication > Authentication Method: OIDC > OIDC tab

OpenID Connect is for companies that manage user identity centrally through an OIDC identity provider and want CRM authentication to go through it. After configuring your provider’s details and credentials, users can authenticate through Okta, Microsoft Entra ID, Auth0, or your preferred system without a separate EspoCRM password. It can also automate new user account creation, so the first time a user logs in via SSO, the system creates their account using the data from the identity provider.

37. Password Policies

Administration > Authentication > Passwords tab

Password settings are divided into Strength requirements and Recovery behavior. The Strength section is about what passwords are allowed to look like. You set the length for system-generated passwords, the minimum length for user passwords, the minimum number of letters and digits, and whether mixed case is required.

In the Recovery section, admin users define how and whether password resets work. Password recovery can be disabled system-wide or specifically for admins or all internal users. A separate setting ensures that the password recovery form does not indicate whether a user account with a specified email address exists in the system. It prevents exposing account information via the recovery form to unauthorized users who try to find valid accounts.

Section 6. Email, Templates & Communication

When communication happens directly in EspoCRM, staying in touch with leads and customers takes less effort as you do not have to juggle multiple apps to answer an email. The system offers various tools for managing email communication and automating routine messaging tasks.

38. Email Account Configuration

User: Emails > Dropdown menu > Personal Email Accounts

Team: Administration > Group Email Accounts

System: Administration > Outbound Emails

There are two types of email accounts in EspoCRM: Group Email Accounts and Personal Email Accounts. For system-generated emails, you can set the System Email Address in Administration > Outbound Emails.

Personal Email Accounts are configured per user and connect an individual’s mailbox to the CRM. IMAP fetches their incoming emails, SMTP lets them send from the system’s interface using their own address. The monitored folders, fetch-since date, and destination folder for incoming emails are all configurable.

Group Email Accounts are shared mailboxes for support, sales, or marketing. They are also configured with IMAP for receiving and SMTP for sending messages. Incoming emails are fetched automatically and linked to related Contacts, Accounts, Cases, and Leads based on the email address.

Outbound Emails define the address the CRM uses for all automated notifications, password resets, workflow-triggered messages, and any other system-generated communication. One Group Email Account is designated as the system default, and its address is set for outbound emails.

39. Email Templates

Administration > Email Templates

Email Templates are reusable, pre-written emails that can be selected when composing an email manually, used in workflow and BPM automation, or sent as a part of mass email campaigns. Templates can be written in plain text or HTML, include attachments, and be organized into categories.

The subject line and body both accept placeholders, which are standard field names wrapped in curly braces (like {Person.name}) that pull in CRM data upon sending. The editor has a panel that lists every available placeholder for the entity to prevent mistakes. The system also includes native support for opt-out links to add unsubscribe options to your messages.

40. Email Filters

System: Administration > Email Filters

User: Emails > Dropdown menu > Filters

When too many messages pile up in one inbox, you need a way to sort them to keep your inbox organized and easy to navigate. Email Filters can automate that.

Admins can set system-wide filters by ticking the Is Global checkbox to ignore unwanted emails across all email accounts, which can help block spam. Users can create filters for their entire inbox or their Personal Email Accounts, with options to ignore messages, move them to folders, mark them as read, or skip notifications. It’s also possible to configure Group Email Account filters to ignore unwanted emails or put certain messages into a group folder, which keeps a shared mailbox organized. Each of these filters specifies to/from email addresses, what words or phrases the subject and body contain, and an action to take: ignore the email or put it in a specific folder (where available).

41. Email Folders

User: Emails > Dropdown menu > Folders

Team: Administration > Group Email Folders

Email Filters do the sorting automatically, and Email Folders are where sorted emails are stored. Personal folders are created and managed by users for their own inbox. They are visible only to them and can be organized however they like. Group email folders are created by admins for specified teams. Incoming emails received through a Group Email Account can be directed to a group email folder automatically by filters, which helps support teams keep their shared inbox organized by category.

42. PDF Templates

Administration > PDF Templates

PDF Templates are used to generate printable documents from record data for quotes, invoices, proposals, service reports, meeting summaries, or any other document a business needs to produce from CRM records. A template is built in the visual HTML editor using placeholders. When a template for an entity exists, users generate a PDF for one or more records using the Print to PDF action. The generated files can be downloaded or sent as email attachments.

43. Template Manager

Administration > Template Manager

System emails come with standard content that may not fit every organization’s tone, language, or branding. Template Manager allows admins to edit or rewrite the subject and body of assignment notifications, meeting invitations and reminders, call reminders, and password reset emails. These messages can be edited and branded by adding company logos, a personal greeting, or specific field values. The editing process is the same as for email or PDF templates, so placeholders and formatting tools are available.

Section 7. Automation

The system offers two different automation engines, Workflows and BPM, which are available in Advanced Pack, along with a formula scripting layer (see Section 1) for custom logic. These tools can automate tasks, notifications, record updates, approvals, and business processes across the CRM.

44. Workflows

Administration > Workflows

Many actions performed with CRM records are repetitive and based on predefined rules. A common example is case assignment: when a new case is created, it must be assigned to the right team. Workflows can automate actions like this.

Workflows are automation rules that start with Triggers and run specified Actions if the Conditions are met. Workflows can be triggered in several ways: after a record is created, after a record is updated, after a record is created or updated, on a schedule, manually by a user, when called by another workflow rule (Sequential), or when a specified object signal is broadcast in the system (Signal).

Conditions narrow the trigger down and specify when the actions should run. They’re set using a point-and-click condition builder or written as a formula for more complex logic.

Actions are what happens when the rule is triggered and conditions are met, such as sending an email using a template, creating a record, creating a related record, updating the target record, updating related records, applying an assignment rule, executing a formula script, sending an HTTP request to an external system, triggering another workflow, or starting a BPM process.

45. Business Process Management

Administration > Flowcharts / Processes

Workflow rules are great for single-event automation. But when a process involves multiple steps, several people, different possible outcomes, and delays between actions, BPM provides the structure and tools needed to automate it. The feature is based on the BPMN 2.0 standard. Admins design a process as a diagram in the Flowcharts section, and every time the process is triggered, a new Process record is created that moves through the flowchart and can be monitored in real time.

The flowchart is built using three types of elements:

  • Events mark where the process starts, where it waits until something happens, and where it ends.
  • Gateways are the decision points: exclusive gateways route to one path; inclusive gateways evaluate all outgoing paths and let one or more of them run; parallel gateways run multiple paths at once and wait for all of them to finish; event-based gateways hold the flow until a specific signal arrives or a timer fires.
  • Activities are the operational steps: updating records, sending emails, running formula scripts, calling external APIs, and creating User Tasks.

Section 8. Reports & Analytics

Reports provide managers and users with a way to measure progress, track performance, and spot business trends. Next, we’ll cover how to set up different report types in EspoCRM.

46. List Reports

Reports > + Create Report > List Report

List Reports generate a table of records that match a defined set of filter conditions. They look like a filtered, configured version of a list view: rows are individual records and columns are fields you’ve selected. The difference from a standard list view is that a report is a saved, shareable configuration that can be run on demand, sent by email on a schedule, used as a dashlet, as a filter in list views, or to populate Target Lists for Email Campaigns.

While creating a List Report, you choose which columns appear, set their widths and alignment, mark which column links to the record, and configure sorting. Filters narrow down which records are included. Some filters are fixed and always apply, others can be Runtime Filters that users can adjust when running the report. The list report can also be downloaded in CSV or XLSX format or printed as a PDF document.

47. Grid Reports

Reports > + Create Report > Grid Report

When you need totals, averages, or counts broken down by group, you create a Grid Report. It groups records by one or two fields and applies aggregation functions to produce summary figures for each group. To build one, you have to select one or two fields to group by, such as a salesperson, region, status, or a date field grouped by day, week, month, quarter, or year, and then apply aggregate functions: COUNT, SUM, MIN, MAX, or AVG. Filters and Runtime Filters work the same way as in List Reports. Results can be visualized as a chart, exported as CSV or XLSX files, or saved as a PDF using Print to PDF.

48. Joint Grid Reports

Reports > Dropdown menu > Create Joint Grid Report

A Joint Grid Report combines several existing Grid Reports into a single report. It can bring together results from different entity types in a single report, using a common grouping such as month. For instance, a monthly management report might show leads generated, opportunities created and won, and revenue in a single table where each row is a month.

49. Internal Reports

Reports > Dropdown menu > Create Internal Report

Internal Reports are a separate category from the List, Grid, and Joint Grid reports built through the report builder. These pre-built reports use their own calculation logic and require both Sales Pack and Advanced Pack. They cover sales and purchase metrics: Customer Balances, Customer Aging, Supplier Balances, Sales Tax Summary, Purchase Tax Summary, Sales List by Tax Code, Sales Revenue, Sales by Customer, Sales by Product, Sales by Product Category, Purchase Expenditure, Purchases by Product, and Ledger Summary. Once saved, they appear alongside regular reports and can be shared with specific teams.

50. Scheduled Report Sending

Reports > Edit / Create View of a certain report > Email Sending panel

Reports like a weekly pipeline summary or a monthly revenue breakdown are regularly shared with managers, clients, and team members. Email Sending lets you automatically send report results to the specified internal or portal users on a recurring schedule. The setting is on the report record itself, you only have to specify the recipients and the schedule, and the system sends the report results by email at the configured time.

51. Populating Target Lists with Reports

Target Lists > {Target List Name} > Sync with Reports panel

Syncing Target Lists with Reports connects a List Report to a Target List used in email campaigns. The system automatically adds records that match the report’s criteria to the Target List. An optional Unlink setting removes records from the Target List when they no longer match the report’s criteria. This keeps the list up-to-date, which is useful for campaigns where the audience changes over time.

52. Report Panels

Administration > Report Panels

Report Panels embed report results directly into a record’s detail view, as either a side or bottom panel. An admin creates the panel, selects which entity the panel appears on, picks the report to display, and chooses the position. The report panel displays results related to the record being viewed and works with both Grid and List reports.

53. Report Filters

Administration > Report Filters

Report Filters turn complex report criteria into a one-click filter in an entity’s list view. For example, users can remain in the Contacts list view, select a custom report filter from the filter dropdown, and view the contacts with no activity in the past 90 days. You can also restrict report filter access to specific teams.

Section 9. Customer Portals

Customer portal features provide a customizable interface for clients, vendors, partners, or other external users with controlled access to CRM data.

54. Portal

Administration > Portals

Portal is a separate interface that allows external users to securely perform specific actions and access specific data in your CRM. Portals are set up by administrators and accessed via their own URL. Each portal can have its own users, access roles, dashboard, tab list, branding, theme, locale settings, and layout set. For example, you can run one portal for customers and another for partners, each configured for its audience.

55. Portal Role

Administration > Portal Roles

Portal Roles define what external users can do. The structure is the same as internal roles, but with access scopes that reflect an external user’s perspective. A portal user can be limited to their own records, to records linked to their Account, or to records linked to their Contact. Roles can be applied at the portal level (affecting all users of that portal) or at the individual portal user level to grant additional permissions.

56. Portal User

Administration > Portal Users

A Portal User is a login account for an external user. It can be linked to a Contact and one or more Accounts. These links determine which records portal users can access when the contact or account access level is set in their Portal Roles. Portal users log in with their own credentials and see only what their Portal Roles permit.

Section 10. API & Integrations

API capabilities allow EspoCRM to connect with external applications to support automation, synchronization, reporting, and communication across multiple systems.

57. API Users

Administration > API Users

For safer integrations, it’s best practice to create dedicated API Users and assign them custom Roles with controlled permissions. This limits the integration’s access to only the specific data and actions necessary for its operation. If the integration is compromised, you can easily revoke or replace that one API User account. EspoCRM supports two authentication methods for API Users: API Key for simpler setups and HMAC for stronger security.

58. Lead Capture (Web-2-Lead)

Administration > Lead Capture

The feature creates web forms for capturing information about website visitors and saves that information as new leads in the CRM. Lead Capture records generate a specific entry point URL that a website form can POST to and, optionally, an embeddable web form. The form can be displayed on a standalone page or embedded in an iframe on allowed websites. The fields that get populated on the new lead record are defined in Payload Fields. Double opt-in can be turned on to send a confirmation email to the person who submitted the form. The lead record is created after the person confirms, but if the Create Lead before confirmation setting is enabled, the lead is created as soon as the form is submitted. New leads coming through the capture point can be automatically assigned to a team, linked to a campaign or added to a target list for further interactions, and processed by a workflow or BPM process.

59. Custom API Integrations

Custom API integrations are built using EspoCRM’s REST API. The software supports API endpoints for built-in and custom entities. Developers can build integrations that read, create, update, and delete records using standard HTTP methods and authenticate via API keys, HMAC, or user authentication tokens.

60. Webhooks

Administration > Webhooks

External applications can subscribe to EspoCRM events using Webhooks. You set up a webhook with an event type (record created, updated, a specific field changed, or deleted) and a destination URL. Every time that event occurs on the relevant entity, the CRM sends a POST request with the record data to the configured URL. Requests are queued and processed by a scheduled job with automatic retry on failure.

61. MCP Extension

Administration > Extensions

Administration > MCP Endpoints

MCP extension turns EspoCRM into a Model Context Protocol (MCP) server which lets AI agents access CRM data and perform operations. It installs as a standard EspoCRM extension and allows admins to create MCP endpoints that AI clients can connect to. Each endpoint functions as a separate MCP server with its own configuration: the operations available (including finding, reading, creating, updating, and deleting records, as well as searching in a record’s Stream or posting to it), the data and fields exposed, and the users permitted to connect. Access permissions work the same way as elsewhere in EspoCRM; a user’s role determines what they can do through the MCP client. If a user can’t edit Opportunities in the CRM, they can’t edit them through an AI agent either.

Section 11. Developer-Level Customizations

As you can see, admins can configure many aspects of EspoCRM without coding. But when a business needs an integration with another system, a custom view, or a feature that doesn’t exist yet, developers can extend the system with custom code.

62. Custom Extensions

Administration > Extensions

Custom extensions are installable packages that bundle any combination of customizations into a single zip archive. They can be created for individual businesses or offered as vertical industry solutions or third-party integrations. You can install extensions at Administration > Extensions by uploading the file. Installed extensions can also be uninstalled from this page.

63. Custom API Endpoints

Custom API endpoints let developers add new API routes with custom logic. You define the route in a routes.json file and create a PHP action class that handles the request and returns data in whatever format the client application needs. By default, custom endpoints use EspoCRM’s standard API authentication, but they can also be configured to allow unauthenticated requests.

64. Front-End Customizations

Front-end customizations let developers change what users see and interact with at the view level. Most standard screens, panels, and buttons can be replaced or extended with custom views. A developer can change how a field renders, add a button to a detail view that triggers custom logic, build a new dashlet type, create a new field type with its own input and display behavior, or add a panel to a record view with completely custom content.

65. Custom Formula Functions

Custom formula functions extend EspoCRM’s formula language, which is used in before-save scripts, workflows, and BPM processes. When a business needs a function that isn’t built in, a developer can create a PHP class with the function’s logic and register it in metadata. The new function can then be called from any formula script in the system.

66. Custom Scheduled Jobs

Administration > Scheduled Jobs

Custom scheduled jobs extend EspoCRM’s built-in job scheduler with developer-written PHP logic. A developer implements the job in a PHP class and registers it in metadata. An administrator then creates a Scheduled Job record, sets the schedule, and activates it. Custom jobs use the same scheduling system as built-in jobs and can also be run manually through the command line.