Order Place | Kevel Audience

An event that describes the action of placing an order.

Here's an example of a Order Place:

pcdp("event", "track", {

"networkId": 123,

"clientId": "kevel",

"siteId": "kevel.com",

"type": "orderPlace",

"customFields": {

"debug": "true",

"role": "superuser"

},

"lineItems": [
    {
      "itemGroupId": "p125",
      "name": "My product",
      "brand": "Nike",
      "category": "Men/Shirts/Short Sleeve Shirts",
      "categoriesList": [
        "Men",
        "Shirts",
        "Short Sleeve Shirts"
      ],
      "secondaryCategory": "Men/Collections/Summer Essentials/Short Sleeve Shirts",
      "secondaryCategoriesList": [
        "Men",
        "Collections",
        "Summer Essentials",
        "Short Sleeve Shirts"
      ],
      "currency": "EUR",
      "promotions": [
        "WINTERSALE"
      ],
      "adult": false,
      "size": "S",
      "sizeSystem": "EU",
      "customFields": {
        "color": "blue"
      },
      "lineItemId": "li125zc",
      "productId": "p125zc",
      "total": 102.5,
      "subtotal": 85,
      "tax": 11.5,
      "shipping": 6,
      "sku": "p125zc-5",
      "discount": {
        "value": 5,
        "currency": "EUR"
      },
      "refund": 0,
      "quantity": 1,
      "subscriptionDuration": 180,
      "status": "placed"
    }
  ],

"order": {
    "id": "or123",
    "currency": "EUR",
    "total": 102.5,
    "subtotal": 85,
    "tax": 11.5,
    "shipping": 6,
    "discount": {
      "value": 5,
      "currency": "EUR"
    },
    "refund": 0,
    "paymentMethod": "Visa",
    "shippingMethod": "UPS",
    "shippingCountry": "France",
    "source": "web",
    "promotions": [
      "WINTERSALE"
    ]
  }
})
import Foundation

let event = """
{
  "networkId": 123,
  "clientId": "kevel",
  "siteId": "kevel.com",
  "type": "orderPlace",
  "customFields": {
    "debug": "true",
    "role": "superuser"
  },
  "lineItems": [
    {
      "itemGroupId": "p125",
      "name": "My product",
      "brand": "Nike",
      "category": "Men/Shirts/Short Sleeve Shirts",
      "categoriesList": [
        "Men",
        "Shirts",
        "Short Sleeve Shirts"
      ],
      "secondaryCategory": "Men/Collections/Summer Essentials/Short Sleeve Shirts",
      "secondaryCategoriesList": [
        "Men",
        "Collections",
        "Summer Essentials",
        "Short Sleeve Shirts"
      ],
      "currency": "EUR",
      "promotions": [
        "WINTERSALE"
      ],
      "adult": false,
      "size": "S",
      "sizeSystem": "EU",
      "customFields": {
        "color": "blue"
      },
      "lineItemId": "li125zc",
      "productId": "p125zc",
      "total": 102.5,
      "subtotal": 85,
      "tax": 11.5,
      "shipping": 6,
      "sku": "p125zc-5",
      "discount": {
        "value": 5,
        "currency": "EUR"
      },
      "refund": 0,
      "quantity": 1,
      "subscriptionDuration": 180,
      "status": "placed"
    }
  ],
  "order": {
    "id": "or123",
    "currency": "EUR",
    "total": 102.5,
    "subtotal": 85,
    "tax": 11.5,
    "shipping": 6,
    "discount": {
      "value": 5,
      "currency": "EUR"
    },
    "refund": 0,
    "paymentMethod": "Visa",
    "shippingMethod": "UPS",
    "shippingCountry": "France",
    "source": "web",
    "promotions": [
      "WINTERSALE"
    ]
  }
}"

let trackUrl = "https://tr.cdp.\(websiteDomain)/events"

var urlComponents = URLComponents(string: trackUrl)!

urlComponents.queryItems = [
  URLQueryItem(name: "id_\(idType)", value: id),
  URLQueryItem(name: "cookies", value: "false")
]

var request = URLRequest(url: urlComponents.url!)

request.httpMethod = "POST"

request.setValue("application/json", forHTTPHeaderField: "Content-Type")

request.setValue(userAgent, forHTTPHeaderField: "User-Agent")

request.httpBody = event.data(using: .utf8)!

URLSession.shared.dataTask(with: request).resume()
import androidx.core.net.toUri
import org.json.JSONObject
import java.net.URL
import javax.net.ssl.HttpsURLConnection

val event = """
{
  "networkId": 123,
  "clientId": "kevel",
  "siteId": "kevel.com",
  "type": "orderPlace",
  "customFields": {
    "debug": "true",
    "role": "superuser"
  },
  "lineItems": [
    {
      "itemGroupId": "p125",
      "name": "My product",
      "brand": "Nike",
      "category": "Men/Shirts/Short Sleeve Shirts",
      "categoriesList": [
        "Men",
        "Shirts",
        "Short Sleeve Shirts"
      ],
      "secondaryCategory": "Men/Collections/Summer Essentials/Short Sleeve Shirts",
      "secondaryCategoriesList": [
        "Men",
        "Collections",
        "Summer Essentials",
        "Short Sleeve Shirts"
      ],
      "currency": "EUR",
      "promotions": [
        "WINTERSALE"
      ],
      "adult": false,
      "size": "S",
      "sizeSystem": "EU",
      "customFields": {
        "color": "blue"
      },
      "lineItemId": "li125zc",
      "productId": "p125zc",
      "total": 102.5,
      "subtotal": 85,
      "tax": 11.5,
      "shipping": 6,
      "sku": "p125zc-5",
      "discount": {
        "value": 5,
        "currency": "EUR"
      },
      "refund": 0,
      "quantity": 1,
      "subscriptionDuration": 180,
      "status": "placed"
    }
  ],
  "order": {
    "id": "or123",
    "currency": "EUR",
    "total": 102.5,
    "subtotal": 85,
    "tax": 11.5,
    "shipping": 6,
    "discount": {
      "value": 5,
      "currency": "EUR"
    },
    "refund": 0,
    "paymentMethod": "Visa",
    "shippingMethod": "UPS",
    "shippingCountry": "France",
    "source": "web",
    "promotions": [
      "WINTERSALE"
    ]
  }
}"

val trackUri = "https://tr.cdp.$websiteDomain/events".toUri().buildUpon()
    .appendQueryParameter("id_$idType", id)
    .appendQueryParameter("cookies", "false")

coroutineScope.launch(Dispatchers.IO) {
    val conn = (URL(trackUri.toString()).openConnection() as HttpsURLConnection).apply {
        requestMethod = "POST"
        setRequestProperty("User-Agent", userAgent)
        setRequestProperty("Content-Type", "application/json")
        doOutput = true
    }
    conn.outputStream.use { os ->
        os.write(event.toByteArray(Charsets.UTF_8))
    }
    try {
        conn.responseCode
    } finally {
        conn.disconnect()
    }
}

In more detail, the fields supported on every Order Place are:

Field Required Type Default Example Description
networkId integer 123 The network identifier.
clientId string "kevel" The client identifier.
siteId string "kevel.com" The client's site identifier.
type required "orderPlace" "orderPlace" The event type.
customFields object of string {...} An object with custom fields for extra metadata to be supplied in the event. The values within this object must all be strings.
facebookConversionTracking Facebook Conversion Tracking Details {...} A description of a tracking event to send to Facebook using Facebook Conversions API.
lineItems required array of LineItem [...] An array of the line items that belong to the order.
order required Order {...} Order details.

Facebook Conversion Tracking Details

A description of a tracking event to send to Facebook using Facebook Conversions API.

Field Required Type Default Example Description
pixel_id string "396622227884531" The pixel ID to associate this Facebook tracking event with.
event_id string "0c53d0b57" ID used to deduplicate events sent by both Facebook Pixel and Conversions API. More information about the usefulness of this ID is available at deduplication.
event_name string "AddToCart" A Facebook pixel Standard Event or Custom Event name. This field is used to deduplicate events sent by both Facebook Pixel and Conversions API. The available Standard Events are listed in Standard Events.
custom_data object {...} Parameters to send additional data Facebook can use for ads delivery optimization. More information about the fields that can be supplied here is available at Custom Data.

LineItem

Line item details.

Field Required Type Default Example Description
itemGroupId string "p125" Identifier for a group of products that come in different versions (variants).
name string "" "My product" Product name.
brand string "Nike" Product brand.
category string "Men/Shirts/Short Sleeve Shirts" Product category. If possible, 'categoriesList' should be filled instead of this field.
categoriesList array of string `[
"Men",
"Shirts",
"Short Sleeve Shirts"
]` A hierarchically sorted list of the sub-categories that this product belongs to. The first item on this list should be the most general sub-category, while the last should be the most specific. Any item on this list should correspond to a sub-category of the item immediately preceding it. Typically used to represent the canonical category of products.
secondaryCategory string "Men/Collections/Summer Essentials/Short Sleeve Shirts" Secondary Product category. If possible, 'secondaryCategoriesList' should be filled instead of this field.
secondaryCategoriesList array of string [...] A hierarchically sorted list of the secondary sub-categories that this product belongs to. The first item on this list should be the most general sub-category, while the last should be the most specific. Any item on this list should correspond to a sub-category of the item immediately preceding it. Typically used to represent the navigational category of products.
currency required string "EUR" The currency used in monetary values. Supported values: "PLN", "CAD", "HKD", "AUD", "SEK", "TRY", "BRL", "KRW", "CZK", "BGN", "ETH", "CLP", "GBP", "MXN", "THB", "ISK", "SGD", "CHF", "INR", "LTC", "CNY", "PHP", "RON", "BTC", "DKK", "XAU", "XAG", "JPY", "ARS", "HUF", "MYR", "USD", "RUB", "NZD", "IDR", "ILS", "NOK", "NAD", "EUR", "ZAR" and "HRK".
promotions array of string [] `[
"WINTERSALE"
]` Vouchers applied in the purchase or displayed together with the product.
adult boolean false false Whether the product includes adult content (alcohol, guns, gambling, sexually suggestive content...) and might not show up to some users.
size string "S" Product size.
sizeSystem string "EU" Country of the size system used by your product.
customFields object of string { "color": "blue" } Additional fields related to the product. The values within this object must all be strings.
lineItemId string "li125zc" A unique identifier for the line item within the order.
productId required string "p125zc" Product identifier.
total required number 102.5 Total value of the line item with all discounts, status and refund value already considered, including subtotal, tax and shipping. total = subtotal + tax + shipping.
subtotal number 0 85 The value of the line item, when tax and shipping are excluded. subtotal = total - tax - shipping.
tax number 0 11.5 The total applied tax value for the line item.
shipping number 0 6 The total shipping costs for the line item.
sku string "" "p125zc-5" Product SKU.
discount Discount {...} Discount applied to the product.
refund number 0 0 The total refunded value for the line item.
quantity number 1 1 Quantity of purchased item.
subscriptionDuration string 180 If the purchase relates to a subscription, captures the subscription duration, in days.
status string "placed" "placed" The status of the line item. Supported values: "placed", "paid", "fulfilled", "canceled" and "refunded".

Order

Order details.

Field Required Type Default Example Description
id required string "or123" Order identifier.
currency required string "EUR" The currency used in monetary values. Supported values: "PLN", "CAD", "HKD", "AUD", "SEK", "TRY", "BRL", "KRW", "CZK", "BGN", "ETH", "CLP", "GBP", "MXN", "THB", "ISK", "SGD", "CHF", "INR", "LTC", "CNY", "PHP", "RON", "BTC", "DKK", "XAU", "XAG", "JPY", "ARS", "HUF", "MYR", "USD", "RUB", "NZD", "IDR", "ILS", "NOK", "NAD", "EUR", "ZAR" and "HRK".
total required number 102.5 Total value of the order with all discounts, canceled and refunded line items already considered, including subtotal and tax.
subtotal number 0 85 Subtotal order price.
tax number 0 11.5 Tax value.
shipping number 0 6 Shipping cost.
discount Discount {...} Discount applied to the order.
refund number 0 0 Processed refund value.
paymentMethod string "Visa" The payment method.
shippingMethod string "UPS" The shipping method.
shippingCountry string "France" The destination country.
source string "web" Source from where the order was placed. Examples are web, phone call, POS.
promotions array of string [] [...] Vouchers applied in the purchase.