How to handle free and paid orders with post processing?

I’m going around in circles trying to use Drupal Commerce to make an ecommerce site where some orders cost money and some don’t (because some users have coupons that make products free).

I’ve set up the Checkout process as seen in the screenshot below and have created a rule as such

  • Rules Event: Process checkout pane
  • Rules Conditions: Price comparison (commerce order = $ 0)
  • Rules Actions:
    • Change pane properties (disable billing information, off-site payment redirect, Payment)
    • Update the order state to (pending/complete)

Checkout settings

With this setup when the user goes through without a coupon it all works fine. When the user uses a coupon to get the price to zero on the Checkout page the user presses the Continue to next step button and goes to an empty Review page (the panes have been set to disabled so there is nothing to see) and they can’t progress any further.

Pressing the Continue button on that page just bounces them back to the same page. If they press Cancel and go back to the shopping cart, then on through checkout and press “Continue to next step” again (the coupon has been remembered and the total is still $ 0) then get sent to the Checkout Complete page and hook_commerce_checkout_complete($ order) is called.

I’ve tried adding extra actions to the rule, to complete the checkout or change the order status, but they have strange side effects like going to the Review page anyway, or calling that hook twice.

Can anyone help me set up the checkout and rules so that a free order goes straight to complete from the checkout page, whilst still maintaining the normal path for orders that require payments?

paid vs. direct traffic analysis


I am running Google Ads for my website and sometime I get transaction conversion (read Goals) analysis through GA.

At the same time I get DIRECT conversion in GA.

My question is, how can I get analytics of this paid traffic making transaction in their next visit to my website (either by DIRECT or ORGANIC visit)