Ask them if they can put a topical 'numbing' cream on his skin first, before the shots. That is, IF they have this in the office.
My Dad, used to get Dialysis... and had an IV needle. He'd put on the topical numbing cream first. It helps a little. But it was his prescription cream, from HIS Doctor. Used for this purpose.
The hurt from a shot is TEMPORARY.
Tell your son that.
The brain imagining, makes it worse.
But the actual hurt, is only temporary.
Tell him, (and bring with you) a whistle. Count to 3... and on the number 3, have your son BLOW HARD on his whistle...and this is when the Nurse will do the shot. TELL the Nurse this. Blowing on the whistle, will distract him/his brain/and the pain.
The actual shot is only like a split second.
The longer you put off getting his scheduled shots per age stages, then the sequencing and boosters, will be off. And not good to do this.
Always try to get shots, on schedule.
My son, who is 5 now... was a TERROR to take to the Doctor and per shots. Screaming and yelling and kicking.
BUT at home, the day before,... we "practiced" what will happen. We role played it. And described the process. So then, once he was AT the Doctor, he felt better... because we 'practiced' at home.
He is now, REALLY good, about shots. And I never have to put it off.
I am always up front with him, that 'yes' you will be getting shots this time.
Don't make the whole situation overly dramatic.
Nor deposit your fear of it, onto him.
the leg or butt will hurt more.
Just have it in the arm.