First on the contribution post hook, when we add the gateway, , gateway_txn_id, original_amount, original_currency, and entity_id.
Then after that, the Contribution save process continues and inserts the source_ fields from the message (with an on duplicate key update).
Maybe we can move the _post hook logic to a _pre hook that just sets the derived parameters for the normal save process to work with?