AdPlusMedia Docs
Docs For Advertisers

MMP Postbacks

Advertisers report conversions to AdPlusMedia with a server-to-server postback, usually fired by their mobile measurement partner. This page describes the intake endpoint, its authentication and every response you may receive.

Endpoint

ANY http://adplusmedia.com/api/[POSTBACK_TOKEN]/[PROVIDER_PASSWORD]/[PROVIDER]
SegmentDescription
[POSTBACK_TOKEN]The global intake token. Issued by our team.
[PROVIDER_PASSWORD]The password assigned to your specific provider integration.
[PROVIDER]Your provider name. See the supported list below.

Both credentials live in the URL path. Treat the whole endpoint as a secret: never paste it into a support ticket, a screenshot or a public dashboard. Every request is logged with these segments masked.

Supported providers

ProviderPath value
AppsFlyerAppsFlyer
AdjustAdjust
SingularSingular
BranchBranch
TenjinTenjin

Parameters

ParameterRequiredDescription
clickid Yes The AdPlusMedia click code we appended to your tracking link.
event Yes The event name, matching an event configured on your campaign.
status No 1 for a conversion, 2 for a reversal. Defaults to 1.
payout No Reported revenue. Used only as a sign hint — see Pricing below.
ip No Overrides the IP recorded against the conversion.
country No Overrides the country recorded against the conversion.

Accepted aliases

Each MMP names these fields differently, so we accept the native spelling for each one.

ProviderClick IDEventPayout
AppsFlyer clickid, af_sub1 event, event_name payout, revenue, af_revenue
Adjust clickid, click_id event, event_name, event_token payout, revenue
Singular clickid, click_id event, event_name, evtname payout, revenue, amount
Branch clickid, click_id event, event_name payout, revenue
Tenjin clickid, click_id event, event_name payout, revenue

Example

bash
curl "http://adplusmedia.com/api/YOUR_TOKEN/YOUR_PASSWORD/AppsFlyer?clickid=K7M2XQ9A&event=purchase&payout=12.50&status=1"

AppsFlyer template

text
http://adplusmedia.com/api/YOUR_TOKEN/YOUR_PASSWORD/AppsFlyer?clickid=[af_sub1]&event=[event_name]&payout=[revenue]&status=1

Pricing is authoritative on our side

The payout you send does not set the amount we record. We price every conversion from the reward configured on your campaign event. Your value is used only to detect whether a call represents a reversal.

Reversals

Send status=2 to reverse a previously settled conversion. We match it to the original event and negate the authoritative amount.

bash
curl "http://adplusmedia.com/api/YOUR_TOKEN/YOUR_PASSWORD/Adjust?clickid=K7M2XQ9A&event=purchase&status=2"

If no settled conversion exists for that event, we return 200 with No settled conversion for this event; reversal ignored. This is intentional so your MMP stops retrying.

Optional security controls

IP allowlist

You can restrict your provider integration to a list of IP addresses or CIDR ranges. Requests from anywhere else are rejected with 403 Forbidden.

HMAC signature

You can additionally require a signature on every call. We compute the expected value as:

text
signature = hmac_sha256(http_build_query(ksort(params_without_signature)), signature_secret)

Send the resulting hex digest either as a query parameter or as a header:

TransportName
Query parametersignature (configurable per provider)
HeaderX-Signature
php
$params = [
        'clickid' => 'K7M2XQ9A',
        'event'   => 'purchase',
        'payout'  => '12.50',
        'status'  => '1',
    ];

    ksort($params);

    $signature = hash_hmac('sha256', http_build_query($params), $signatureSecret);

Sort the parameters by key and exclude the signature field itself before hashing. A mismatch returns 401 Invalid signature.

Rate limit

The intake endpoint accepts up to 300 requests per minute. Above that you will receive HTTP 429. Every call, including rejected ones, is written to an audit log.

Response reference

See Errors & Responses for the complete list of status codes and messages this endpoint can return.