# MQTT payload customization

**URL:** <https://forum.inductiveautomation.com/t/mqtt-payload-customization/116045>\
**Category:** Ignition\
**Created:** [June 17, 2026, 11:17pm UTC](https://forum.inductiveautomation.com/t/mqtt-payload-customization/116045 "2026-06-17T23:17:50Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Marco\_Cisneros](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@Marco\_Cisneros](https://forum.inductiveautomation.com/u/Marco_Cisneros)\
**Post date:** [June 17, 2026, 11:17pm UTC](https://forum.inductiveautomation.com/t/mqtt-payload-customization/116045/1 "2026-06-17T23:17:50Z")

</div>

Hi there,

I´m exploring Ignition MQTT features, so maybe my doubt here could make no sense for people having good expertise with MQTT and Ignition.

Is there a way to customize the payload as the following:

```python
{

  "timestamp": 1755283633612,

  "facility": "LEX01",

  "zone": "DH1",

  "equipment": "PDU_A_1",

  "data_points": [

    { "name": "PDU_A_1 - Real Power", "apiPoint": "RealPower", "value": 412.5 },

    { "name": "PDU_A_1 - Voltage AN", "apiPoint": "VoltageAN", "value": 277.1 },

    { "name": "PDU_A_1 - Current A", "apiPoint": "CurrentA", "value": 521.0 }

 ]

}

```

In other words, each message states the equipment's identity once at the top (facility, zone, equipment, and a timestamp), then lists the tag readings underneath including various attributes.

Any help and comments will be appreciated.

---

<div class="post-metadata">

**Author:** ![David\_Stone](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_stone/32/79749_2.png) [@David\_Stone](https://forum.inductiveautomation.com/u/David_Stone)\
**Post date:** [June 18, 2026, 7:10am UTC](https://forum.inductiveautomation.com/t/mqtt-payload-customization/116045/2 "2026-06-18T07:10:51Z")

</div>

The location, tag name and machine is normally included in the topic structure not in the payload.

---

<div class="post-metadata">

**Author:** ![Marco\_Cisneros](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@Marco\_Cisneros](https://forum.inductiveautomation.com/u/Marco_Cisneros)\
**Post date:** [June 18, 2026, 6:59pm UTC](https://forum.inductiveautomation.com/t/mqtt-payload-customization/116045/3 "2026-06-18T18:59:50Z")

</div>

Thanks David,

But what I need to know is if the payload can be customized to fit this user needs as shown previously and what it is needed to be done to get that result.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [June 18, 2026, 7:11pm UTC](https://forum.inductiveautomation.com/t/mqtt-payload-customization/116045/4 "2026-06-18T19:11:27Z")

</div>

The native tag publishing mechanisms in Cirrus Link modules for Ignition are all **explicitly** formatted as Sparkplug compliant messages. What you show is a free-form message that will not be generated automatically.

You **can** use scripting with the Cirrus Link **Engine** module to publish free-form MQTT messages, and use custom namespaces to receive such. You are entirely on your own when using non-Sparkplug messages.

---

<div class="post-metadata">

**Author:** ![David\_Stone](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_stone/32/79749_2.png) [@David\_Stone](https://forum.inductiveautomation.com/u/David_Stone)\
**Post date:** [June 18, 2026, 7:49pm UTC](https://forum.inductiveautomation.com/t/mqtt-payload-customization/116045/5 "2026-06-18T19:49:52Z")

</div>

You asked for comments from people who use MQTT regularly, thats me.  
My comment is that the structure you are suggesting is a poor use of MQTT, given that spark plug already covers your use case with much better efficiency and maintainability.

The vanilla MQTT implementation the entire industry would expect based on your notes above would look like this:

Topic:  
`LEX01/DH1/PDU_A_1/RealPower`  
Payload:

```json
{ 
"timestamp" : 1755283633612 , 
"value": 412.5 , 
"units": "kW" , 
"name": "PDU_A_1 - Real Power" 
}

```

Topic:  
`LEX01/DH1/PDU_A_1/VoltageAN`  
Payload:

```json
{ 
"timestamp" : 1755283633612 , 
"value": 277.1 , 
"units": "V" , 
"name": "PDU_A_1 - Voltage AN" 
}

```

Topic:  
`LEX01/DH1/PDU_A_1/CurrentA`  
Payload:

```json
{ 
"timestamp" : 1755283633612 , 
"value": 521.0 , 
"units": "A" , 
"name": "PDU_A_1 - Current A" 
}

```

---

<div class="post-metadata">

**Author:** ![Marco\_Cisneros](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@Marco\_Cisneros](https://forum.inductiveautomation.com/u/Marco_Cisneros)\
**Post date:** [June 18, 2026, 10:34pm UTC](https://forum.inductiveautomation.com/t/mqtt-payload-customization/116045/6 "2026-06-18T22:34:35Z")

</div>

🙂‍↕️

---

<div class="post-metadata">

**Author:** ![Marco\_Cisneros](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@Marco\_Cisneros](https://forum.inductiveautomation.com/u/Marco_Cisneros)\
**Post date:** [June 18, 2026, 10:35pm UTC](https://forum.inductiveautomation.com/t/mqtt-payload-customization/116045/7 "2026-06-18T22:35:38Z")

</div>

Thanks David, It is clear to me now....
