Skip to main content

Transmission

The Transmission entity tracks inbound and outbound message exchanges (EDI, API calls, webhooks, emails, etc.) associated with orders. It provides a complete audit trail of all communication events, including retry logic, error tracking, and payload references.

Transmissions can be linked to orders through the OrderTransmission join entity and addressed to a partner Contact. A contact-addressed outbound transmission can be delivered asynchronously through the organization's configured connection.

Fields​

Field NameTypeMax LengthRequiredDefaultDescription
TransmissionIdInt32—AutoAuto-incrementPrimary key
OrganizationIdInt32—Yes—Organization scope
ContactIdInt32?—No—Partner contact the transmission is addressed to or received from
CorrelationIdGuid—YesNewGuid()Groups related transmissions together
ParentIdInt32?—No—Self-referential FK for parent/child chains
ContactIdInt32?—No—Partner contact the transmission is addressed to (outbound) or received from (inbound). A contact whose custom values carry a transmission block makes the row deliverable across an organization connection
ChannelString20Yes—Communication channel (e.g. EDI, API, EMAIL, WEBHOOK)
DirectionTransmissionDirection—Yes—Inbound (0) or Outbound (1)
MessageTypeString?50No—Message type identifier (e.g. 204, 990, 214)
SenderString?100No—Sender identifier
ReceiverString?100No—Receiver identifier
StatusTransmissionStatus?—No—Current transmission status
EndpointString?500No—Target URL or endpoint address
ProtocolString?20No—Protocol (e.g. HTTPS, SFTP, AS2)
HttpStatusInt16?—No—HTTP response status code
ByteSizeInt32?—No—Payload size in bytes
RetryCountInt16—Yes0Current retry attempt
MaxRetriesInt16—Yes3Maximum retry attempts
NextRetryAtDateTime?—No—Scheduled next retry time
ErrorCodeString?50No—Error code for failures
ErrorMessageString?—No—Error description
CustomValuesDictionary?— (JSONB)No—Arbitrary key-value metadata
HeadersDictionary?— (JSONB)No—Message headers
PayloadRefString?—No—Private storage key for the payload; use GraphQL/workflow APIs rather than exposing it to partners
ScheduledAtDateTime?—No—When the transmission was scheduled
StartedAtDateTime?—No—When processing started
CompletedAtDateTime?—No—When processing completed
DurationMsInt32?—No—Processing duration in milliseconds
IsDeletedBoolean—YesfalseSoft-delete flag (filtered by default)
CreatedDateTime—Auto—Created timestamp
CreatedByString36Auto—Created by user ID
LastModifiedDateTime—Auto—Last modified timestamp
LastModifiedByString36Auto—Last modified by user ID

Enums​

TransmissionDirection​

ValueNameDescription
0InboundMessage received from external source
1OutboundMessage sent to external destination

TransmissionStatus​

ValueNameDescription
0PendingQueued, not yet processed
1InProgressCurrently being processed
2SentSuccessfully sent (outbound)
3ReceivedSuccessfully received (inbound)
4DeliveredConfirmed delivery at destination
5AcknowledgedFunctional acknowledgment received
6RejectedRejected by receiver
7ErrorProcessing error occurred
8RetryScheduledFailed, retry scheduled
9CancelledManually or automatically cancelled
10ExpiredExceeded retry window

Relationships​

RelationshipTarget EntityTypeDescription
OrganizationOrganizationMany-to-OneOrganization scope
ContactContactMany-to-OnePartner address and transport configuration
ParentTransmissionMany-to-One (self)Parent transmission for chains
ContactContactMany-to-OnePartner contact (optional)
ChildrenTransmission[]One-to-Many (self)Child transmissions
OrderTransmissionsOrderTransmission[]One-to-ManyJoin table linking to orders

Contact-addressed delivery​

A partner contact opts into delivery with a transmission block in CustomValues:

{
"transmission": {
"type": "connection",
"organizationConnectionId": 12,
"organizationId": "partner-organization-uuid"
}
}

When ContactId is supplied during creation, Channel defaults from the transport type (CONNECTION) and Direction defaults to Outbound. If the transport is available, creation sets an unspecified status to Pending and queues delivery through the outbox. Successful delivery becomes Sent; transport errors become Error, while unexpected failures become RetryScheduled and are retried by the outbox. The redeliverTransmission mutation can requeue a stuck or dead-lettered outbound transmission.

Payloads and attachments​

Creation accepts either payload or payloadRef, never both. Inline JSON, text, or binary payloads are uploaded to private storage and represented by PayloadRef; their content type is recorded in headers and byte size is inferred when omitted.

Attachments may reference an existing attachment by ID/GUID, pass through a URL, or contain base64/raw data. Each attachment must use exactly one source. The manifest is stored in CustomValues.attachments, while GraphQL's computed attachments field replaces storage keys with short-lived download URLs.

Transmission entity workflow triggers hydrate entity.payload (subject to the configured preload size limit) and entity.attachments, so workflows can process received content without handling storage keys.

OrderTransmission (Join Entity)​

Field NameTypeDescription
OrderIdInt32FK to Order
TransmissionIdInt32FK to Transmission

Database Indexes​

IndexColumn(s)Purpose
IX_Transmissions_CorrelationIdCorrelationIdFast lookup of correlated messages
IX_Transmissions_OrganizationIdOrganizationIdOrg-scoped queries
IX_Transmissions_StatusStatusFilter by status
IX_Transmissions_ChannelChannelFilter by channel
IX_Transmissions_ParentIdParentIdParent/child traversal
IX_Transmissions_ContactIdContactIdPartner contact lookup

Views​

OrderTransmissionSummaryView (vw_order_transmission_summary)​

Pre-aggregated summary per order, available via GraphQL as transmissionsSummary on the Order type.

FieldTypeDescription
OrderIdInt32Order ID
OrganizationIdInt32Organization ID
TotalCountInt32Total transmissions for this order
HasAnyBooleanWhether the order has any transmissions
LatestCreatedDateTime?Most recent transmission timestamp
LatestChannelString?Channel of latest transmission
LatestStatusString?Status of latest transmission

Cross-Organization Delivery​

An Outbound transmission whose ContactId points at a contact with a customValues.transmission block (type: "connection", organizationConnectionId) is delivered to the partner organization through the transactional outbox: the platform validates the OrganizationConnection and writes a mirrored Inbound / Received row in the partner organization with the same CorrelationId, MessageType and PayloadRef, plus CustomValues.organizationConnectionId and CustomValues.sourceTransmissionId. The outbound row tracks Pending, Sent, RetryScheduled or Error (with ErrorCode: ConnectionNotFound, ConnectionDisabled, SenderNotInConnection, OrganizationMismatch, UnknownTransportType).

Well-known custom values on transmission rows:

KeyRowMeaning
organizationConnectionIdinboundConnection the message arrived through
sourceTransmissionIdinboundOutbound row id in the sender (idempotency key for redelivery)
attachmentsbothAttachment manifest [{ fileName, contentType, byteSize, storageKey, url, metadata }]; exposed with presigned URLs

Transmission fires entity workflow triggers (Added, Modified, Deleted) in every organization; a receiver subscribes with a trigger on Transmission / Added and a condition such as [entity.direction] = 'Inbound' && [entity.messageType] = 'order.created'. See the Organization Connections and Transmissions guide.