Skip to content

Contacts & Organizations

Verified against source (13)

  • contact/Contact.cs
  • contact/Contact.Fields.cs
  • contact/Organization.cs
  • contact/ContactMethod.Fields.cs
  • contact/ContactMethodCollection.cs
  • contact/ContactTemplate.Fields.cs
  • contact/ProfessionalLicense.Fields.cs
  • contact/Collection.Fields.cs
  • Config/Contact.config
  • Config/Organization.config
  • Config/Collection.config
  • contact/app.config
  • forms-proxy/mapping.mjs

People are Contact records and companies are Organization records. Operations follow the standard QBO route pattern:

  • /api/contact/{operation} and /api/organization/{operation} run synchronously on the web server.
  • /api/contact/queue/{operation} queues the operation for an app server. Use it for bulk address validation and compliance checks.
Type Purpose
Contact A person or address, bound to a parent through Object / ObjectID. Fields include FirstName, MiddleName, LastName, Prefix, Suffix, Company, Title, Address, City, State, PostalCode, Country, BirthDate, SpokenLanguage, Latitude, Longitude, ContactTemplateID, and ParentContactID (for aliases and related contacts).
Organization A company. Derives from Contact (so it shares address fields and methods), adds Organization, and is never re-parented to the record it’s saved with.
ContactMethod MethodType, ContactValue, PrimaryMethod, ValidStart, ValidEnd, VerifiedSource, on a ContactID.
ContactTemplate A contact role: AppliesTo, Repeatable, ExtranetEnabled, CustomStatusList, CustomTypeList.
ProfessionalLicense ProfessionalLicenseType, Effective, Expires, VerificationType, VerifiedDate, VerifiedBy, AttachmentID, GeographyID, on an Object / ObjectID.
Collection / CollectionMember A named group (SourceObject, CollectionTemplateID) and its members (SourceObjectID, EffectiveDate, ExpiresDate, Priority).
POST /api/contact/save?Object=Organization&ObjectID=12&Template=Primary Contact&FirstName=Maria&LastName=Lopez&Email=maria@example.com&Phone=555-0100

Any parameter named after a contact method type (Email, Phone, or a type you’ve added) creates that method on the contact. With the default ContactMethodUniqueByType setting, a contact has one method per type: saving a new value updates the existing method, and saving an empty value removes it.

Contacts (and other children, such as messages) can be created as a nested collection when saving a parent, using {Parent}_Contacts_{index}_{Field}. This call starts a workflow, creates its parent organization, and adds the organization’s first contact:

POST /api/decision/save?Template=Website Inquiry&Organization_Organization=Example Co&Organization_Email=info@example.com&Organization_Contacts_0_FirstName=Maria&Organization_Contacts_0_LastName=Lopez&Organization_Contacts_0_Email=maria@example.com&Organization_Contacts_0_Title=Operations Director&Organization_Contacts_0_Phone=555-0100

Increment the index (_1_, _2_) for more contacts.

GET /api/contact/normalize?ID=101,102&Confidence=90
GET /api/contact/geocode?Address=100 Main St Apt 4&City=Springfield&State=IL
GET /api/contact/addressparts?Address=100 Main St, Springfield, IL 62701
Operation What it does
normalize Geocodes each contact in ID and, if the best match meets Confidence (default 80), saves the corrected address, Latitude, Longitude, VerifiedSource, and VerifiedDate. Optional Provider limits which mapping providers are tried.
geocode Returns candidate addresses without saving. Requires Address plus PostalCode, or City and State.
addressparts Splits a one-line address into street, city, state, and postal code.

For large batches, use /api/contact/queue/normalize.

GET /api/contact/matchnames?FirstName=Jon A. Smith&SecondName=Smith, Jonathan
GET /api/contact/isnamecontained?Name=Maria Lopez&ContainedIn=Maria Lopez and Daniel Lopez&Confidence=90

matchnames returns a Confidence from 0 to 100 that two names are the same entity. isnamecontained returns whether one name appears within another (confidence defaults to 100).

Operation What it does
unmaskssn Returns USSSN for the contacts in ID. Requires the UnmaskSSN permission and writes a SecurityLog entry per contact. Elsewhere, USSSN is returned masked as XXX-XX- plus USSSN4.
scrasearch Queues a military status check for the contacts in ID and sets SCRAStatus to Pending. Results update SCRAStatus, SCRASource, SCRAStatusAsOf, and related fields. See Military Search.
Operation What it does
/api/organization/save Creates or updates an organization. Method-type parameters (Email, Phone) work as they do for contacts.
/api/organization/register Creates an organization and its first user from an account that may be anonymous, optionally starts a process, and emails the user to confirm the account.
/api/organization/registeruser Registers a new user against an existing organization (identified by a Lookup code) and sends a notification.
/api/organization/searchbyperson Lists the organizations the current user belongs to.
GET /api/collection/memberlist?Collection=Escalations Team

memberlist accepts CollectionID or Collection (the name).