When CP record is drafted with product set before customer, the webhook fires with customerId=null -> now returns skipWriteBack=true (routed to No-op) instead of throwing. Record re-fires webhook properly once customer field is set.