Each click is assigned a Transaction ID. The value of this ID is set as a preference in your application tracking settings. You can find that setting at Company -> Customize Application -> Tracking.
The ad server does not allow conversions with duplicate transaction IDs unless specifically enabled on an offer. Thus, if the a user created a conversion with the Transaction ID of 123456789 and then 10 minutes later completed the offer again and the conversion pixel was displayed with the user has the same Transaction ID set of 123456789, then this second attempt would be a duplicate conversions and won't be recorded.
Transaction ID Formats
Below are the three different methods for how the ad servers generate Transactions IDs:
Each time a user clicks on a tracking link or loads an impression pixel, they are assigned a random number for the value of their Transaction ID. Using Random Number records all conversions from unique sessions (random number as transaction ID). Random Number doesn't provide any protection against duplicate transaction by the same user.
IP Address / Date
Each time a user clicks on a tracking link or loads an impression pixel, they are assigned a number comprised of their IP Address and the current date for the value of their Transaction ID. So if a user's IP Address is 18.104.22.168 and today's date is 2010-06-05 then their transaction ID will be 12312312312320100605. Note the the time is actually a unix timestamp and not just the year-month-day. Thus, each time a user with the IP address and same date will get the same transaction ID until its a new day. Thus, this user is only able to create 1 conversion per date. It doesn't take into account if they've created a conversion on another offer already. This setting of IP Address / Date is perfect for Advertisers that have 1 product but use multiple offers for the one offer.
IP Address / Date / Offer ID
Each time a user clicks on a tracking link or loads an impression pixel, they are assigned a number comprised of their IP Address, current date, and the ID of the offer the advertisement is for. So if a user's IP Address is 22.214.171.124, today's date is 2010-06-05 and offer ID is 99, then their transaction ID will be 1231231231232010060599. Note the the time is actually a unix timestamp and not just the year-month-day. Thus, each time a user with the same IP address and date can only create one conversion per offer per day. A user can create on conversions on 100 different offers on the same date, just as long as transaction IDs were set on click or impression by 100 advertisements associated with the offers. This setting of IP Address / Date / Offer ID is perfect for Networks that have lots of offers from different advertisers. It limits 1 conversion per user per day per offer and all other conversion attempts with the same Transaction ID will be flagged as a duplicate conversion.
Conversions that are rejected due to being duplicate as identified by the Transaction ID are logged and displayed in the Server Logs report. These are logged with the action of conversion and a message that reads: "Duplicate conversion for ad_id 123456789, Offer #30, Affiliate #56." ad_id is the Transaction ID.
Alphanumeric Transaction IDs
Set up your tracking to generate alphanumeric transaction IDs. Microsoft Excel rounds numbers longer than 10 digits making the transaction ID value wrong. By having the transaction IDs be alphanumeric, the letters in the transaction IDs are rendered as a string and not a number in Microsoft Excel making it easier to export transaction IDs. Verify with your advertisers and other networks before enabling this setting to make sure they accept alphanumeric transaction IDs.
Custom Transaction IDs
Instead of using one of the ways we generate transaction ID values, you can enable your network to use custom transaction ids. Using custom transaction IDs is great to use in mobile when you want to limit one conversion per unique identifier ever.
If you don't want to change the transaction id value as you want to keep it unique to differentiate clicks, you can use the Limit Conversions by Unique ID instead.
You can then use the custom transaction ID where the offer conversion tracking protocol is Server Postback with Transaction ID or when using cookieless tracking client-side pixels. Instead of inserting the transaction ID value that we would have generated, you would insert the custom transaction ID value you provided in the tracking link.
To enable custom transaction IDs, please email email@example.com and request that they enable "enable_custom_transaction_id" on your network.
If the custom transaction ID is not passed but enabled for your network, then the system will revert back to the standard transaction ID that HasOffers generates if the &ad_id= value has no value passed into it or is not supplied on the click.
In the Conversion Report, you can see that the Transaction ID is actually the custom value you passed into the ad_id parameter in the tracking link. Any duplicate request by that value will be automatically rejected.