Is there some way I can hook into the updating of a model so I can detect these changes?
Why yes, yes there is... Events
Within the event you can then use ->getOriginal($fieldname) to get the previous value. So in your case, for price:
if ($obj->price != $obj->getOriginal('price')) {
// A change to the price has occurred.
$obj->price_updated_at = Carbon::now()->toDateTimeString();
}
EDIT: looking at your scenario again, it looks like regardless if the price has changed or not you want to update the time? So basically any time a price is updated from this external API you want the time updated, yes? Why not just do that at that time? Cron runs, and sees an old price, so a call is made to a 3rd party API.. price is updated (to same, or new value) .. update price_updated_at field to current time, save. Unless I'm misunderstanding something, it sounds like you're overcomplicating things by not just updating the timestamp when you update the price.