Overview
Types are the data standardization engine of LeadConduit. They transform the messy, inconsistent data that arrives from various sources into clean, structured, and predictable formats that systems can reliably process. Think of types as intelligent parsers that not only validate data but also extract meaningful components and metadata. At their core, types solve three fundamental problems:- Data Chaos: Lead data arrives in countless formats
- Validation Confusion: What makes data “valid” varies by context
- Component Extraction: Valuable data is often buried within strings
How Types Work
The Problems Types Solve
Format Chaos: Lead data comes from everywhere with different formats - phone numbers as “(512) 789-1111” vs “512-789-1111” vs “5127891111”, states as “TX” vs “Texas” vs “tx”. This creates chaos both inbound (accepting leads) and outbound (delivering to external systems). Validation Dilemma: Traditional systems reject misformatted data, but in lead distribution you can’t control input formats, rejecting leads means lost revenue, and different buyers have different requirements. Hidden Value: Valuable data is embedded within strings (area codes, domains, ZIP codes, age from DOB) requiring complex string manipulation to extract.How Types Solve These Problems
Parse-Normalize-Use Pattern: Every type follows three steps: Parse (accept various formats), Normalize (convert to consistent format), Use (access standardized data and components in flows). Example:"(512) 789-1111" → { raw: "(512) 789-1111", normal: "5127891111", area: "512", exchange: "789", line: "1111", valid: true }
Normalization Benefits:
- Simplified Rules: Write one rule for
State equals "TX"instead of separate rules for"tx","texas","Texas", etc. - Effortless Outbound Delivery: Send normalized data to external systems often without format conversion
- Consistent Storage: All data stored in predictable formats
- Phone: Area code, exchange, line, extension, type, toll-free status
- Email: User, domain, host, TLD, free/disposable detection
- Postal Code: ZIP, country, regional components
valid component marks data quality without stopping processing. Invalid data doesn’t break flows - it’s marked for you to handle as needed. Use Phone 1 > Valid is true in rules to filter based on data quality.
Raw Value Preservation: Every type preserves the original input as raw for audit trails, troubleshooting, and integration flexibility.
Privacy-Focused Analytics: Types support aggregation for reporting while excluding sensitive information (usernames from emails, line numbers from phones).
Quick Reference
Complete Type Catalog
Contact Types
Phone Type
Comprehensive phone number parsing and validation for US/Canada numbers with real-world verification. Geographic Limitation: Currently only supports US and Canadian phone numbers. International numbers from other countries will be marked as invalid (valid: false) and will not parse correctly, even if they have a valid format in their home country. Advanced Validation: Thevalid property indicates more than just format correctness - it verifies:
- The area code is a real, assigned area code
- The exchange is a real exchange within that area code
- The area code and exchange legitimately belong together
- The number follows valid North American Numbering Plan rules
- The complete 10-digit number is actually connected/in service
- The line (last 4 digits) is valid for that area code and exchange
- The number can receive calls or texts
- Raw: Unmodified value
- Area: Area code
- Exchange: Exchange code
- Line: Line number
- Number: Full normalized number
- Extension: Extension if present
- Country Code: Two-letter country code
- Country Calling Code: Numeric country calling code
- Type: Number type (home/work/mobile)
- Is Tollfree: Boolean for toll-free numbers
h (home), w (work), m (mobile), or c (cell) to set type
Operators:
is equal to/is not equal tois blank/is not blankformat is valid/format is invalidincludes/does not includeis included in/is not included in
"donkey kong"(not a number)"964523331"(too short)"(999) 555-1234"(invalid area code)"(512) 999-1111"(invalid exchange for 512 area code)
- Check for specific area codes:
Phone 1 > Area equals "512" - Identify toll-free numbers:
Phone 1 > Is Tollfree is true - Format for display:
{{Phone 1 > Area}}-{{Phone 1 > Exchange}}-{{Phone 1 > Line}} - Check validity:
Phone 1 > Valid is true
valid property only confirms the area code and exchange are legitimate - it does NOT verify the full number is connected or deliverable. The “line” portion (last 4 digits) could still be invalid or disconnected. For true deliverability verification, use third-party Add-On services like Trestle, Telesign, or BriteVerify in a flow step to collect carrier-level metadata, then evaluate the appended data in a subsequent filter step to block disconnected numbers.
Email Type
Comprehensive email parsing with domain analysis and validation. Components:- Raw: Unmodified value
- User: Username (before @)
- Domain: Full domain (after @)
- Host: Domain without TLD
- TLD: Top-level domain
- Is Free: Boolean for free email providers
- Is Disposable: Boolean for temporary emails
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneformat is valid/format is invalidincludes/does not includeis included in/is not included inmatches pattern/does not match pattern
"Asdf" (no @), "hello@//gmail.xn--om.3ia"
Field Examples: Email, Work Email, Co-Borrower Email
Common Component Usage:
- Check if email is from a specific domain:
Email > Domain equals "company.com" - Identify free email providers:
Email > Is Free is true - Extract username for display:
{{Email > User}}
Personal Data Types
First Name Type
Simple string type for given names with basic validation. Components:- Raw: Unmodified value
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneformat is valid/format is invalidmatches pattern/does not match pattern
Last Name Type
Simple string type for family names with basic validation. Components:- Raw: Unmodified value
DOB Type (Date of Birth)
Special date type that adds age calculation and is maskable for privacy. Components:- Raw: The full date (only accessible during processing)
- Age: The age as of today (only accessible during processing)
- Year: The year from the DOB (only accessible during processing)
Gender Type
Parses gender values with abbreviation support. Valid Inputs:- Male:
m,male,M,Male,MALE(case insensitive) - Female:
f,female,F,Female,FEMALE(case insensitive) - Other:
o,other,O,Other,OTHER(case insensitive) - With whitespace:
" m "→ male
- Raw: Unmodified value
- Abbreviation: Abbreviated form (M, F, O)
is equal to/is not equal tois blank/is not blankformat is valid/format is invalid
"50", "asdf", 5, true
Field Examples: Gender, Applicant Gender
SSN Type (Social Security Number)
US Social Security Number parsing with masking for privacy. Components:- Raw: Unmodified value (only accessible during processing)
- First Three: First three digits (only accessible during processing)
- Middle Two: Middle two digits (only accessible during processing)
- Last Four: Last four digits (only accessible during processing)
is equal to/is not equal tois blank/is not blankformat is valid/format is invalidincludes/does not includeis included in/is not included in
"abcd", "", " "
Field Examples: Social Security Number
Common Component Usage (During Processing Only):
- Check last four digits:
Social Security Number > Last Four equals "1234" - Send to integration:
{{Social Security Number > Last Four}} - Check if provided:
Social Security Number > Valid is true
Location Types
Street Type
Street address parsing with number and name extraction. Components:- Raw: Unmodified value
- Number: Street number
- Name: Street name
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneformat is valid/format is invalidincludes/does not includeis included in/is not included inmatches pattern/does not match pattern
"Main Street" (no number), "Asdf"
Field Examples: Address 1, Property Address
City Type
Simple string type for city names with no format validation. Components:- Raw: Unmodified value
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneformat is valid/format is invalidincludes/does not includeis included in/is not included inmatches pattern/does not match pattern
State Type
US states and Canadian provinces with abbreviation normalization. Components:- Raw: Unmodified value
- Name: Full state/province name
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneincludes/does not includeis included in/is not included in
Postal Code Type
Multi-country postal code parsing supporting US, Canada, and UK formats. Components:- Raw: Unmodified value
- Country Code: Country abbreviation
- US Components:
- ZIP: First 5 digits
- Four: Last 4 digits (ZIP+4)
- Canadian Components:
- FSA: Forward sortation area
- LDU: Local delivery unit
- UK Components:
- Outcode: Outward code
- Incode: Inward code
is equal to/is not equal tois blank/is not blankformat is valid/format is invalidincludes/does not includeis included in/is not included inmatches pattern/does not match pattern
"garbage", non-postal code strings
Field Examples: Postal Code, Property Postal Code
Common Component Usage:
- Check ZIP code:
Postal Code > ZIP equals "78751" - Identify country:
Postal Code > Country Code equals "US" - Use only 5-digit ZIP for matching:
{{Postal Code > ZIP}}
Data Types
Boolean Type
Parses boolean values from various string and numeric representations. Valid Inputs:- True:
y,yes,true,t,1(case insensitive) - False:
n,no,false,f,0(case insensitive) - Numeric:
1→ true,0→ false - With whitespace:
" true "→ true
is true/is not trueis false/is not falseis blank/is not blankformat is valid/format is invalid
"50", "asdf", {foo: 42}
Field Examples: Opt In, Accept Prepayment Penalty, Has Insurance
City Type
Simple string type for city names with no format validation. Components:- Raw: Unmodified value
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneformat is valid/format is invalidincludes/does not includeis included in/is not included inmatches pattern/does not match pattern
Credential Type
Handles sensitive credential strings like passwords and API keys. Always masked by default. Components: None Maskable: Yes (sensitive data replaced with asterisks) Operators:is equal to/is not equal tois blank/is not blankincludes/does not includeis included in/is not included in
Date Type
Parses dates in multiple formats and normalizes to ISO format (YYYY-MM-DD). Supported Formats:- US:
M/D/YYYY(6/2/2014),M/D/YY(6/2/14),MM-DD-YYYY(06-02-2014) - ISO:
YYYY-MM-DD(2014-06-02) - European:
D/M/YYYY(18/7/2014),D-M-YYYY(18-7-2014) - Compact:
MMDDYYYY(06022014),YYYYMMDD(20140602) - Natural:
Mon Jun 02 2014,Jun 02 2014,Fri 18 July 2014
- Raw: Unmodified value
is equal to/is not equal tois less than/is less than or equal tois greater than/is greater than or equal tois blank/is not blankformat is valid/format is invalidis between/is not between
DOB Type (Date of Birth)
Special date type that adds age calculation and is maskable for privacy. Components:- Raw: The full date (only accessible during processing)
- Age: The age as of today (only accessible during processing)
- Year: The year from the DOB (only accessible during processing)
Email Type
Comprehensive email parsing with domain analysis and validation. Components:- Raw: Unmodified value
- User: Username (before @)
- Domain: Full domain (after @)
- Host: Domain without TLD
- TLD: Top-level domain
- Is Free: Boolean for free email providers
- Is Disposable: Boolean for temporary emails
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneformat is valid/format is invalidincludes/does not includeis included in/is not included inmatches pattern/does not match pattern
"Asdf" (no @), "hello@//gmail.xn--om.3ia"
Field Examples: Email, Work Email, Co-Borrower Email
Common Component Usage:
- Check if email is from a specific domain:
Email > Domain equals "company.com" - Identify free email providers:
Email > Is Free is true - Extract username for display:
{{Email > User}}
First Name Type
Simple string type for given names with basic validation. Components:- Raw: Unmodified value
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneformat is valid/format is invalidmatches pattern/does not match pattern
Gender Type
Parses gender values with abbreviation support. Valid Inputs:- Male:
m,male,M,Male,MALE(case insensitive) - Female:
f,female,F,Female,FEMALE(case insensitive) - Other:
o,other,O,Other,OTHER(case insensitive) - With whitespace:
" m "→ male
- Raw: Unmodified value
- Abbreviation: Abbreviated form (M, F, O)
is equal to/is not equal tois blank/is not blankformat is valid/format is invalid
"50", "asdf", 5, true
Field Examples: Gender, Applicant Gender
IP Type
Handles both IPv4 and IPv6 addresses with format detection. Components:- Raw: Unmodified value
- Is IPv4: Boolean indicating IPv4 format
- IPv6 Format: IP converted to IPv6 format
is equal to/is not equal tois blank/is not blankformat is valid/format is invalidincludes/does not includeis included in/is not included in
"256.4.5.6", "fe80:2030:31:24" (incomplete IPv6)
Field Examples: IP Address, Source IP
Last Name Type
Simple string type for family names with basic validation. Components:- Raw: Unmodified value
Number Type
Parses numeric values from strings, handling currency symbols and thousands separators. Components: None Operators:is equal to/is not equal tois less than/is less than or equal tois greater than/is greater than or equal tois blank/is not blankformat is valid/format is invalidincludes/does not includeis included in/is not included inis between/is not between
true, [1], {foo: 'bar'}, "derp", NaN
Field Examples: Loan Amount, Monthly Income, Credit Score
Phone Type
Comprehensive phone number parsing and validation for US/Canada numbers with real-world verification. Geographic Limitation: Currently only supports US and Canadian phone numbers. International numbers from other countries will be marked as invalid (valid: false) and will not parse correctly, even if they have a valid format in their home country. Advanced Validation: Thevalid property indicates more than just format correctness - it verifies:
- The area code is a real, assigned area code
- The exchange is a real exchange within that area code
- The area code and exchange legitimately belong together
- The number follows valid North American Numbering Plan rules
- The complete 10-digit number is actually connected/in service
- The line (last 4 digits) is valid for that area code and exchange
- The number can receive calls or texts
- Raw: Unmodified value
- Area: Area code
- Exchange: Exchange code
- Line: Line number
- Number: Full normalized number
- Extension: Extension if present
- Country Code: Two-letter country code
- Country Calling Code: Numeric country calling code
- Type: Number type (home/work/mobile)
- Is Tollfree: Boolean for toll-free numbers
h (home), w (work), m (mobile), or c (cell) to set type
Operators:
is equal to/is not equal tois blank/is not blankformat is valid/format is invalidincludes/does not includeis included in/is not included in
"donkey kong"(not a number)"964523331"(too short)"(999) 555-1234"(invalid area code)"(512) 999-1111"(invalid exchange for 512 area code)
- Check for specific area codes:
Phone 1 > Area equals "512" - Identify toll-free numbers:
Phone 1 > Is Tollfree is true - Format for display:
{{Phone 1 > Area}}-{{Phone 1 > Exchange}}-{{Phone 1 > Line}} - Check validity:
Phone 1 > Valid is true
valid property only confirms the area code and exchange are legitimate - it does NOT verify the full number is connected or deliverable. The “line” portion (last 4 digits) could still be invalid or disconnected. For true deliverability verification, use third-party Add-On services like Trestle, Telesign, or BriteVerify in a flow step to collect carrier-level metadata, then evaluate the appended data in a subsequent filter step to block disconnected numbers.
Postal Code Type
Multi-country postal code parsing supporting US, Canada, and UK formats. Components:- Raw: Unmodified value
- Country Code: Country abbreviation
- US Components:
- ZIP: First 5 digits
- Four: Last 4 digits (ZIP+4)
- Canadian Components:
- FSA: Forward sortation area
- LDU: Local delivery unit
- UK Components:
- Outcode: Outward code
- Incode: Inward code
is equal to/is not equal tois blank/is not blankformat is valid/format is invalidincludes/does not includeis included in/is not included inmatches pattern/does not match pattern
"garbage", non-postal code strings
Field Examples: Postal Code, Property Postal Code
Common Component Usage:
- Check ZIP code:
Postal Code > ZIP equals "78751" - Identify country:
Postal Code > Country Code equals "US" - Use only 5-digit ZIP for matching:
{{Postal Code > ZIP}}
Range Type
Parses numeric ranges and single numbers, calculating statistical values. Components:- Raw: Unmodified value
- Min: Lowest number in range
- Max: Highest number in range
- Mid: Average rounded down to nearest whole number
- Average: Average of min and max
is equal to/is not equal tois less than/is less than or equal tois greater than/is greater than or equal tois blank/is not blankformat is valid/format is invalidincludes/does not includeis included in/is not included in
"asdf", non-numeric strings
Field Examples: Age, Income Range, Years at Residence
SSN Type (Social Security Number)
US Social Security Number parsing with masking for privacy. Components:- Raw: Unmodified value (only accessible during processing)
- First Three: First three digits (only accessible during processing)
- Middle Two: Middle two digits (only accessible during processing)
- Last Four: Last four digits (only accessible during processing)
is equal to/is not equal tois blank/is not blankformat is valid/format is invalidincludes/does not includeis included in/is not included in
"abcd", "", " "
Field Examples: Social Security Number
Common Component Usage (During Processing Only):
- Check last four digits:
Social Security Number > Last Four equals "1234" - Send to integration:
{{Social Security Number > Last Four}} - Check if provided:
Social Security Number > Valid is true
State Type
US states and Canadian provinces with abbreviation normalization. Components:- Raw: Unmodified value
- Name: Full state/province name
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneincludes/does not includeis included in/is not included in
Street Type
Street address parsing with number and name extraction. Components:- Raw: Unmodified value
- Number: Street number
- Name: Street name
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneformat is valid/format is invalidincludes/does not includeis included in/is not included inmatches pattern/does not match pattern
"Main Street" (no number), "Asdf"
Field Examples: Address 1, Property Address
String Type
Universal text type with no format requirements. Components: None Operators:is equal to/is not equal tois blank/is not blankis obscene/is not obsceneincludes/does not includeis included in/is not included inmatches pattern/does not match pattern
Time Type
Natural language datetime parsing with flexible format support. Components:- Raw: Unmodified value
is equal to/is not equal tois less than/is less than or equal tois greater than/is greater than or equal tois blank/is not blankformat is valid/format is invalidis between/is not between
"garbage", {foo: 42}
Field Examples: Submission Time, Appointment Time
TrustedForm URL Type
Specialized type for TrustedForm certificate URLs with validation. Components:- Raw: Unmodified certificate URL
- Certificate ID: Certificate identifier
- Type: Certificate type (web/facebook/mobile/masked)
- Is Masked: Boolean for masked certificates
- Is Web: Boolean for web certificates
- Is Mobile: Boolean for mobile certificates
- Is Facebook: Boolean for Facebook Lead Ads certificates
- Must be HTTPS
- Must be from valid TrustedForm domain
- Certificate expires after 90 days
- Environment must match (production/staging)
is blank/is not blankformat is valid/format is invalid
- Non-HTTPS URLs
- Wrong domain
- Malformed certificate IDs
- Expired certificates (>90 days)
URL Type
General URL parsing with component extraction. Components:- Raw: Unmodified value
- Protocol: Protocol (http/https)
- Host: Host name
- Port: Port number if present
- Path: URL path
- Query: Query string
- Hash: Fragment/hash if present
is equal to/is not equal tois blank/is not blankis obscene/is not obsceneformat is valid/format is invalidincludes/does not includeis included in/is not included in
"", " ", "https://", "donkey://google.com"
Field Examples: Landing Page URL, Referrer URL
How Types Work in Practice
Automatic Normalization - No Manual Work Needed
Types automatically normalize data - you don’t need to:- Email: Automatically lowercased (never use
{{lowercase email}}) - Phone: Automatically normalized to 10 digits
- State: Automatically converted to 2-letter abbreviation
- Postal Code: Automatically formatted
- Names: Automatically trimmed of whitespace
Standardization in Action
Types accept chaotic input and produce consistent output: Phone Number Standardization:Validation Without Rejection
When types encounter invalid data:- Parsing continues: The system doesn’t stop
validis set to false: Marking the data quality issuerawpreserves input: Original data is never lost- Components may be empty: But the structure remains
- Flows continue: You decide how to handle invalid data
Component Usage Best Practices
Always prefer components over string manipulation: ✅ Good - Using Components:- Already parsed and validated
- More efficient (no runtime parsing)
- More reliable (handle edge cases)
- Clearer in intent
Special Type Behaviors
Maskable Types
Some types contain sensitive data that are automatically masked for security:- SSN: Social Security Numbers - all components masked
- DOB: Dates of birth - all components masked (including age and year)
- Credential: Passwords and API keys - entire value masked
- During Processing: LeadConduit can use the full, unmasked field value and all components while the lead is being processed
- After Processing: Values are written to the database as
*characters only - No Components Preserved: Unlike other types, maskable types do NOT preserve any components - everything is masked
- Permanent: The unmasked values and components exist only in memory during processing - they are gone forever after that
- What You See:
- UI displays: Masked values only, no components
- API responses: Masked values only, no components
- Event exports: Masked values only, no components
- Reports: No data available for these fields
Types with Special Validation
TrustedForm URL:- Must be HTTPS
- Must be from valid TrustedForm domain
- Certificate must not be older than 90 days
- Environment must match (production/staging)
- Detects free providers (Gmail, Yahoo, etc.)
- Identifies disposable/temporary emails
- Normalizes to lowercase
- Validates actual area codes and exchanges (not just format)
- Verifies area code/exchange combinations are real
- Only supports US/Canadian numbers currently
- Supports type hints (h=home, w=work, m=mobile)
- Detects toll-free numbers
- Handles extensions
- Recognizes masked numbers
Always-Valid Types
Some types never returnvalid: false:
- String: Any text is valid
- City: Any city name is valid
- State: Any locality is valid
- First/Last Name: Any name is valid
- Credential: Any credential is valid
Type Selection Guide
When to Use Each Type
String: Default for text without specific format requirements- Custom fields
- Comments
- Descriptions
- Generic text data
- Prices
- Quantities
- Scores
- IDs
- Opt-ins
- Preferences
- Flags
- Consent
- Primary contact
- Marketing emails
- Account emails
- Contact numbers
- SMS numbers
- Call tracking
- Submission dates
- Appointment times
- Deadlines
- Age verification
- Age-based decisions
- Demographics
- Geographic targeting
- Shipping addresses
- Tax determination
- Credit checks
- Identity verification
- Compliance requirements
Common Patterns
Multi-Format Input Handling
Types gracefully handle various input formats:Progressive Enhancement
Types extract as much value as possible:Business Logic Enablement
Types enable sophisticated rules without complexity:Integration with LeadConduit
Field Type Assignment
In flow configuration:- Each field can be assigned a type
- Types are applied during lead processing
- Parsed data replaces raw input
- Components become available immediately
Rule Evaluation
Types integrate with the rules engine:- Use
validproperty in conditions - Access components directly
- Compare normalized values
- Apply type-specific operators
Data Flow
- Input arrives in various formats
- Types parse based on field configuration
- Normalization prepares for storage
- Components available in rules/mappings
- Storage uses normalized format
- Delivery can use any component