1.1.1 (2026-10-28)
Upgrade notes
Existing code keeps working. Check the following changes before you upgrade:
Close tracking instances:
MappIntelligenceTrackingandMappIntelligenceHybridareAutoCloseable. Create one instance per request and close it, ideally with try-with-resources.close()sends the remaining requests. Instances that are not closed still send them, at the latest when the JVM ends. (see Classes)HTTPS only: All requests are sent via HTTPS.
setForceSSL()andconsumer.forceSSLare ignored.Permanent errors discard requests: The HTTP consumer retries 5xx, 408 and 429. Other 4xx responses discard the batch, so requests rejected because of a wrong track ID or track domain are no longer kept. (see Data Transfer: Consumer)
maxQueueSizetakes effect: A full queue is sent. If sending fails, the oldest requests are discarded.0means unlimited.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: Requests that can never be sent are kept in
*.log.discarded, and the run continues with the next file. Runs without files to send and runs that overlap another run end with exit status 0. The cron job needs write access to the file directory. (see Cron Job)File names: The file consumer and the cron job only process files named
<prefix>-<timestamp>…. Check this if your own scripts process these files or if several prefixes start with the same text.
Only relevant for subclasses and own implementations
close()ofMappIntelligenceConsumerFile,MappIntelligenceConsumerHttpClientandMappIntelligenceHybridispublic. Subclasses that override it asprotectedhave to declare itpublic.The built-in consumers no longer implement
Runnable. Callclose()instead ofrun().Own implementations of the interface
MappIntelligencehave to implementclose().
Features
Campaigns:
setMediaCode()andsetOncePerSession()now work server-side.Engage registration: New fields for ISO code, ISO language and time zone. (see Mapp Engage)
Engage attributes: All value types are accepted, not only
StringandInteger.Custom consumers: New method
send()with the resultSENT,RETRYorDISCARDED, so a consumer can discard a batch that can never be sent. (see Interfaces)HTTP consumer: Connections are reused.
Cron job: Only one run at a time sends the files of a path and prefix. Partially sent files keep only the requests that were not delivered.
Bugfixes
Security: In hybrid tracking, a client could set
X-WT-IPandX-WT-UAand so pretend to be another user.Lost or duplicate requests: Fixed for several JVMs and the cron job writing to the same files, for overlapping cron job runs, for partially sent and unreadable log files, and for a
filePathwithout trailing separator.Reused objects: A reused parameter map or configuration no longer carries data of the previous request into the next one.
Request URL: Values containing
=or an encoded&, a//in the path and invalid percent-encoding are handled correctly.Product collections: Parameters and categories that only some products have are no longer dropped.
Engage attributes: Quotes in values no longer break the request.
Stability:
nullvalues in setters and in the configuration no longer throw exceptions, and resource leaks are fixed.
1.0.3 (2025-10-17)
Breaking changes
This version introduces a new background mechanism that collects requests and sends them in batches at regular intervals. This improves processing efficiency and ensures stable performance, even as traffic increases, by distributing requests across multiple queues.
Key changes in detail
Batch request processing: Requests are no longer sent immediately when a
track()call is triggered. Instead, they are collected in internal queues and sent at defined intervals.Load distribution across multiple queues: Requests are now processed through multiple queues, helping to evenly distribute the load and maintain stability under heavy traffic.
Manual or automatic flushing: Requests are automatically sent at specified intervals or can be manually triggered, giving you more control over when data is transmitted.
Developer Impact
If your application previously relied on requests being sent immediately after an action, this behavior may no longer work as expected. You need to either configure an interval for automatic flushing or implement manual triggers to send requests at the right time. (see Classes).
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)
0.1.5 (2023-08-07)
Feature
Added method for configuring connection and read timeout (see Integration and Configuration)
Bugfix
At connection timeout the request is written back to the queue
0.1.3 (2023-08-02)
Feature
Support temporary session ID (see Data)
0.1.0 (2023-05-08)
Feature
Include advanced logging (see Integration and Configuration)
Support UserAgent Client Hints (see Integration and Configuration)
Bugfix
Update outdated dependencies
0.0.22 (2023-02-28)
Bugfix
Add artifact com.mapp.intelligence.tracking:mapp-intelligence-java-tracking:pom to central
0.0.17 (2023-01-24)
Feature
Include method to suppress certain requests (see Integration and Configuration).
0.0.16 (2022-10-24)
Optimization
Add tracking parameter (pf, cs801 and cs802) for tracking feature usage.
0.0.1 (2020-11-03)
Beta release