A matcher is lowercase letters and underscores only, up to 64 characters. Numbers, spaces, and hyphens are removed as you type. Leave Matcher blank if the field should not be searchable, filled from another record, or checked for uniqueness. CAD ignores the field label — “First Name” and “Given Name” only link if both use
first_name.Two kinds of matchers
Think of the field matcher as the folder, and the option matcher as the file inside it.
- Field matchers are how Search fill, Run, Record Search, uniqueness, and charge totals find a field.
- Option matchers are how CAD picks the right choice when labels differ (“Male” vs “M”) or when CAD itself sets the value (
valid/suspended/expired).
How Search fill matches things up
Search fill on a Standard section does two jobs: find a record, then copy onto this section.1. Find the source record
You can turn on more than one Search fill on the same section (for example Civilian and Licence). CAD tries each source you enabled.
2. Copy every shared matcher
Finding a civilian does not only copy name and date of birth. CAD takes every field on the found record that has a matcher, then looks for the same matcher on this section and copies the value across. Example: a civilian template hasfirst_name, last_name, dob, sex, and contact_number. An arrest report section with Search fill Civilian and those same matchers gets all five fields filled — not just the name used to search.
Copying skips:
- Fields with no matcher
- Read-only fields
- Supervisor-only fields, unless the author is a supervisor for that record type
3. How choices are matched
When the destination is a Select, Multiple choice, or Checkboxes field, CAD does not require the labels to match. It tries, in order:- Option matcher — if the source option and a destination option share the same matcher, that choice is selected. This is the reliable way.
- Option label — if there is no matcher match, CAD compares labels, ignoring letter case (“Male” copies onto “male”).
Worked example: Sex
Worked example: Sex
Civilian template:
- Field matcher:
sex - Options: Male (option matcher
male), Female (option matcherfemale)
- Field matcher:
sex - Options: M (option matcher
male), F (option matcherfemale)
sex. It selects M or F because the option matchers (male / female) match, even though the labels are different.If you leave option matchers blank, “Male” only copies onto another option also labelled “Male” (ignoring case).Required matchers by record type
These types will not save until the listed matchers exist. Each matcher must appear once.
Police, fire, EMS, DOT, and law records and reports have no required matchers. Add whatever you need for fill and search.
Civilian and BOLO are one-off types: only one template of each may exist.
Built-in field matchers
CAD treats these names as special. You can still invent your own (phone_number, case_number, and so on) for anything else.
Identity (civilian / warrant / BOLO)
Vehicle
Licence
Authoring unit (filled on create)
These fill from the unit that created the record when the field is empty:
The matcher dropdown lists the longer names (
unit_number, unit_division, unit_location). The short names above are accepted as well when a field is filled from the creating unit.
Built-in unit search looks up unit_number, unit_agency, unit_sub, and unit_id. unit_sub is that search matcher for subdivision. Autofill of the subdivision onto a new record uses unit_division or unit_subdivision.
Time
A date or time field with any other matcher is left blank until someone fills it.
Option matchers
On each choice of a Select, Multiple choice, or Checkboxes field there is a Matcher box next to the label and the flag checkbox. That is the option matcher. Use them whenever two templates might use different wording for the same choice, or when CAD needs to pick an option for you.Built-in option matchers
These only work when the field also has the matcher in the first column.
You can add option matchers on any other choice field (
veh_col, veh_type, custom fields). Search fill will use them the same way.
Flags
If an option’s flag checkbox is on and that option is selected, the option’s label appears as a flag on the record. Run plays the lookup-flags tone and TTS. Custom flags are red alerts and, on the Police panel, are sent to dispatch. Licences and vehicles also add flags from their own state, even if no option is flagged:
A common pattern is a “Flags” multiple-choice field with field matcher
flags, and each dangerous option marked as a flag.
Charge matchers
Put these on a Standard section (not the Charges section itself). CAD fills them from the charges on this same record and locks the field so officers cannot edit it. Use them when you want totals on a citation or arrest form without relying only on a Charges Summary section. The record still needs a Charges section (or a legacy Speed section) so there is something to total.
Surcharge example: in Law → Surcharges you have a surcharge named “Court Costs” with abbreviation
cc. On the template, set Matcher to charges_surcharge_cc (or charges_surcharge_court_costs). CAD fills it with that surcharge’s amount for the charges on the record. The surcharge id works the same way if you use that instead of the abbreviation or name.
Licence effects from charges
Traffic and speeding charges look at the same record for a field with matcherlicence_number. If a licence exists with that number:
- Demerit points × charge count are added to the licence
- A suspension duration marks the licence suspended
- The licence form then shows the
licence_statusoption whose matcher issuspended(orexpired/valid)
Unique fields
On text, text area, number, date, time, and random fields:
A field cannot be both read-only and unique unless it is a Random field (CAD generates the value). Random unique values are generated when the record is first created.
Use Global uniqueness to keep one
licence_number or veh_plate across the CAD.
Custom search indices
Admin → Records & Reports → Search Indices. Up to 5 indices, 4 fields each. Each index becomes another Record Search tab, and another Search fill source (the first index is the first custom source, the second index the next, and so on).
Query order follows the field list: the first box searches the first matcher, the second box the second matcher, and so on.
Full mode requires every non-empty query to match the same record. Partial mode matches if any query hits. Each query can be starts with, ends with, exact, or contains.
Built-in Run tabs do not use custom indices. They always search name, plate, or licence number as in How Search fill matches things up. Custom indices only appear in Record Search (and as Search fill sources on templates).
After a custom search finds a record, fill still copies every shared matcher — not only the fields you searched by.
New CADs include a Phone Number example (matcher
phone_number, civilian, mask (###) ###-####). Add a phone_number matcher on civilian templates for it to return results.
Put the matcher on the template
Open the record template. On the field officers fill in, set Matcher to a stable name such as
phone_number.Create the search index
Records & Reports → Search Indices → +. Set the same matcher. Restrict the record type if only one type should match.
Use it
Officers get a new tab in Record Search. On other templates, enable that custom source under Search fill so selecting a hit copies matching fields.
Dependencies
Sections and fields can hide until earlier fields match a rule (equal, not equal, contains). AND / OR logic is supported. Hidden fields are skipped for required checks and do not count toward required matchers on the template. Keep identity matchers (first_name, veh_plate, and similar) on a section that is always visible.
Practical rules
- Reuse the built-in matchers whenever the data is identity, a plate, a licence, or a charge total. That is what Run, warrants, bonds, traffic stops, and live totals read.
- Put the same field matcher on both templates you want Search fill to connect. Put the same option matcher on choices that mean the same thing, even if the labels differ.
- Use a custom matcher (
case_number,phone_number,insurance_policy) for anything server-specific, then expose it with a search index if officers need to look it up. - Do not put two required identity matchers of the same name on one template.
- Keep unique plates and licence numbers Global.
- Changing a matcher on a live template does not update old records until they are saved again. Search fill on other templates only copies if they share the new matcher.
Need help?
Still have questions? Join our Discord server for support from the Melonly team.
