qbo.Contact

Overview

The Contact module is QBO's Customer Relationship Management (CRM) module. It comprises the following classes:
  • Contact: represents a person, including name and address
  • ContactMethod: representing a phone, email, instance messaging address, or other method of communicating with a Contact
  • ContactTemplate: templates a Contact, implementing the ITemplate interface 
  • Organization: represents a company, corporation, or other similar entity
  • Court: represents a judicial court
  • Geography: represents a geographic area (County, State, County, City, Postal code, or Latitude / Longitude with a radius
  • ProfessionalLicense: represents a license or certification of a Contact (e.g. a driver's license, attorney bar number, etc.)
  • State: 'nuff said

Contact Templates

In most uses cases, power users can classify Contacts using either ContactType or tags (see below). However, there are three use cases where one should consider creating a ContactTemplate, and populating this field when creating Contacts:
  1. If you need to restrict access to certain Contact records based on role (e.g. only allow the Accounting role see Contacts mapped to a 'Billing Contact' template)
  2. If you wish to automatically geocode some contacts but not others
  3. If you wish to automatically link contacts by social security number

Phones and Emails: Contact Methods

Rather than storing HomePhone, WorkPhone, CellPhone, Fax, WorkEmail, HomeEmail, Website, LinkedInProfile and such in the Contact table, QBO offer use of the ContactMethod table instead. This allows for an extensible, unlimited number of phone numbers, emails, and such to be associated with a Contact.

From Design > Configuration > Modules > ContactMethod, you can create new Types such as "Phone", "Email", "WorkPhone", etc.  Creating these types will:
  • populate the ContactMethodType dropdown list, and
  • extend Contact/Save to handle the type as a field 
For example, if you have no Contact Method Types defined, the following call will ignore Email:

Contact/Save?FirstName=John&LastName=Doe&Email=jdoe@example.com

If you have created a Contact Method Type called 'Email', the same REST call will populate a ContactMethod row will Type = 'Email' and Value = 'jdoe@example.com'.

If you create Contact Method Types for Fax, HomePhone, and Website, you can then call:

Contact/Save?FirstName=John&LastName=Doe&Email=jdoe@example.com&Fax=800.555.1212&HomePhone=800.555.2323&Website=www.google.com

Labels (aka Tagging, Collections)

The Contact module includes classes that support 'labels', which is the ability to tag or categorize records with an unlimited number of attributes. Labels examples include:
  • Title Companies: a group of Organizations that perform title work
  • Foreclosure Attorneys: a group of Organizations that manage foreclosures
  • Team: a group of users representing a team
  • High Risk Loans: a group of loans that are considered high risk
  • Preferred Brokers: a group of real estate brokers that are preferred by a client
Most QBO classes include a 'Type' property (e.g. Loan.LoanType, Organization.OrganizationType, Contact.ContactType), any given record may have only one type defined. However, any QBO record may have an unlimited number of tags applied to it. This structure was born when early QBO clients attempted to classify Organization.OrganizationType as 'Title Company', 'Field Services Company', and 'Recording Company', only to realize that companies like First American can be all three. Rather than creating three Organization rows, a single 'First American' Organization row may have three tags: 'Title', 'Field Services', and 'Recording'. When a search is performed, the following will produce a list of Field Services companies:

Organization.ashx/Search?Tag=Field Services

Most QBO search panels support the ability to select multiple records and 'tag' them with an existing or new tag. This action creates a Collection (if the tag is new), and a CollectionMember row for each selected item mapping it to a Collection.

Tagging comprises the following classes:
  • Collection: a 'label' or 'tag' representing some sort of collection of items
  • CollectionMember: maps an object to a Collection (this is the 'label')
  • CollectionTemplate: defines the characteristics of a Collection
Subpages (1): Geocoding
Comments