Sorry but the provided trigger screenshots leave more confusion on my end than I expected.
The two last ones are technically the same.
However, you’re setting a custom field with a specific information - where does this information come from? You’re checking for mail during creation. I suppose that you’re setting a default value and, if a ticket arrives, do not change it (depending on the situation) which leads to your issue.
The provided triggers do not change the product object in any way, but require it to have a value already.