Hi Renee Wagner,
You could use progressive profiling to hide the field on all future forms once its been filled in. Configure Form Progressive Profiling - Marketo Docs - Product Documentation You could also swap the field with a new checkbox stating you have opted in previously, to opt out please check this box".
If the original checkbox is on the form though you would have to have some sort of text to explain if they have previously opted in then by not checking it they are not opting out. If the only way they can opt out it through the subscription centre, I would explain that rather than risk frustrating some users.
In general, I think the system is working as expected. Marketo sees that there's a more-recent form completion for a lead, so Marketo updates the contact record with latest and greatest data. It's not watching for interaction with form fields on the pages, just the form submission itself.
So here are my immediate thoughts for a solution.
- Utilize visibility rules to show/hide the field for known, cookied contacts, when they're opted-in. That way, knowns that are opted out get the chance to change their mind, and new leads can still decide. Great! Just be aware, the gap this solution leaves is contacts who are not cookied, and fill out another form with the same email address. It will update their record with whatever they submit on the form.
- Use visibility rules to always hide the field for all known leads (regardless of their choice), so only new leads get the choice. That issue THAT option creates is returning leads who are opted out can't opt-in via your form after their first interaction with your content.
Blocking field updates to the opt-in field when a form is filled out doesn't solve your problem either, as it mimics the second solution above, but would actually be misleading to the user as they would THINK they are picking an opt-in status, but it would only be saved if they were a new contact (if that makes sense..)
Hope that helps!