Any successful TrackerName other than Organic.
Adjust S2S integration guide
Use a reporting token. Keep the Adjust request unchanged.
The backend exchanges your Mecilo reporting token for the real Adjust API token. Continue sending the same Adjust app token, event token, device, revenue, and attribution fields.
https://reporting.mecilo.comReplace only the Adjust API token
Send Authorization: Bearer YOUR_REPORTING_API_TOKEN. The function maps that value to the server-side Adjust API token. Your request body remains an ordinary Adjust request using app_token, event_token, and standard Adjust fields.
Check health, then verify the token
The health route makes no Adjust request. Use /mapping to verify that the reporting token is recognized without sending an event.
curl https://reporting.mecilo.com/healthcurl https://reporting.mecilo.com/mapping \
-H 'Authorization: Bearer YOUR_REPORTING_API_TOKEN'{"mapping_id":"your_mapping","apps":{}}Enter values, generate curl, and run
Enter your reporting token and the same Adjust app/event values you already use. The tester builds a curl command and can send the equivalent request.
Only the reporting token is mapped. App, event, device, and revenue values remain part of the Adjust request.
curl -X POST https://reporting.mecilo.com/events \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_REPORTING_API_TOKEN' \
-d '{
"app_token": "YOUR_ADJUST_APP_TOKEN",
"device_id": "YOUR_DEVICE_ID",
"device_id_type": "gps_adid",
"event_token": "YOUR_ADJUST_EVENT_TOKEN"
}'/mapping
Verifies the reporting token and returns its mapping identifier. In token-only mode, apps is empty and no Adjust credentials are exposed.
curl https://reporting.mecilo.com/mapping \
-H 'Authorization: Bearer YOUR_REPORTING_API_TOKEN'/events
Reports an Adjust event and optional app revenue.
| Field | Required | Description |
|---|---|---|
app_token | Yes | Your existing Adjust app token. |
event_token | Yes | Your existing Adjust event token. |
| Device ID | Yes | device_id plus type, or a native Adjust device field. |
revenue | For revenue | Amount in full currency units. |
currency | With revenue | ISO currency code such as USD. |
Example request
curl -X POST https://reporting.mecilo.com/events \
-H 'Authorization: Bearer YOUR_REPORTING_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"app_token": "YOUR_ADJUST_APP_TOKEN",
"event_token": "YOUR_ADJUST_EVENT_TOKEN",
"device_id": "660e1d86-6796-463a-be86-897993136018",
"device_id_type": "gps_adid",
"revenue": 1.25,
"currency": "USD"
}'{"ok":true,"adjust_status":200,"adjust_response":"OK"}/ad-revenue
Reports advertising revenue. The wrapper defaults source=publisher and ad_impressions_count=1.
| Field | Required | Description |
|---|---|---|
app_token | Yes | Your existing Adjust app token. |
| Device ID | Yes | Platform identifier or generic device mapping. |
revenue | Yes | Advertising revenue amount. |
currency | Yes | Currency associated with the amount. |
curl -X POST https://reporting.mecilo.com/ad-revenue \
-H 'Authorization: Bearer YOUR_REPORTING_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"app_token": "YOUR_ADJUST_APP_TOKEN",
"device_id": "660e1d86-6796-463a-be86-897993136018",
"device_id_type": "gps_adid",
"revenue": 0.01,
"currency": "USD",
"ad_revenue_network": "AdMob"
}'/group
also GETInspects current Adjust attribution and returns a two-way experiment group.
TrackerName equals Organic, case-insensitive.
curl -X POST https://reporting.mecilo.com/group \
-H 'Authorization: Bearer YOUR_REPORTING_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"app_token":"YOUR_ADJUST_APP_TOKEN","device_id":"DEVICE_ID","device_id_type":"gps_adid"}'Adjust documents inspect_device for SDK testing and sandbox workflows. Confirm production availability before using this route as a live experiment dependency.
Map the reporting token only
Edit config/reporting-api-map.local.json. Each entry pairs one public reporting token with one private Adjust API token. Keep apps empty so app and event tokens continue to come from the request.
{
"version": 1,
"allow_legacy_adjust_tokens": true,
"default_mapping": null,
"mappings": {
"client_name": {
"reporting_api_token": "rpt_RANDOM_TOKEN",
"adjust_api_token": "REAL_ADJUST_API_TOKEN",
"apps": {}
}
}
}Validate and publish
npm run token:generate
npm run config:check
npm run config:publish
npm run deployallow_legacy_adjust_tokens: true preserves direct-token behavior for callers that have not migrated. The deployed configuration currently uses this compatibility mode.Responses and errors
| Status | Meaning |
|---|---|
| 200 | Healthy, mapping verified, or Adjust accepted the request. |
| 400 | A required Adjust request field is missing. |
| 401 | Reporting API token is missing or invalid when compatibility mode is disabled. |
| 502 | Network or relay failure. |
| 504 | Adjust did not respond within 10 seconds. |