# Segmentation events

| Event                           | Dispatched by                             | Properties                                                                                                           |
| ------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `BeforeCreateSegmentGroupEvent` | `SegmentationService::createSegmentGroup` | ``` SegmentGroupCreateStruct $createStruct``?SegmentGroup $segmentGroupResult = null ```                             |
| `CreateSegmentGroupEvent`       | `SegmentationService::createSegmentGroup` | ``` SegmentGroupCreateStruct $createStruct``SegmentGroup $segmentGroupResult ```                                     |
| `BeforeUpdateSegmentGroupEvent` | `SegmentationService::updateSegmentGroup` | ``` SegmentGroup $segmentGroup``SegmentGroupUpdateStruct $updateStruct``?SegmentGroup $segmentGroupResult = null ``` |
| `UpdateSegmentGroupEvent`       | `SegmentationService::updateSegmentGroup` | ``` SegmentGroup $segmentGroup``SegmentGroupUpdateStruct $updateStruct``SegmentGroup $segmentGroupResult ```         |
| `BeforeRemoveSegmentGroupEvent` | `SegmentationService::removeSegmentGroup` | `SegmentGroup $segmentGroup`                                                                                         |
| `RemoveSegmentGroupEvent`       | `SegmentationService::removeSegmentGroup` | `SegmentGroup $segmentGroup`                                                                                         |
| `BeforeCreateSegmentEvent`      | `SegmentationService::createSegment`      | ``` SegmentCreateStruct $createStruct``?Segment $segmentResult = null ```                                            |
| `CreateSegmentEvent`            | `SegmentationService::createSegment`      | ``` SegmentCreateStruct $createStruct``Segment $segmentResult ```                                                    |
| `BeforeUpdateSegmentEvent`      | `SegmentationService::updateSegment`      | ``` Segment $segment``SegmentUpdateStruct $updateStruct``?Segment $segmentResult = null ```                          |
| `UpdateSegmentEvent`            | `SegmentationService::updateSegment`      | ``` Segment $segment``SegmentUpdateStruct $updateStruct``Segment $segmentResult ```                                  |
| `BeforeRemoveSegmentEvent`      | `SegmentationService::removeSegment`      | `Segment $segment`                                                                                                   |
| `RemoveSegmentEvent`            | `SegmentationService::removeSegment`      | `Segment $segment`                                                                                                   |

## Assigning segments

| Event                                    | Dispatched by                                  | Properties                      |
| ---------------------------------------- | ---------------------------------------------- | ------------------------------- |
| `BeforeAssignUserToSegmentEvent.php`     | `SegmentationService::assignUserToSegment`     | `User $user` `Segment $segment` |
| `AssignUserToSegmentEvent.php`           | `SegmentationService::assignUserToSegment`     | `User $user` `Segment $segment` |
| `BeforeUnassignUserFromSegmentEvent.php` | `SegmentationService::unassignUserFromSegment` | `User $user` `Segment $segment` |
| `UnassignUserFromSegmentEvent.php`       | `SegmentationService::unassignUserFromSegment` | `User $user` `Segment $segment` |
