Script for counting score in Archery game working weird

Hello guys, I am having a problem with setting the score for my archery game. I have attached a script to my targets but it seems to work weirdly. It increases score and displays in the console when the arrow is hit from near the target and is not stuck in it. But there is no difference in score if an arrow is hit from far and the is stuck in the target. Please help.

int score = 0;

void OnCollisionEnter(Collision collision)
{
    score++;
    print("Hit. Current Score is " + score);
}

}

Thank you. Will see what changes I can do to the collider.

Is the target having an non-kinematic rigidbody attached?

Just to clarify, is the arrow made up of just one object? could it be that the tip hitting it isn’t registering the same as the arrow stock? I think I remember reading something a bit back about using two object for an arrow flight. Not sure if that was related but got me thinking about the multi object thing.