Tom (Patrick Dempsey) is a wealthy playboy and best friends since college with Hannah (Michelle Monaghan). Hannah goes to Scotland on business and returns engaged to Colin (Kevin McKidd). Hannah asks Tom to serve as her maid of honor. Having realized he loves her, and wanting to convince her not to marry a relative stranger, he agrees. After several awkward days in Scotland with Colin and his family, Tom tries to confess his feelings to Hannah. Her bridesmaids interrupt by taking the two to a pub for Hannah's bachelorette party. Hannah and Tom eventually kiss.
Confronting him later, she asks about the kiss and he tells her they're meant for each other. She still plans on marrying Colin the next day. After the rejection, Tom is going home but decides on a last-ditch effort to stop the wedding. Tom rides back on horseback, and crashes through the chapel door just as the priest is asking if anyone objects. Hannah rushes over to Tom and he professes his love and says she should marry him. They kiss, and Hannah apologizes to Colin, saying he is a perfect guy but not for her. In the final scene, Tom and Hannah get married.