The result of an Action being executed

An Outcomerepresents the result of having executed an Action. Its general structure is as follows:

type Outcome {
    match: Match!
    createdAt: Timestamp!
    response: Response!
    payload: Payload!

whereas the exact content of the Response and Payload types depends on the kind of Action that was executed.


The Payload type contains information about the exact payload that HAL used to execute the action, and can be thought of as the "input" part of executing an Action.

Email Payload

The payload type for the Email action is shared between TransactionsTriggers, ContractsTriggers and EventsTriggers:

type MailPayload {
    body: String!
    subject: String!
    to: [Email!]!

where the body and subject fields contain the actual text that was sent via email, after the template has been applied.

Webhook Payload

The payload type for the Webhook action, on the other hand, has a different type for each possible Trigger. So far the following are supported:


type TransactionsTriggerWebhookPayload {
    decoded: Decoded
    block: Block!
    transaction: Transaction!

the Decoded field contains the decoded input data used for the specific transaction that matched. You can read more about it under the Matches page of this documentation.


type ContractsTriggerWebhookPayload {
    contract: Contract!
    method: Method!
    returnedValues: ReturnedValues!
    block: Block!

Again, you can read more about the different types here under the Matches page of this documentation.


type EventsTriggerWebhookPayload {
    decoded: Decoded
    log: Log!
    block: Block!
    transaction: Transaction!

Slack Payload

The payload for the Slack Action is very simple and it consists of a body field only:

  type SlackPayload {
      body: String!

Telegram Payload

The payload for the Telegram Actions is:

type TelegramPayload {
    body: String!
    chatid: String!
    format: String!

Twitter Payload

The payload for the Twitter Action is:

type TwitterPayload {
    status: String!

Discord Payload

The payload for the Discord Action is:

type DiscordPayload {
    body: String!


The supported responses are MailResponse (for the Email action) and WebhookResponse for all the other supported actions.

MailResponse contains an ID for the email message, if sent correctly, or an error otherwise:

type MailResponse {
    messageId: String!

The WebhookResponse is straightforward:

type WebhookResponse {
    httpCode: Int!
    body: String

Last updated