That is exactly when that signal is sent. Immediately before the save action. Problem is, model.updated is sent for EVERY model.. not just tickets. grep -rn model.updated *include/class.ticket.php: Signal:('model.updated', $this);include/class.dynamic_forms.php:('model.updated',include/class.dynamic_forms.php:('model.updated',include/class.task.php: Signal:('model.updated', $this);include/class.search.php: Signal:('model.updated', array($this, 'updateModel'));include/class.orm.php: Signal:('model.updated', $this, $data);I suggest using something like: Signal: ( 'threadentry.created', function (ThreadEntry $entry) { // $entry knows what's up. } );