Changelog

Prev Next

1.1.1 (2026-10-28)

Upgrade notes

Existing code keeps working. Check the following changes before you upgrade:

  • Close tracking instances: MappIntelligenceTracking and MappIntelligenceHybrid are AutoCloseable. 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() and consumer.forceSSL are 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)

  • maxQueueSize takes effect: A full queue is sent. If sending fails, the oldest requests are discarded. 0 means 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() of MappIntelligenceConsumerFile, MappIntelligenceConsumerHttpClient and MappIntelligenceHybrid is public. Subclasses that override it as protected have to declare it public.

  • The built-in consumers no longer implement Runnable. Call close() instead of run().

  • Own implementations of the interface MappIntelligence have to implement close().

Features

  • Campaigns: setMediaCode() and setOncePerSession() 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 String and Integer.

  • Custom consumers: New method send() with the result SENT, RETRY or DISCARDED, 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-IP and X-WT-UA and 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 filePath without 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: null values 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

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

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


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