French flag

Bonjour vs. bon matin

The main difference between bonjour and bon matin for greeting someone in the morning is that bonjour is the standard, universal term used everywhere, while bon matin is a regionalism primarily used in Quebec, Canada, and is considered incorrect in France.

Bonjour

A1
This is the universally accepted and standard greeting in all French-speaking regions. It literally means good day and is used to say both good morning and good afternoon. It is the safest and most common way to greet someone from the morning until the early evening.
Bonjour, je voudrais une baguette s'il vous plaît.
(Good morning, I would like a baguette please.)
Bonjour Madame, comment allez-vous aujourd'hui ?
(Good morning Madam, how are you today?)
En entrant dans le bureau, elle a dit bonjour à ses collègues.
(Upon entering the office, she said good morning to her colleagues.)
Bonjour tout le monde ! J'espère que vous avez bien dormi.
(Good morning everyone! I hope you slept well.)
Même à deux heures de l'après-midi, on dit bonjour.
(Even at two in the afternoon, you say hello.)

Bon matin

B2
This phrase is a direct translation of the English good morning. It is not used in France and is considered an anglicism or an incorrect expression. However, it is commonly heard and used in Quebec (Canada), often in more informal contexts or in the media, though bonjour is also perfectly acceptable there.
L'animateur de radio au Québec a salué ses auditeurs avec un joyeux bon matin.
(The radio host in Quebec greeted his listeners with a cheerful good morning.)
Bon matin ! Le café est prêt, veux-tu une tasse ?
(Good morning! The coffee is ready, do you want a cup?)
Un touriste a dit bon matin au boulanger à Paris, qui a semblé un peu surpris.
(A tourist said bon matin to the baker in Paris, who seemed a little surprised.)
Au Québec, on peut dire bon matin ou bonjour pour se saluer le matin.
(In Quebec, you can say bon matin or bonjour to greet each other in the morning.)

Summary

In essence, always use bonjour to say good morning. It is always correct, polite, and universally understood in the entire French-speaking world. You should only use bon matin if you are specifically in Quebec and want to use a local, informal expression, while being aware that it is not standard French.