If you’re planning to record and transmit forces from the collisions of one body to another, make sure you record them in both OnCollisionStayandOnCollisionEnter. Otherwise you will, as I did, miss the all-important first impact where relative velocities tend to get resolved.
These are the impulse forces that Box2D applies, technically it’s not “how hard they are hit” but can be used as an approximation if taken as Newton’s Third Law i.e. equal and opposite reaction. Note that there’s Baumgarte Stabilization going on. Here’s the detail.
It’s also not something to do with which Unity callback or the ContactPoint2D struct. These are just the “messengers” here. If forces were wrong, then the physics engine wouldn’t work at keeping things separated. We don’t manipulate it, we just pass it along.