2.1.0 (2026-10-27)
Upgrade notes
Existing code keeps working in most setups. Check the following changes before you upgrade:
One instance per request:
new MappIntelligence($config)is now public. Create one instance per request.close()sends the remaining requests and is also called when the instance is destroyed.getInstance()still works. In long-running runtimes (for example RoadRunner, Swoole or Laravel Octane), callMappIntelligence::reset()at the end of every request. (see Classes)Sending: Adding a request no longer sends a batch when
maxBatchSizeis reached. Requests are sent withflush(),close()or at the end of the request, and also periodically ifrequestIntervalis set.Permanent errors discard requests: 5xx, 408 and 429 are retried. Other 4xx responses discard the batch. (see Data Transfer: Consumer)
maxQueueSizetakes effect: A full queue is sent first. If it is still full, the oldest requests are discarded.0means unlimited.Cookies:
getMaxAge()returns seconds instead of a timestamp.getUserIdCookie()only returns the cookie, so add it to the response yourself.setUserId()still sets it.Setters:
nullkeeps the current value. All other values, includingfalse,0,""and empty lists, are applied.Campaigns without an ID: The campaign is now read from the media codes of the request URL, so campaigns may be tracked where nothing was sent before. (see Campaign)
Hybrid: Only pixel requests (parameter
p, max. 64 KB) are logged. IP address and user agent sent by the client are ignored and taken from the configuration.Cron job: Failed requests are no longer written back into the log file. Requests that can never be sent are kept in
*.discarded. Sent files are deleted or renamed to*.sent. Runs without files to send and runs that overlap another run end with exit status 0. WithFILE_ROTATION, only files named<filePrefix>-<timestamp>…are sent. (see Cron Job)FORK_CURLis deprecated: UseCURLinstead.
Features
Lifecycle:
close(),MappIntelligence::reset()andsetOnFlushComplete()for the tracking and the hybrid instance.New options:
connectionTimeout,readTimeoutandrequestInterval. (see Integration and Configuration)Custom consumers: New optional interface
MappIntelligenceBatchResultConsumer, so a consumer can discard a batch that can never be sent. (see Interfaces)Campaigns:
setMediaCode()andsetOncePerSession()now work server-side.Customer:
setCustomIdentifier()(ceid). (see User)Engage registration: New fields for ISO code, ISO language and time zone. (see Mapp Engage)
Engage attributes: All scalar values are accepted (bool, int, float).
Hybrid:
track($requestURL),flush(),close()andgetUserIdCookie(), as in the Java library.HTTP consumer: One connection is reused for all batches of an instance.
Cron job:
--deactivateand--logLevelwork on the command line. Only one run at a time sends the log files.
Bugfixes
Security: In hybrid tracking, a client could set
X-WT-IPandX-WT-UAand so pretend to be another user.FORK_CURLnow escapes the payload for the shell.Lost or duplicate requests: Fixed for several PHP processes and the cron job writing to the same files, for overlapping cron job runs, for partially sent and unreadable log files, for file mode
coverwriting new requests, and for file prefixes that start with the same text.Fatal errors: An unknown consumer type, a
CUSTOMconsumer type without a consumer,track()with empty or invalid data, and syntax errors in the configuration file no longer cause fatal errors.Configuration file: List values can be strings, entries are trimmed, and the consumer type is case-insensitive.
Product collections: Parameters and categories that only some products have are merged correctly.
Composer:
cronjob.phpands2s.phpload the Composer autoloader.Other: The version parameter
cs801is correct again, PHP 8.5 shows no deprecation output, and the default page name reads its parameters from the request URL.
2.0.0 (2025-10-17)
Breaking changes
This version introduces significant structural updates to improve long-term maintainability and compatibility.
Key changes:
Dropped support for PHP 5:
The library now requires PHP 7.0 or higher. Older PHP versions (including PHP 5.x) are no longer supported.
Introduced PHP Namespaces:
The entire codebase has been refactored to use PHP namespaces, improving structure, maintainability, and support for modern autoloading.
Developer impact:
Custom extensions or integrations may need to be updated to align with the new namespace structure. Please ensure your environment meets the PHP 7.0+ requirement before upgrading.
Features
PII support for Engage registration: Personally identifiable information can now be securely transmitted during the registration process. (see Mapp Engage)
Custom Attributes for Engage: It is now possible to send Mapp Engage Custom Attributes directly via Server-to-Server tracking. (see Mapp Engage)
Flexible data forwarding: You can now choose whether data should be forwarded only to Mapp Intelligence or to both Mapp Intelligence and Mapp Engage. (see Integration and Configuration)
1.1.1 (2023-08-03)
Feature
Support temporary session ID (see Data)
1.1.0 (2023-03-27)
Feature
Include advanced logging (see Integration and Configuration)
Support UserAgent Client Hints (see Integration and Configuration)
1.0.2 (2023-02-01)
Feature
Include method to suppress certain requests (see Integration and Configuration)
1.0.1 (2022-10-17)
Optimization
Add tracking parameter (pf, cs801 and cs802) for tracking feature usage
1.0.0 (2021-01-25)
Feature
Possibility to configure a custom consumer (see MappIntelligenceConsumer)
Possibility to configure a custom debug logger (see MappIntelligenceLogger)
Added a new predefined file rotation consumer
Added new classes with constants for all tracking parameter (see MappIntelligenceParameter and MappIntelligenceCustomParameter)
Added an easier way to add tracking data (see MappIntelligenceDataMap, MappIntelligenceProductCollection and MappIntelligenceParameterMap)
Added of new configuration options (see MappIntelligenceConfig)
0.0.1 (2020-04-07)
Beta release