Checkout Completed
Fire the checkout_completed event when a visitor finalizes their purchase and the order is confirmed — typically on the order confirmation or "thank you" page, immediately after successful payment processing. This is the most important conversion event in any e-commerce funnel: it powers ROAS reporting, conversion-based bidding, lookalike audiences, post-purchase email flows, and lifetime-value attribution across every connected destination.
Do not fire checkout_completed if the payment is still pending or unverified (e.g. bank transfer awaiting confirmation, cash on delivery before pickup). For those cases, fire checkout_completed only when the order status flips to confirmed/paid. Always include a stable, unique event.id (your order or transaction ID) — DATA Reshape uses it for cross-destination deduplication, so the same purchase is never double-counted even if the user reloads the thank-you page.
This event is the DATA Reshape equivalent of the standard purchase/order-completed event in every major advertising and analytics platform — push it once and Reshape fans it out to every connected destination with the correct platform-specific name and field mapping, so you do not need to fire gtag, fbq, ttq or other tracking function calls in parallel.
- Google Analytics 4 —
purchase(withtransaction_id,items,value,currency,tax,shipping,coupon). - Google Ads — conversion tracking with
transaction_id, plus dynamic remarketing signal. - Meta Pixel / Meta Conversions API —
Purchase(withcontent_ids,contents,value,currency,num_items,order_id). - TikTok Pixel / TikTok Events API —
Purchase(withcontent_id,contents,value,currency,order_id). - Other connected destinations — mapped automatically based on each destination's native schema.
A single Reshape event can produce one or more native events per destination, with different characteristics depending on each website's destination configuration (active pixels, server endpoints, event-mapping rules).
This event requires a unique event.id (your order or transaction ID). DATA Reshape uses it for deduplication across destinations — events with duplicate IDs are silently dropped, so the same purchase is never reported twice.
Complete Reference
The checkout_completed event accepts the following objects and fields. Required fields must always be present in the payload — everything else is optional but strongly recommended, because richer payloads produce better attribution, more accurate conversion-value optimization, and better-quality offline conversion uploads. The products array must contain every line item in the order; the shipping and payments arrays must reflect the actual shipping methods and payment instruments used. The user object enables Advanced Matching for Meta, Enhanced Conversions for Google Ads, and Advanced Matching for TikTok.
event object required
name string required
Use only static value checkout_completed for event.name. DATA Reshape maps this to purchase (GA4, Google Ads), Purchase (Meta), and Purchase (TikTok) automatically.
name: "checkout_completed"
value number required
Final total order amount, including all line items, shipping, taxes, and discounts. This is the value used by every destination for ROAS calculation and conversion-value bidding.
value: 299.99
currency string required
Currency code for all monetary values in this event (ISO 4217). Can be overridden per nested object when items are sold in different currencies.
currency: "USD"
exchange_rate number
Custom exchange rate for multi-currency reporting. Default is 1.
exchange_rate: 1
id string required
Unique order or transaction ID from your system. Required for cross-destination deduplication — events with duplicate IDs are silently dropped.
id: "ord_abc123"
context object
url string required-if-applicable
Collected automatically for standard websites. Required only for SPA applications where URL changes don't trigger automatic page context updates.
url:"https://example.com/products/prod_abc123?utm_source=example"
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
Type of page (product, home ...)
page_type: "product"
environment string recommended
Allowed values: prod, dev
environment: "prod"
products array required
Array containing every line item in the order. This is what populates the items array in GA4 purchase, the contents array in Meta Purchase and TikTok Purchase, and the per-item product events in other connected destinations.
View complete Product Object documentation
products[0] object required
id string required
Unique product identifier in your system.
id: "prod_abc123"
parent_id string recommended
Parent product ID for variants or child products. Defaults to id if not provided.
parent_id: "prod_parent_xyz789"
name string required
Product name or title displayed to users.
name: "Example Product Name"
parent_name string
Parent product name for variants or child products. Defaults to name if not provided.
parent_name: "Example Parent Product Name"
price_base number required
Original or base price before discounts. Always equal to or greater than price.
price_base: 299.99
price number required
Current selling price after discounts. Always equal to or less than price_base.
price: 249.99
tax_included boolean required
Whether the price includes taxes. Defaults to true if not provided.
tax_included: true
tax_percent number required
Tax percentage applied to the product (0-50). If not provided, the site default tax rate will be used (generally the standard rate of the country).
tax_percent: 19
quantity number required
Quantity of this product in the context of the event. Defaults to 1 if not provided.
quantity: 2
category string recommended
Main product category name
category: "Example Category"
sku string
Product SKU (Stock Keeping Unit) for inventory tracking
sku: "sku_abc123"
parent_sku string
Parent product SKU for variants or child products. Defaults to sku if not provided.
parent_sku: "sku_parent_xyz789"
gtin string
Global Trade Item Number for product identification
gtin: "1234567890123"
mpn string
Manufacturer Part Number assigned by the manufacturer
mpn: "MPN-EXAMPLE-001"
ean string
European Article Number for product barcoding
ean: "1234567890123"
brand string
Product brand or manufacturer name
brand: "Example Brand"
type string
Product type. Free-form string (e.g. "simple", "variable", "bundle", "subscription").
type: "simple"
stock_status boolean recommended
Product availability (true = in stock, false = out of stock). Defaults to true if not provided.
stock_status: true
stock_location string
Physical location or warehouse where product is stored
stock_location: "Example Warehouse"
created_at number
Timestamp when product was added to inventory (milliseconds)
created_at: 1748505040077
url string
Direct URL to the product page
url: "https://example.com/products/prod_abc123"
parent_url string
URL to the parent product page (for variants)
parent_url: "https://example.com/products/prod_parent_xyz789"
image string
Main product image URL
image: "https://example.com/cdn/prod_abc123-main.jpg"
images array
Array of additional product image URLs
images: [
"https://example.com/cdn/prod_abc123-1.jpg",
"https://example.com/cdn/prod_abc123-2.jpg"
]
categories array
Array of category objects with name and id properties
- name (string, required) - Category name
- id (string) - Category identifier
categories: [
{ name: "Example Category", id: "cat_abc123" },
{ name: "Example Subcategory", id: "cat_xyz789" }
]
coupons array
Array of product-level coupons applied to this product. View complete Coupon Object documentation
coupons[0] (object) - required
requiredname string required
Coupon name or code.
name: "EXAMPLE_COUPON"
value number recommended
Coupon discount value.
value: 123.99
tax_included boolean recommended
Whether coupon value includes taxes
tax_included: true
tax_percent number recommended
Tax percentage for the coupon
tax_percent: 21
id string
Coupon internal identifier.
id: "cpn_abc123"
type string
Coupon type. Free-form string, use consistent naming (e.g. "LOYALTY", "SEASONAL", "FIRST_ORDER", "SHIPPING").
type: "SHIPPING"
currency string required-if-applicable
Currency code. Specifies the currency code when it differs from event.currency.
currency: "USD"
exchange_rate number
Custom exchange rate for multi-currency. Default has value 1. Specifies when it differs from event.exchange_rate.
exchange_rate: 1
properties object recommended
Custom product attributes for audience segmentation. Free-form key-value object. Use properties that match your product catalog and business needs.
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.
- IT & C
- Fashion
- Deco
properties: {
color: "space_gray",
storage: "256GB",
memory: "16GB",
connectivity: ["wifi", "bluetooth"],
warranty: "2_years",
energy_rating: "A++",
brand_series: "pro_line"
}
properties: {
color: ["black", "white"],
size: "M",
material: "cotton",
fit: "regular",
season: "summer",
collection: "2024_spring",
care_instructions: "machine_wash"
}
properties: {
color: ["natural", "oak"],
dimensions: "120x80x75cm",
material: ["wood", "metal"],
style: "modern",
room_type: ["living_room", "office"],
assembly_required: "true"
}
currency string required-if-applicable
Currency code. Specifies the currency code when it differs from event.currency.
currency: "USD"
exchange_rate number
Custom exchange rate for multi-currency. Default has value 1. Specifies when it differs from event.exchange_rate.
exchange_rate: 1
shipping array required
Array of shipping methods used for the order. Used to compute shipping in GA4 purchase and per-destination shipping breakdowns.
View complete Shipping Object documentation
shipping[0] object required
name string required
Shipping method name
name: "Example Shipping Method"
value number required
Shipping cost value
value: 12.99
tax_included boolean recommended
Whether shipping cost includes taxes
tax_included: true
tax_percent number recommended
Tax percentage for shipping (0-50)
tax_percent: 19
id string
Shipping method identifier.
id: "shp_abc123"
type string
Shipping type. Free-form string, use consistent naming (e.g. "standard", "express", "next_day", "pickup", "free").
type: "standard"
currency string required-if-applicable
Currency code. Specifies the currency code when it differs from event.currency.
currency: "USD"
exchange_rate number
Custom exchange rate for multi-currency. Default has value 1. Specifies when it differs from event.exchange_rate.
exchange_rate: 1
payments array required
Array of payment methods used for the order. Supports split payments (multiple methods per order). Drives the payment_type parameter in GA4 and equivalent fields in other destinations.
View complete Payment Object documentation
payments[0] object required
name string required
Payment method name.
name: "Example Payment Method"
value number required
Amount paid with this payment method
value: 12.99
id string
Payment method internal identifier
id: "pay_abc123"
type string
Payment type. Free-form string, use consistent naming (e.g. "card", "paypal", "bank_transfer", "gift_card", "cash_on_delivery").
type: "card"
coupons array
Array of order-level coupons applied to the order. Drives the coupon field in GA4 purchase and equivalent fields in other destinations. Product-level coupons go inside each product's own coupons array.
View complete Coupon Object documentation
coupons[0] object
name string required
Coupon name or code.
name: "EXAMPLE_COUPON"
value number recommended
Coupon discount value.
value: 123.99
tax_included boolean recommended
Whether coupon value includes taxes
tax_included: true
tax_percent number recommended
Tax percentage for the coupon
tax_percent: 21
id string
Coupon internal identifier.
id: "cpn_abc123"
type string
Coupon type. Free-form string, use consistent naming (e.g. "LOYALTY", "SEASONAL", "FIRST_ORDER", "SHIPPING").
type: "SHIPPING"
currency string required-if-applicable
Currency code. Specifies the currency code when it differs from event.currency.
currency: "USD"
exchange_rate number
Custom exchange rate for multi-currency. Default has value 1. Specifies when it differs from event.exchange_rate.
exchange_rate: 1
user object recommended
Include user identifiers whenever available — even a single email or phone number dramatically improves match rates for Meta Advanced Matching, Google Enhanced Conversions and TikTok Advanced Matching, which directly translates to better-reported ROAS and more accurate audience targeting. View complete User Object documentation
id string recommended
Unique customer identifier in your system.
id: "cust_abc123"
email string recommended
Customer email address in plaintext. Do not send pre-hashed values — DATA Reshape automatically normalizes and hashes before sending to destinations.
email: "[email protected]"
phone string recommended
Customer phone number in E.164 format (plaintext). Do not send pre-hashed values — DATA Reshape automatically normalizes and hashes before sending to destinations.
phone: "+10000000000"
first_name string recommended
Customer first name
first_name: "Example First Name"
last_name string recommended
Customer last name
last_name: "Example Last Name"
country string
Country name or ISO country code
country: "US"
region string recommended
State, province, or region name
region: "Example Region"
city string recommended
City or locality name
city: "Example City"
street string
Street address including number
street: "123 Sample Street"
postal_code string
Postal code or ZIP code
postal_code: "00000"
orders_total_number number recommended
Cumulative number of orders placed by this user
orders_total_number: 5
orders_canceled_number number recommended
Cumulative number of orders placed and canceled by this user
orders_canceled_number: 0
orders_total_value number recommended
Cumulative lifetime user orders value (decimal format: 2500.50)
orders_total_value: 1234.99
orders_refunded_value number recommended
Cumulative lifetime user orders value canceled (decimal format: 2500.50)
orders_refunded_value: 250.99
predicted_value number
Predicted lifetime value of a customer for your business
predicted_value: 100.99
created_at number recommended
Timestamp in milliseconds since Unix epoch representing the first time the user was recorded
created_at: 1754926521690
properties object recommended
Custom Customer Properties Examples
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.
- E-commerce Customer
- B2B Lead/Customer
- Subscription Service
- Content Platform
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"
}
properties: {
company_size: "enterprise",
industry: "fintech",
job_title: "marketing_director",
decision_maker: "true",
budget_range: "50000-100000",
lead_source: ["linkedin", "webinar"],
qualification_status: "qualified",
sales_stage: "proposal"
}
properties: {
subscription_tier: "premium",
billing_cycle: "annual",
feature_usage: ["analytics", "reporting", "api"],
trial_user: "false",
renewal_date: "2025-06-30",
support_level: "priority",
usage_frequency: "daily"
}
properties: {
content_preferences: ["technology", "business"],
engagement_level: "high",
newsletter_subscriber: "true",
social_media_follower: "true",
content_consumption: "premium",
device_preference: ["mobile", "desktop"],
timezone: "Example/Timezone"
}
consent object recommended
Customer consent preferences. Drives Consent Mode behavior in GA4, the consent object in Meta CAPI, and limited-data-use flags in TikTok and other destinations.
View complete Consent Object documentation
analytics boolean required
Indicates the user’s explicit consent regarding the collection and processing of data for analytical purposes, such as performance monitoring, usage statistics, and service optimization.
analytics: true
personalization boolean required
Indicates the user’s explicit consent regarding the collection and processing of data for personalization purposes, enabling tailored experiences and content customization.
personalization: true
marketing boolean required
Indicates the user’s explicit consent regarding the collection and processing of data for marketing purposes, such as targeted advertising, remarketing, and campaign measurement.
marketing: true
id string
Optional consent-record identifier. When present, DATA Reshape can persist or relay the consent decision under this ID — useful when you want each stored decision to be tied to a verifiable reference from your Consent Management Platform (CMP consent ID, IAB TC string hash, internal record ID, etc.). Required when the optional audit-trail persistence feature is enabled on the account.
id: "consent_record_abc123"
Examples
The examples below show how to push checkout_completed for four common e-commerce niches — Fashion, Electronics, Beauty and Home & Deco — each with representative product attributes for that niche, including the variant property for product variants, plus an additional Minimal tab with only the required fields. DATA Reshape transforms any of these payloads into the correct shape for every connected destination: a GA4 purchase, a Meta Purchase (Pixel + Conversions API), a TikTok Purchase (Pixel + Events API), plus equivalents in other connected destinations. You do not need to write platform-specific code.
- Fashion
- Electronics
- Beauty
- Home & Deco
- Minimal
window.reshape = window.reshape || [];
reshape.push({
"event": {
"name": "checkout_completed",
"value": 134.97,
"currency": "USD",
"exchange_rate": 1,
"id": "ord_abc123",
"properties": {
"payment_method": "card",
"shipping_method": "standard"
}
},
"context": {
"url": "https://example.com/checkout/success",
"page_type": "checkout",
"environment": "prod"
},
"products": [
{
"id": "prod_tshirt_navy_m",
"parent_id": "prod_tshirt_model",
"name": "Example Cotton T-Shirt - Navy / M",
"parent_name": "Example Cotton T-Shirt",
"price_base": 59.99,
"price": 49.99,
"tax_included": true,
"tax_percent": 19,
"quantity": 2,
"category": "Apparel",
"sku": "sku_tshirt_navy_m",
"parent_sku": "sku_tshirt_model",
"gtin": "1234567890123",
"mpn": "MPN-TSHIRT-001",
"ean": "1234567890123",
"brand": "Example Brand",
"type": "variable",
"stock_status": true,
"stock_location": "Example Warehouse",
"created_at": 1748505040077,
"url": "https://example.com/products/cotton-tshirt-navy-m",
"parent_url": "https://example.com/products/cotton-tshirt",
"image": "https://example.com/cdn/tshirt-navy-main.jpg",
"images": [
"https://example.com/cdn/tshirt-navy-front.jpg",
"https://example.com/cdn/tshirt-navy-back.jpg"
],
"categories": [
{ "name": "Apparel", "id": "cat_apparel" },
{ "name": "T-Shirts", "id": "cat_tshirts" }
],
"currency": "USD",
"exchange_rate": 1,
"coupons": [
{
"name": "EXAMPLE_SEASONAL",
"value": 10.00,
"tax_included": true,
"tax_percent": 19,
"type": "SEASONAL"
}
],
"properties": {
"variant": "Navy / M",
"color": "navy",
"size": "M",
"material": "100% cotton",
"gender": "unisex",
"fit": "regular",
"season": "summer",
"collection_drop": "essentials_2025",
"sleeve_length": "short",
"neckline": "crew",
"care_instructions": "machine_wash_cold"
}
},
{
"id": "prod_jeans_blue_32",
"parent_id": "prod_jeans_model",
"name": "Example Slim Jeans - Indigo / 32",
"parent_name": "Example Slim Jeans",
"price_base": 89.99,
"price": 79.99,
"tax_included": true,
"tax_percent": 19,
"quantity": 1,
"category": "Apparel",
"sku": "sku_jeans_blue_32",
"parent_sku": "sku_jeans_model",
"brand": "Example Brand",
"type": "variable",
"stock_status": true,
"url": "https://example.com/products/slim-jeans-indigo-32",
"image": "https://example.com/cdn/jeans-indigo.jpg",
"properties": {
"variant": "Indigo / 32",
"color": "indigo",
"size": "32",
"material": "98% cotton, 2% elastane",
"fit": "slim",
"rise": "mid",
"wash": "dark"
}
}
],
"shipping": [
{
"name": "Example Standard Shipping",
"value": 9.99,
"tax_included": true,
"tax_percent": 19,
"id": "shp_abc123",
"type": "standard",
"currency": "USD",
"exchange_rate": 1
}
],
"payments": [
{
"name": "Example Card Payment",
"value": 134.97,
"id": "pay_abc123",
"type": "card"
}
],
"coupons": [
{
"name": "EXAMPLE_FIRSTORDER",
"value": 15.00,
"tax_included": true,
"tax_percent": 19,
"id": "cpn_first_abc123",
"type": "FIRST_ORDER",
"currency": "USD",
"exchange_rate": 1
}
],
"user": {
"id": "cust_abc123",
"email": "[email protected]",
"phone": "+10000000000",
"first_name": "Example First Name",
"last_name": "Example Last Name",
"country": "US",
"region": "Example Region",
"city": "Example City",
"street": "123 Sample Street",
"postal_code": "00000",
"orders_total_number": 3,
"orders_canceled_number": 0,
"orders_total_value": 350.47,
"orders_refunded_value": 0,
"predicted_value": 800.00,
"created_at": 1640995200000,
"properties": {
"customer_segment": "returning",
"acquisition_channel": "organic_search",
"loyalty_tier": "silver",
"preferred_categories": ["apparel", "accessories"]
}
},
"consent": {
"analytics": true,
"personalization": true,
"marketing": true
}
});
window.reshape = window.reshape || [];
reshape.push({
"event": {
"name": "checkout_completed",
"value": 1399.97,
"currency": "USD",
"exchange_rate": 1,
"id": "ord_abc123",
"properties": {
"payment_method": "card",
"shipping_method": "express"
}
},
"context": {
"url": "https://example.com/checkout/success",
"page_type": "checkout",
"environment": "prod"
},
"products": [
{
"id": "prod_headphones_black",
"parent_id": "prod_headphones_model",
"name": "Example Wireless Headphones - Black",
"parent_name": "Example Wireless Headphones",
"price_base": 299.99,
"price": 249.99,
"tax_included": true,
"tax_percent": 19,
"quantity": 1,
"category": "Electronics",
"sku": "sku_headphones_black",
"parent_sku": "sku_headphones_model",
"gtin": "1234567890123",
"mpn": "MPN-HEADPHONES-001",
"ean": "1234567890123",
"brand": "Example Brand",
"type": "variable",
"stock_status": true,
"stock_location": "Example Warehouse",
"created_at": 1748505040077,
"url": "https://example.com/products/wireless-headphones-black",
"parent_url": "https://example.com/products/wireless-headphones",
"image": "https://example.com/cdn/headphones-black-main.jpg",
"images": [
"https://example.com/cdn/headphones-black-front.jpg",
"https://example.com/cdn/headphones-black-side.jpg"
],
"categories": [
{ "name": "Electronics", "id": "cat_electronics" },
{ "name": "Audio", "id": "cat_audio" },
{ "name": "Headphones", "id": "cat_headphones" }
],
"currency": "USD",
"exchange_rate": 1,
"properties": {
"variant": "Black",
"color": "black",
"connectivity": ["bluetooth", "wired"],
"noise_cancellation": "active",
"battery_life_hours": 30,
"warranty_years": 2,
"model_year": 2025,
"energy_rating": "A+",
"wireless_range_meters": 10,
"weight_grams": 250
}
},
{
"id": "prod_laptop_15_512",
"parent_id": "prod_laptop_model",
"name": "Example Laptop 15 - 512GB / Silver",
"parent_name": "Example Laptop 15",
"price_base": 1299.99,
"price": 1099.99,
"tax_included": true,
"tax_percent": 19,
"quantity": 1,
"category": "Electronics",
"sku": "sku_laptop_15_512",
"parent_sku": "sku_laptop_model",
"brand": "Example Brand",
"type": "variable",
"stock_status": true,
"url": "https://example.com/products/laptop-15-512",
"image": "https://example.com/cdn/laptop-silver.jpg",
"properties": {
"variant": "512GB / Silver",
"color": "silver",
"storage_gb": 512,
"memory_gb": 16,
"screen_size_inches": 15.6,
"processor": "example_cpu_x12",
"warranty_years": 2,
"model_year": 2025
}
}
],
"shipping": [
{
"name": "Example Express Shipping",
"value": 24.99,
"tax_included": true,
"tax_percent": 19,
"id": "shp_express_abc123",
"type": "express",
"currency": "USD",
"exchange_rate": 1
}
],
"payments": [
{
"name": "Example Card Payment",
"value": 1399.97,
"id": "pay_abc123",
"type": "card"
}
],
"coupons": [
{
"name": "EXAMPLE_BUNDLE",
"value": 75.00,
"tax_included": true,
"tax_percent": 19,
"id": "cpn_bundle_abc123",
"type": "BUNDLE",
"currency": "USD",
"exchange_rate": 1
}
],
"user": {
"id": "cust_abc123",
"email": "[email protected]",
"phone": "+10000000000",
"first_name": "Example First Name",
"last_name": "Example Last Name",
"country": "US",
"region": "Example Region",
"city": "Example City",
"street": "123 Sample Street",
"postal_code": "00000",
"orders_total_number": 5,
"orders_canceled_number": 0,
"orders_total_value": 2639.97,
"orders_refunded_value": 0,
"predicted_value": 4500.00,
"created_at": 1640995200000,
"properties": {
"customer_segment": "tech_enthusiast",
"acquisition_channel": "paid_search",
"loyalty_tier": "gold",
"preferred_categories": ["electronics", "audio"]
}
},
"consent": {
"analytics": true,
"personalization": true,
"marketing": true
}
});
window.reshape = window.reshape || [];
reshape.push({
"event": {
"name": "checkout_completed",
"value": 89.97,
"currency": "USD",
"exchange_rate": 1,
"id": "ord_abc123",
"properties": {
"payment_method": "card",
"shipping_method": "standard"
}
},
"context": {
"url": "https://example.com/checkout/success",
"page_type": "checkout",
"environment": "prod"
},
"products": [
{
"id": "prod_foundation_shade04",
"parent_id": "prod_foundation_model",
"name": "Example Liquid Foundation - Shade 04 / 30ml",
"parent_name": "Example Liquid Foundation",
"price_base": 39.99,
"price": 34.99,
"tax_included": true,
"tax_percent": 19,
"quantity": 1,
"category": "Beauty",
"sku": "sku_foundation_shade04_30ml",
"parent_sku": "sku_foundation_model",
"gtin": "1234567890123",
"mpn": "MPN-FOUNDATION-001",
"ean": "1234567890123",
"brand": "Example Brand",
"type": "variable",
"stock_status": true,
"stock_location": "Example Warehouse",
"created_at": 1748505040077,
"url": "https://example.com/products/liquid-foundation-shade-04",
"parent_url": "https://example.com/products/liquid-foundation",
"image": "https://example.com/cdn/foundation-shade04-main.jpg",
"images": [
"https://example.com/cdn/foundation-shade04-bottle.jpg",
"https://example.com/cdn/foundation-shade04-swatch.jpg"
],
"categories": [
{ "name": "Beauty", "id": "cat_beauty" },
{ "name": "Makeup", "id": "cat_makeup" },
{ "name": "Foundation", "id": "cat_foundation" }
],
"currency": "USD",
"exchange_rate": 1,
"properties": {
"variant": "Shade 04 / 30ml",
"shade": "shade_04_warm_beige",
"volume_ml": 30,
"skin_type": ["normal", "combination"],
"finish": "matte",
"coverage": "medium_to_full",
"spf": 15,
"formulation": "vegan",
"fragrance_free": true,
"cruelty_free": true,
"ingredients_highlight": ["hyaluronic_acid", "niacinamide"]
}
},
{
"id": "prod_lipstick_rose",
"parent_id": "prod_lipstick_model",
"name": "Example Matte Lipstick - Rose Petal",
"parent_name": "Example Matte Lipstick",
"price_base": 24.99,
"price": 19.99,
"tax_included": true,
"tax_percent": 19,
"quantity": 2,
"category": "Beauty",
"sku": "sku_lipstick_rose",
"parent_sku": "sku_lipstick_model",
"brand": "Example Brand",
"type": "variable",
"stock_status": true,
"url": "https://example.com/products/matte-lipstick-rose-petal",
"image": "https://example.com/cdn/lipstick-rose.jpg",
"properties": {
"variant": "Rose Petal",
"shade": "rose_petal",
"finish": "matte",
"formulation": "vegan",
"cruelty_free": true,
"long_wear_hours": 8
}
}
],
"shipping": [
{
"name": "Example Standard Shipping",
"value": 9.99,
"tax_included": true,
"tax_percent": 19,
"id": "shp_abc123",
"type": "standard",
"currency": "USD",
"exchange_rate": 1
}
],
"payments": [
{
"name": "Example Card Payment",
"value": 89.97,
"id": "pay_abc123",
"type": "card"
}
],
"coupons": [
{
"name": "EXAMPLE_LOYALTY",
"value": 5.00,
"tax_included": true,
"tax_percent": 19,
"id": "cpn_loyalty_abc123",
"type": "LOYALTY",
"currency": "USD",
"exchange_rate": 1
}
],
"user": {
"id": "cust_abc123",
"email": "[email protected]",
"phone": "+10000000000",
"first_name": "Example First Name",
"last_name": "Example Last Name",
"country": "US",
"region": "Example Region",
"city": "Example City",
"street": "123 Sample Street",
"postal_code": "00000",
"orders_total_number": 8,
"orders_canceled_number": 1,
"orders_total_value": 502.27,
"orders_refunded_value": 39.99,
"predicted_value": 1500.00,
"created_at": 1640995200000,
"properties": {
"customer_segment": "beauty_enthusiast",
"acquisition_channel": "social_paid",
"loyalty_tier": "gold",
"preferred_categories": ["beauty", "skincare"]
}
},
"consent": {
"analytics": true,
"personalization": true,
"marketing": true
}
});
window.reshape = window.reshape || [];
reshape.push({
"event": {
"name": "checkout_completed",
"value": 419.97,
"currency": "USD",
"exchange_rate": 1,
"id": "ord_abc123",
"properties": {
"payment_method": "card",
"shipping_method": "standard"
}
},
"context": {
"url": "https://example.com/checkout/success",
"page_type": "checkout",
"environment": "prod"
},
"products": [
{
"id": "prod_lamp_brass",
"parent_id": "prod_lamp_model",
"name": "Example Floor Lamp - Brass",
"parent_name": "Example Floor Lamp",
"price_base": 229.99,
"price": 189.99,
"tax_included": true,
"tax_percent": 19,
"quantity": 1,
"category": "Home & Living",
"sku": "sku_lamp_brass",
"parent_sku": "sku_lamp_model",
"gtin": "1234567890123",
"mpn": "MPN-LAMP-001",
"ean": "1234567890123",
"brand": "Example Brand",
"type": "variable",
"stock_status": true,
"stock_location": "Example Warehouse",
"created_at": 1748505040077,
"url": "https://example.com/products/floor-lamp-brass",
"parent_url": "https://example.com/products/floor-lamp",
"image": "https://example.com/cdn/lamp-brass-main.jpg",
"images": [
"https://example.com/cdn/lamp-brass-living-room.jpg",
"https://example.com/cdn/lamp-brass-detail.jpg"
],
"categories": [
{ "name": "Home & Living", "id": "cat_home" },
{ "name": "Lighting", "id": "cat_lighting" },
{ "name": "Floor Lamps", "id": "cat_floor_lamps" }
],
"currency": "USD",
"exchange_rate": 1,
"properties": {
"variant": "Brass",
"color": "brass",
"material": ["metal", "fabric"],
"dimensions_cm": "30x30x150",
"weight_kg": 4.5,
"style": "mid_century",
"room_type": ["living_room", "bedroom"],
"finish": "brushed",
"assembly_required": true,
"bulb_included": false,
"wattage_max": 60,
"cord_length_cm": 200
}
},
{
"id": "prod_rug_natural_160",
"parent_id": "prod_rug_model",
"name": "Example Wool Rug - Natural / 160x230",
"parent_name": "Example Wool Rug",
"price_base": 249.99,
"price": 199.99,
"tax_included": true,
"tax_percent": 19,
"quantity": 1,
"category": "Home & Living",
"sku": "sku_rug_natural_160",
"parent_sku": "sku_rug_model",
"brand": "Example Brand",
"type": "variable",
"stock_status": true,
"url": "https://example.com/products/wool-rug-natural-160",
"image": "https://example.com/cdn/rug-natural.jpg",
"properties": {
"variant": "Natural / 160x230",
"color": "natural",
"material": "wool",
"dimensions_cm": "160x230",
"weight_kg": 6.0,
"style": "scandinavian",
"room_type": ["living_room"],
"pile_height_mm": 12
}
}
],
"shipping": [
{
"name": "Example Standard Shipping",
"value": 29.99,
"tax_included": true,
"tax_percent": 19,
"id": "shp_abc123",
"type": "standard",
"currency": "USD",
"exchange_rate": 1
}
],
"payments": [
{
"name": "Example Card Payment",
"value": 419.97,
"id": "pay_abc123",
"type": "card"
}
],
"coupons": [
{
"name": "EXAMPLE_CLEARANCE",
"value": 40.00,
"tax_included": true,
"tax_percent": 19,
"id": "cpn_clearance_abc123",
"type": "CLEARANCE",
"currency": "USD",
"exchange_rate": 1
}
],
"user": {
"id": "cust_abc123",
"email": "[email protected]",
"phone": "+10000000000",
"first_name": "Example First Name",
"last_name": "Example Last Name",
"country": "US",
"region": "Example Region",
"city": "Example City",
"street": "123 Sample Street",
"postal_code": "00000",
"orders_total_number": 2,
"orders_canceled_number": 0,
"orders_total_value": 740.00,
"orders_refunded_value": 0,
"predicted_value": 2500.00,
"created_at": 1640995200000,
"properties": {
"customer_segment": "home_decorator",
"acquisition_channel": "pinterest_organic",
"loyalty_tier": "silver",
"preferred_categories": ["home", "lighting"]
}
},
"consent": {
"analytics": true,
"personalization": true,
"marketing": true
}
});
window.reshape = window.reshape || [];
reshape.push({
"event": {
"name": "checkout_completed",
"value": 299.99,
"currency": "USD",
"id": "ord_abc123"
},
"products": [
{
"id": "prod_abc123",
"name": "Example Product Name",
"brand": "Example Brand",
"price_base": 299.99,
"price": 249.99,
"tax_included": true,
"tax_percent": 19,
"quantity": 1,
"category": "Example Category"
}
],
"shipping": [
{
"name": "Example Standard Shipping",
"value": 9.99,
"type": "standard"
}
],
"payments": [
{
"name": "Example Card Payment",
"value": 299.99,
"type": "card"
}
],
"user": {
"email": "[email protected]"
}
});
Custom properties (event.properties, user.properties, products[*].properties) are fully processed server-side. On browser-side pixels and tags, only a subset may be available. Server-side processing can also enrich the outgoing payload with additional parameters derived from context and data quality.
Best Practices
- Always provide
event.id— use your internal order or transaction ID. DATA Reshape deduplicates by this value across destinations, so a page reload, double click on the thank-you page, or webhook retry will never produce a double-counted purchase. - Fire only when the order is confirmed — never fire
checkout_completedfor pending or unverified payments (e.g. bank transfer awaiting confirmation). Wait until the order is fully paid/confirmed, otherwise you inflate reported revenue and pollute lookalike-audience training. - Include every line item in
products[]— MetaPurchase, GA4purchaseand TikTokPurchaseall use the item-level breakdown for product-affinity audiences and Catalog optimization. Missing items hurt audience quality. event.valuemust equal the actual amount charged — including shipping, taxes and after all discounts. This is the value used for ROAS, conversion-value bidding, and lookalike seed thresholds across every destination.- Always include the
userobject — email, phone, name and address dramatically improve match rates for Meta Advanced Matching, Google Enhanced Conversions and TikTok Advanced Matching, and enable post-purchase audience-based flows in other connected destinations. For server-side firing (post-purchase webhook), this is especially important. - Consistent product IDs across the funnel — use the same
products[*].idhere as inproduct_viewed,product_added_to_cartandcheckout_started. This is what lets GA4, Meta and TikTok build proper conversion paths and product-affinity audiences. - Fire client-side AND server-side when possible — client-side push from the thank-you page captures the browser context (cookies, user agent) for pixel-style destinations; a parallel server-side push from your order webhook ensures the conversion is recorded even if the user closes the browser or uses an ad blocker. DATA Reshape deduplicates via
event.id.