Skip to content
For AI agents: the complete documentation index is available at llms.txt; this page is also available as Markdown at index.md.

Segment API

Segments enable you to profile the content displayed to specific users.

To manage segments, use the SegmentationService.

Getting segment information

To load a segment group, use SegmentationService::loadSegmentGroupByIdentifier(). Get all segments assigned to the group with SegmentationService::loadSegmentsAssignedToGroup():

1
2
3
4
5
6
7
$segmentGroup = $this->segmentationService->loadSegmentGroupByIdentifier('custom_group');

$segments = $this->segmentationService->loadSegmentsAssignedToGroup($segmentGroup);

foreach ($segments as $segment) {
    $output->writeln('Segment identifier: ' . $segment->getIdentifier() . ', name: ' . $segment->getName());
}

Similarly, you can load a segment by using SegmentationService::loadSegmentByIdentifier():

1
$segment = $this->segmentationService->loadSegmentByIdentifier('segment_1');

Checking assignment

You can check whether a user is assigned to a segment with SegmentationService::isUserAssignedToSegment():

1
2
3
4
5
$output->writeln((
    $this->segmentationService->isUserAssignedToSegment($user, $segment)
    ? 'The user is assigned to the segment.'
    : 'The user is not assigned to the segment.'
));

Assigning users

To assign a user to a segment, use SegmentationService::assignUserToSegment():

1
$this->segmentationService->assignUserToSegment($user, $segment);

Creating segments

Each segment must be assigned to a segment group.

To create a segment group, use SegmentationService::createSegmentGroup() and provide it with a SegmentGroupCreateStruct:

1
2
3
4
5
6
7
$segmentGroupCreateStruct = new SegmentGroupCreateStruct([
    'name' => 'Custom Group',
    'identifier' => 'custom_group',
    'createSegments' => [],
]);

$newSegmentGroup = $this->segmentationService->createSegmentGroup($segmentGroupCreateStruct);

To add a segment, use SegmentationService::createSegment() and provide it with a SegmentCreateStruct, which takes an existing group as one of the parameters:

1
2
3
4
5
6
7
$segmentCreateStruct = new SegmentCreateStruct([
    'name' => 'Segment 1',
    'identifier' => 'segment_1',
    'group' => $newSegmentGroup,
]);

$newSegment = $this->segmentationService->createSegment($segmentCreateStruct);

Updating segments

To update a segment or a segment group, use SegmentationService::updateSegment() or SegmentationService::updateSegmentGroup() and provide it with SegmentUpdateStruct or SegmentGroupUpdateStruct.

Deleting segments

To delete a segment or a segment group, use SegmentationService::removeSegment() or SegmentationService::removeSegmentGroup():

1
$this->segmentationService->removeSegmentGroup($segmentGroup);