Skip to content

Duplicate User Detection

What it detects

Duplicate traffic occurs when the same user — or the same bot — generates multiple clicks or conversions for the same offer within a short time window. This inflates click counts, creates false conversion signals, and misattributes revenue. The Duplicate User Detection filter blocks repeated events from the same user based on the data points you choose.

How it works

Integr8 maintains a short-term record of user identifiers within the lookback window. When a new click or conversion arrives, it is checked against the stored identifiers. If a match is found and the allowed duplicate count is exceeded, the event is rejected.

You configure which data points are used for identity matching:

Data pointDescription
IP addressIPv4 and IPv6 addresses
UUIDUnique user identifier passed in the tracking link
Device IDMobile device identifier (IDFA/GAID)
User agentBrowser and operating system string
FingerprintComposite identifier from multiple device signals (requires JavaScript tracking)

Multiple data points can be active simultaneously. A match on any single selected data point is enough to trigger the duplicate check.

Configuration

Navigate to Fraud Prevention > Device Fraud > Duplicate User Detection to configure.

ParameterDefaultRangeDescription
allowed_duplicates10–1,000Maximum allowed repeat events from the same user
lookback_time24 h1 min–30 daysWindow for tracking duplicate identifiers
detection_levelOfferOffer, Publisher, Offer+PublisherScope for counting duplicates
data_pointsIPIP, UUID, Device ID, User Agent, FingerprintWhich identifiers to use for duplicate matching

What happens when triggered

When a duplicate is detected beyond the allowed count:

  • The click or conversion is rejected with fraud_reason: duplicate_user.
  • No attribution is recorded.
  • The event is logged in Reports > Click Reports or Conversion and Events Report.

Fingerprint-based deduplication requires the JavaScript tracking link to be implemented. Without it, fingerprint data is unavailable and the filter falls back to other selected data points.