Skip to main content

EmailThread

One conversation between a mailbox and a contact.

type EmailThread {
id: ID!
contact: Contact
mailbox: SequenceMailbox!
sequence: Workflow
subject: String!
last_message_at: DateTime!
last_inbound_at: DateTime
last_outbound_at: DateTime
last_message_preview: String
last_message_direction: EmailDirection
unread_count: Int!
needs_reply: Boolean!
last_reply_kind: InboundMessageKind
opt_out_pending: Boolean!
sequence_status: String
status: EmailThreadStatus!
can_reply: Boolean!
cannot_reply_reason: String
messages: [EmailThreadMessage!]!
}

Fields​

EmailThread.id ● ID! non-null scalar​

EmailThread.contact ● Contact object​

Null when the contact has since been removed; the conversation is still kept.

EmailThread.mailbox ● SequenceMailbox! non-null object​

EmailThread.sequence ● Workflow object​

The sequence the conversation started in, when it started in one.

EmailThread.subject ● String! non-null scalar​

EmailThread.last_message_at ● DateTime! non-null scalar​

EmailThread.last_inbound_at ● DateTime scalar​

EmailThread.last_outbound_at ● DateTime scalar​

EmailThread.last_message_preview ● String scalar​

The newest message's opening text, cut to about 140 characters. Null when the thread has no message.

EmailThread.last_message_direction ● EmailDirection enum​

Which side sent the newest message. Null when the thread has no message.

EmailThread.unread_count ● Int! non-null scalar​

EmailThread.needs_reply ● Boolean! non-null scalar​

True when the contact wrote last and nobody has answered.

EmailThread.last_reply_kind ● InboundMessageKind enum​

What the newest inbound message was.

EmailThread.opt_out_pending ● Boolean! non-null scalar​

True when the newest message reads as a request to stop and the contact is not yet unsubscribed.

EmailThread.sequence_status ● String scalar​

Where the contact stands in the thread's sequence, as a short phrase for the header: "in sequence", "finished", "exited on reply", "exited on bounce", or "exited (meeting booked)" and the like for any other exit. Null when the thread has no sequence.

EmailThread.status ● EmailThreadStatus! non-null enum​

EmailThread.can_reply ● Boolean! non-null scalar​

True when the signed-in user can reply from this thread's mailbox right now.

EmailThread.cannot_reply_reason ● String scalar​

Why a reply is not possible, when it is not.

EmailThread.messages ● [EmailThreadMessage!]! non-null object​

Every message in the conversation, oldest first.

Returned By​

archiveEmailThread mutation ● confirmOptOut mutation ● dismissOptOut mutation ● emailThread query ● markEmailThreadRead mutation ● unarchiveEmailThread mutation

Member Of​

EmailThreadsResponse object ● WorkflowQualification object

Product

PricingFAQPaminga vs. MarketoMigration CenterMarketo to Paminga TranslatorMarketo Alternative
Paminga Logo
LinkedInFacebookXYouTube
ISO 27001 CompliantSOC 2 Compliant

Built with pride in Denver, Colorado, USA

Copyright © Paminga, Inc. 2026
All rights reserved. Various trademarks held by their respective owners.