Placed order vs. Ordered Product Events: What's the difference?
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!
Page 1 / 1
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?
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.
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.
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?
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:
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
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:
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
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
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?
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.
...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
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.
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
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!
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.
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!
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:
Whereas the variant data is nested too deep here:
You might find a way to amend your checkout started events into Shopify and put the variant data at the top-tier.
I have a flow that was built using the Ordered Product trigger and uses “SKU equals BLOCK-LE2” as a trigger filter (We need to use the SKU to trigger this flow). It was functioning properly until recently when we added an “instruction booklet” variant to the product that is then pulled out and included as a separate product by Shopify. Now, the flow is broken as the instruction booklet seems to override the actual product and I cannot get it to work no matter what trigger filter configuration I use.
Has anyone experienced this before?
@ELopski hey, thanks for your question!
So the Ordered Product metric will be pulling in information for each product separately, meaning you’re right in filtering it by SKU. The SKU might have however been overwritten in Shopify instead of the booklet added as a variant, which is why it might still be registering as “BLOCK-LE2” but it’s actually a completely different product in there now.
Maybe instead you can try using the Placed Order metric as the trigger, and then filter “Items”, select “Text” as your type, “equals” or “contains”, and add the item name for the product that was triggering the flow previously. You can also exclude any variants by using the “Name” property in case that’s available to you, or try other configurations.
These are just some preliminary thoughts, you might have already tried these solutions, so I apologize if you did.