I recently noticed that if you record an order in Shopify via the api and specify a customer_id for the order the customers accepts marketing value will be set to false.
You can remedy this by passing order.buyer_accepts_marketing = true, however when no value is passed for buyer_accepts marketing it seems like the default behaviour should be to keep the customers current accepts marketing value and not always change it to false.
Wow, @Andrew93 !
Thanks so much for this hint - you saved me 1000 hours!!!
It's definitely something Shopify should fix.
ugh just spent a bunch of time trying to figure out what was going on here before I found this post.
I'm not really sure why this isn't considered an actual bug when everywhere else it's pretty standard to assume if you don't pass a value in then that value will remain whatever it was from before.