Another tip I find helpful with my children is to prep them. Before I take them into a shop I remind them how I want them to behave. If I am taking them to someone's house, I remind them to remember their manners and be friendly. I tell them what I want them to do and how I want them to act. As some of my children are very shy and sometimes appear very rude, I tell them to answer when someone speaks to them.
One time this idea of prepping worked so well I was amazed! I was taking my children to the midwife. Usually when it was time to leave, I would have to pick up their toys. So this time I said, "When I tell you it's time to leave, I want you to say 'Yes, mummy' and then quickly tidy up."
When it was time to leave and I told my children that, they both chorused "Yes, Mummy" in a loud voice and tidied up in a few seconds. My midwife and the midwifery student with her was astonished. So was I! And all it took was a bit of prepping.
The idea is to teach them what to do beforehand, rather than just growling them when they don't behave the way you want. To teach them in non-conflict times.
And then I give them lots of praise when they behave well. It's so important to catch their good behaviour and praise them for it.