> ## Documentation Index
> Fetch the complete documentation index at: https://developers.activeprospect.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Types

A type defines the kind of data LeadConduit expects in a field or in a data point appended to a lead by any
LeadConduit integration. LeadConduit uses a field's type to understand a value submitted with a lead.

Types are simple and are all provided "out of the box" by LeadConduit. You cannot add or remove types. Standard
LeadConduit fields are properly typed. If you need to create a custom field for some reason, you can set the type.

A field's type...

* determines whether a field's value is valid
* normalizes the formatting of a value
* parses a value into it's constituent components for use in flow rules and mappings
* protects consumer PII by masking sensitive information before LeadConduit stores it
* preserves the raw value submitted to LeadConduit, just in case

## Boolean

Boolean fields and variables are declared as type `boolean`.

| Component | Type    | Description                                                  |
| --------- | ------- | ------------------------------------------------------------ |
| `raw`     | string  | Unmodified field value submitted with the lead               |
| `valid`   | boolean | Indicates whether the value could be understood as a boolean |
| `normal`  | boolean | The normalized value (i.e. `"Yes"` is normalized to `true`)  |

## City

City fields and variables are declared as type `city`.

## Credential

Credential fields and variables are declared as type `credential`.

## Date

Date fields and variables are declared as type `date`.

| Component | Type    | Description                                                               |
| --------- | ------- | ------------------------------------------------------------------------- |
| `raw`     | string  | Unmodified value submitted with the lead                                  |
| `valid`   | boolean | Indicates whether the value could be understood as a date                 |
| `normal`  | string  | The normalized value (i.e. `"10/1/1988"` is normalized to `"1988-10-01"`) |

### Supported Formats

| Format             | Example                    |
| ------------------ | -------------------------- |
| `ddd MMM DD YYYY`  | `"Mon Jun 02 2014"`        |
| `MMM DD YYYY`      | `"Jun 02 2014"`            |
| `M/D/YYYY`         | `"6/2/2014 or 06/02/2014"` |
| `M/D/YY`           | `"6/2/14"`                 |
| `YYYY-MM-DD`       | `"2014-06-02"`             |
| `MM-DD-YYYY`       | `"06-02-2014"`             |
| `MMDDYYYY`         | `"06022014"`               |
| `YYYYMMDD`         | `"20140602"`               |
| `"ddd DD MMM YYYY` | `"Fri 18 July 2014"`       |
| `"DD MMM YYYY"`    | `"18 July 2014"`           |
| `"D/M/YYYY"`       | `"18/7/2014"`              |
| `"D/M/YY"`         | `"18/7/14"`                |
| `"YYYY-DD-MM"`     | `"2014-18-07"`             |
| `"DD-MM-YYYY"`     | `"18-07-2014"`             |
| `"DDMMYYYY"`       | `"18072014"`               |
| `"YYYY-DD-MM"`     | `"2014-18-07"`             |
| `"YYYYDDMM"`       | `"20141807"`               |

## Date of Birth

Date of birth fields and variables are declared as type `dob`. See the [date type](/api-reference/leadconduit/types#date) for supported formats.

| Component | Type    | Description                                                               |
| --------- | ------- | ------------------------------------------------------------------------- |
| `raw`     | string  | Unmodified value submitted with the lead                                  |
| `valid`   | boolean | Indicates whether the value could be understood as a date                 |
| `normal`  | string  | The normalized value (i.e. `"10/1/1988"` is normalized to `"1988-10-01"`) |

## Email

Email fields and variables are declared as type `email`.

| Component       | Type    | Description                                                                                      |
| --------------- | ------- | ------------------------------------------------------------------------------------------------ |
| `raw`           | string  | Unmodified value submitted with the lead                                                         |
| `valid`         | boolean | Indicates whether the value could be understood as an email address                              |
| `normal`        | string  | The normalized value (i.e. `"MIKEJONES32@gmail.com"` is normalized to `"mikejones32@gmail.com"`) |
| `user`          | string  | User name (everything to the left of @)                                                          |
| `domain`        | string  | Domain name (everything to the right of @)                                                       |
| `host`          | string  | Domain excluding top level domain                                                                |
| `tld`           | string  | Top level domain (.com, .net, etc)                                                               |
| `is_free`       | boolean | Whether or not the email is from a free domain (ex: gmail, yahoo, etc)                           |
| `is_disposable` | boolean | Whether or not the email is disposable                                                           |

## First Name

Email fields and variables are declared as type `first_name`.

## Gender

Gender fields and variables are declared as type `gender`. Values are parsed case insensitively. Examples of valid
gender values are: "male", "m", "female", "f", "other", "o".

| Component | Type    | Description                                                 |
| --------- | ------- | ----------------------------------------------------------- |
| `raw`     | string  | Unmodified value submitted with the lead                    |
| `valid`   | boolean | Indicates whether the value could be understood as a gender |
| `normal`  | string  | The normalized value (`"male"`, `"female"`, `"other"`)      |
| `abbr`    | string  | Abbreviation of the `normal` value (`"M"`, `"F"`, `"O"`)    |

## Last Name

Last name fields and variables are declared as type `last_name`.

## Number

Number fields and variables are declared as type `number`. Decimal and negative numbers are supported.
Currency and unit punctuation characters are ignored.

| Component | Type    | Description                                                       |
| --------- | ------- | ----------------------------------------------------------------- |
| `raw`     | string  | Unmodified value submitted with the lead                          |
| `valid`   | boolean | Indicates whether the value could be understood as a number       |
| `normal`  | number  | The normalized value (i.e. `"$100.99"` is normalized to `100.99`) |

## Phone

Phone fields and variables are declared as type `phone`. This data type only supports US phone numbers.

| Component     | Type    | Description                                                                                                                |
| ------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- |
| `raw`         | string  | Unmodified value submitted with the lead                                                                                   |
| `valid`       | boolean | Indicates whether the value could be understood as a phone number                                                          |
| `normal`      | string  | The normalized value (i.e. `"(281) 330-8004"` is normalized to `"2813308004"`)                                             |
| `area`        | string  | Area code portion of the phone number (i.e. `"281"`)                                                                       |
| `exchange`    | string  | Exchange portion of the phone number (i.e. `"330"`)                                                                        |
| `line`        | string  | Line number portion of the phone number (i.e. `"8004"`)                                                                    |
| `number`      | string  | Full number (i.e. `"3308004"`                                                                                              |
| `extension`   | string  | Phone number extension (i.e. `"2813308004x201" has extension `"201"\`)                                                     |
| `type`        | string  | Phone number type based on hint `m`, `h`, or `w` appended to the number- (i.e. `"(281) 330-8004m"` has type of `"mobile"`) |
| `is_tollfree` | boolean | Phone has an `area` of 800, 844, 855, 866, 877, or 888                                                                     |

### Supported Formats

| Format               | Description                                              |
| -------------------- | -------------------------------------------------------- |
| `"2813308004"`       | Ten-digit phone number                                   |
| `"281-330-8004"`     | Ten-digit phone number with dashes                       |
| `"281.330.8004"`     | Ten-digit phone number with dots                         |
| `"281 330 8004"`     | Ten-digit phone number with spaces                       |
| `"(281) 330-8004"`   | Ten-digit phone number with parentheses, space, and dash |
| `"1 (281) 330-8004"` | Any supported format with preceding country code         |

### Line Type Hint

If a raw phone number value has line type hint appended, the phone type will automatically set the `type` value
appropriately. For example, the `c` hint found in `281-330-8004 (c)` (c indicates "cell") will cause the `type`
value to be set to "mobile". Hints can immediately follow the phone number, can be separated by the phone by any
number of spaces, and can also optionally be wrapped in parentheses.

| Phone Number      | `type` Value |
| ----------------- | ------------ |
| `"2813308004c`    | "mobile"     |
| `"2813308004m`    | "mobile"     |
| `"2813308004 m`   | "mobile"     |
| `"2813308004 (m)` | "mobile"     |
| `"2813308004w`    | "work"       |
| `"2813308004h`    | "home"       |

### Extension Hint

If a raw phone number value has an extension hint appended, the phone type will automatically set the `extension`
value appropriately. For example, the `x201` hint found in `281-330-8004 x201` will cause the `extension`
value to be set to `"201"`. Hints can immediately follow the phone number, can be separated by the phone by any
number of spaces.

## Postal Code

Postal Code fields and variables are declared as type `postal_code`.

| Component      | Type    | Description                                                                |
| -------------- | ------- | -------------------------------------------------------------------------- |
| `raw`          | string  | Unmodified value submitted with the lead                                   |
| `valid`        | boolean | Indicates whether the value could be understood as a postal code           |
| `normal`       | string  | The normalized value (i.e. `"78704 4224"` is normalized to `"78704-4224"`) |
| `country_code` | string  | Two letter country abbreviation (i.e. `"US"`)                              |
| `zip`          | string  | First 5 digits of a US zip code (i.e. `"78704"`)                           |
| `four`         | string  | Last 4 digits of a US zip code (i.e. `"4424"`                              |
| `fsa`          | string  | Canadian forward sortation area (i.e. `"Q2E 4U7"` has `fsa` of `"Q2E"`)    |
| `ldu`          | string  | Canadian forward sortation area (i.e. `"Q2E 4U7"` has `fsa` of `"47U"`)    |
| `outcode`      | string  | Great Britain outward code (i.e. `"A1 1AA"` has `outcode` of `"A1"`)       |
| `incode`       | string  | Great Britain inward code (i.e. `"A1 1AA"` has `incode` of `"1AA"`)        |

## Range

Range fields and variables are declared as type `range`. A range is a field value with lower and upper numeric
boundaries. Range fields are commonly used in scenarios where a consumer is presented a drop-down. For example,
the standard `credit_score` range field might have the value `"700 - 749"`.

| Component | Type    | Description                                                                             |
| --------- | ------- | --------------------------------------------------------------------------------------- |
| `raw`     | string  | Unmodified value submitted with the lead                                                |
| `valid`   | boolean | Indicates whether the value could be understood as a range value                        |
| `normal`  | string  | The normalized value (i.e. `"700 to 749"` is normalized to `"700-749"`)                 |
| `min`     | number  | The lower boundary of the range (i.e. `700`)                                            |
| `max`     | number  | The upper boundary of the range (i.e. `749`)                                            |
| `avg`     | number  | The average of the `min` and `max` accurate to the second decimal place (i.e. `724.50`) |
| `mid`     | number  | Average of max and min, rounded down to the nearest whole number (i.e. `724`)           |

## SSN

US Social Security Number fields and variables are declared as type `ssn`.

| Component     | Type    | Description                                                                      |
| ------------- | ------- | -------------------------------------------------------------------------------- |
| `raw`         | string  | Unmodified value submitted with the lead                                         |
| `valid`       | boolean | Indicates whether the value could be understood as a Social Security Number      |
| `normal`      | string  | The normalized SSN value (i.e. `"1234567890`")                                   |
| `first_three` | string  | First three digits of SSN (i.e. SSN `"123-456-7890"` has `first_three` of`"123"` |
| `middle_two`  | string  | Middle two digits of SSN (i.e. SSN `"123-456-7890"` has `first_three` of`"456"`  |
| `last_four`   | string  | Last four digits of SSN (i.e. SSN `"123-456-7890"` has `first_three` of`"7890"`  |

## State

Locality or State fields and variables are declared as type `state`.

| Component | Type    | Description                                                                                                       |
| --------- | ------- | ----------------------------------------------------------------------------------------------------------------- |
| `raw`     | string  | Unmodified value submitted with the lead                                                                          |
| `valid`   | boolean | Indicates whether the value could be understood as a locality or state                                            |
| `normal`  | string  | The normalized locality or state. US states and territories are normalized to their two letter code (i.e. `"TX"`) |
| `name`    | string  | Full name of the locality or state (i.e `"Texas"`)                                                                |

## String

String fields and variables are declared as type `string`.

## Time

Time fields and variables are declared as type `time`.
