Both, "congratulations on" and "congratulations for", are correct, but "on" is much more common.
Both "congratulations on" and "congratulations for" are correct, but "congratulations on" is much more common:
Congratulations on your job promotion.
Congratulations for being elected
Be aware, however, that:
- To express good wishes in the context of a happy event, we usually choose the preposition "on" (e.g.,"Congratulations on your baby!")
- As a way to praise someone's achievement or emphasize the reason for the congratulations, you can use the preposition "for" (e.g., "Congratulations for your excellent work.")
Having said that, we usually use the preposition "on" to say "congratulations on your wedding/marriage", "congratulations on your graduation", "congratulations on the birth of your baby", and "congratulations on your achievement".
Congratulations on your wedding!
Congratulations on the arrival of your new baby.
When speaking about getting a new job, we typically say "congratulations for your new job", but you can also use the preposition "on".
Congratulations for your new job.
Congratulations on your new job.
As mentioned above, the preposition "on" is the most common way to congratulate someone.
Congratulations on your incredible success.
Congratulations on persevering through this long road.