Objects

Objects

Outrun standardizes all data into four universal object types that represent the fundamental building blocks of business data. These objects enable seamless data synchronization across different systems regardless of their native data formats.

🧩 Universal Data Model

Rather than forcing complex custom mappings, Outrun uses four standardized objects that represent how businesses naturally think about their data - making integration intuitive and reliable.

The Four Object Types

πŸ‘€ People

Individual humans in your business ecosystem

  • β€’ Contacts, Leads, Users
  • β€’ Customers, Prospects
  • β€’ Team Members, Authors
  • β€’ Anyone with personal identity

🏒 Organizations

Companies and business entities

  • β€’ Companies, Accounts
  • β€’ Customers, Prospects
  • β€’ Partners, Vendors
  • β€’ Any business entity

πŸ“Š Facts

Measurable data points and metrics

  • β€’ Analytics data, KPIs
  • β€’ Performance metrics
  • β€’ Search console data
  • β€’ Quantifiable measurements

πŸ”— Relationships

Connections between other objects

  • β€’ Person-to-Organization links
  • β€’ Hierarchical structures
  • β€’ Business relationships
  • β€’ Association mappings

People Objects

People represent individual humans across all your systems, providing a unified view of contacts, leads, users, and team members.

Core Schema

{
  "type": "Person",
  "email": "john@acme.com",
  "firstName": "John",
  "lastName": "Doe",
  "fullName": "John Doe",
  "phone": "+1-555-0123",
  "jobTitle": "Marketing Manager",
  "company": "Acme Corp",
  "department": "Marketing",
  "location": "San Francisco, CA",
  "linkedInUrl": "https://linkedin.com/in/johndoe",
  "twitterHandle": "@johndoe",
  "website": "https://johndoe.com",
  "tags": ["customer", "enterprise"],
  "customFields": {
    "leadScore": 85,
    "industry": "Technology"
  },
  "sourceId": "hubspot_abc123",
  "sourceObjectId": "12345",
  "sourceObjectType": "contact",
  "qualityScore": 0.95,
  "createdAt": "2024-01-15T10:30:00Z",
  "updatedAt": "2024-01-15T14:22:00Z"
}

Source System Mappings

HubSpot β†’ People

// HubSpot Contact
{
  "vid": 12345,
  "properties": {
    "email": "john@acme.com",
    "firstname": "John",
    "lastname": "Doe",
    "jobtitle": "Marketing Manager",
    "company": "Acme Corp",
    "phone": "+1-555-0123"
  }
}

// Becomes Person Object
{
  "type": "Person",
  "email": "john@acme.com",
  "firstName": "John",
  "lastName": "Doe",
  "jobTitle": "Marketing Manager",
  "company": "Acme Corp",
  "phone": "+1-555-0123"
}

Salesforce β†’ People

// Salesforce Lead
{
  "Id": "00Q000000123456",
  "Email": "jane@startup.com",
  "FirstName": "Jane",
  "LastName": "Smith",
  "Company": "Startup Inc",
  "Title": "CEO"
}

// Becomes Person Object
{
  "type": "Person",
  "email": "jane@startup.com",
  "firstName": "Jane",
  "lastName": "Smith",
  "company": "Startup Inc",
  "jobTitle": "CEO"
}

Zoho CRM β†’ People

// Zoho Contact
{
  "Email": "mike@enterprise.com",
  "First_Name": "Mike",
  "Last_Name": "Johnson",
  "Account_Name": "Enterprise Solutions",
  "Title": "VP Sales"
}

// Becomes Person Object
{
  "type": "Person",
  "email": "mike@enterprise.com",
  "firstName": "Mike",
  "lastName": "Johnson",
  "company": "Enterprise Solutions",
  "jobTitle": "VP Sales"
}

Destination System Mappings

People β†’ HubSpot Contacts

// Person Object
{
  "type": "Person",
  "email": "sarah@newco.com",
  "firstName": "Sarah",
  "lastName": "Wilson",
  "jobTitle": "Product Manager"
}

// Becomes HubSpot Contact
{
  "properties": {
    "email": "sarah@newco.com",
    "firstname": "Sarah",
    "lastname": "Wilson",
    "jobtitle": "Product Manager",
    "hs_lead_status": "NEW",
    "lifecyclestage": "lead"
  }
}

People β†’ Salesforce Leads/Contacts

// Person Object (New Lead)
{
  "type": "Person",
  "email": "alex@prospect.com",
  "firstName": "Alex",
  "lastName": "Chen",
  "company": "Prospect Corp"
}

// Becomes Salesforce Lead
{
  "Email": "alex@prospect.com",
  "FirstName": "Alex",
  "LastName": "Chen",
  "Company": "Prospect Corp",
  "LeadSource": "Outrun",
  "Status": "Open - Not Contacted"
}

Organizations Objects

Organizations represent companies, accounts, and business entities across all your systems.

Core Schema

{
  "type": "Organization",
  "name": "Acme Corporation",
  "domain": "acme.com",
  "website": "https://acme.com",
  "industry": "Technology",
  "size": "500-1000 employees",
  "revenue": 50000000,
  "location": "San Francisco, CA",
  "address": {
    "street": "123 Market Street",
    "city": "San Francisco",
    "state": "CA",
    "postalCode": "94105",
    "country": "United States"
  },
  "phone": "+1-555-0456",
  "description": "Leading technology solutions provider",
  "foundedYear": 2010,
  "tags": ["enterprise", "technology"],
  "customFields": {
    "accountTier": "Enterprise",
    "contractValue": 250000
  },
  "sourceId": "salesforce_def456",
  "sourceObjectId": "001000000234567",
  "sourceObjectType": "Account",
  "qualityScore": 0.92,
  "createdAt": "2024-01-15T10:30:00Z",
  "updatedAt": "2024-01-15T16:45:00Z"
}

Source System Mappings

HubSpot β†’ Organizations

// HubSpot Company
{
  "companyId": 67890,
  "properties": {
    "name": "Tech Innovations Ltd",
    "domain": "techinnovations.com",
    "industry": "Software",
    "numberofemployees": "250",
    "annualrevenue": "25000000"
  }
}

// Becomes Organization Object
{
  "type": "Organization",
  "name": "Tech Innovations Ltd",
  "domain": "techinnovations.com",
  "industry": "Software",
  "size": "250",
  "revenue": 25000000
}

Salesforce β†’ Organizations

// Salesforce Account
{
  "Id": "001000000345678",
  "Name": "Global Enterprises Inc",
  "Website": "https://globalenterprises.com",
  "Industry": "Manufacturing",
  "NumberOfEmployees": 5000,
  "AnnualRevenue": 500000000
}

// Becomes Organization Object
{
  "type": "Organization",
  "name": "Global Enterprises Inc",
  "website": "https://globalenterprises.com",
  "industry": "Manufacturing",
  "size": "5000",
  "revenue": 500000000
}

Destination System Mappings

Organizations β†’ Salesforce Accounts

// Organization Object
{
  "type": "Organization",
  "name": "Future Systems Corp",
  "website": "https://futuresystems.com",
  "industry": "Technology",
  "revenue": 75000000
}

// Becomes Salesforce Account
{
  "Name": "Future Systems Corp",
  "Website": "https://futuresystems.com",
  "Industry": "Technology",
  "AnnualRevenue": 75000000,
  "Type": "Prospect",
  "AccountSource": "Outrun"
}

Facts Objects

Facts represent measurable data points, metrics, and analytics from various systems.

Core Schema

{
  "type": "Facts",
  "metric": "organic_clicks",
  "value": 1250,
  "unit": "clicks",
  "dimension": {
    "query": "data synchronization",
    "page": "/products/data-sync",
    "country": "United States",
    "device": "desktop"
  },
  "timestamp": "2024-01-15T00:00:00Z",
  "period": "daily",
  "source": "Google Search Console",
  "category": "search_performance",
  "tags": ["organic", "search", "traffic"],
  "metadata": {
    "position": 3.2,
    "impressions": 5420,
    "ctr": 0.23
  },
  "sourceId": "gsc_ghi789",
  "sourceObjectId": "query_12345",
  "sourceObjectType": "search_analytics",
  "createdAt": "2024-01-15T06:00:00Z"
}

Source System Mappings

Google Search Console β†’ Facts

// GSC Search Analytics
{
  "keys": ["data synchronization"],
  "clicks": 1250,
  "impressions": 5420,
  "ctr": 0.23,
  "position": 3.2,
  "date": "2024-01-15"
}

// Becomes Multiple Facts Objects
[
  {
    "type": "Facts",
    "metric": "organic_clicks",
    "value": 1250,
    "dimension": {"query": "data synchronization"},
    "timestamp": "2024-01-15T00:00:00Z"
  },
  {
    "type": "Facts",
    "metric": "organic_impressions", 
    "value": 5420,
    "dimension": {"query": "data synchronization"},
    "timestamp": "2024-01-15T00:00:00Z"
  }
]

HubSpot β†’ Facts (Analytics)

// HubSpot Deal
{
  "dealId": 98765,
  "properties": {
    "amount": 50000,
    "dealstage": "closedwon",
    "closedate": "2024-01-15",
    "dealtype": "New Business"
  }
}

// Becomes Facts Object
{
  "type": "Facts",
  "metric": "deal_value",
  "value": 50000,
  "unit": "USD",
  "dimension": {
    "stage": "closedwon",
    "type": "New Business"
  },
  "timestamp": "2024-01-15T00:00:00Z",
  "category": "sales_performance"
}

Destination System Mappings

Facts are typically used for analytics and reporting rather than being written back to operational systems. However, they can be delivered to:

  • Analytics Platforms: Tableau, Power BI, Looker
  • Data Warehouses: Snowflake, BigQuery, Redshift
  • Business Intelligence Tools: Custom dashboards and reports

Relationships Objects

Relationships represent connections between People and Organizations, maintaining the context of how entities are related.

Core Schema

{
  "type": "Relationships",
  "fromType": "Person",
  "fromId": "john@acme.com",
  "toType": "Organization", 
  "toId": "acme.com",
  "relationshipType": "employee",
  "strength": 0.95,
  "verified": true,
  "startDate": "2022-03-15T00:00:00Z",
  "endDate": null,
  "metadata": {
    "department": "Marketing",
    "role": "Manager",
    "reportingStructure": "direct"
  },
  "sourceId": "hubspot_abc123",
  "sourceObjectId": "association_456789",
  "sourceObjectType": "contact_to_company",
  "createdAt": "2024-01-15T10:30:00Z",
  "updatedAt": "2024-01-15T10:30:00Z"
}

Source System Mappings

HubSpot β†’ Relationships

// HubSpot Contact-Company Association
{
  "contactId": 12345,
  "companyId": 67890,
  "associationType": "CONTACT_TO_COMPANY"
}

// Plus Contact Data
{
  "email": "john@acme.com",
  "jobtitle": "Marketing Manager"
}

// Plus Company Data  
{
  "domain": "acme.com",
  "name": "Acme Corp"
}

// Becomes Relationship Object
{
  "type": "Relationships",
  "fromType": "Person",
  "fromId": "john@acme.com",
  "toType": "Organization",
  "toId": "acme.com", 
  "relationshipType": "employee",
  "metadata": {
    "jobTitle": "Marketing Manager"
  }
}

Salesforce β†’ Relationships

// Salesforce Contact with Account
{
  "Contact": {
    "Id": "003000000123456",
    "Email": "sarah@enterprise.com",
    "AccountId": "001000000234567"
  },
  "Account": {
    "Id": "001000000234567", 
    "Name": "Enterprise Solutions",
    "Website": "enterprise.com"
  }
}

// Becomes Relationship Object
{
  "type": "Relationships",
  "fromType": "Person",
  "fromId": "sarah@enterprise.com",
  "toType": "Organization",
  "toId": "enterprise.com",
  "relationshipType": "contact",
  "verified": true
}

Relationship Types

Common Relationship Types

  • employee: Person works for Organization
  • contact: Person is a contact at Organization
  • customer: Person/Organization is a customer
  • prospect: Person/Organization is a potential customer
  • partner: Business partnership relationship
  • vendor: Supplier relationship
  • consultant: Professional services relationship

Relationship Strength

Relationships include a strength score (0-1) indicating confidence:

  • 1.0: Explicitly defined in source system
  • 0.8-0.9: Strong indicators (email domain match, explicit association)
  • 0.6-0.7: Moderate indicators (inferred from data patterns)
  • 0.3-0.5: Weak indicators (possible connection)
  • 0.0-0.2: Very uncertain connection

Object Interactions

Cross-Object Dependencies

People ↔ Organizations

// Person references Organization
{
  "type": "Person",
  "email": "john@acme.com",
  "company": "Acme Corp"  // References Organization
}

// Organization contains People
{
  "type": "Organization", 
  "domain": "acme.com",
  "employees": ["john@acme.com", "jane@acme.com"]  // References People
}

// Explicit Relationship
{
  "type": "Relationships",
  "fromType": "Person",
  "fromId": "john@acme.com",
  "toType": "Organization",
  "toId": "acme.com",
  "relationshipType": "employee"
}

Facts β†’ People/Organizations

// Facts can reference People or Organizations
{
  "type": "Facts",
  "metric": "deal_value",
  "value": 50000,
  "dimension": {
    "person": "john@acme.com",      // References Person
    "organization": "acme.com",     // References Organization
    "dealStage": "closed-won"
  }
}

Data Flow Examples

Complete Customer Record

// 1. Person Object
{
  "type": "Person",
  "email": "ceo@startup.com",
  "firstName": "Alex",
  "lastName": "Chen",
  "jobTitle": "CEO"
}

// 2. Organization Object
{
  "type": "Organization",
  "name": "Startup Inc",
  "domain": "startup.com",
  "industry": "Technology"
}

// 3. Relationship Object
{
  "type": "Relationships",
  "fromType": "Person",
  "fromId": "ceo@startup.com",
  "toType": "Organization", 
  "toId": "startup.com",
  "relationshipType": "employee"
}

// 4. Facts Objects
[
  {
    "type": "Facts",
    "metric": "deal_value",
    "value": 100000,
    "dimension": {
      "person": "ceo@startup.com",
      "organization": "startup.com"
    }
  },
  {
    "type": "Facts",
    "metric": "website_visits",
    "value": 1250,
    "dimension": {
      "organization": "startup.com",
      "source": "organic"
    }
  }
]

Object Validation & Quality

Data Quality Checks

  • Email Validation: Valid email format for People
  • Domain Validation: Valid domain format for Organizations
  • Relationship Consistency: Valid references between objects
  • Metric Validation: Appropriate data types for Facts values

Quality Scoring Factors

  • Completeness: Percentage of required fields populated
  • Accuracy: Validation against known patterns
  • Consistency: Agreement across multiple sources
  • Freshness: How recently the data was updated

Duplicate Detection

  • People: Email-based deduplication with name similarity
  • Organizations: Domain-based with name fuzzy matching
  • Facts: Metric + dimension + timestamp uniqueness
  • Relationships: From/To object pair uniqueness

Best Practices

Object Design

  1. Use Standard Fields: Leverage common fields for better compatibility
  2. Custom Fields: Use customFields object for source-specific data
  3. Consistent Naming: Follow naming conventions across objects
  4. Quality Metadata: Include quality scores and validation results

Relationship Management

  1. Explicit Relationships: Create Relationship objects for important connections
  2. Strength Scoring: Use appropriate strength scores for confidence levels
  3. Bidirectional Links: Maintain references in both directions when needed
  4. Lifecycle Management: Track relationship start/end dates

Performance Optimization

  1. Indexing Strategy: Index on primary identifiers (email, domain)
  2. Batch Processing: Process related objects together
  3. Caching: Cache frequently accessed object relationships
  4. Incremental Updates: Only sync changed objects

Next Steps

πŸ”„ Learn About Standardization

Understand how raw data transforms into these standardized objects.

Standardization Process β†’

πŸ“š Explore Sources

See how different sources map to these object types.

View Sources β†’

Understanding these four object types is key to leveraging Outrun's standardization power - they provide the universal language that enables seamless data synchronization across any system.