Skip to main content

Standardization reference

Standardizers

StandardizerProduces
NameConsistent casing and spacing; expands common abbreviations
EmailA normalized address, lowercased, with provider-specific forms folded
PhoneA canonical international format
DateAn unambiguous date from many input formats
AddressStructured components, with abbreviations expanded
UppercaseThe value uppercased
LowercaseThe value lowercased
TitlecaseThe value in title case
SentencecaseThe value in sentence case
Address lineA single address line, normalized
StripThe value with characters matching a pattern removed
Unicode foldA form with accents and compatibility characters normalized
Nickname expandA canonical given name from a familiar form

Thirteen standardizers, and that is the whole set. A rule naming anything else is rejected when you save it.

The standardization rule editor. Rules on one attribute run in the order shown.

Rule fields

Every field a standardization rule accepts.

FieldAcceptsDefaultChangeableWhat it does
attributeDefIdAn attributeNoWhich attribute the rule standardizes. To standardize a different one, create another rule.
ruleTypestandardizeYesThe only kind of standardization rule there is. It exists so the shape stays open to extension, not because there is a choice to make.
ruleConfigAn object naming a standardizer and its options{}YesWhich standardizer to run and how. See Options.
executionOrderInteger, 0 or greater0YesPosition in this attribute's chain. Rules run in ascending order.
isActivetrue or falsetrueYesWhether the rule runs. Deactivating is the reversible alternative to deleting — though it does not undo values already standardized.
metadataAn object{}YesYour own annotations, stored and returned uninterpreted.

Order is a chain, not a preference

Several rules on one attribute compose in executionOrder, each receiving the previous one's output. That is how a value gets both cleaned and cased:

OrderStandardizer123-45-6789 becomes
0strip with a non-digit pattern123456789
1uppercase123456789

Leave two rules on the same order and the sequence between them is not defined, so give each its own number whenever the result depends on which runs first.

Options

Options are per standardizer:

StandardizerOptionEffect
EmailSubaddress strippingRemoves a tagged suffix on every domain, not only providers that ignore it
StripPatternWhich characters to remove — required
PhoneDefault countryThe country assumed for numbers without an international prefix — set this, or numbers that are not already international fail to normalize
DateLocaleDisambiguates numeric dates where day and month order is ambiguous

The authoritative option list per standardizer is served by the platform. Query it rather than relying on this table alone.

An unrecognized option is rejected when you save, rather than ignored. An option that silently did nothing would produce data that looks configured and is not.

Execution

BehaviourDetail
WhenOn write, before validation and before storage
OrderPer attribute, in the configured order
ResultThe standardized value is the stored value
Raw inputNot retained — see below

There is no parallel raw column. Two representations of one fact drift, and every consumer then has to decide which to trust.

The original value is not kept

Standardization is applied on the way in, and what you submitted is not stored anywhere. The audit entry records the standardized value together with a flag saying whether standardization changed it — it does not record what arrived.

So standardization is irreversible by the platform. Turning off a rule changes how future writes are treated; it does not restore values already standardized, and there is nothing to restore them from. Recovering the originals means re-loading from the source system.

Before enabling a rule that discards information — strip in particular, which removes characters outright — try it on the rule test panel and confirm the output on real values first.

Phonetic encoding

Phonetic encoding is not a standardization rule. Phonetic codes are computed at match time from the canonical value, using the codec the match profile specifies.

This is deliberate: stored codes would go stale the moment a profile changed its codec, and nothing would signal it. See match profile reference.

Next


Last verified against commit a0765982 (2026-08-03)