I believe that your assumption is correct that the Open program status did not get updated because you did not have a triggered smart campaign set up to update the program status to Open when someone opens your email.
If the campaign is over, you can always do a batch campaign to update the program status. In case you need more details on how to do this:
thanks! What is the difference between the flow step of "add to sfdc campaign" vs "change status in SFDC campaign"?
Would opens have to be added to a sfdc with that status in order for anything to change a status later (like a click thru trigger)?
This is if I am not syncing at the program level because I don't need to see everyone that was sent the email, but i do want the opens and click thrus to flow to the campaign.
Do Opens need to be added or can they have a change status?
I would use change status in SFDC campaign - it will both add someone to the campaign if they were not already a campaign member, and it will also change their status. If you only want to sync certain statuses to an SFDC campaign, you could have individual smart campaigns changing program statuses on the Marketo side, based on action taken, and then for the statuses you want to track in SFDC, add an additional flow step to those smart campaigns to change the program status to the corresponding status in SFDC.