Why 1200 × 630
It is the size Facebook, LinkedIn and X all crop least aggressively, and the one that keeps text readable when the card is shown at a third of that width in a timeline. A square is better for Instagram and for chat apps that show a small thumbnail.
The image must be reachable
Crawlers fetch og:image over the public internet before they render anything, so a relative path, a staging domain or a file behind a login all produce a blank card. Use a full https URL on the live site.
Feeds cache hard
Once a platform has fetched a card it will keep showing the old one for days. Facebook's sharing debugger and LinkedIn's post inspector both force a refetch; X clears on its own schedule, so change the file name if you need it now.