If the gauge moves fairly smoothly and gradually from "cold" to "warm/hot" as the engine temp gradually increases, you've got the correct style of part--a sending unit not a switch.
If the gauge goes from "cold" to "suddenly" warm/hot, you've got a switch. NORMALLY a switch would go from "cold" to "overheating--far end of scale". But if there's enough resistance in the wire harness, it might only go to some mid-point.
So there's the difference: Does the gauge needle creep up in synch with the increasing engine temp? Or does it suddenly jump from cold to warm/hot?
First Guess: You have the correct unit. But it's possible that they sold you a sending unit for some other application that has a differently-calibrated gauge. Or potentially a defective sending unit. Maybe someone put the wrong sending unit into the correct-part-numbered box.
As I've said before--the most likely (but not guaranteed) reason for the gauge not indicating hot enough, is excess resistance in the wire harness.
WHAT VEHICLE???
When the gauge goes too high, but the sensor for the computer shows reasonable temperatures, my first thought is that you've got defective insulation on the temp gauge wire, and that bare spot is intermittently grounding. When it grounds, the gauge goes up, and when it moves away so that it doesn't ground, the gauge reads "normal".
With gasoline V-8 or V-6 in a GMT400, it's almost impossible for "air bubbles" to cause problems. As soon as the thermostat opens, they're transferred to the radiator where they show up as "low coolant level". I don't know about Diesels in GMT400s.
OTHER applications may trap air in the cooling system somewhere. I've got Luminas that have cooling system bleeder screws to eliminate air pockets that won't purge on their own.