Commerce 1: Different default order status based on product types I want to assign different default order status based on product types.  Is this possible?

What I need to achieve is to send different email notifications based on product types.  Can this be configured or do I need to add logic to and customize the email templates?
Edit: I'm sorry! I missed Commerce 1 in the title! This answer only applies to Commerce 2.


Take a look at the defaultOrderStatus event!

The description is a bit misleading—it's actually used to do exactly what you've described: alter the "default" completed order status in situations where it might not be desirable.

From the docs:

use craft\commerce\Plugin as Commerce;
use craft\commerce\events\DefaultOrderStatusEvent;
use craft\commerce\services\OrderStatuses;
use yii\base\Event;

Event::on(
    OrderStatuses::class,
    OrderStatuses::EVENT_DEFAULT_ORDER_STATUS,
    function (DefaultOrderStatusEvent $e) {
        $myOverriddenOrderStatus = Commerce::getInstance()-&gt;getOrderStatuses()-&gt;getOrderStatusByHandle('myCustomStatusHandle');

        $lineItems = $e-&gt;order-&gt;getLineItems();

        foreach ($lineItems as $lineItem) {
            // Your logic for checking the ProductType would
            // replace this basic test:
            if ($lineItem-&gt;price &gt; 500) {
                $e-&gt;orderStatus = $myOverriddenOrderStatus;
            }
        }

        // Whatever `$e-&gt;orderStatus` ends up being by the time we exit
        // this event listener will be used as the new `OrderStatus`.
    });