---
title: Message only mode
url: https://www.tines.com/docs/actions/types/event-transformation/message-only/
updated: 2026-01-05T19:14:34+00:00
---

*[tines.com](https://www.tines.com/llms.txt) › [Docs](https://www.tines.com/llms.txt) › [Actions](https://www.tines.com/llm/docs/actions.md) › [Types](https://www.tines.com/llm/docs/actions/types.md) › [Event Transform](https://www.tines.com/llm/docs/actions/types/event-transformation.md)*

# Message only mode

*[View on tines.com](https://www.tines.com/docs/actions/types/event-transformation/message-only/)*

Produce an event with arbitrary structure, usually incorporating upstream data.

# Features

Emit an event with data of any type – an object, a list, text, etc. Hardcode data, or refer to upstream data using [formula expressions.](https://www.tines.com/docs/formulas/)

### Looping

You can also configure the action such that instead of producing a single event, it can produce an event based on each element of a list or object. Looping helps you to easily transform, filter or reduce incoming events.

- Specify the path to a field in an incoming Event that contains a list or an object and Tines will invoke the action for each element of the list or object.
- When specifying the output event payload, a `LOOP` object will be provided for each loop iteration. The `LOOP` object will contain:
  
  - `value` – The current value in the loop.
  - `index` – The current index in the loop.
  - `key` - When iterating over key/value pairs in an object, this is the current key in the loop. This will be absent when iterating over a list.
  - `previous_result` – The result of the previous iteration.
- A single output event will still be emitted.
- The payload of the output event will always be a list. It can potentially contain `NULL` elements.

##### Loop limits

- A loop can only be ran on a list or an object that contains fewer than `20,000` elements.
- If you wish to loop over a list or object that contains more than `20,000` elements, it is recommended that: 
  
  - The  [CHUNK_ARRAY](https://www.tines.com/docs/actions/formulas/functions/chunk-array) function is used to break the list into a list of smaller lists. 
  - An [Explode Mode](https://www.tines.com/docs/explode/) Event Transformation action is used to emit an event for each of the smaller lists.
  - The lists contained in each emitted event can be looped over without exceeding the loop size limit.
- Loops have a 5-minute processing timeout. If a loop exceeds this limit, processing stops and the action fails with an error. This prevents long-running loops from consuming excessive resources.

## Configuration Options

- `mode`: 'message_only'
- `payload`: a string or object which will be included in the emitted event. Only the `payload` contents will be included in the output event.
- `loop`: (Optional) Specify the name of a field in an incoming event that contains a list or an object.

## Example Configuration Options

Include a key and message object in the emitted event.

```json
{
  "mode": "message_only",
  "payload": {
    "message": "This is an automatically generated message from Tines",
    "another_message": "This is another message from Tines. The time is: <<DATE('now', '%Y-%m-%d %H:%M')>>."
  }
}
```

Include a simple message in the emitted event.

```json
{
  "mode": "message_only",
  "payload": "This is an automatically generated message from Tines"
}
```

Include structured data from previous actions.

```json
{
  "mode": "message_only",
  "payload": {
    "users": "=users",
    "logins": "=logins"
  }
}
```

### Looping

Given the incoming Event below, generate a message for each element in the list.

```json
{
  "numbers": [1, 2, 3]
}
```

```json
{
  "mode": "message_only",
  "loop": "=numbers",
  "payload": "This is message # <<LOOP.index>>, value=<<LOOP.value>>"
}
```

```json
[
  {
    "message": "This is message #0, value=1"
  },
  {
    "message": "This is message #1, value=2"
  },
  {
    "message": "This is message #2, value=3"
  }
]
```

Given the incoming Event below, generate a message for each element in the object.

```json
{
  "teams": { "team_1": "value_1", "team_2": "value_2" }
}
```

```json
{
  "mode": "message_only",
  "loop": "=teams",
  "payload": "This is message #<<LOOP.index>>, key=<<LOOP.key>>, value=<<LOOP.value>>"
}
```

```json
[
  {
    "message": "This is message #0, key=team_1, value=value_1"
  },
  {
    "message": "This is message #1, key=team_2, value=value_2"
  }
]
```
