Home
Offers & Tracking
Tracking Fundamentals
Accessing & Editing S2S Postback URLs
Accessing & Editing S2S Postback URLs

SERIES:

Accessing & Editing S2S Postback URLs

Learn how to access and configure server-to-server postback URLs, pass conversion information, and track detailed metrics across your marketing campaigns using Everflow's flexible S2S postback system.

Overview

Server-to-Server (S2S) postbacks are the backbone of conversion tracking in Everflow. When a conversion happens—a sale, signup, or lead—the Advertiser's server sends a signal directly to Everflow's server with the conversion details. This method is more reliable than browser-based tracking because it doesn't rely on cookies or JavaScript.

S2S postbacks require two parties to coordinate: you set up the postback URL with the right parameters, and the Advertiser's technical team configures their system to fire that URL when conversions occur.

Global Postback vs. Offer-Level Postback
🌐
Global Postback
One URL for all Offers
Location
Control CenterPlatform Configurations → Postback URL
Scope
Fires for ALL conversions across every Offer
Setup
Configure once — applies universally
🎯
Offer-Level Postback
Custom URL per Offer
Location
Offers[Offer]Tracking tab → Postback URL
Scope
Fires ONLY for conversions on this specific Offer
Setup
Configure per Offer — overrides Global if set
🤔 Which Should I Use?
📋 Decision Guide
✅ Use GLOBAL Postback when:
• Advertiser has one tech stack for all campaigns
• Same postback endpoint works for every Offer
• You want "set it and forget it" simplicity
• Different Offers just need different TIDs
✅ Use OFFER-LEVEL Postback when:
• Different Offers send to different endpoints
• Testing/troubleshooting a specific campaign
• Offer requires unique parameters or format
• Working with multiple Advertisers per Offer

At The Offer Level

In order to access the S2S Postback that the Advertiser needs to configure on their end, head to a specific Offer:

In the left sidebar, head to Offers → Manage Click on a specific Offer name In the Offer Details view, navigate to the Tracking card → Conversion Tab

If the Offer is set up to use S2S Postbacks as the Conversion Tracking Method, you’ll find the Postback URL here.

Using The Global Postback

The interesting thing about S2S Postbacks is that they’re the same format for any Offer. It’s always the NID and the Transaction ID that at a minimum need to be sent to Everflow via the S2S Postback.

The NID is a constant value that is prefilled, which only leaves the Transaction ID to be populated by the Advertiser when triggering the Postback.

For this reason, you don’t need to go into the Offer Details card to fetch the Postback URL, you can use the Global Postback. To access the Global Postback URL:

In the left sidebar, head to Control Center → Platform Configurations In the General Tab, find the Global Postback card

Here you’ll find the Global Postback URL.

Required Parameters

Critical: Transaction ID Parameter Coordination The parameter name you use in your Default Landing Page URL must exactly match what the Advertiser's system is configured to capture. If these don't match, the Advertiser won't store the Transaction ID and postbacks will fail silently with Error 12: Invalid Transaction ID.

Common platform requirements:
29 Next: evclid={transaction_id}
ClickBank (Affiliates): tid={transaction_id}
ClickBank (Vendors): ef-transaction-id={transaction_id}
Awin: clickRef={transaction_id}
BuyGoods: subid={transaction_id}
Konnektive / Checkout Champ: c1={transaction_id}

Before going live: Confirm with the Advertiser's technical team which parameter name their system expects, then use that exact name in your Default Landing Page URL.

Every S2S postback URL needs two parameters to successfully record a conversion:

Network ID (nid): Your unique identifier in Everflow. Find it in Control Center → Platform Configurations. This tells Everflow which account to route the conversion to.

Transaction ID (transaction_id): The click identifier that links the conversion back to the original click. The Advertiser must capture this value from your landing page URL and return it in the postback.

Passing Additional Conversion Information

Beyond the required parameters, you can pass additional data to enrich your conversion records. Use the reference below to find the right parameter for your use case.

📋 S2S Postback Parameter Reference
🔴 Required Parameters
nid Required
Your unique Network ID — routes conversions to your account
Format: &nid=123 • Find in: Control Center → Platform Configurations
transaction_id Required
Click identifier linking conversion to original click
Format: &transaction_id={transaction_id}
⚠️ Coordinate parameter name with Advertiser's tech team!
💰 Financial Parameters
amount Recommended for RPS/CPS
Sale amount for dynamic revenue/payout calculation
Format: &amount=99.99 (decimal, no currency symbol)
currency
Currency code if different from Offer default
Format: ¤cy=USD (3-letter ISO code)
coupon_code
Coupon/promo code used in the transaction
Format: &coupon_code=SAVE20
🎯 Event Tracking
adv_event_id
Advertiser-Level Event ID — for milestones across multiple Offers
Format: &adv_event_id=5 • Find in: Advertisers → [Advertiser] → Events tab
event_id
Offer-Level Event ID — for Offer-specific milestones
Format: &event_id=3 • Find in: Offers → [Offer] → Events tab
⚠️ If omitted, conversion defaults to Base (ID=0) — no error thrown!
📝 Metadata & Custom Fields
adv1, adv2, adv3, adv4, adv5
Custom metadata fields (5 available) — ONLY way to pass custom data
Format: &adv1=premium&adv2=monthly
⚠️ Custom parameter names (e.g., &product_type=) are ignored! Use adv1-5
order_id
Unique order/transaction identifier — used for deduplication
Format: &order_id=ORD-123456
email
Customer email (URL-encoded)
Format: &email=user%40example.com
📱 Mobile Device IDs
idfa
iOS Identifier for Advertisers (plain, unhashed)
Format: &idfa=AEBE52E7-03EE-455A-B3C4-E57283966239
Also accepts hashed: idfa_md5, idfa_sha1
google_aid / google_ad_id
Android Google Advertising ID (plain, unhashed)
Format: &google_aid=38400000-8cf0-11bd-b23e-10b96e40000d
Also accepts hashed: google_aid_md5, google_aid_sha1
android_id
Android device ID (separate from advertising ID)
Format: &android_id=a1b2c3d4e5f6
🔐 Security & Authentication
verification_token
Security token for authenticated postbacks — prevents SDK spoofing
Format: &verification_token=abc123secrettoken (max 50 chars)
Find in: Advertisers → [Advertiser] → Edit → Advanced Options → Additional Information
⚠️ If Advertiser enforces this, postbacks without it fail with Error Code 21
🔗 Clickless Attribution
oid / offer_id Clickless Required
Offer ID for clickless/offline conversions (no prior click)
Format: &oid=123 • Use for: Coupon codes, call center, offline attribution
affid / affiliate_id Clickless Required
Partner/Affiliate ID for clickless attribution
Format: &affid=456 • Required with oid for clickless conversions

Sending Sale Amounts for RPS/CPS Offers

If your Offer uses Revenue Per Sale (RPS) or Cost Per Sale (CPS) payout models, the postback must include the sale amount so Everflow can calculate dynamic revenue and payouts.

💰 Understanding Revenue vs. Payout
Advertiser Pays
$100
Revenue
$100
Everflow
Calculates
Payout
$30
Partner Earns
$30
📊 Revenue = What the brand/advertiser spends (the full sale amount)
💵 Payout = What the affiliate/partner earns (commission)
📈 Profit = Revenue − Payout (automatically calculated by Everflow)
⚙️ For RPS/CPS: Set Revenue to 100% to capture full sale, then set Payout as separate % or flat fee. Pass sale value via &amount= parameter.

For percentage-based models, add the amount parameter to your postback: &amount=99.99

If the transaction currency differs from your Offer's default currency, also include: &currency=USD (or the appropriate currency code)

Tracking Conversion Events

To track milestone events beyond the base conversion—like signups, deposits, or subscription renewals—you need to include an event identifier in your postback.

There are two event parameters depending on your setup:

adv_event_id — Use this for Advertiser-Level Events that apply across multiple Offers from the same Advertiser. Find it in Advertisers → [Advertiser] → Events tab.

event_id — Use this for Offer-specific events unique to a single Offer. Find it in Offers → [Offer] → Events tab.

Important If you omit the event parameter, Everflow does NOT reject the postback—it defaults to the Base conversion (ID = 0). This means your conversion records successfully but to the wrong event, causing misreported data and potentially incorrect payouts.

Important Limitations

90-Day Click Data Retention Everflow purges click-level data after 90 days if no conversion has occurred. This is a hard ceiling — even if your session duration is set higher.

What this means:
• A postback sent after 90 days will fail with "Invalid Transaction ID" because the click no longer exists
• This affects industries with long sales cycles (enterprise software, real estate, financial services)

Solution for long sales cycles: Fire an "anchor" event (like a lead submission or signup) within the 90-day window. This locks in the Transaction ID, allowing later conversion events to be attributed correctly.

Additionally, be aware that Partner postbacks fire only once—at the moment the conversion is initially received. If an Advertiser updates the payable amount later, Everflow does not automatically re-fire a postback to notify the Partner.

Troubleshooting Common Issues

If your postbacks aren't working as expected, check these common issues and solutions.

Postback fired but conversion didn't record

Check these common causes:

NID is placeholder: Make sure &nid= contains your actual Network ID number, not "XXX" or other placeholder text
Transaction ID expired: Click data is purged after 90 days. If no conversion occurred within 90 days of the click, the TID is invalid
Verification token missing: If the Advertiser enforces a verification token, include &verification_token=YOUR_TOKEN
Offer status inactive: Postbacks fail if the Offer Status is not "Active" at the time of conversion
Whitelist blocking: If "Enforce Advertiser Whitelist" is ON, conversions from non-approved IPs/domains are rejected

Diagnose with Investigator: Use the Investigator Tool with the Transaction ID to trace why the conversion was rejected.

Amount shows as $0 on RPS/CPS offers

For Revenue Per Sale (RPS) or Cost Per Sale (CPS) offers, Everflow needs the sale amount to calculate dynamic revenue and payout.

Missing amount parameter: Add &amount=99.99 to your postback URL
Currency mismatch: If the amount is in a different currency than the Offer default, add ¤cy=EUR (or appropriate code)
Amount = 0 passed: Check that the Advertiser's system is actually passing the sale value, not a literal zero

Pro tip: Set Revenue to 100% in Offer settings to capture the full sale amount, then configure Payout as a separate percentage or flat fee.

Duplicate conversions being recorded

Duplicates occur when the same conversion signal fires multiple times (e.g., user refreshing a thank-you page).

Disable duplicate conversions: In Offer settings, turn OFF "Allow Duplicate Conversions"
Implement deduplication: Ask the Advertiser to implement server-side deduplication to prevent multiple postback fires
Use order_id: Pass a unique &order_id= value — Everflow can use this for deduplication logic

Partner didn't receive postback notification

Important: Everflow fires Partner postbacks once — at the moment the conversion is initially received.

"One-shot" behavior: If an Advertiser updates the payable amount hours or days later, the system does NOT automatically re-fire a postback to the Partner
Check Partner postback URL: Verify the Partner has correctly configured their postback endpoint in their system
Test first: Use the postback testing workflow before going live

For late updates: If you need to notify Partners of amount changes, you'll need to manually trigger notifications or use the API.

Custom data not appearing in reports

Everflow only captures metadata passed through recognized parameters.

Custom parameter names ignored: Parameters like &product_category=shirts or &lead_score=high are NOT captured
Use ADV fields: Map your custom data to &adv1= through &adv5= — these ARE captured and appear in reports
Example: Instead of &product_type=premium, use &adv1=premium

Reporting: ADV1-5 values appear in the Flex Report and can be used for filtering and segmentation.

Conversion recorded as Base instead of specific Event

If you're tracking milestone events but everything shows as "Base Conversion," you're missing event parameters.

Event ID omitted: Without &event_id= or &adv_event_id=, ALL conversions default to Base (ID = 0)
The postback won't fail: It successfully records — just to the wrong event! This causes misreported data and incorrect payouts
Use the right parameter: adv_event_id for global Advertiser-Level Events across multiple Offers, or event_id for Offer-specific milestone events

Find Event IDs: Offers → [Offer] → Events tab, or Advertisers → [Advertiser] → Events tab

Error Code 12: Invalid Transaction ID

This error means Everflow couldn't match the Transaction ID to a valid click.

TID parameter mismatch: The parameter name in your Default Landing Page (e.g., ?s1=) doesn't match what the Advertiser's system expects — they never captured/stored the TID
TID not returned: Advertiser's postback is passing an empty or placeholder value instead of the actual Transaction ID
90-day expiration: The click occurred more than 90 days ago with no prior conversion, so the TID was purged
Wrong bracket format: Everflow requires curly brackets {transaction_id} — square brackets [transaction_id] or parentheses won't work

Prevention: Always coordinate with the Advertiser on the exact parameter name before going live.

Error Code 21: Invalid Verification Token

The Advertiser has enabled token-based authentication, and the postback is missing or has an incorrect token.

Where to find the token: Advertisers → [Advertiser] → Edit → Advanced Options → Additional Information card
Add to postback: Append &verification_token=YOUR_TOKEN_HERE to the URL
Max 50 characters: The token can be up to 50 characters long
Case sensitive: The token must match exactly — including capitalization

Note: Once enabled on an Advertiser, the token is required for ALL postbacks to that Advertiser's Offers.

Examples Of Postback Parameters

Sending A Total Sale Amount Associated With The Conversion Event

In the following postback, a total sale amount of $100.24 is associated with the conversion. This will help pass on the information to the Partner if you want, associate Revenue with the conversion, and even base the Payout as a percentage of the Revenue.

https://trk-domain-88.com/?nid=10&transaction_id=abc123&amount=100,24

Sending A Currency & Some Categorical Metadata

In the following postback, the currency associated with this conversion will be CAD and the Advertiser is sending a custom value of “blackfriday” via adv1. This would help filter reporting conversion associated with specific adv1 values, and it seems the Advertiser is using it to filter around special sale events in the example.

https://trk-domain-88.com/?nid=10&transaction_id=abc900&currency=CAD&adv1=blackfriday

Explore Related Articles Learn more about postback setup, testing, and troubleshooting How To Test Partner Postbacks — Validate your postback before going live
Conversions Error Code Reference Guide — Full list of error codes and solutions
Clickless Conversion Tracking — For coupon codes and offline attribution
Postback & Tracking Link Configurations — Platform-specific formats for third-party systems