Any successful TrackerName other than Organic.
Adjust S2S integration guide
One endpoint for events, revenue, and attribution groups.
A lightweight JSON wrapper around fixed Adjust endpoints. Relay caller-supplied credentials, report activity, and split Organic from non-organic users without managing another backend.
https://reporting.mecilo.comRelay the token with each request
Pass the Adjust API token in an Authorization: Bearer TOKEN header. For JSON-only integrations, you may instead include api_token in the request body. The wrapper removes it from the form payload and forwards it only as Adjust's bearer header.
Confirm the service is ready
The health route makes no Adjust request and returns the active Google Cloud region.
curl https://reporting.mecilo.com/health{"ok":true,"service":"adjust-s2s-wrapper","region":"us-central1"}Enter values, generate curl, and run
Choose an endpoint and enter your Adjust values. The console builds a ready-to-use curl command, lets you copy it, and can send the equivalent request directly from this page.
Values stay in this browser tab and are sent only when you click Run live request.
curl -X POST https://reporting.mecilo.com/events \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $ADJUST_API_TOKEN' \
-d '{
"app_token": "YOUR_APP_TOKEN",
"device_id": "YOUR_DEVICE_ID",
"device_id_type": "gps_adid",
"event_token": "YOUR_EVENT_TOKEN",
"environment": "production"
}'/events
Report standard Adjust events. Add revenue and currencyto the same request when the event carries app revenue.
| Field | Required | Description |
|---|---|---|
app_token | Yes | Adjust app token. |
event_token | Yes | Adjust event token. |
| Device ID | Yes | gps_adid, idfa, adid, or generic mapping. |
revenue | For revenue | Amount in full currency units. |
currency | With revenue | ISO currency code such as USD. |
environment | No | production or sandbox. |
created_at_unix | Recommended | Event time as a Unix timestamp. |
Example request
curl -X POST https://reporting.mecilo.com/events \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $ADJUST_API_TOKEN' \
-d '{
"app_token": "abc123abc123",
"event_token": "evt123",
"device_id": "660e1d86-6796-463a-be86-897993136018",
"device_id_type": "gps_adid",
"revenue": 1.25,
"currency": "USD",
"environment": "production"
}'{"ok":true,"adjust_status":200,"adjust_response":"OK"}/ad-revenue
Report advertising revenue such as AdMob impression value. When omitted, the wrapper sets source=publisher and ad_impressions_count=1.
| Field | Required | Description |
|---|---|---|
app_token | Yes | Adjust app token. |
| Device ID | Yes | Platform identifier or generic mapping. |
revenue | Yes | Advertising revenue amount. |
currency | Yes | Currency associated with the amount. |
ad_revenue_network | No | Ad network, for example AdMob. |
ad_revenue_unit | No | Ad unit or format. |
Example request
curl -X POST https://reporting.mecilo.com/ad-revenue \
-H 'Content-Type: application/json' \
-d '{
"api_token": "YOUR_ADJUST_API_TOKEN",
"app_token": "abc123abc123",
"gps_adid": "660e1d86-6796-463a-be86-897993136018",
"revenue": 0.01,
"currency": "USD",
"ad_revenue_network": "AdMob",
"ad_revenue_unit": "rewarded_video"
}'/group
also POSTInspect a device's current Adjust attribution and return a two-way experiment group.
TrackerName exactly matches Organic, case-insensitive.
curl 'https://reporting.mecilo.com/group?app_token=abc123abc123&device_id=DEVICE_ID' \
-H 'Authorization: Bearer $ADJUST_API_TOKEN'Adjust documents inspect_device in its SDK testing and sandbox workflow. Confirm production availability with Adjust before using this route as a live experiment dependency.
Responses and errors
| Status | Source | Meaning |
|---|---|---|
| 200 | Wrapper or Adjust | Healthy, or Adjust accepted the request. |
| 204 | Wrapper | CORS preflight accepted. |
| 400 | Wrapper | Required fields are missing; Adjust was not called. |
| 4xx/5xx | Adjust | Adjust rejected or could not process the request. |
| 502 | Wrapper | Network or unexpected relay failure. |
| 504 | Wrapper | Adjust did not respond within 10 seconds. |