Crust CRM Administrator’s Guide

In-depth documentation on the deployment and administration of the Crust CRM.

Admin panel


A module is a set of fields that together make an object. Examples are Leads, Accounts, Contact of Opportunities. Each one of the has a set of field that define the data that is stored. More detailed: in Leads you have for example the fields first name, last name and email, and in Accounts you have company name and industry.

The complete list of modules in the CRM is:

  • Account
  • AccountContactRole
  • CampaignMember
  • Campaigns
  • Case
  • CaseContactRole
  • CaseMilestone
  • Contact
  • Contract
  • ContractContactRole
  • ContractLineItem
  • DefaultSettings
  • EmailMessage
  • EmailTemplate
  • Entitlement
  • EntitlementContact
  • EntitlementTemplate
  • Event
  • Idea
  • Lead
  • MilestoneType
  • Note
  • Opportunity
  • OpportunityCompetitor
  • OpportunityContactRole
  • OpportunityLineItem
  • Pricebook
  • PricebookEntry
  • Product
  • Question
  • Quote
  • QuoteLineItem
  • Reply
  • Solution
  • Task
  • Vote

Each field in a module is of a certain type, depending on what data we want to save. The complete list of types of fields is:

  • Checkbox (Y/N)
    • Value when checked (allows you to set the value when the checkbox is checked, like for example “Yes”)
    • Value when unchecked (allows you to set the value when the checkbox is unchecked, like for example “No”)
  • DateTime
    • Date Only
    • Time Only
    • Past Values Only
    • Future Value Only
    • Output Relative value (eg: 3 days ago)
    • Output format (manual output format). See Moment.js documentation ( for formatting options
  • Email
    • Don’t turn email into a link (checkbox to show the email only as a text, and not a a clickable email link)
  • Select
    • Options to select from (here you can add multiple options)
  • Number
    • Prefix (for example $)
    • Suffix (for example %)
    • Precision (for example 2, if you want to show it in the format 0.00, which is ideal for money values)
    • Format (manual output format)
  • Record
    • Module name (the module you want to link to)
    • Record label from field (the field you want to link to)
    • Query field on search (the fields that will be searched when the end user types in the select field to find a record)
  • String
    • Multiline (shows a textarea instead of single line input field)
    • Use Rich Text Editor (activates the rich text editor for this field)
  • URL
    • Trim ‘#’ from the Url
    • Trim ‘?’ from the Url
    • Trim Url down to domain only
    • Only allow SSL (https) Url
    • Don’t turn Url into a link
  • User
    • Preset with current user (if you want the logged in user to be preselected)
  • File
    • View mode
      • List
      • Grid
      • Single Image
      • Gallery of images


Pages form the visual representation of modules, charts, calendars and more. When you want to view a dashboard, list, record or add, edit or delete records this is done via a page.

There are 2 types of pages:

  • A standard page, where you can show record lists, charts, calendars etc.
  • A record page, where you can show record related data (such as record fields or related record lists). Each module has exactly 1 record page, which is added automatically once a module is created.

Pages are shown in the admin in a tree structure. You can drag and drop pages to the desired position in the tree. Please note that the tree structure here defines the structure of the CRM menu for the end user, showing all standard pages in the order as in the admin. Record pages can be places anywhere, and are not shown in the CRM menu for the end user (because a record page only shows the data or a single record).

A page consists of blocks. Each block has an optional title, description and header style.

The following block types are available:

  • Content
    • Here you can insert fixed content via a rich text editor.
  • Chart
    • This block allows to select a chart from the list of available charts.
  • Social media feed
    • You can show a Twitter feed on a standard or record page.
      • On a standard page you can only insert a fixed Twitter link
      • On a record page you can insert a fixed Twitter link or select a “Field that contains Twitter Profile URL for a record”. In the lead, contact and account modules there is a Twitter field, named “Twitter”, which is the selected field for the Social media feed block on their record pages.
  • Record
    • This block is only available on record pages. It allows you to define what record fields you want to show in a block, by using a drag and drop system. The selected fields are automatically shown in the correct way, according to how they are set up in the module builder. This means that a string with “rich text editor” checked will automatically show a rich text (or a rich text editor when in editing mode), a select will show the value in viewing mode and a select with the possible options in editing mode etc.
  • RecordList
    • This block shows a list of records of the selected module. This is a very important block, because it allows you to add logic to the tree of pages, allowing users to go from a standard page to a record page.There are two common use cases for this block. On a standard page a RecordList shows a normal list of records. This list can occupy the full screen (such as on the Accounts page) or a part (such as on the Leads page, where charts are shown as well, or on the home page, where there are two lists show at the bottom, under the calendar and charts).

      The RecordList configuration has the following options:

      • Module
        • Here you select the module you want to serve as the source for the record list
        • The available field from the selected module are automatically loaded below the module select, and with a drag and drop or double click system you can select the ones you want to show. The fields in the “Columns selected” area can be reordered by dragging them up or down in the list.
      • New records
        • By default a RecordList allows to add new records, via a link that is shown on top of the records in the record list. It’s possible to deactivate this by selecting “Hide add record button” when setting up a RecordList block.
          On standard pages a normal new record is created, unlinked by default to any other record (unlike with a RecordList on a record page).
      • Prefilter records
        • The lists can be filtered and common filters include:
          • Leads: Status = ‘New’ (to only show new leads)
          • Opportunties: StageName != ‘Closed Won’ AND StageName != ‘Closed Lost’ (to only show open opportunities)
          • Lead: ownedBy = ${userID} (to only show the leads owned by you). ${userID} is a special value, that gets the user id of the signed in user.
      • Presort records
        • Allows you to set a presort to the list, to order records for example by stage.
        • RecordLists by default are sortable in viewing mode, by clicking on the column header, but you can deactivate this by selecting: “Hide sorting”.
      • Records per page
        • Here you can set the number of records you want to show per page. You can also deactivate paging here by selecting: “Hide paging”.

      On a record page the RecordList is almost the same as on a standard page. Below the changes are explained.

      • New records
        • Just like on standard pages you can add new records via button on top of a record list. The difference here is that is the module is linked to the current module (for example, you are in a lead record and want to add a new event related to this lead), the lead record value is automatically passed on to the new event record.
      • Prefilter records
        • The most common is to prefilter recordLists in record pages that only records that are linked to the parent record are shown (for example, we only want to show all event related to the lead record we are in). This is done with the filter: LeadId = ${recordID}
  • Automation
    • Automation blocks allow you to insert automation buttons on pages. You can only select the triggers that are available for the module.
    • After adding a trigger you can define a custom label and a select a button color.
  • Calendar
    • A calendar block can be inserted on standard pages and on record pages. In a calendar block you can define the layout of the calendar (by month, week, day…) and sources.
    • The CRM allows you to create different calendars with different sources. For example, on the CRM homepage the calendar sources are Events and Tasks.
      • Each source has a fields as title, start date and end date. It’s also possible to show them as full day events by default in the calendar.
  • File
    • The File block allows you to show a list of files on a standard page or record page (where the list of files is the same for each record page). This is particularly useful for documents such as pricelist or datasheets, providing the sales team with a direct link to those files while working in the CRM.
    • Note: for record specific files, such as NDAs or Contracts, the CRM offers the file field in the module.

After setting up a block you can insert it by hitting on the “Add block” button. As soon as the block is inserted on the page you can resize it and drag it around to the position you want.
When you are finished adding blocks you can “Save” or “Save and preview” the created / modified page.



The CRM has by default a set of charts related to leads and opportunities. You can add new charts or modify them on this admin page.

The following fields make a chart:

  • Title
    • A chart must have a title.
  • Module
    • There must be a module selected as source for the chart. For example: “Lead”.
  • Filters
    • Records created this year
    • Records created last year
    • Records created this quarter
    • Records created last quarter
    • Records created this month
    • Records created last month
    • Customize filter:
      • For example: a = 1 AND b > 2
  • Dimensions (datetime & select fields)
    • Fields
      • Only shows the fields that can serve as a dimension
      • If the type of field is datetime, you can group by Date, Week, Month, Quarter or Year.
    • Skip missing values
      • Allow you to filter out “null” values
    • Calculate how many labels can be shown
      • Manages the number of labels on the X-axis. Only needs to be checked if there are many labels on the axis.
  • Metrics (numeric fields)
    • Label
      • The name of the metric. For example: Number of leads.
    • Field
      • Only shows the fields that can serve as a metric
      • “Count” is a special option here. This is not a field in the module, but a counter of records. Ideal to count for example the number of leads per country.
    • Output
      • Bar
      • Line
      • Logarithmic scale (checkbox)
      • Place axis on the right side (checkbox)
      • Always begin axis scale at zero (checkbox)
        • It’s recommended to check this checkbox to create better to understand charts.
      • Fill area below the line (checkbox)

Once you’ve set up a chart, you can hit the “Load data” button on the right top to see a preview of the chart.

To insert the charts in the CRM, please check out the “Chart” block in the Pages chapter.


Automation processes are ideal to automate repetitive tasks. The Crust CRM automation process editor is very powerful and allows you to automatically:

  • Validate field values.
  • Update records.
  • Create new records (including related records, such as a new quote for an opportunity) and map data to them.
  • Send out notifications in the UI, via email or directly to Crust Messaging.

Automation rules can be triggered:

  • manually, when user clicks a button on a page
  • before record is created
  • after record is created
  • before record is updated
  • after record is updated
  • before record is deleted
  • after record is deleted

Trigger logic and behaviour

  • “Manual” triggers
    • An enabled automation rule with “manually, when user clicks a button on a page” checked can be inserted as a button in an “automation block” on a page. If the page type is a “record page”, the primary module of the automation rule must match the module of the record page.
  • “Before” triggers
    • An enabled automation rule with “before record is created”, “before record is updated” or “before record is deleted” checked, can prevent the creation, update or deletion of the record.If an error/exception (throw new Exception(‘Some error’)) or non true value is returned (return false), the following action is canceled and the record is not created, updated or deleted.
  • “After” triggers
    • An enabled automation rule with “after record is created”, “after record is updated” or “after record is deleted” checked is executed after a successful creation, update or deletion.In case of creation or update, the new data of the record can be accessed in the automation code, but on deletion will return record data from before deletion.
  • Order of execution
  1. Enabled automation rules with “Before” triggers
  2. Enabled automation rules with “After” trigger
  • Enabled automation rules with a primary module are only executed when the module detects a record creation, update or deletion.
  • Enabled automation rules without primary module are executed whenever there is any record creation, update or deletion.
  • When there are multiple enabled automation rules that match at the same time (for example, two automation rules with “after update” triggers with the same primary module), the order of execution cannot be guaranteed. Errors that occur in a specific automation rule do not affect other automation rules that match.
  • Enabled automation rules with “Manual” trigger are only executed manually by users.

Writing Automation rules

Automation rules are written in Javascript, and several added functions allow you to retrieve modules and records, and save new or modified records.

  • Return single record, filter by ID
    • crust.api.record.find(module, “23589723895”)
  • Return multiple records, all
    • crust.api.record.find(module)
  • Return multiple records, filtered
    • crust.api.record.find(module, “some_field = ‘somevalue'”)
  • Return multiple records, filtered, complex
    • crust.api.record.find(module, { filter: “some_field = ‘somevalue'”, page: 1, perPage: 10, sort: “other_field DESC” })
  • Return a user
    • let user = await crust.api.user.find(’email@example.tld’)
  • Create a record
    •‘Module’, parentModule)
      • For example: const quote =‘Quote’, opportunity), to create a new quote in an opportunity.
  • Save a record
  • Send an email
    •{// Accepts userID or emailto: account.values.Owner,

      // Send 2 carbon copies to sales department and CSO

      cc: [‘ Sales Department’, ‘’],

      subject: `Lead “${lead.values.Name}” coverted`,

      html: `Account summary:<hr>${crust.fmt.record.toHTML(account)}`,


  • Send a notification
    • crust.notify.ui.alert.success(‘success message’)
    • crust.notify.ui.alert.error(‘error message’)