spryker-feature / customer-experience-management
CustomerExperienceManagement module
Package info
github.com/spryker-feature/customer-experience-management
pkg:composer/spryker-feature/customer-experience-management
Requires
- php: >=8.3
- spryker/customer: ^7.85.0
- spryker/customer-note: ^1.3.0
- spryker/kernel: ^3.30.0
- spryker/symfony: ^3.0.0
- spryker/transfer: ^3.27.0
- spryker/user: ^3.0.0
- spryker/uuid-behavior: ^1.0.0
Requires (Dev)
Suggests
- spryker/api-platform: Required to expose the customers Backend API resource; without it the resource schema is never discovered.
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-07 11:15:27 UTC
README
CustomerExperienceManagement exposes customer lifecycle management over the Spryker Backend API (API Platform), covering the operations the Zed Back Office offers: listing customers with pagination and filtering, reading a single customer, creating a customer through the Back Office registration flow, partially updating a customer, and GDPR anonymization.
The module is an API surface over Spryker\Zed\Customer\Business\CustomerFacadeInterface, which
keeps validation, email uniqueness and the anonymizer plugin stack behaving exactly as they do in
the Back Office.
The resource carries no password property, matching the Back Office add-customer form. An
operator gets a customer to a working password with sendPasswordToken, which mails them a
password-restore link.
Endpoints
| Method | Path | Notes |
|---|---|---|
GET |
/customers |
Paginated and filterable collection |
GET |
/customers/{customerReference} |
Single customer |
POST |
/customers |
Creates a customer via registerCustomer() |
PATCH |
/customers/{customerReference} |
Partial update |
DELETE |
/customers/{customerReference} |
GDPR anonymization — retains the record and scrubs the personal data |
customerReference is the sole customer identifier in every request and response payload.
Collection parameters
| Parameter | Effect |
|---|---|
page[limit], page[offset] |
Pagination (defaults 10 / 0) |
q |
Free text, OR-matched against email, first name and last name |
filter[customers.email] |
Exact email match |
filter[customers.customerReference] |
Exact customer-reference match |
filter[customers.firstName], filter[customers.lastName] |
Partial name match |
filter[customers.includeAnonymized] |
Set it to bring anonymized customers into the result; the default result is the active customers |
sort |
customerReference, createdAt, email, firstName, lastName, registered; prefix with - for descending |
DELETE semantics
DELETE invokes CustomerFacade::anonymizeCustomer(). The customer row is retained with
anonymized_at set, personal data scrubbed and the email replaced by a generated value. The configured
CustomerAnonymizerPluginInterface stack runs inside the same transaction — on this project that means
newsletter unsubscribe, customer-group removal and availability-notification cleanup.
Installation
composer require spryker-feature/customer-experience-management
The resource is discovered automatically from resources/api/backend/. After installing, regenerate the
Backend API resource classes:
GLUE_APPLICATION=GLUE_BACKEND vendor/bin/glue api:generate