Changelog

Prev Next

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), call MappIntelligence::reset() at the end of every request. (see Classes)

  • Sending: Adding a request no longer sends a batch when maxBatchSize is reached. Requests are sent with flush(), close() or at the end of the request, and also periodically if requestInterval is set.

  • Permanent errors discard requests: 5xx, 408 and 429 are retried. Other 4xx responses discard the batch. (see Data Transfer: Consumer)

  • maxQueueSize takes effect: A full queue is sent first. If it is still full, the oldest requests are discarded. 0 means 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: null keeps the current value. All other values, including false, 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. With FILE_ROTATION, only files named <filePrefix>-<timestamp>… are sent. (see Cron Job)

  • FORK_CURL is deprecated: Use CURL instead.

Features

  • Lifecycle: close(), MappIntelligence::reset() and setOnFlushComplete() for the tracking and the hybrid instance.

  • New options: connectionTimeout, readTimeout and requestInterval. (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() and setOncePerSession() 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() and getUserIdCookie(), as in the Java library.

  • HTTP consumer: One connection is reused for all batches of an instance.

  • Cron job: --deactivate and --logLevel work 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-IP and X-WT-UA and so pretend to be another user. FORK_CURL now 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 c overwriting new requests, and for file prefixes that start with the same text.

  • Fatal errors: An unknown consumer type, a CUSTOM consumer 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.php and s2s.php load the Composer autoloader.

  • Other: The version parameter cs801 is 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


1.0.2 (2023-02-01)

Feature


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


0.0.1 (2020-04-07)

  • Beta release