Skip to main content

Checkout Completed

When to Use

This event should be triggered when a visitor finalizes their purchase and the order is confirmed, marking the successful completion of the checkout funnel.

Order Confirmation Page
When a user reaches the order confirmation or "thank you" page after successful payment processing.

Payment Success Callback
When payment processors confirm successful transaction completion and order creation.

Order Status Update
When the order status is officially updated to "completed" or "confirmed" in your system.

Post-Purchase Workflows
When automated systems trigger order fulfillment, inventory updates, and customer notifications.

Complete Reference

event object required

name string required

info

Use only static value checkout_completed for `event.name'.

name: "checkout_completed"

value number required

info

Event value in decimal format. Represent the final total order amount, including all costs and discounts.

value: 123.99

currency string required

info

Currency code that specifies the currency in which all monetary values from any object associated with this event are expressed.

Note: This value can be overridden in nested objects if they contain their own value key with a currency specified.

currency: "USD"

exchange_rate number

info

Custom exchange rate for multi-currency. Default has value 1.

Note: This value can be overridden in nested objects if they contain their own value key with a currency specified.

exchange_rate: 1

id string required

info

Event ID — required for transactions or any actions that require deduplication or uniqueness. Represents the unique identifier of a transaction, order. This can be the unique order, transaction, or action ID used in your system.

id: "UNIQUE_TRANSACTION_123"

context object

info

Use only if exists new data. View complete Context Object documentation

url string required-if-applicable

info

Complete URL of the current page including all parameters

SPA Applications: context.url is particularly valuable for Single Page Applications where URL changes don’t automatically trigger page context updates. Manual implementation ensures accurate tracking of page transitions and user navigation within SPA frameworks.

url:"https://shop.example.com/products/laptop?color=silver&storage=512gb&utm_source=google"
warning

URL Parameter Sensitivity: Be mindful of sensitive information in URLs. Query parameters may contain personal identifiers, session tokens, or private information that should be handled according to privacy regulations.

page_type string recommended

info

Type of page (product, home ...)

page_type: "product"

environment string recommended

info

Allowed values: prod, dev

environment: "prod"

products array required

info

Array containing all products in the completed order. View complete Product Object documentation

products[0] object required

id string required

info

Unique product identifier in your system.

id: "PRODUCT_ID"

parent_id string required

info

Parent product ID for variants or child products (can be same as id if no parent concept exists).

parent_id: "PRODUCT_PARENT_ID"

name string required

info

Product name or title displayed to users.

name: "PRODUCT_NAME"

parent_name string

info

Parent product name for variants or child products

parent_name: "PRODUCT_PARENT_NAME"

price_base number required

info

Original or base price before discounts (decimal format: 299.99)

price_base: 120.99

price number required

info

Current selling price after discounts (decimal format: 249.99)

price: 100.99

tax_included boolean required

info

Whether the price includes taxes (true/false)

tax_included: true

tax_percent number required

info

Tax percentage applied to the product (0-100)

tax_percent: 21

quantity number required

info

Quantity of this product in the context of the event

quantity: 1

category string required

info

Main product category name

category: "PRODUCT_MAIN_CATEGORY_NAME"

sku string

info

Product SKU (Stock Keeping Unit) for inventory tracking

sku: "PRODUCT_SKU"

parent_sku string

info

Parent product SKU for variants or child products

parent_sku: "PRODUCT_PARENT_SKU"

gtin string

info

Global Trade Item Number for product identification

gtin: "PRODUCT_GTIN"

mpn string

info

Manufacturer Part Number assigned by the manufacturer

mpn: "PRODUCT_MPN"

ean string

info

European Article Number for product barcoding

ean: "PRODUCT_EAN"

brand string

info

Product brand or manufacturer name

brand: "PRODUCT_BRAND"

type string

info

Product type: "simple", "variable", "virtual", "bundle", "subscription", "external".

Default: simple.

type: "simple"

stock_status boolean recommended

info

Product availability status (true = in stock, false = out of stock)

stock_status: true

stock_location string

info

Physical location or warehouse where product is stored

stock_location: "WAREHOUSE_NAME"

created_at string recommended

info

Timestamp when product was added to inventory (milliseconds)

created_at: 1754926521690

url string

info

Direct URL to the product page

url: "https://shop.example.com/products/laptop-page"

parent_url string

info

URL to the parent product page (for variants)

parent_url: "https://shop.example.com/products/laptop-page"

image string

info

Main product image URL

image: "https://cdn.example.com/products/laptop-image.jpg"

images array

info

Array of additional product image URLs

images: [
"https://cdn.example.com/products/laptop-image-1.jpg",
"https://cdn.example.com/products/laptop-image-2.jpg",
]

categories array

info

Array of category objects with name and id properties

  • name (string, required) - Category name
  • id (string) - Category identifier
categories: [
{
name: "PRODUCT_FIRST_CATEGORY_NAME",
id: "1111"
},
{
name: "PRODUCT_SECOND_CATEGORY_NAME",
id: "1111"
}
]

coupons array

info

Array of product-level coupons applied to this product. View complete Coupon Object documentation

coupons[0] (object) - required

name string required

info

Coupon name or code.

name: "FREE SHIPPING"

value number recommended

info

Coupon discount value.

value: 123.99

tax_included boolean recommended

info

Whether coupon value includes taxes

tax_included: true

tax_precent string recommended

info

Tax percentage for the coupon

tax_precent: 21

id string

info

Coupon internal identifier.

id: "COUPON_INTERNAL_ID"

type string

info

Coupon type (e.g., "LOYALTY", "SEASONAL", "FIRST_ORDER")

type: "SHIPPING"

currency string required-if-applicable

info

Currency code. Specifies the currency code when it differs from event.currency.

currency: "USD"

exchange_rate number

info

Custom exchange rate for multi-currency. Default has value 1. Specifies when it differs from event.exchange_rate.

exchange_rate: 1

properties object recommended

info

Custom product attributes for audience segmentation. Use custom properties that match your product catalog and business needs.

  • color (string|array) - Product color(s): "blue" or ["blue", "navy"]
  • size (string) - Product size: "S", "M", "L", "XL"
  • material (string|array) - Product material(s): "cotton" or ["cotton", "polyester"]
  • connectivity (string|array) - Connection types: "wireless" or ["wifi", "bluetooth"]
  • storage (string) - Storage capacity: "256GB", "512GB"
  • dimensions (string) - Physical dimensions: "120x60x75cm"
Product Segmentation

Use the properties object to store custom product attributes, with property names defined by each business as needed, that enable advanced segmentation, personalization, and analytics across your marketing campaigns.

properties: {
color: "space_gray",
storage: "256GB",
memory: "16GB",
connectivity: ["wifi", "bluetooth"],
warranty: "2_years",
energy_rating: "A++",
brand_series: "pro_line"
}

currency string required-if-applicable

info

Currency code. Specifies the currency code when it differs from event.currency.

currency: "USD"

exchange_rate number

info

Custom exchange rate for multi-currency. Default has value 1. Specifies when it differs from event.exchange_rate.

exchange_rate: 1

shipping array required

info

Array of shipping methods used for the order. View complete Shipping Object documentation

shipping[0] object required

name string recommended

info

Shipping method name

name: "SHIPPING_NAME"

value number required

info

Shipping cost value

value: 12.99

tax_included boolean recommended

info

Whether shipping cost includes taxes

tax_included: true

tax_percent number recommended

info

Tax percentage for shipping (0-100)

tax_percent: 21

id string|number

info

Shipping method identifier.

id: "SHIPPING_INTERNAL_ID"

type string

info

Shipping type (e.g., "standard", "express", "next_day")

type: "standard"

currency string required-if-applicable

info

Currency code. Specifies the currency code when it differs from event.currency.

currency: "USD"

exchange_rate number

info

Custom exchange rate for multi-currency. Default has value 1. Specifies when it differs from event.exchange_rate.

exchange_rate: 1

payments array required

info

Array of payment methods used for the order. View complete Payment Object documentation

payments[0] object required

name string recommended

info

Payment method name.

name: "PAYMENT_NAME"

value number required

info

Amount paid with this payment method

value: 12.99

id string

info

Payment method internal identifier

id: "PAYMENT_INTERNAL_ID"

type string

info

Payment type (e.g., "card", "paypal", "bank_transfer", "gift_card")

type: "PAYMENT_TYPE"

coupons array

info

Array of checkout-level coupons applied to the final order. View complete Coupon Object documentation

coupons[0] object required

name string required

info

Coupon name or code.

name: "FREE SHIPPING"

value number recommended

info

Coupon discount value.

value: 123.99

tax_included boolean recommended

info

Whether coupon value includes taxes

tax_included: true

tax_precent string recommended

info

Tax percentage for the coupon

tax_precent: 21

id string

info

Coupon internal identifier.

id: "COUPON_INTERNAL_ID"

type string

info

Coupon type (e.g., "LOYALTY", "SEASONAL", "FIRST_ORDER")

type: "SHIPPING"

currency string required-if-applicable

info

Currency code. Specifies the currency code when it differs from event.currency.

currency: "USD"

exchange_rate number

info

Custom exchange rate for multi-currency. Default has value 1. Specifies when it differs from event.exchange_rate.

exchange_rate: 1

user object recommended

id string recommended

info

Unique customer identifier in your system.

id: "CUSTOMER_INTERNAL_ID"

email string|array recommended

info

Customer email address(es) provided in plaintext or as SHA-256 hashed values.

email: "[email protected]" 
// or
email: ["[email protected]", "[email protected]"]
// or
email: ["3e1ufd1rdnh8l1rfz6xlreyw2yryd4zrf8zsk1pxh2x8wbsp2mw1g93rs5nx68dq"]

phone string|array recommended

info

Customer phone number(s) in E.164 format (plaintext) or as SHA-256 hashed values.

phone: "+40712345678"
// or
phone: ["+40712345678", "+4079876543"]
// or
phone: ["unw5r66oikql4n4tlg2c54bkd2npephsbwwhxuoxreu6ph8uv6k424y9x15opy9y"]

first_name string recommended

info

Customer first name

first_name: "John"

last_name string recommended

info

Customer last name

last_name: "Doe"

country string

info

Country name or ISO country code

country: "Romania"

region string recommended

info

State, province, or region name

region: "Bucuresti"

city string recommended

info

City or locality name

city: "Bucuresti"

street string

info

Street address including number

street: "Strada Principala 1"

postal_code string

info

Postal code or ZIP code

postal_code: "700000"

orders_total_number number recommended

info

Cumulative number of orders placed by this user

orders_total_number: 5

orders_canceled_number number recommended

info

Cumulative number of orders placed and canceled by this user

orders_canceled_number: 0

orders_total_value number recommended

info

Cumulative lifetime user orders value (decimal format: 2500.50)

orders_total_value: 1234.99

orders_refunded_value number recommended

info

Cumulative lifetime user orders value canceled (decimal format: 2500.50)

orders_refunded_value: 250.99

predicted_value number

info

Predicted lifetime value of a customer for your business

predicted_value: 100.99

created_at number recommended

info

Timestamp in milliseconds since Unix epoch representing the first time the user was recorded

created_at: 1754926521690

properties object recommended

info

Custom Customer Properties Examples

User Segmentation

Use the properties object to store custom user attributes, with property names defined by each business as needed, that enable advanced segmentation, personalization, and analytics across your marketing campaigns.

properties: {
customer_type: "returning",
membership_level: "platinum",
preferred_category: ["electronics", "fashion"],
last_purchase_date: "2024-12-15",
average_order_value: "350.00",
payment_method_preference: "card",
registration_date: "2023-06-15"
}

Object Examples

These examples demonstrate the complete data object structure for the checkout_completed event. Use the complete example for detailed implementations or the minimal example for quick integrations.

{
"event": {
"name": "checkout_completed",
"value": 2399.96,
"currency": "USD",
"exchange_rate": 1,
"id": "ORDER_SUCCESS_789456",
"properties": {
"checkout_duration_seconds": 420,
"payment_retries": 0,
"cross_sell_items_shown": 3,
"upsell_accepted": false,
"gift_message_added": true,
"newsletter_subscription": true,
"terms_accepted_timestamp": 1748505020077,
"order_notes_added": false,
"express_checkout_used": false,
"loyalty_points_earned": 240
}
},
"context": {
"environment": "prod",
"data_source": "website",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"overide_ip": "185.120.45.123",
"url": "https://shop.example.com/checkout/success",
"landing_url": "https://shop.example.com/electronics/professional",
"referring_url": "https://google.com"
},
"products": [
{
"id": "DSLR_CAMERA_PRO_001",
"parent_id": "DSLR_CAMERA_PRO_001",
"sku": "DSLR-PRO-24MP-001",
"parent_sku": "DSLR-PRO-24MP",
"gtin": "2468135790864",
"mpn": "DSLR-PRO-2024-001",
"ean": "2468135790864",
"name": "Professional DSLR Camera 24.2MP",
"parent_name": "Professional DSLR Camera Series",
"brand": "PhotoMaster",
"type": "simple",
"price_base": 1599.99,
"price": 1399.99,
"currency": "USD",
"exchange_rate": 1,
"tax_included": true,
"tax_percent": 8.25,
"quantity": 1,
"stock_status": true,
"stock_location": "Professional Equipment Warehouse",
"created_at": 1748505040077,
"url": "https://shop.example.com/dslr-camera-professional-24mp",
"parent_url": "https://shop.example.com/dslr-camera-professional",
"image": "https://cdn.example.com/dslr-camera-pro-main.jpg",
"images": [
"https://cdn.example.com/dslr-camera-pro-front.jpg",
"https://cdn.example.com/dslr-camera-pro-back.jpg",
"https://cdn.example.com/dslr-camera-pro-lens.jpg"
],
"category": "Electronics > Cameras > DSLR",
"categories": [
{
"name": "Electronics",
"id": "cat_electronics"
},
{
"name": "Cameras",
"id": "cat_cameras"
},
{
"name": "DSLR",
"id": "cat_dslr"
}
],
"properties": {
"sensor_type": "APS-C_CMOS",
"megapixels": "24.2",
"iso_range": "100-25600",
"video_resolution": "4K_30fps",
"autofocus_points": "45",
"battery_life": "1070_shots",
"weather_sealing": "yes",
"wireless_connectivity": ["wifi", "bluetooth"],
"memory_card": "SD_SDHC_SDXC"
}
},
{
"id": "CAMERA_LENS_50MM_001",
"parent_id": "CAMERA_LENS_50MM_001",
"sku": "CL-50MM-F1.4-001",
"name": "50mm f/1.4 Prime Lens",
"brand": "PhotoMaster",
"type": "simple",
"price_base": 799.99,
"price": 699.99,
"currency": "USD",
"exchange_rate": 1,
"tax_included": true,
"tax_percent": 8.25,
"quantity": 1,
"stock_status": true,
"category": "Electronics > Camera Accessories > Lenses",
"properties": {
"focal_length": "50mm",
"aperture": "f/1.4",
"lens_mount": "EF_mount",
"image_stabilization": "none",
"minimum_focus_distance": "0.45m",
"filter_diameter": "77mm",
"weight": "760g"
}
},
{
"id": "CAMERA_BAG_PRO_001",
"sku": "CB-PRO-SHOULDER-001",
"name": "Professional Camera Shoulder Bag",
"brand": "CameraCare",
"type": "simple",
"price": 149.99,
"currency": "USD",
"tax_included": true,
"tax_percent": 8.25,
"quantity": 1,
"category": "Electronics > Camera Accessories > Bags",
"properties": {
"material": "waterproof_canvas",
"compartments": "adjustable_padded",
"laptop_compartment": "15_inch",
"weather_protection": "rain_cover_included",
"color": "black"
}
}
],
"shipping": [
{
"name": "Professional Equipment Shipping",
"value": 24.99,
"currency": "USD",
"tax_percent": 8.25,
"tax_included": true,
"id": "PROF_SHIPPING_001",
"type": "expedited_insured"
}
],
"payments": [
{
"name": "Business Credit Card",
"value": 2399.96,
"currency": "USD",
"id": "BCC_AMEX_9876",
"type": "business_credit_card"
}
],
"coupons": [
{
"name": "PROFESSIONAL_BUNDLE_15",
"value": 375.00,
"currency": "USD",
"tax_percent": 8.25,
"tax_included": true,
"id": "PROF_BUNDLE_2024",
"type": "BUNDLE_DISCOUNT"
}
],
"user": {
"id": "CUST_PHOTO_456789",
"email": ["[email protected]"],
"phone": ["+1555123789"],
"first_name": "David",
"last_name": "Martinez",
"country": "United States",
"region": "Colorado",
"city": "Denver",
"street": "789 Creative Boulevard, Studio 12",
"postal_code": "80202",
"properties": {
"customer_segment": "professional",
"acquisition_channel": "referral",
"preferred_categories": ["photography", "professional_equipment", "electronics"],
"preferred_language": "en",
"loyalty_tier": "platinum",
"business_account": true,
"tax_exempt": false,
"purchase_frequency": "monthly",
"average_order_value": 1489.13,
"marketing_consent": true
}
}
}

Implementation Methods

These examples show how to send the data objects using different implementation approaches. Choose the method that best fits your technical setup.

// Web tracking implementation
window.reshape = window.reshape || [];

// Send the complete data object
reshape.push({
"event": {
"name": "checkout_completed",
"value": 2399.96,
"currency": "USD",
"id": "ORDER_SUCCESS_789456"
},
"context": {
"environment": "prod",
"data_source": "website"
},
"products": [
{
"id": "DSLR_CAMERA_PRO_001",
"sku": "DSLR-PRO-24MP-001",
"name": "Professional DSLR Camera 24.2MP",
"brand": "PhotoMaster",
"price": 1399.99,
"quantity": 1
}
],
"shipping": [
{
"name": "Professional Equipment Shipping",
"value": 24.99,
"type": "expedited_insured"
}
],
"payments": [
{
"name": "Business Credit Card",
"value": 2399.96,
"type": "business_credit_card"
}
],
"user": {
"id": "CUST_PHOTO_456789",
"email": ["[email protected]"]
}
});

Product Properties Examples

Product Segmentation

Use the properties object to store custom product attributes, with property names defined by each business as needed, that enable advanced segmentation, personalization, and analytics across your marketing campaigns.

properties: {
color: "space_gray",
storage: "256GB",
memory: "16GB",
connectivity: ["wifi", "bluetooth"],
warranty: "2_years",
energy_rating: "A++",
brand_series: "pro_line"
}
Final Order Value

The value field must represent the complete final order amount including products, shipping, taxes, and all applied discounts. This is the actual revenue generated from the transaction.

Implementation Best Practices

Event Timing

Order Confirmation Page

// Trigger on order confirmation page load
document.addEventListener('DOMContentLoaded', function() {
if (isOrderConfirmationPage()) {
const orderData = getCompletedOrderData();

reshape.push({
event: {
name: "checkout_completed",
value: orderData.finalTotal,
currency: orderData.currency,
id: orderData.orderId
},
products: orderData.products,
shipping: orderData.shipping,
payments: orderData.payments,
user: orderData.customer
});
}
});

Payment Success Callback

// Trigger after successful payment processing
function onPaymentSuccess(paymentResponse) {
// Verify payment success
if (paymentResponse.status === 'completed') {
const orderData = createOrderFromPayment(paymentResponse);

reshape.push({
event: {
name: "checkout_completed",
value: orderData.total,
currency: orderData.currency,
id: orderData.transactionId
},
// Include complete order details
products: orderData.items,
shipping: orderData.shipping,
payments: orderData.payments
});
}
}

Data Collection Guidelines

Revenue Tracking

  • Include complete order value with all costs and discounts
  • Track tax amounts separately for accurate reporting
  • Monitor payment method performance and preferences
  • Ensure currency consistency across all order objects

Customer Analytics

  • Always include customer identification data
  • Track new vs returning customer patterns
  • Analyze customer lifetime value progression
  • Monitor business vs personal account usage

Order Fulfillment

  • Track order complexity (number of items, categories)
  • Monitor shipping preferences and delivery expectations
  • Analyze bundling patterns and cross-sell success
  • Identify high-value customers for VIP treatment