Most likely your “Maximum number of check attempts” is set to 3 or something. In this case you have to fake the check result 3 times in a row before the service wents from soft into hard state.
only services in hard state get notified.
Check the service view if the check for something like:
Current check attempt 1/3
You could configure “Maximum number of check attempts” for this service to 1 and then the fake check results should immediately got to hard state and notify.