# How do you track changes in UDT.json with GitHub?

**URL:** <https://forum.inductiveautomation.com/t/how-do-you-track-changes-in-udt-json-with-github/117413>\
**Category:** Ignition\
**Tags:** ignition81\
**Created:** [October 9, 2026, 5:37pm UTC](https://forum.inductiveautomation.com/t/how-do-you-track-changes-in-udt-json-with-github/117413 "2026-10-09T17:37:26Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![tiennq20](https://avatars.discourse-cdn.com/v4/letter/t/c0e974/32.png) [@tiennq20](https://forum.inductiveautomation.com/u/tiennq20)\
**Post date:** [October 9, 2026, 5:37pm UTC](https://forum.inductiveautomation.com/t/how-do-you-track-changes-in-udt-json-with-github/117413/1 "2026-10-09T17:37:26Z")

</div>

Hi everyone,

I'm trying to track changes for `UDT.json` files in GitHub.

I've noticed that each time I export a UDT to JSON, the file structure and property ordering can change, even when there are only minor modifications. As a result, GitHub shows a large number of differences, making it difficult to review changes line by line and identify the actual modifications.

Has anyone successfully used GitHub to track UDT changes across versions?

If so:

- Do you use any tools or scripts to normalize/sort the JSON before committing?
- Is there a recommended export format or workflow?
- How do you review changes efficiently between UDT versions?

Any tips or best practices would be greatly appreciated.

Thanks!

---

<div class="post-metadata">

**Author:** ![Noah\_Burnette](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/noah_burnette/32/83777_2.png) [@Noah\_Burnette](https://forum.inductiveautomation.com/u/Noah_Burnette)\
**Post date:** [October 9, 2026, 6:25pm UTC](https://forum.inductiveautomation.com/t/how-do-you-track-changes-in-udt-json-with-github/117413/2 "2026-10-09T18:25:41Z")

</div>

Hello,

I would recommend using:

> **[GitHub - bw-design-group/ignition-tag-cicd: Tag CI/CD module for Inductive Automation...](https://github.com/bw-design-group/ignition-tag-cicd)**
>
> Tag CI/CD module for Inductive Automation Ignition. REST endpoints and Designer tooling for exporting and importing tag configurations to/from disk, enabling version control and CI/CD workflows for Ignition tags. Supports Ignition 8.1 and 8.3.

It worked well for when I was still on 8.1. Docs aren't on the current repo but it seems like the archived repo has the [docs](https://design-group.github.io/ignition-tag-cicd-module/) deployed. If I remember correctly, `individualFiles` is the best configuration if you want to reduce conflicts for the udts.

On 8.3, udt definitions are stored (albeit wonky IMO) in `tag-type-definition`. See my post [here](https://forum.inductiveautomation.com/t/diffing-udts-json-in-tag-type-definition/116674/1) about my current challenges if you are curious.

---

<div class="post-metadata">

**Author:** ![tiennq20](https://avatars.discourse-cdn.com/v4/letter/t/c0e974/32.png) [@tiennq20](https://forum.inductiveautomation.com/u/tiennq20)\
**Post date:** [October 9, 2026, 6:29pm UTC](https://forum.inductiveautomation.com/t/how-do-you-track-changes-in-udt-json-with-github/117413/3 "2026-10-09T18:29:54Z")

</div>

Thanks for the recommendation and the additional details. I'll check it out!
