hook_commerce_order_presave firing on page load I'm trying to run some code whenever an order is updated. I've found the function hook_commerce_order_presave which fulfils this purpose, but it seems this also fires on page load. Is this normal, or is there another module that would be causing this? Is there a more suitable function I could use?
This is unusual. The hook should not be executed on every page load. You might want to check if some code in a custom module, custom theme, rule is causing an update of commerce_order which could trigger the hook.

To ensure that the order is updated on every page load, you can implement hook_entity_update(), in your custom module

function MODULE_entity_update($entity, $type) {
  if ($type == 'commerce_order') {
    // Execute your code here.
  }
}


If the code inside if loop is still executed, you can be sure that the something is triggering update of commerce order on each page load. And you can proceed to find out what is the actual cause of the problem.