OSPRY Docs

Exports and data

Contact field reference

Who this is for: Anyone who wants to know exactly which fields OSPRY holds about a contact and what each one means · Where: Portal -> Profile -> People, Companies and Contacts

Category: Exports and data · Version: 1.0 · Date: 2026-09-04 · Status: Active

GENERATED FILE. DO NOT EDIT BY HAND.

Regenerate with pnpm --filter @legion/field-registry exec tsx src/generate.ts.

What this does

This is the plain-language list of every field OSPRY can show you about a person, a company or a contact. Use it to decide what to map into your CRM, what to expect in an export, and what a webhook body will contain.

How to read the table

  • key is the stable name of the field. It never changes once published.
  • label is what the portal calls it on screen.
  • description is what the value means.
  • type is the base type of the value. A field with a fixed list of values is shown simply as enum.
  • example is one representative value.
  • where_it_appears lists the places the field can show up for you.

Every value is optional unless your plan and settings say otherwise. When OSPRY does not have a value for a field, the field is still named in the payload, with a short reason, so you always know whether a blank means "we looked and there is nothing" or "this was not requested".

Fields

61 fields.

key label description type example where_it_appears
company.city City The visitor location shown on the company-tier card. text Columbus Profile page, List page, CSV export, Webhook, API
company.domain Company domain The registrable domain. Half of the row unique key, so the upsert never overwrites it. text northwindlogistics.com Profile page, List page, Search, CSV export, Webhook, API
company.employee_count Company size The employee-count band as delivered by the resolving provider. text 201-500 Profile page, List page, CSV export, Webhook, API
company.est_revenue Estimated revenue The revenue band as delivered by the resolving provider. text $50M-$100M Profile page, List page, CSV export, Webhook, API
company.first_seen_at First seen When this company was first resolved for the tenant. timestamp 2026-08-14T13:02:44Z Profile page, Webhook, API
company.id Company id The tenant-scoped identifier of the resolved company record. uuid 2b7f4c11-9a10-4f2e-8c31-77c4b9d1e004 Search, Webhook, API
company.industry Industry The industry band the resolving provider reports for the organization. text Transportation and Logistics Profile page, List page, Search, CSV export, Webhook, API
company.last_seen_at Last seen When this company was last re-resolved. Refreshed on every upsert conflict. timestamp 2026-09-04T18:59:02Z Profile page, List page, Webhook, API
company.linkedin_url LinkedIn URL The organization's LinkedIn page. Emitted in the export for a company record. url https://www.linkedin.com/company/northwind-logistics Profile page, List page, CSV export, Webhook, API
company.name Company name The resolved organization name. The only non-nullable business column on the table. text Northwind Logistics Profile page, List page, Search, CSV export, Webhook, API
company.resolved_by_provider Resolved by Which vendor resolved this company. A per-ROW insert-only stamp, masked to a tier label on every customer surface. text primary Profile page, Webhook, API
company.state State The visitor region shown on the company-tier card. text OH Profile page, List page, CSV export, Webhook, API
company.website Website The company's website URL as delivered, kept alongside the normalized domain. url https://northwindlogistics.com Profile page, List page, Search, Webhook, API
contact.company Company name The employer name on the roster row. company is the canonical inbound key; the HighLevel portal lane still emits companyName, which is the recorded three-lane defect this pull request carries forward. text Northwind Logistics Profile page, List page, Webhook, API
contact.email Email The contact email as ingested, stored case-insensitively. NULL when only the hash is known. email dana.whitfield@northwindlogistics.com Profile page, List page, Search, Webhook, API
contact.first_name First name The contact's given name as the upstream source supplied it. text Dana Profile page, List page, Search, Webhook, API
contact.id Contact id The tenant-scoped identifier of the CRM roster contact. uuid 4b7c2d19-33a8-42ce-9f01-6d5a8e7b0c34 Search, Webhook, API
contact.last_name Last name The contact's family name as the upstream source supplied it. text Whitfield Profile page, List page, Search, Webhook, API
contact.phone Phone The contact phone number, which is what gives the inbound catalog key phone a writable landing instead of a reference-only one. Added by this pull request and carrying no production writer until the inbound landing ships, so it holds no production data today. Never emitted without its DNC state, which travels inside the phone wire shape. phone +1 614 555 0142 Profile page, Webhook, API
contact.title Job title The contact's job title as the upstream source supplied it. text VP of Demand Generation Profile page, List page, Webhook, API
person.business_email Business email The person's work email address, stored case-insensitively. email dana.whitfield@northwindlogistics.com Profile page, List page, Search, CSV export, Webhook, API
person.city City The coarse business location the resolving provider reports. It is not the home address, which is a tier-3 trait. text Columbus Profile page, List page, CSV export, Webhook, API
person.company_domain Company domain The registrable domain of the person's employer. text northwindlogistics.com Profile page, List page, CSV export, Webhook, API
person.company_name Company name The denormalized name of the person's employer. text Northwind Logistics Profile page, List page, Search, CSV export, Webhook, API
person.employee_count Company size The employee-count band of the person's employer, as delivered by the provider. text 201-500 Profile page, List page, CSV export, Webhook, API
person.est_revenue Estimated revenue The revenue band of the person's employer, as delivered by the provider. text $50M-$100M Profile page, List page, CSV export, Webhook, API
person.first_name First name The person's given name. text Dana Profile page, List page, Search, Webhook, API
person.first_seen_at First seen When this person was first resolved for the tenant. timestamp 2026-08-14T13:02:44Z Profile page, Webhook, API
person.full_name Full name The person's full name, joined from the first and last name at ingest. text Dana Whitfield Profile page, List page, Search, CSV export, Webhook, API
person.id Person id The tenant-scoped identifier of the resolved person record. uuid 9f2c1e4a-7b30-4a51-9d8e-2f6b1c0d5e77 Search, Webhook, API
person.industry Industry The industry of the person's employer, as the resolving provider bands it. text Transportation and Logistics Profile page, List page, CSV export, Webhook, API
person.last_name Last name The person's family name. text Whitfield Profile page, List page, Search, Webhook, API
person.last_seen_at Last seen When this person was last re-resolved. Refreshed on every provider upsert. timestamp 2026-09-04T18:59:02Z Profile page, List page, Webhook, API
person.linkedin_url LinkedIn URL The person's LinkedIn profile URL. Half of the row's unique key, so the provider upsert never overwrites it. url https://www.linkedin.com/in/danawhitfield Profile page, List page, CSV export, Webhook, API
person.name_source Name source Which class of writer last set the name columns. The ADR-031 ladder ranks form above manual above enrichment above provider, and NULL ranks as provider. enum provider Profile page, Webhook, API
person.page_hit.path Path The normalized path of the page the visitor loaded. text /pricing List page
person.page_hit.referrer Referrer The referring URL for the page hit. url https://www.google.com/ List page
person.page_hit.seen_at Seen at When the page hit happened. timestamp 2026-09-04T18:59:02Z List page
person.page_hit.utm_campaign UTM campaign The campaign name parsed from the page URL. This is the live UTM value the profile export column reads once the export joins the page-hit stream. text q3-logistics List page, CSV export
person.page_hit.utm_source UTM source The campaign source parsed from the page URL. Part of the only populated UTM set in the product. text google List page
person.phone Phone A phone number captured from a submitted first-party form. Never emitted without its DNC state, which travels in the phone wire shape. phone +1 614 555 0142 Profile page, Webhook, API
person.postal_code Postal code The coarse postal code the resolving provider reports for the business location. text 43215 Profile page, Webhook, API
person.provider_traits.attributes Provider traits The demographic, household and financial trait list the secondary resolver returns, each entry carrying a key, a label, a value and a group. Tier 3: delivered only when the customer enables the sensitive_traits tier on a connector, and shown on the profile page as present or missing. json age_range = 45-54 (demographics) Profile page, Webhook
person.provider_traits.emails Personal emails The multi-valued personal email list the secondary resolver returns, each entry carrying whether the vendor verified it. The verified set is preferred and both sets are surfaced, deduplicated. email d.whitfield@example.com (verified) Profile page, Webhook, API
person.provider_traits.phones Phones The multi-valued, DNC-aligned phone list the secondary resolver returns. Each entry carries its number, its kind, its do-not-call flag, whether that flag was actually supplied, and the derived callable value; an entry whose callability is unknown is never asserted callable. phone +1 614 555 0142 (mobile, callable) Profile page, Webhook, API
person.resolved_by_provider Resolved by Which vendor resolved this person. A per-ROW insert-only stamp, never per-field provenance, and masked to a tier label on every customer surface. text secondary Profile page, Webhook, API
person.seniority Seniority The seniority band both providers return. Elected by the resolver today and landed by the winner writer this pull request ships. text VP Profile page, CSV export, Webhook, API
person.state State The coarse business region the resolving provider reports. text OH Profile page, List page, CSV export, Webhook, API
person.title Job title The person's job title at the resolved company. text VP of Demand Generation Profile page, List page, Search, CSV export, Webhook, API
person.trait.age_range Age range The demographic age band the secondary resolver returns, written into the attribute list under the demographics group. text 45-54 Profile page, Webhook
person.trait.gender Gender The demographic gender signal the secondary resolver returns, written into the attribute list under the demographics group. text F Profile page, Webhook
person.trait.homeowner Homeowner The household home-ownership signal the secondary resolver returns, written into the attribute list under the household group. text Yes Profile page, Webhook
person.trait.income_range Income range The financial income band the secondary resolver returns, written into the attribute list under the financial group. text $150k-$200k Profile page, Webhook
person.trait.married Married The household marital-status signal the secondary resolver returns, written into the attribute list under the household group. text Married Profile page, Webhook
person.trait.net_worth Net worth The financial net-worth band the secondary resolver returns, written into the attribute list under the financial group. text $500k-$1M Profile page, Webhook
person.trait.personal_address Personal address The home street address the secondary resolver can return. The vendor accepts it as an input identifier but the input record type declares no property for it, so this repository cannot send it, and the trait builder writes no attribute for it either. text 118 Maple Court Profile page, Webhook
person.trait.personal_city Personal city The home city the secondary resolver can return. Vendor-accepted as an input identifier, unreachable from this repository, and written into no attribute list. text Dublin Profile page, Webhook
person.trait.personal_state Personal state The home state the secondary resolver can return. Vendor-accepted as an input identifier, unreachable from this repository, and written into no attribute list. text OH Profile page, Webhook
person.trait.personal_zip Personal ZIP The home postal code the secondary resolver can return. Vendor-accepted as an input identifier, unreachable from this repository, and written into no attribute list. text 43017 Profile page, Webhook
person.visit.referrer Referrer The referring URL for the visit. The profile export emits the most recent non-null value per profile. url https://www.google.com/ CSV export
person.visit.seen_at Seen at When the visit happened, as delivered by the provider. The profile export aggregates it into the last-seen and page-count columns. timestamp 2026-09-04T18:59:02Z CSV export

Your own custom fields

Fields you define yourself are not in the table above, because their names, labels and types are yours rather than ours. They travel alongside the standard fields in a custom_fields list, and each entry carries a key, a label, a type, the value, where the value came from, and when it was last filled in.

Phone numbers and email addresses

Phone numbers and extra email addresses travel as lists rather than single values, because a contact can have more than one of each. A phone entry carries the number, what kind of number it is, whether it is on a do-not-call list, whether that status is known at all, and a single callable flag that is true only when the status is known and the number is not on a list. A number whose callable is false is never sent.

Tips and FAQs

  • A blank is never silent. A field with no value is still named, with one of five short reasons, so two contacts always produce the same shape.
  • The list only grows. Adding a field advances the dated contract version. Removing or renaming one takes a new version with a 90-day overlap.
  • Machine-readable versions. The same contract is published as a JSON Schema document you can generate a client from, and as an OpenAPI document.