A basket can have more than 1 coupon applied so the multiple coupons are stored together as part of the promotions_coupons integration parameter of a basket. You'll probably need to use the same trigger as the affiliate tracking integrations for CBSubs, which is onCPayAfterPaymentStatusUpdateEvent and need to check that the payment was completed. Example as follows.
Global
Triggers: onCPayAfterPaymentStatusUpdateEvent
User: Automatic
Access: Everybody
Conditions
1: [var4] Equal To Completed
Then hopefully the below should work for getting the coupon codes applied to the basket.
[var2_integrations_promotions_coupons]
Variables available to that trigger are as follows.
Code:
/**
* Event handler for onCPayAfterPaymentStatusUpdateEvent, called each time an update occurs to the payment status of the payment basket
*
* Paypal status mappings:
* CB Unified status Paypal status
* Completed <-- Completed
* Processed <-- Processed, Canceled_Reversal
* Denied <-- Denied, Expired, Failed, Voided
* Refunded <-- Reversed, Refunded, Partially-Refunded
* Pending <-- Pending, In-Progress
* RegistrationCancelled <-- A new cb registration got cancelled by user (e.g. paypal cancel payment button)
*
* @param UserTable $user User paying the payment basket
* @param cbpaidPaymentBasket $paymentBasket Payment basket
* @param cbpaidSomething[] $subscriptions Subscriptions in the basket
* @param string $unifiedStatus New Unified status (see above)
* @param string $previousUnifiedStatus Previous Unified status (see above)
* @param string $eventType type of event (paypal type): 'web_accept', 'subscr_payment', 'subscr_signup', 'subscr_modify', 'subscr_eot', 'subscr_cancel', 'subscr_failed'
* @return void
*/
public function onCPayAfterPaymentStatusUpdateEvent( &$user, &$paymentBasket, &$subscriptions, $unifiedStatus, $previousUnifiedStatus, $eventType )
If the substitution for the coupons doesn't work you'll need to use a Code action instead of a Field action and code in PHP the coupon check and updating of your field.