How do I enable free shipping in backend only (for order entry)

Override

app/code/core/Mage/Shipping/Model/Carrier/Freeshipping.php

And add

    public function collectRates(Mage_Shipping_Model_Rate_Request $request)
    {
        if (!$this->getConfigFlag('active')) {
            return false;
        }

if (!Mage::app()->getStore()->isAdmin())) {
            return false;
        }

And set to active in backend

You can place the code in local if you dont want to overwrite the core

I can imagine that we add this as an extra option in backend settings and this way make it configurable.


While in payment methods it is possible to activate them with a flag only on frontend and also on backend (but not vice-versa), for shipping methods there are no such flags at all.

You could derive an own shipping method in a custom module and overwrite getAllowedMethods() to determine if the order is to be created in the frontend or in the backend,

A very simple workaround would be to create a free-shipping cart rule with a promo code that only you know. This then can be simply entered in the backend.