Transactions Tracking
Besides Upclick Reporting where merchants can log in to see all the transactions by types (Sales, Refunds & Chargebacks) the platform can automatically post the information to merchants.
In order for this to work properly, you have to prepare a special page on your domain. This page will be able to respond to the http POST request sent by Upclick.
This is a great method to implement one or more of the following multiple advanced features:
- Create your own transaction repository/database
- Feed an eventual third party system for tracking or CRM
- Feed your DRM, generate and deliver customer license keys yourself (Upclick can also deliver license keys for you)
- Automate sending welcome emails or product-related documentation
- Create and manage your own statistics and reports
- Get notifications about the recurring events and also chargebacks and other cancellations issued for your customers by our Customer Service team.
Specifying a POST URL
Upclick will post (HTTP POST - Method POST) the transactions information to the merchant URL specified in the API’s & Tracking section. One Post URL will consume all the transactions desired, by filtering first the field TransactionType and following your different possible flows by type.
To specify the POST URL follow the next steps:
Log-in to your merchant account.
Click on ‘Reports’ on the upper-right corner.
Next, click on the ‘API’s & Tracking’ button.
The following screen will appear:
Figure 23: Tracking Settings
Check the checkbox to activate ‘Post Transactions to my URL’ and enter the URL to which the HTTP Post request will be sent.
Important NOTE: The consumer post page must reply with "SUCCESS" on the first line of the response page. This response will notify back Upclick if the post was well received. Otherwise Upclick will retry to re-post the information 5 times every 10 minutes. Upclick monitors automatically the Post results and can be aware of when your consumer page is not available. The post engine is able to recover and repost retroactively your information at any time in case your page is not available for longer periods. Please reply with "SUCCESS" to all transaction types posted, regardless if you are consuming them or not. This allows Upclick to monitor better the post notification delivery, while adding also, eventually, new post notification types.
Upclick also offers an interface, where each merchant can see and manage the posted information, searchable by Order Number. You can choose to manually resend specific order posts if need be. Here is the link to this interface: http://postqueue.upclick.com
To log in you will use the same username and password as for your merchant account.
When Upclick uses a http POST to post information for transactions, the following parameters are included for the different type of transactions:
SALES:
Parameter | Description | Type |
TransactionType * | "sale" | string(4) |
TransactionDate | The GMT-5 date and time of the transaction (MM/DD/YYYY HH:MM:SS AM/PM) | string(22) |
GlobalOrderID | The order number | string(8) |
IP | IP Address of the customer | string(15) |
FirstName | Customer's firstname | string(50) |
LastName | Customer's lastname | string(50) |
Customer's email address | string(100) | |
CountryISO | Customer country ISO 2-char | string(2) |
CurrencyISO | Order currency ISO 3-char | string(3) |
Culture | Customer language ISO 2-char | string(2) |
Address | Customer's address | string(200) |
Zip | Customer postal code | string(10) |
StateISO | Customer's state (if available) | string(100) |
City | Customer's city | string(50) |
ProductID | Upclick ID of the product sold (main product or cross-sell) | string(7) |
Msku | Product Merchant SKU as defined in the Product definition ( if defined) | string(50) |
ProductTitle | Product TitleThe name of the product sold, as defined in the Upclick interface | string(100) |
ProductPrice | The product price amount. If TaxType=1 (tax included) the ProductPrice contains also the TaxAmount If TaxType=2 (tax excluded) the ProductPrice does not contain the TaxAmount. |
double |
ProductPriceUSD | The transaction amount in USD at the current exchange rate | double |
ProductLevel | The position of the item in the selling process. This can be one of the following values: MainProduct, MerchantXsell, NetworkXsell, UpXsell, PostXsell1, PostXsell2, PostXsell3 | string(13) |
Quantity | The quantity of the product sold | integer |
ProductType | Software (Upclick delivered), Membership (Merchant delivered), PhysicalGoods (3rd party/physically delivered) or Shipping (fee) | string(50) |
LicenseType | The type of license model used ( List , Static, None) | string(10) |
LicenseKey | The license key generated and sent to customer for the related product; if the quantity is more than one, it posts multiple license keys, separated by commas | string(200*Quantity) |
PCounter | The number of products sold in the current order, including the cross-sells. This parameter is posted on the main product post only and when there are other cross-sells attached | integer |
ProductID1 | The Product IDs of the cross-sell products sold. ProductID1, ProductID2, etc. This parameters is posted on the main product post. Additionally, a http POST is sent for each cross-sell separately | string(7) |
BaseProductID1 | The main product ID from which the cross-sell ProductID1 has been created | string(7) |
Affiliate | The Affiliate ID if the sale is generated by an affiliate | string(8) |
Key1 | The custom merchant parameter 1, passed by merchant in the checkout link ( as mkey1=) | string(50) |
Key2 | The custom merchant parameter 2, passed by merchant in the checkout link ( as mkey2=) | string(50) |
Key3-Key10 | If merchant is configured and using the additional merchant keys | string(50) |
Ref | The Affiliate Offer for which the transaction occurred | string(200) |
PayType | The payment method used to process the transaction | string(100) |
Em | The newsletter option indicating if the customer is willing to be contacted by email or not (0- no or 1 - yes) | integer |
NextRebillDate | The date for the next rebill, in case of a subscription product (MM/DD/YYYY) | string(10) |
SPID | The subscription ID, in case of a subscription product | string(22) |
SPStatus | The value "suspended" - when the customer does not opt-out for the subscription terms ("Active Protection") in the checkout at the purchase moment. The system will log the rebill as "suspended". | string(10) |
TaxAmount | The amount of tax collected per product unit in the transaction currency ** | double |
TaxName | The name of the tax collected ( eg. VAT) ** | string(10) |
TaxType | 1-tax included in the product price; 2-tax calculated on top of the product price ** | integer |
TaxExempt | true if there was a tax exemption, false otherwise | true/false |
B2BCompanyName | The B2B company name provided at purchase ** | string(50) |
B2BCompanyTaxNumber | The B2B company tax number provided at purchase ( B2B exemption) ** | string(20) |
DesignID | The checkout DesignID | string(10) |
PricingModelID | The checkout Pricing Model ID | string(10) |
TCampaignID | The checkout Tracking Campaign ID | string(10) |
TCampaign | The checkout Tracking Campaign name | string(50) |
VisitorID | The value sent to checkout in visitorID (available only in the real-time IPN) | string(50) |
Shipping_FirstName | Shipping customer's firstname | string(50) |
Shipping_LastName | Shipping customer's lastname | string(50) |
Shipping_CountryISO | Shipping customer country ISO 2-char | string(2) |
Shipping_Address | Shipping customer's address | string(200) |
Shipping_Zip | Shipping customer postal code | string(10) |
Shipping_StateISO | Shipping customer's state (if available) | string(100) |
Shipping_City | Shipping customer's city | string(50) |
Shipping_Plan | Shipping plan name used at purchase | string(50) |
Shipping_SKU | Shipping Product SKU (related with the fulfillment provider) | string(50) |
* If the transaction is not instantly authorized ( eg. Preauthorization only, SEPA), the transactiontype posted will be "preauth", followed by a "sale" in the moment of settlement only.
** The Tax related fields are posted only when the cart is configured with tax collection
REFUNDS:
Parameter | Description | Type |
TransactionType | "Refund" | string(6) |
TransactionDate | The GMT-5 date and time of the transaction (MM/DD/YYYY HH:MM:SS AM/PM) | string(22) |
GlobalOrderID | The order number | string(8) |
ProductID | Upclick ID of the product refunded (main product or cross-sell) | string(7) |
BaseProductID | The base ProductID (useful when ProductID is a cross-sell) | string(7) |
Product Title | The name of the product sold, as defined in the Upclick interface | string(100) |
ProductLevel | The position of the item in the selling process. This can be one of the following values: MainProduct, MerchantXsell, NetworkXsell, UpXsell, PostXsell1, PostXsell2, PostXsell3 | string(13) |
Quantity | Number of quantity of products ordered | integer |
ProductPrice | The product amount | double |
CurrencyISO | Order currency ISO 3-char | string(3) |
CountryISO | Country Code ISO 2-char | string(2) |
LicenseType | The type of license model used ( List , Static, None) | string(10) |
LicenseKey | The license key generated and sent to customer for the related product; if the quantity is more than one, it posts multiple license keys, separated by commas | string(200*Quantity) |
Type | Full or Partial ( depending on the amount refunded) | string(10) |
Msku | Product Merchant SKU as defined in the Product definition ( if defined) | string(50) |
TaxAmount | The amount of tax collected and refunded in the transaction currency * | double |
TaxName | The name of the tax collected ( eg. VAT) * | string(10) |
TaxType | 1-tax included in the product price; 2-tax calculated on top of the product price * | integer |
B2BCompanyName | The B2B company name provided at purchase * | string(50) |
B2BCompanyTaxNumber | The B2B company tax number provided at purchase ( B2B exemption) * | string(20) |
CSReason | The client reason for contacting Customer Service | string(250) |
CSECC | The "end-call-code" resolution provided by Customer Service | string(250) |
CHARGEBACKS:
Parameter | Description | Type |
TransactionType | "ChargeBack" | string(10) |
TransactionDate | The GMT-5 date and time of the transaction (MM/DD/YYYY HH:MM:SS AM/PM) | string(22) |
GlobalOrderID | The order number | string(8) |
ProductID | Upclick ID of the product refunded (main product or cross-sell) | string(7) |
BaseProductID | The base ProductID (useful when ProductID is a cross-sell) | string(7) |
Product Title | The name of the product sold, as defined in the Upclick interface | string(100) |
ProductLevel | The position of the item in the selling process. This can be one of the following values: MainProduct, MerchantXsell, NetworkXsell, UpXsell, PostXsell1, PostXsell2, PostXsell3 | string(13) |
Quantity | Number of quantity of products ordered | integer |
ProductPrice | The product amount | double |
CurrencyISO | Order currency ISO 3-char | string(3) |
CountryISO | Country Code ISO 2-char | string(2) |
LicenseType | The type of license model used ( List , Static, None) | string(10) |
LicenseKey | The license keys related to order chargebacked, when it applies; if the order has multiple license keys, they will be "comma" separated | string(200*Quantity) |
Type | Full or Partial ( depending on the amount refunded) | string(10) |
TaxAmount | The amount of tax collected in the transaction currency * | double |
TaxName | The name of the tax collected ( eg. VAT) * | string(10) |
TaxType | 1-tax included in the product price; 2-tax calculated on top of the product price * | integer |
B2BCompanyName | The B2B company name provided at purchase * | string(50) |
B2BCompanyTaxNumber | The B2B company tax number provided at purchase ( B2B exemption) * | string(20) |
CHARGEBACK REVERSAL:
Parameter | Description | Type |
TransactionType | "ChargebackReversed" | string(10) |
TransactionDate | The GMT-5 date and time of the transaction (MM/DD/YYYY HH:MM:SS AM/PM) | string(22) |
GlobalOrderID | The order number | string(8) |
ProductID | Upclick ID of the product refunded (main product or cross-sell) | string(7) |
BaseProductID | The base ProductID (useful when ProductID is a cross-sell) | string(7) |
Product Title | The name of the product sold, as defined in the Upclick interface | string(100) |
Quantity | Number of quantity of products ordered | integer |
ProductPrice | The product amount | double |
CurrencyISO | Order currency ISO 3-char | string(3) |
CountryISO | Country Code ISO 2-char | string(2) |
LicenseType | The type of license model used ( List , Static, None) | string(10) |
LicenseKey | The license keys related to order chargebacked, when it applies; if the order has multiple license keys, they will be "comma" separated | string(200*Quantity) |
Type | Full or Partial ( depending on the amount refunded) | string(10) |
TaxAmount | The amount of tax collected in the transaction currency * | double |
TaxName | The name of the tax collected ( eg. VAT) * | string(10) |
TaxType | 1-tax included in the product price; 2-tax calculated on top of the product price * | integer |
B2BCompanyName | The B2B company name provided at purchase * | string(50) |
B2BCompanyTaxNumber | The B2B company tax number provided at purchase ( B2B exemption) * | string(20) |
DECLINES:
Parameter | Description | Type |
TransactionType | "decline" | string(7) |
TransactionDate | The GMT-5 date and time of the transaction (MM/DD/YYYY HH:MM:SS AM/PM) | string(22) |
GlobalOrderID | The order number | string(8) |
CurrencyISO | Order currency ISO 3-char | string(3) |
FirstName | Customer's firstname | string(50) |
LastName | Customer's lastname | string(50) |
Customer's email address | string(100) | |
CountryISO | Country Code ISO 2-char | string(2) |
StateISO | Customer's state (if available) | string(100) |
Zip | Customer postal code | string(10) |
Culture | Customer language ISO 2-char | string(2) |
Affiliate | The Affiliate ID generrating the traffic | string(8) |
PayType | The payment method used to process the transaction | string(100) |
IP | IP Address of the customer | string(15) |
Ref | The Affiliate Offer for which the transaction occurred | string(200) |
EM | The newsletter option indicating if the customer is willing to be contacted by email or not (0- no or 1 - yes) | integer |
ProductID | Upclick UID of the product sold (main product or cross-sell) | string(7) |
Product Title | The name of the product sold, as defined in the UpClick interface | string(200) |
ProductLevel | The position of the item in the selling process. This can be one of the following values: MainProduct, MerchantXsell, NetworkXsell, UpXsell, PostXsell1, PostXsell2, PostXsell3 | string(13) |
Quantity | The number of quantity of products ordered | integer |
ProductPrice | The transaction amount | double |
REBILLS:
Parameter | Description | Type |
TransactionType | "rebill" | string(6) |
TransactionDate | The GMT-5 date and time of the transaction (MM/DD/YYYY HH:MM:SS AM/PM) | string(22) |
GlobalOrderID | The order number | string(8) |
ProductID | Upclick ID of the product rebilled (main product or cross-sell) | string(7) |
BaseProductID | The base ProductID (useful when ProductID is a cross-sell) | string(7) |
ProductPrice | The transaction amount | double |
Msku | Product Merchant SKU as defined in the Product definition (if defined) | string(50) |
NextRebillDate | The date for the next rebill, in case of a recurring payment product (MM/DD/YYYY ) | string(10) |
LicenseKey | The license keys related to order rebilled, when it applies; if the order has multiple license keys, they will be "comma" separated | string(200*Quantity) |
SPID | The related subscription ID | string(250) |
TaxAmount | The amount of tax collected in the order's currency * | double |
TaxName | The name of the tax collected ( eg. VAT) * | string(10) |
TaxType | 1-tax included in the product price; 2-tax calculated on top of the product price * | integer |
TaxExempt | true if there was a tax exemption, false otherwise | true/false |
REBILL CANCELLATIONS:
Parameter | Description | Type |
TransactionType | "CancelRebill" | string(12) |
TransactionDate | The GMT-5 date and time of the transaction (MM/DD/YYYY HH:MM:SS AM/PM) | string(22) |
GlobalOrderID | The order number | string(8) |
CurrencyISO | Order currency ISO 3-char | string(3) |
CountryISO | Country ISO 2-char | string(2) |
ProductID | Upclick ID of the product (main product or cross-sell) | string(7) |
Product Title | The name of the product sold, as defined in the Upclick interface | string(100) |
Quantity | The number of quantity of products ordered | integer |
ProductPrice | The transaction amount | double |
LicenseType | The type of license model used ( List , Static, None) | string(10) |
LicenseKey | The license keys related to order cancelled, when it applies; if the order has multiple license keys, they will be "comma" separated | string(200*Quantity) |
SPID | The related subscription ID | string(22) |
CUSTOMER UPDATES:
Parameter | Description | Type |
TransactionType | "UpdateCustomer" | string(14) |
TransactionDate | The GMT-5 date and time of the transaction (MM/DD/YYYY HH:MM:SS AM/PM) | string(22) |
GlobalOrderID | The order number | string(8) |
FirstName | Customer's firstname | string(50) |
LastName | Customer's lastname | string(50) |
Customer's email address | string(100) | |
CountryISO | Customer country ISO 3-char | string(3) |
StateISO | Customer's state (if available) | string(100) |
City | Customer's city | string(50) |
ZIP | Customer postal code | string(10) |
Address | Customer's address | string(200) |
Phone | Customer's phone number (if available) | string(20) |
Source | From where the change was initiated: CSB (through the customer portal interface) or API (initiated by you, the merchant, through an API call). | string(3) |
OldEmail | The original email of the customer; this parameter is present only if the email was changed. | string(100) |
LICENSE KEY RESET (By Customer Service)
Parameter | Description | Type |
TransactionType | "LicenseKeyReset" | string(15) |
GlobalOrderID | The order number | string(8) |
ProductID | Upclick ID of the product rebilled (main product or cross-sell) | string(7) |
LicenseKey | The new license key generated and delivered to customer | string(200) |
CREDIT CARD UPDATE
Parameter | Description | Type |
TransactionType | "CreditCardProfileUpdated" | string(14) |
TransactionDate | The date when the update occurred | Date MM/DD/YYYY HH:MM:SS |
ExpirationMonth | The expiration month of the new card | MMYY |
SPID | The related subscription ID | string(21) |
Source | The source of change | CardUpdater (Upclick) or Customer (API) |
See code samples in c#.net and php consuming the post notification and responding back with the required answer.