Contact
A contact of a customer or vendor.
type Contact {
contactName: String
contactTitle: String
createdAt: DateTime!
deletedAt: DateTime
deletedBy: String
department: String
enteredBy: String!
firstName: String
id: ID!
isActive: Boolean!
isDefault: Boolean!
label: String
lastName: String
metadata: JSON
notes: String
organizationId: String!
partnerId: String!
preferredTime: String
priority: String!
referenceId: String
timeZone: String
type: String!
updatedAt: DateTime!
updatedBy: String!
userId: ID
value: String!
}
Fields
Contact.contactName ● String scalar
Full display name, kept as First Last.
Contact.contactTitle ● String scalar
The person's job title.
Contact.createdAt ● DateTime! non-null scalar
When the record was created.
Contact.deletedAt ● DateTime scalar
When the record was deleted. Empty while the record is live.
Contact.deletedBy ● String scalar
The ID of the user who deleted the record.
Contact.department ● String scalar
The person's department.
Contact.enteredBy ● String! non-null scalar
The ID of the user who created the record.
Contact.firstName ● String scalar
The person's first name.
Contact.id ● ID! non-null scalar
The unique ID of this record.
Contact.isActive ● Boolean! non-null scalar
Whether the record is active.
Contact.isDefault ● Boolean! non-null scalar
Whether this is the default.
Contact.label ● String scalar
A label for the contact.
Contact.lastName ● String scalar
The person's last name.
Contact.metadata ● JSON scalar
Additional data attached to the record, as JSON.
Contact.notes ● String scalar
Notes about the contact.
Contact.organizationId ● String! non-null scalar
The ID of the organization the record belongs to.
Contact.partnerId ● String! non-null scalar
The ID of the partner.
Contact.preferredTime ● String scalar
The best time to reach them.
Contact.priority ● String! non-null scalar
Whether this is the primary or a secondary contact.
Contact.referenceId ● String scalar
The contact PERSON's permanent reference — <partner code>-<8 hex>, e.g. C000110-a3f91b7e. Minted once at creation from a random UUID and STORED, so it survives every later edit to the person's name, email, phone or title. Replaces the old <code>@<firstnamelastname> string, which was derived on read and so was neither unique (two people with one name collided) nor stable (a typo fix changed it). Shared by every CHANNEL row of one person (phone/whatsapp/email), because it identifies the person, not the row — so it is deliberately NOT unique per row. Round-trip it on update: a save that omits it falls back to matching the row by id or by type+value. Null for a partner with no code.
Contact.timeZone ● String scalar
Their time zone.
Contact.type ● String! non-null scalar
The kind of contact, for example email or phone.
Contact.updatedAt ● DateTime! non-null scalar
When the record was last changed.
Contact.updatedBy ● String! non-null scalar
The ID of the user who last changed the record.
Contact.userId ● ID scalar
The customer login (User.userType = CUSTOMER) this contact person IS. Re-resolved by name match on every partner write — never settable by the client. Null for the majority of contacts, who are not portal users.
Contact.value ● String! non-null scalar
The email address or phone number.
Member Of
Customer object