vendor/adjust · vendor documented
Adjust server-to-server events
The S2S event endpoint takes query or form parameters, not the client SDK hit. ip_address is IPv4 only. revenue and currency travel together. IP and user agent stay unhashed.
revenue needs a currency code
Adjust documents revenue in full currency units together with an ISO 4217 code. Sending 123.4 without EUR is an incomplete revenue event.
What this pack matches
Rules
Codes are stable. A finding in CI, MCP, or the playground lands on the same id.
| Field | Required | What it checks | Rule ids | Source |
|---|---|---|---|---|
app_token |
required | It is the Adjust app token from the dashboard, and the endpoint requires it on every request. Fix: Send the app token from the Adjust dashboard as `app_token`. | vendor.adjust.param.app_token.missingvendor.adjust.param.app_token.empty |
docs |
event_token |
required | It is the Adjust event token from the dashboard, and the endpoint requires it on every request. Fix: Send the event token from the Adjust dashboard as `event_token`. | vendor.adjust.param.event_token.missingvendor.adjust.param.event_token.empty |
docs |
s2s |
required | Adjust documents a hardcoded `s2s=1` so the endpoint treats the request as server-to-server. Fix: Add `s2s=1`. | vendor.adjust.param.s2s.missingvendor.adjust.param.s2s.emptyvendor.adjust.param.s2s.invalid |
docs |
created_at |
optional | Adjust documents `created_at` as an ISO 8601 timestamp. `created_at_unix` is the Unix-seconds alternative. Fix: Send ISO 8601, such as `2017-01-02T15:04:05.000+0000`, or send `created_at_unix` instead. | vendor.adjust.param.created_at.emptyvendor.adjust.param.created_at.invalid |
docs |
created_at_unix |
optional | Adjust documents it as a Unix timestamp in seconds. Fix: Send seconds, not milliseconds. | vendor.adjust.param.created_at_unix.emptyvendor.adjust.param.created_at_unix.invalid |
docs |
revenue |
optional | It is the revenue in full currency units, such as `149.99` for $149.99. Adjust documents a minimum of 0.001 and requires `currency` with it. Fix: Send `revenue` as a number with no currency symbol, together with `currency`. | vendor.adjust.param.revenue.emptyvendor.adjust.param.revenue.invalid |
docs |
currency |
optional | It is the ISO 4217 currency code for a revenue event. Adjust documents it together with `revenue`. Fix: Use the three-letter code, such as `EUR`, together with `revenue`. | vendor.adjust.param.currency.emptyvendor.adjust.param.currency.invalid |
docs |
environment |
optional | Adjust documents `sandbox` or `production`, and defaults to production when it is omitted. Fix: Send `environment=sandbox` for testing, or `environment=production` for live traffic. | vendor.adjust.param.environment.emptyvendor.adjust.param.environment.invalid |
docs |
ip_address |
optional | It is the device IP address, sent unhashed. Adjust documents IPv4 only; IPv6 is not supported. Fix: Send the device IPv4 address, not a digest and not an IPv6 address. | vendor.adjust.param.ip_address.emptyvendor.adjust.param.ip_address.invalid |
docs |
user_agent |
optional | It is the device user agent, URL-encoded, sent unhashed. Fix: Send the raw user agent string, URL-encoded. | vendor.adjust.param.user_agent.empty |
docs |
idfa |
optional | iOS Identifier for Advertisers. Adjust requires a device ID such as `idfa` or `gps_adid`. | vendor.adjust.param.idfa.empty |
docs |
gps_adid |
optional | Android advertising ID. Adjust requires a device ID such as `idfa` or `gps_adid`. | vendor.adjust.param.gps_adid.empty |
docs |
idfv |
optional | iOS Identifier for Vendor. Adjust documents uppercase with hyphens. Fix: Send the IDFV in uppercase with hyphens, such as `D2CADB5F-410F-4963-AC0C-2A78534BDF1E`. | vendor.adjust.param.idfv.emptyvendor.adjust.param.idfv.invalid |
docs |
android_id |
optional | Raw Android ID. Adjust documents lowercase, without hyphens. Fix: Send the Android ID in lowercase with no hyphens. | vendor.adjust.param.android_id.emptyvendor.adjust.param.android_id.invalid |
docs |
android_id_lower_md5 |
optional | Hashed Android ID. Adjust documents lowercase MD5. Fix: Send a 32-character lowercase MD5 hex digest. | vendor.adjust.param.android_id_lower_md5.emptyvendor.adjust.param.android_id_lower_md5.invalid |
docs |
android_id_lower_sha1 |
optional | Hashed Android ID. Adjust documents lowercase SHA1. Fix: Send a 40-character lowercase SHA1 hex digest. | vendor.adjust.param.android_id_lower_sha1.emptyvendor.adjust.param.android_id_lower_sha1.invalid |
docs |
android_id_upper_md5 |
optional | Hashed Android ID. Adjust documents uppercase MD5. Fix: Send a 32-character uppercase MD5 hex digest. | vendor.adjust.param.android_id_upper_md5.emptyvendor.adjust.param.android_id_upper_md5.invalid |
docs |
android_id_upper_sha1 |
optional | Hashed Android ID. Adjust documents uppercase SHA1. Fix: Send a 40-character uppercase SHA1 hex digest. | vendor.adjust.param.android_id_upper_sha1.emptyvendor.adjust.param.android_id_upper_sha1.invalid |
docs |
imei |
optional | Raw IMEI, without hyphens. | docs | |
imei_lower_md5 |
optional | Hashed IMEI. Adjust documents lowercase MD5, without hyphens. Fix: Send a 32-character lowercase MD5 hex digest. | vendor.adjust.param.imei_lower_md5.emptyvendor.adjust.param.imei_lower_md5.invalid |
docs |
meid |
optional | Raw MEID. Adjust documents uppercase, without hyphens. Fix: Send the MEID in uppercase with no hyphens. | vendor.adjust.param.meid.emptyvendor.adjust.param.meid.invalid |
docs |
win_naid |
optional | Windows network adapter ID. | docs | |
win_hwid |
optional | Windows Store hardware ID. | docs | |
adid |
optional | The Adjust identifier associated with the device. Useful for identifying LAT users on iOS without IDFA. | vendor.adjust.param.adid.empty |
docs |
callback_params |
optional | It is a JSON object of string callback key-value pairs. Adjust documents it URL-encoded, with no nested objects. Fix: Send a JSON object such as `{"f0o":"bar"}`, URL-encoded. Do not nest objects. | vendor.adjust.param.callback_params.emptyvendor.adjust.param.callback_params.invalid |
docs |
partner_params |
optional | It is a JSON object of string partner key-value pairs. Adjust documents it URL-encoded, with no nested objects. Fix: Send a JSON object such as `{"f0o":"bar"}`, URL-encoded. Do not nest objects. | vendor.adjust.param.partner_params.emptyvendor.adjust.param.partner_params.invalid |
docs |
device_id_required |
required | The request carries no device identifier. Adjust requires an advertising ID such as `idfa` or `gps_adid`, or one of the other documented device IDs. Fix: Send `idfa` for iOS or `gps_adid` for Android, or another documented device ID. | vendor.adjust.device_id_required |
docs |
hashed_plaintext_field |
required | This field looks like a SHA-256 digest, but Adjust documents the device IP, user agent, and advertising IDs as unhashed. Fix: Send the raw IPv4 address, user agent, or advertising ID. | vendor.adjust.hashed_plaintext_field |
docs |
revenue_requires_currency |
required | The event sends `revenue` without `currency`. Adjust documents both on revenue events. Fix: Add `currency` as a three-letter ISO 4217 code. | vendor.adjust.revenue_requires_currency |
docs |
currency_requires_revenue |
required | The event sends `currency` without `revenue`. Adjust documents both on revenue events. Fix: Add `revenue` as a number in full currency units, such as `123.4`. | vendor.adjust.currency_requires_revenue |
docs |
Validate a payload
pixellint validate url "$ARTIFACT" --rulepack vendor/adjust
Try this failing payload in the playground. Adjust S2S revenue without currency.
https://s2s.adjust.com/event?s2s=1&event_token=f0ob4r&app_token=4w565xzmb54d&idfa=D2CADB5F-410F-4963-AC0C-2A78534BDF1E&revenue=123.4
cargo install pixellint
·
npm install pixellint