Christina,
We can help you with that as we have web developers - josh@perkuto.com.
But a faster solution is to just timestamp the lead's preference for each subscription management field. Each time the value changes, have a flow that puts {{system.Time}} on a related field like "Last Unsub Preference Change Date".
I thought as long as you had that, you were in compliance, but having that IP would be great too.