Add custom fields to variant snapshot
Yes using the onPopulateLineItem event. Something like this should work:

craft()-&gt;on('commerce_lineItems.onPopulateLineItem', function($event){

    $purchasable = $event-&gt;params['purchasable'];
    $lineItem = $event-&gt;params['lineItem'];

    $lineItem-&gt;options = array_merge(
      $lineItem-&gt;options,
      ['customFieldLabel'=&gt;$purchasable-&gt;customField]
    );

});