What is the best way to tell what a user changed on a form?

I need to be able to tell what the user has changed on the form before it is saved, what is the best way to do this?


Could you please describe the case in details so I could offer the best solution?

Why do you need to track changes? Have you tried enabling versioning history for the item?

I want to send an email when a change order is rejected, but I only want to send it once. I don't want to send an email every time change order is looked at.

I want to be able to:

if (status changed from pending to rejected) {
save_form(); //The status is saved now as rejected;

This way, an email will only go out once.


How do you send an email? Are you using Microsoft Flow?

If so, you can create a separate field to check if an email is sent or not.

I've tried that but then that counts as another "modify" and the flow is fired again. Also, correct me if I'm wrong, when I update a list item with a flow I have to update all of the fields, not just one of them. It has been dangerous to use Flow to update records in the past because I have lost information.


How do you send the email? How do you trigger the flow?

You can only change one field using the flow, the rest of the fields will remain unchanged.

I am using Power Automate.

I seem to remember fields like lookups and such changing if I didn't specify them. I will run some tests to make sure.

I was remembering wrong. When using the "Update item" for Power Automate, you have to supply the values for all required fields. The easy fix would be to require the fewest fields as possible and use Forms to make fields required when needed.

Thank you. Talking with you about this has really helped me. I think I know what I want to do now. You have been really helpful.

I have started to do the following to combat this issue:
On the list create a Yes/No column to record if the email is sent.
Whatever event you want to trigger the email, check the Yes/No and create an item on another list via PnP. Using your example I would have my working list Change Order, Power Automate would be looking for created items in a list called Change Order Automate. In the Automate list sometimes I carry over all the data I need but always have a lookup field to the working list. I use Power Automate to update the Boolean.