Placed order vs. Ordered Product Events: What's the difference?

  • 27 November 2020
  • 17 replies
  • 19366 views

Userlevel 6
Badge +22

If you have an ecommerce integration added to your Klaviyo account, you’ll see both Placed Order and Ordered Product events in your account. But what is the difference and why does Klaviyo include both?

Placed Order

Every order in your e-commerce store will generate one Placed Order event for the entire order. This event will include all line items, the value of the order, the categories or collections the products are from, item count, and other important information that pertains to the entire order. Placed Order value will equate to the total order value, including shipping and any applied discounts.

Ordered Product

On the other hand, Ordered Product events occur for each individual item ordered. These events don’t include information about the overall order, but have more detailed information about the individual item purchased, such as sku, or different variations and product attributes. The information included in this event will vary based on your ecommerce platform. 

If a customer orders one product from your shop, you will see one Placed Order and one Ordered Product event. However, if another customer orders 3 different products from your shop, there will be one Placed Order event and 3 Ordered Product events. The Ordered Product value will equate to the total value of the item purchased, with no shipping costs or discounts included.

Why Both?

Having both event metrics allows you to look at your data in different ways and trigger different flows. Placed Order is great for look at order level data, understanding average order value, and triggering Order Confirmation emails. Ordered Product is good for understanding which products are most popular and creating product specific cross-sell and up-sell flows. 

Have any other questions about these two metrics? Post them below and let’s discuss!

 


17 replies

Badge +2

Has anyone tried using “Placed Order” to segment people who have ordered from a list of products?

If you select multiple items, will it only segment for people who have purchased ALL of those items, or will it segment for people who have purchased ANY of those items?

Trying to avoid using Ordered Product and adding a new filter separately for each product.

Userlevel 7
Badge +58

Hi there @ThunderKatie  and @Kyle Sinko!

Hope to provide some info here!

The best way to do this is to utilize one of the following segment definitions: 
?name=inline-1702653327.png
?name=inline-702750095.png

You can create various segments using the AND and OR conjoining segment criteria. This would allow you to either group customers that have bought a series of products or create one segment of customers that have bought any of a specific number of items. Utilizing AND means a customer has to order all of the included products in order to join the segment.  Utilizing OR means a customer has to order only one of the included products in order to join the segment.  

Placed Order allows you to pull multiple items at one time, Ordered Product allows you to specify one product for the segment. 

Hope this helped!

Alex

Badge +2

Hi there! 

I’m trying to segment a replenishment flow based on what product variant a customer purchased.

I’m using the ‘Placed order’ metric to trigger the flow and am cautious about switching to ‘Ordered product’ instead as I fear that would trigger multiple flows per order. 

Are we able to edit what information is pulled through from Shopify for the ‘Placed order’ metric so that it contains variant information as well as just item names? 

Thanks!

Userlevel 7
Badge +58

Hello @SarahCopyClub,

You can definitely set up a filter/segment 'Placed order' events by specific variant IDs. In order to set up a post-purchase email for a specific product variant, you will want to use the "Ordered Product" metric for your Flow trigger. Then, you can filter and target Ordered Product events based on the following criteria:
 

  • $value: The total value of the item purchased; no shipping costs or discounts included
  • Name: The name or title of the ordered product in Shopify, e.g., t-shirt
  • Variant Name: The name or title of the product variant in Shopify, e.g., red, size medium t-shirt
  • SKU: The SKU of the product variant, e.g., REDMEDIUMTSHIRT
  • ProductID: The ID associated with the product in your store
  • Quantity: The total quantity ordered of the product
  • Collections: The complete set of collections or categories applied to the product, e.g., t-shirts, men's and sale
  • Tags: Any tags applied to the product in your store
  • Variant Option: <OptionName>: the name and value of any variant options for the variant ordered, e.g., Variant Option: Size would be Medium and Variant Option: Color would be Red
  • Attribute: <AttributeName>: the name and value of any product attributes for the product ordered, e.g., Attribute: Season would be Spring


Here are more details on setting up an "Ordered Product" metric-based Flow for specific products:


Please note that all of the data that you are able to use off of Shopify events is pushed over to Klaviyo from Shopify. We have no control over what data syncs over, we just accept whatever Shopify chooses to send.

Badge +2

Hey @alex.hong, thanks so much for this, that’s really helpful! 

I’ve now followed your steps to do the post-purchase flow using the ‘Ordered product’ metric. 

All noted re. your comment about data coming from Shopify. However, different metrics display different filtering options in Klaviyo, even though all the data is clearly coming through from Shopify. Can I make more filters appear for certain metrics? 

 e.g. I need to create segmented Abandoned Cart flows based on product variant too, but don’t have the ‘Variant’ filter option for the ‘Checkout Started’ metric. Do you have a potential workaround? 

 

Thanks!

Userlevel 7
Badge +58

Hi @SarahCopyClub ,

Unfortunately, the data that contains variant is nested too deep into the Checkout Started event and you couldn't use it in a segment or a trigger filter. Long story short, we're only able to use the top tier data in a segment definition / filter. For instance the Items / Collections attribute are usable:

?name=inline-1481978487.png

Whereas the variant data is nested too deep here:

?name=inline1982353110.png

You might find a way to amend your checkout started events into Shopify and put the variant data at the top-tier.
 

Badge +1

Has anyone tried using “Placed Order” to segment people who have ordered from a list of products?

If you select multiple items, will it only segment for people who have purchased ALL of those items, or will it segment for people who have purchased ANY of those items?

Trying to avoid using Ordered Product and adding a new filter separately for each product.

This is what I’m trying to figure out. Did you ever get an answer?

Badge +1

Hi there @ThunderKatie  and @Kyle Sinko!

Hope to provide some info here!

The best way to do this is to utilize one of the following segment definitions: 
?name=inline-1702653327.png
?name=inline-702750095.png

You can create various segments using the AND and OR conjoining segment criteria. This would allow you to either group customers that have bought a series of products or create one segment of customers that have bought any of a specific number of items. Utilizing AND means a customer has to order all of the included products in order to join the segment.  Utilizing OR means a customer has to order only one of the included products in order to join the segment.  

Placed Order allows you to pull multiple items at one time, Ordered Product allows you to specify one product for the segment. 

Hope this helped!

Alex

Thanks for the clarification Alex!

Just a follow up question, you mention “Placed Order” allows you to pull multiple items at one time. This is what my unclearness revolves around. If I were to do this, how is it treated?

For example, do all the products listed have to be in the placed order? If someone places an order containing just one of the products, does that pass the criteria? Cheers

Userlevel 7
Badge +58

Hi @Kyle Sinko!
Glad I could clarify a bit!
To answer your question, it would depend on the segment definition for how items are called in. In regard to your example, when doing a Placed Order → Item → Contains product X,Y,Z each product is treated as an OR definition. Meaning that although multiple items are listed it would segment for all users who have ordered any of the items that contain X,Y,Z.

Hope that made sense!
Alex

Badge +4

When creating the new card for my Business Health Check dashboard, is the Avg. Daily Placed Order Rate based off total delivered emails or opened emails?

Userlevel 6
Badge +22

Hi @CheefDamien great question! That number is an average taken of your Placed Order Rate based on the time period selected.

The Placed Order Rate is calculated as the number of placed orders / the number of recipients.

Am building a custom integration and struggling to understand why we need to post both “Placed Order” events as well as individual “Ordered Product” events when a customer places an order.

I would have expected Klaviyo to generate the “Ordered Products” events automatically, triggered by the “Placed Order” event.

There is no new information in these “Ordered Product” calls that couldn’t have been derived from the “Placed Order” call.

Am I missing something?

Userlevel 7
Badge +58

Hi @crobinuk,

Think of a customer ordering a product as one event as a whole. The placed order metric would give macro level detail and ordered product would give micro level details about that specific event.

If the integration you were building were to track info that a customer ordered, how would that integration know what they ordered and each detail of that item?

That is where placed order and ordered product work together to give you all that information. As mentioned in the original post by Julia, 

Having both event metrics allows you to look at your data in different ways and trigger different flows. Placed Order is great for look at order level data, understanding average order value, and triggering Order Confirmation emails. Ordered Product is good for understanding which products are most popular and creating product specific cross-sell and up-sell flows. 

Ordered product calls generate new information regarding specific item data as opposed to a placed order metric that looks at the customer’s cart as a whole.

 

Thanks,

Alex

Thanks @alex.hong 

I understand your point, it’s just that the “Placed Order” metric already contains all the exact same data points as the “Ordered Product” event. 

From https://developers.klaviyo.com/en/docs/guide-to-integrating-a-platform-without-a-pre-built-klaviyo-integration

Placed Order:

"Items": [{ "ProductID": "1111", "SKU": "WINNIEPOOH", "ProductName": "Winnie the Pooh", "Quantity": 1, "ItemPrice": 9.99, "RowTotal": 9.99, "ProductURL": "http://www.example.com/path/to/product", "ImageURL": "http://www.example.com/path/to/product/image.png", "Categories": ["Fiction", "Children"], "Brand": "Kids Books" }, { "ProductID": "1112", "SKU": "TALEOFTWO", "ProductName": "A Tale of Two Cities", "Quantity": 1, "ItemPrice": 19.99, "RowTotal": 19.99, "ProductURL": "http://www.example.com/path/to/product2", "ImageURL": "http://www.example.com/path/to/product/image2.png", "Categories": ["Fiction", "Classics"], "Brand": "Harcourt Classics" } ],

Ordered Product:

"properties": { "$event_id": "1234_WINNIEPOOH", "$value": 9.99, "OrderId": "1234", "ProductID": "1111", "SKU": "WINNIEPOOH", "ProductName": "Winnie the Pooh", "Quantity": 1, "ProductURL": "http://www.example.com/path/to/product", "ImageURL": "http://www.example.com/path/to/product/image.png", "Categories": [ "Fiction", "Children" ], "ProductBrand": "Kids Books" },

...There seems to be literally no reason why “Ordered Product” could not be derived programatically from the “Items” field in the “Placed Order” event (combined with the parent event_id)?

Have I missed something?

 

Chris

 

 

Userlevel 7
Badge +58

Hi @crobinuk,

The reasoning why we separate these metrics is because the Placed Order event is a Multi-item metric, and Ordered Product is a single-item metric. There are different benefits to each, such as the ability to filter the Ordered Product event by event data that is nested too far to use when filtering Placed Order event (i.e. filtering by Product ID or SKU if they want to send a Flow to everyone who purchases a specific Product ID / SKU). We can only filter Flows and Segments by top-level properties, not nested event data so the single-item event enables us to filter on different data.

There also needs to be separate calls for each separate event / we cannot push multiple events into Klaviyo in a single API call so that is the reasoning for the two.

 

Hope that cleared things up,

Alex

Thanks @alex.hong 

 

Totally understand Klaviyo’s internal limitations on processing the data / nesting, my query is about populating the data in the first place.

I still can’t see any reason why the data for “Ordered Products” couldn’t automatically get populated by Klaviyo when processing a “Placed Order” event, but I guess it works this way for legacy reasons. It’s just a shame that SO much data is being duplicated, lots of unnecessary packets being sent.

Userlevel 7
Badge +58

Hi @crobinuk,

My pleasure. 

Since it sounds like you are trying to pass custom events, you wouldn't technically need to pass ordered product events if you don't want to since Klaviyo won't automatically "unpack" a placed order event for you.

I saw some more info regarding this in a related post:

I think another reason why Klaviyo wouldn't perform the unpacking and trigger Ordered product events based on a Placed order event is due to how much additional data and more details a customer can include in their ordered product payload if they want since they are on a custom event. In most cases the ordered product event will pass similar details but not always based on how customers have things set up.

 

All the best,

Alex

Reply