Skip to main content


The core customer entity. A customer only exists (ideally) once. Uniqueness is guaranteed on both of these fields:

  1. externalId if provided
  2. email
type Customer {
id: ID!
externalId: ID
fullName: String!
shortName: String
email: EmailAddress!
status: CustomerStatus!
statusChangedAt: DateTime!
assignedToUser: UserActor
assignedAt: DateTime
lastIdleAt: DateTime
timelineInfo: TimelineInfo!
filters: CustomerIssuesFilter
sortBy: IssuesSort
first: Int
after: String
last: Int
before: String
): IssueConnection!
createdAt: DateTime!
createdBy: Actor!
updatedAt: DateTime!
updatedBy: Actor!
markedAsSpamAt: DateTime
markedAsSpamBy: InternalActor

Fields ● ID! non-null scalar

Uniquely identifies a customer in Plain.

Customer.externalId ● ID scalar

Your system's ID for this customer.

Customer.fullName ● String! non-null scalar

The full name of the customer.

Customer.shortName ● String scalar

An optional short name of the customer, typically their first name. ● EmailAddress! non-null object

The customer's email address.

Customer.status ● CustomerStatus! non-null enum

The customer's status.

Customer.statusChangedAt ● DateTime! non-null object

When the customer's status was last changed.

Customer.assignedToUser ● UserActor object

The user the customer is assigned to.

Customer.assignedAt ● DateTime object

When the customer was assigned to a user.

Customer.lastIdleAt ● DateTime object

When the customer was last in the IDLE status.

Customer.timelineInfo ● TimelineInfo! non-null object

Metadata about the customer's timeline. This is eventually consistent with the timeline.

Customer.issues ● IssueConnection! non-null object

A subquery to fetch the customer's issues.

Customer.issues.filters ● CustomerIssuesFilter input
Customer.issues.sortBy ● IssuesSort input
Customer.issues.first ● Int scalar
Customer.issues.after ● String scalar
Customer.issues.last ● Int scalar
Customer.issues.before ● String scalar

Customer.createdAt ● DateTime! non-null object

Customer.createdBy ● Actor! non-null union

Customer.updatedAt ● DateTime! non-null object

Customer.updatedBy ● Actor! non-null union

Customer.markedAsSpamAt ● DateTime object

Customer.markedAsSpamBy ● InternalActor union

Returned by

customer query ● customerByEmail query ● customerByExternalId query

Member of

AssignCustomerToUserOutput object ● ChangeCustomerStatusOutput object ● CustomerActor object ● CustomerChange object ● CustomerEdge object ● CustomerEmailActor object ● CustomerSearchEdge object ● Email object ● Issue object ● MarkCustomerAsSpamOutput object ● Note object ● UnmarkCustomerAsSpamOutput object ● UpsertCustomerOutput object