# Keeping forms in source control

**URL:** <https://community.gravityforms.com/t/keeping-forms-in-source-control/6256>\
**Category:** Get Help\
**Tags:** git, version-control\
**Created:** [September 28, 2020, 4:25am UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256 "2020-09-28T04:25:54Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![tandlit](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/tandlit/32/329_2.png) [@tandlit](https://community.gravityforms.com/u/tandlit)\
**Post date:** [September 28, 2020, 4:25am UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/1 "2020-09-28T04:25:54Z")

</div>

Hi community,

We’re trying to be good developers and keep our forms in source control to track changes and revert if necessary. Our forms are fairly complex with heavy use of Gravity Flow addon, hence the need to stay on top of changes.

We’ve been utilising the import/export function to manage our changes which works reasonably well for the most part however there are some issues with it.

Firstly, when we update a form in dev then move to production we have to import the updated form which creates a new form id. This means we have to relink all pages referencing the form to the newly created form. We also lose the entry history.

I’m wondering if there is another way to manage this process, as I’m sure we can’t be the first developers to run into this requirement. Would love to know if/how others have dealt with the challenge.

Cheers

---

<div class="post-metadata">

**Author:** ![chrishajer](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/chrishajer/32/88_2.png) [@chrishajer](https://community.gravityforms.com/u/chrishajer)\
**Post date:** [September 28, 2020, 12:54pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/2 "2020-09-28T12:54:34Z")

</div>

Hello. There have been a couple attempts at this issue, but this is the only one that has produced anything, as far as I am aware:

[https://www.wpformsync.com/getting-started-with-formsync-and-gravity-forms/](https://www.wpformsync.com/getting-started-with-formsync-and-gravity-forms/)

---

<div class="post-metadata">

**Author:** ![tandlit](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/tandlit/32/329_2.png) [@tandlit](https://community.gravityforms.com/u/tandlit)\
**Post date:** [September 28, 2020, 10:59pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/3 "2020-09-28T22:59:42Z")

</div>

Thanks Chris. The plugin looks great.

---

<div class="post-metadata">

**Author:** ![chrishajer](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/chrishajer/32/88_2.png) [@chrishajer](https://community.gravityforms.com/u/chrishajer)\
**Post date:** [September 29, 2020, 6:39pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/4 "2020-09-29T18:39:14Z")

</div>

If you decide to use it, please let us know how that goes. Thank you.

---

<div class="post-metadata">

**Author:** ![tandlit](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/tandlit/32/329_2.png) [@tandlit](https://community.gravityforms.com/u/tandlit)\
**Post date:** [September 29, 2020, 10:45pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/5 "2020-09-29T22:45:54Z")

</div>

Will do Chris.

I have reached out to the developer to find out if this plugin is still in active development as there are no updates since October '19. I’m yet to hear back. Will keep you posted.

---

<div class="post-metadata">

**Author:** ![chrishajer](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/chrishajer/32/88_2.png) [@chrishajer](https://community.gravityforms.com/u/chrishajer)\
**Post date:** [September 30, 2020, 4:37am UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/6 "2020-09-30T04:37:12Z")

</div>

Thank you. I have seen a couple other attempts over the years, but no solution yet, as far as I know.

---

<div class="post-metadata">

**Author:** ![tandlit](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/tandlit/32/329_2.png) [@tandlit](https://community.gravityforms.com/u/tandlit)\
**Post date:** [September 30, 2020, 5:43am UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/7 "2020-09-30T05:43:19Z")

</div>

Chris, correct me if I’m wrong but having looked into this further it seems I could import the json directly in to the database to update the forms which would allow me to keep the IDs the same. Perhaps I am missing something, or is this possible? Presumably this is how the plugin takes care of it.

---

<div class="post-metadata">

**Author:** ![chrishajer](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/chrishajer/32/88_2.png) [@chrishajer](https://community.gravityforms.com/u/chrishajer)\
**Post date:** [September 30, 2020, 11:18pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/8 "2020-09-30T23:18:42Z")

</div>

It’s worth a try. However, if the edited form does not account for all the fields that are stored in existing entries, that would be broken. It’s worth trying. It’s not version control, but it would allow you to replace a form in the database with your edited form.

---

<div class="post-metadata">

**Author:** ![tandlit](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/tandlit/32/329_2.png) [@tandlit](https://community.gravityforms.com/u/tandlit)\
**Post date:** [October 1, 2020, 5:28am UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/9 "2020-10-01T05:28:09Z")

</div>

Thanks Chris.

Could you elaborate on what would it would mean for the stored entries to be broken? Would it prevent the entries screen loading, or would it load but with missing data?

---

<div class="post-metadata">

**Author:** ![chrishajer](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/chrishajer/32/88_2.png) [@chrishajer](https://community.gravityforms.com/u/chrishajer)\
**Post date:** [October 1, 2020, 3:13pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/10 "2020-10-01T15:13:41Z")

</div>

Normally the entries screen will still load. If you added fields to the form, but there were no entry data recorded yet, those entries will work properly (just missing data where no data was yet collected.) When you remove a field that existed previously, the data you collected would not be displayed anywhere. If you edit the choices of the field, the data that is displayed will be inaccurate.

This is definitely worth experimenting with.

---

<div class="post-metadata">

**Author:** ![tandlit](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/tandlit/32/329_2.png) [@tandlit](https://community.gravityforms.com/u/tandlit)\
**Post date:** [October 5, 2020, 10:21pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/11 "2020-10-05T22:21:27Z")

</div>

That sounds pretty workable. In our case, we push the data out of GF into our ticketing system so we always have a record of the data. I think we can make this work, thanks for your help and for being so responsive! Just another reason to love this product.

---

<div class="post-metadata">

**Author:** ![chrishajer](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/chrishajer/32/88_2.png) [@chrishajer](https://community.gravityforms.com/u/chrishajer)\
**Post date:** [October 6, 2020, 7:47pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/12 "2020-10-06T19:47:24Z")

</div>

![Snoop](https://us1.discourse-cdn.com/flex020/uploads/gravityforms1/original/2X/8/8cfc1c97286977bd8afbe852ccb4487666414f29.gif)

You’re welcome

---

<div class="post-metadata">

**Author:** ![jamesrice](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/jamesrice/32/4052_2.png) [@jamesrice](https://community.gravityforms.com/u/jamesrice)\
**Post date:** [November 29, 2021, 2:34pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/13 "2021-11-29T14:34:57Z")

</div>

Just wanted to mention that I recently bought the FormSync plugin and it does seem to work as advertised. It took me a couple attempts to reach the developer, but he responded and confirmed the plugin is still maintained. While it hasn’t been updated in a while, he claims it’s a stable version that works with the latest GF. I haven’t used it extensively yet, but I did test it on a fairly elaborate form that also uses GravityWiz perks, and it worked.

---

<div class="post-metadata">

**Author:** ![chrishajer](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/chrishajer/32/88_2.png) [@chrishajer](https://community.gravityforms.com/u/chrishajer)\
**Post date:** [November 29, 2021, 6:22pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/14 "2021-11-29T18:22:28Z")

</div>

Good news; thank you for the update James.

---

<div class="post-metadata">

**Author:** ![dario](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/dario/32/3901_2.png) [@dario](https://community.gravityforms.com/u/dario)\
**Post date:** [November 30, 2021, 3:26pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/15 "2021-11-30T15:26:58Z")

</div>

My two cents here with a free plugin from the WordPress repo that seems actively maintained:

> **[Power Boost for Gravity Forms](https://wordpress.org/plugins/power-boost-for-gravity-forms/)**
>
> An add-on for Gravity Forms. Enhances Gravity Forms for power users.

Adds a feature called Local JSON that maintains .json file exports of each form when forms are edited and allow forms to be updated by loading their .json files. Local JSON works similarly to ACF and enables forms to be put into version control with themes or plugins.

Cheers,

---

<div class="post-metadata">

**Author:** ![JamieO](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/jamieo/32/2521_2.png) [@JamieO](https://community.gravityforms.com/u/JamieO)\
**Post date:** [December 8, 2021, 7:07pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/16 "2021-12-08T19:07:37Z")

</div>

> [@jamesrice](#):
>
> While it hasn’t been updated in a while, he claims it’s a stable version that works with the latest GF.

**FormSync**  
I tested with it (a year ago perhaps?) and at that time there were a few certified add-ons which FormSync didn’t support cleanly incl. Gravity Flow. The issue had to do with the ordering of steps getting swapped when duplicating or importing through it. I believe was something that other feed based add-ons would be at risk of impact from. I love the idea of it, so if you do get into the ‘using it extensively’ with good results that would be wonderful to hear.

**PowerBoost**  
That looks slick! Thanks for linking Dario.

---

<div class="post-metadata">

**Author:** ![richardw8k](https://sea2.discourse-cdn.com/flex020/user_avatar/community.gravityforms.com/richardw8k/32/2354_2.png) [@richardw8k](https://community.gravityforms.com/u/richardw8k)\
**Post date:** [January 4, 2022, 5:45pm UTC](https://community.gravityforms.com/t/keeping-forms-in-source-control/6256/17 "2022-01-04T17:45:48Z")

</div>

Closed on January 4, 2022, 5:45pm UTC


