# Sparkplug B alternatives

**URL:** <https://forum.inductiveautomation.com/t/sparkplug-b-alternatives/92983>\
**Category:** General Discussion\
**Created:** [July 9, 2024, 9:10pm UTC](https://forum.inductiveautomation.com/t/sparkplug-b-alternatives/92983 "2024-07-09T21:10:22Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Daniel.C](https://avatars.discourse-cdn.com/v4/letter/d/eada6e/32.png) [@Daniel.C](https://forum.inductiveautomation.com/u/Daniel.C)\
**Post date:** [July 9, 2024, 9:10pm UTC](https://forum.inductiveautomation.com/t/sparkplug-b-alternatives/92983/1 "2024-07-09T21:10:22Z")

</div>

Hey everyone, I'm currently publishing data from Ignition to MQTT Explorer and I'm using Sparkplug B. My tag path is structured with four folders, but the last folder appears in the topic payload due to Sparkplug B's constraints as read here [MQTT Transmission Transmitters and Tag Trees - MQTT Modules for Ignition 8.x - Confluence](https://docs.chariot.io/display/CLD80/MQTT+Transmission+Transmitters+and+Tag+Trees). The hierarchy level is crucial for me, and I need the entire tag path visible in the topic, not in the payload. Since this seems unchangeable with Sparkplug B, are there any alternatives for pushing data from Ignition while maintaining the full tag path in the topic?

Any help appreciated,  
Thanks

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [July 9, 2024, 10:34pm UTC](https://forum.inductiveautomation.com/t/sparkplug-b-alternatives/92983/2 "2024-07-09T22:34:20Z")

</div>

When using Sparkplug B, the tag hierarchy is built into the protocol that when decoded, all the folders will come out in the same hierarchy they were published in. Ignore anything you see in MQTT Explorer as while that defines part of the hierarchy, as you learned the rest of it is part of the payload. You can go to a custom namespace, but then you'll lose a lot of the features and capabilites that Sparkplug B provides.

If you've set up MQTT Engine, you'll see that everything comes through nice and clean, but you won't see it the same way in MQTT Explorer. Also note, there's NDATA and DDATA folders that aren't part of your structure either.

Sparkplug B is intended to be used with Sparkplug B protocol throughout. In fact, on the server I have running, I'm using aliasing and compression to where in MQTT Explorer you essentially can't make out any of the values, but that's not the end result.

I'd recommend sticking with it unless you have some device/system that can't talk SparkplugB.

---

<div class="post-metadata">

**Author:** ![Daniel.C](https://avatars.discourse-cdn.com/v4/letter/d/eada6e/32.png) [@Daniel.C](https://forum.inductiveautomation.com/u/Daniel.C)\
**Post date:** [July 10, 2024, 9:53pm UTC](https://forum.inductiveautomation.com/t/sparkplug-b-alternatives/92983/3 "2024-07-10T21:53:20Z")

</div>

Hello, thanks for the reply.

In my case, I’m doing this for work and it’s essential that the full topic is visible in Mqtt explorer.  
So any spark plug B alternatives would be appreciated!

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [July 10, 2024, 10:09pm UTC](https://forum.inductiveautomation.com/t/sparkplug-b-alternatives/92983/4 "2024-07-10T22:09:16Z")

</div>

As far as I'm aware, there is no alternative besides doing a custom namespace. I don't know how a custom namespace handles disconnections, qualities, and timestamps as I've never set it up. You may be on your own with some of it unless the Transmission module automatically marks those tags as bad upon disconnection. SparkplugB also allows for store and forwarding of data so that you don't lose historical values if there is a disconnection from either the Engine side or the Transmission side which you'll lose when doing a custom namespace. There's a lot of advantages you'll miss out on by not using it, but that's my 2 cents.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [July 10, 2024, 10:14pm UTC](https://forum.inductiveautomation.com/t/sparkplug-b-alternatives/92983/5 "2024-07-10T22:14:20Z")

</div>

Can Transmission publish a custom namespace? I thought it was Sparkplug only, and it's just Engine that can consume a custom namespace instead of Sparkplug. 🤷‍♂️

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [July 10, 2024, 10:23pm UTC](https://forum.inductiveautomation.com/t/sparkplug-b-alternatives/92983/6 "2024-07-10T22:23:22Z")

</div>

Yep, you're right. I thougth I saw an option in there once, but just connected to one of my edge devices and there is no option for custom namespace. Which means they'd have to use scripting to push a bunch of values which wouldn't be efficient nor convenient.

---

<div class="post-metadata">

**Author:** ![Daniel.C](https://avatars.discourse-cdn.com/v4/letter/d/eada6e/32.png) [@Daniel.C](https://forum.inductiveautomation.com/u/Daniel.C)\
**Post date:** [July 16, 2024, 7:39am UTC](https://forum.inductiveautomation.com/t/sparkplug-b-alternatives/92983/7 "2024-07-16T07:39:03Z")

</div>

Thank you!
