The Contact module is QBO's Customer Relationship Management (CRM) module. It comprises the following classes:
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:
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:
For example, if you have no Contact Method Types defined, the following call will ignore Email:
If you have created a Contact Method Type called 'Email', the same REST call will populate a ContactMethod row will Type = 'Email' and Value = 'email@example.com'.
If you create Contact Method Types for Fax, HomePhone, and Website, you can then call:
Additionally, the Contact module includes classes that support 'tagging', which is the ability to tag or categorize records with an unlimited number of attributes. Tag examples include:
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:
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: