Recommendation Messages
After you build a recommendation, you can use it to dynamically add products from its results to an email.
When you use recommendations to populate product data into messages, you are not including specific products from a recommendation in the message. Instead, you are including placeholders that will be replaced with real product data based on what the recommendation results are at the time the message is sent.
When you add multiple Premium Recommendations to a message a customer will only see results for the first 3 Rec Loops (that have results). We don't limit the number of Rec Loops that can be included in the message to support adding different Rec Loops when working with dynamic content.
Email Message Editor
- If necessary, add a reference product to your message using product tags.
Standard recommendations do not require a reference product. A premium recommendation may or may not require a reference product, depending on your settings for the recommendation. An easy way to tell if you need a reference product in your message is to preview the premium recommendation you plan to use. If the preview asks for a product reference before it can return results, then you need to supply a reference product in your message.
If you use parent and variant products, the recommendation will never recommend a product that is from the same variant family as the reference product.
- Drag the Rec Loop into a single-column container on the canvas.
- In the Rec Loop palette:
- Enter a Loop Name.
The loop name must be alphanumeric.
- Select the recommendation you want to use from the Recommendation List.
- Enter the recommendation number you want this list of
recommendations to start with in the Starting Point
box.
Typically your starting point will be 1, but if you plan on including multiple loops using the same recommendation in your message, you may want to start with a different number in order to avoid duplicate recommendations.
- Enter a Loop Name.
- Enter the number of product recommendations you want to include in the
message in the # of Results box.
For standard recommendations you can include up to 100 products. For premium you can include up to 20.
- Enter the number of products you want to appear in each recommendation row in the
Iterations Per Row box.
The combination of the # of Results and Iterations Per Row will inform the design of your message. For example, if you set both to 3 you will have a single row of content but if you select 9 results and 3 iterations, you will have a block of content. Which is better depends on your audience and the purpose for the message.
Note: Iterations Per Row only works correctly when all of the Recommendation Loop information is in 1 single-column container, including the Begin Rec Loop and End Rec Loop tags. For advanced styling for recommendation messages, you can use the methods in Advanced Styling For Browse Recovery Messages. - Only if you set Use Request Time Criteria enter the value you want to use for this
message in the Request Time Criteria box.
- For operators Equals, Does Not Equal, Greater Than, Greater Than or Equal, Less Than, Less Than of Equal enter the value. For example, Female.
- For operators In, Not In, Contains, Does Not Contain enter the value enclosed in quotes. For example, "Female". You can include multiple values by offsetting them with a comma.
- For operator Between the values must be entered as a comma separated list. For example, 10,20
If a change is made to the Use Request Time Criteria setting in the recommendation after you have configured Request Time Criteria in the message, the options you set here will be deleted. This is to prevent email from being sent with the wrong content.
- Click Done.
- Add product tags to the loop:
The elements/product tags you add to the Rec Loop will represent the information about the product that is displayed in the email.
- Drag an element into the loop.
For example, if you want to add an image, drag the Image element between the opening and closing loops tags.
- Add a product tag to the element.
The Insert menu can be used to add product tags to elements. For more information see Add Tags Using The Message Editor. When the product tag is added to the loop it will have a syntax similar to
%%$product.(?).title%%
. Do not change the default syntax or the recommendation will not populate properly. - Design the element.
Design options vary from element to element. Remember, you are only designing the appearance of the product information. For example, the color of a button or size of the description text. The number of products and products per row are determined by your loop settings. Keep the placement of multiple products in a row in mind as you design your elements.
- Continue to add elements and product tags until you have added
each product field you want represented for a
recommendation.
You only need to add each product field (element) once per loop in order for it to be present for all product recommendations.
- Drag an element into the loop.
HTML Messages
Including a recommendation in an HTML message requires hard-coding a recommendation loop in your message. You cannot use the WYSIWYG editor to add a recommendation loop to an HTML message.
<table align="center" border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse;"> <tbody> {dynamic_code} <tr> {app_loop tag="$app.rec.recloop1.productIds" start="STARTING_POINT" rows="NUMBER_OF_RESULTS" recId="RECOMMENDATION_ID"} {if "%%$app.rec.recloop1.productIds._loopIndex%%" mod ITERATIONS_PER_ROW eq 1}{literal}{/literal}{/if} <td align="center" valign="top" bgcolor="#ffffff"><a href="%%$product.($app.rec.recloop1.productIds).product_url%%" target="_blank"><img src="%%$product.($app.rec.recloop1.productIds).image_url%%" width="200" style="display:block; max-width:100%; height:auto;" alt="%%$product.($app.rec.recloop1.productIds).title%%" title="%%$product.($app.rec.recloop1.productIds).title%%" /></a> <p><a href="%%$product.($app.rec.recloop1.productIds).product_url%%" target="_blank" style="font-family:Arial, Helvetica, sans-serif; color:#000000; text-decoration:none; font-size:14px; padding:5px;">%%$product.($app.rec.recloop1.productIds).title%%</a></p> </td> {if "%%$app.rec.recloop1.productIds._loopIndex%%" mod ITERATIONS_PER_ROW eq 0 OR "%%$app.rec.recloop1.productIds._loopIndex%%" eq "%%$app.rec.recloop1.productIds._count%%"}{literal}{/literal}{/if} {/app_loop} </tr> {/dynamic_code} </tbody> </table>
app_loop
tag. Anything in
italics needs to be replaced with real content:- recommendation_id is the name of the recommendation you
want to use.
- starting_point is the recommendation number you want this list of recommendations to start. Typically your starting point will be 1, but if you plan on including multiple loops using the same recommendation in your message, you may want to start with a different number in order to avoid duplicate recommendations.
- number_of_results is the number of product recommendations you want to include in the message. For standard recommendations you can include up to 100 products. For premium you can include up to 20.
- iterations_per_row is the number of products you want to appear in each recommendation row.
- recloop1 is a variable that must be unique for each
recommendation loop in a message. So if you have three recommendations this
could be
recloop1
.recloop2
, andrecloop3
.
<table align="center" border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse;"> <tbody> {dynamic_code} <tr> {app_loop tag="$app.rec.recloop1.productIds" start="1" rows="3" recId="new_arrivals"} {if "%%$app.rec.recloop1.productIds._loopIndex%%" mod 3 eq 1}{literal}{/literal}{/if} <td align="center" valign="top" bgcolor="#ffffff"><a href="%%$product.($app.rec.recloop1.productIds).product_url%%" target="_blank"><img src="%%$product.($app.rec.recloop1.productIds).image_url%%" width="200" style="display:block; max-width:100%; height:auto;" alt="%%$product.($app.rec.recloop1.productIds).title%%" title="%%$product.($app.rec.recloop1.productIds).title%%" /></a> <p><a href="%%$product.($app.rec.recloop1.productIds).product_url%%" target="_blank" style="font-family:Arial, Helvetica, sans-serif; color:#000000; text-decoration:none; font-size:14px; padding:5px;">%%$product.($app.rec.recloop1.productIds).title%%</a></p> </td> {if "%%$app.rec.recloop1.productIds._loopIndex%%" mod 2 eq 0 OR "%%$app.rec.recloop1.productIds._loopIndex%%" eq "%%$app.rec.recloop1.productIds._count%%"}{literal}{/literal}{/if} {/app_loop} </tr> {/dynamic_code} </tbody> </table>
params=[XXXX]
to the
app_loop
tag in the rec loop code in order to pass in the
values you want to use. The XXXX
portion will vary based on the
type of operator you specify:- For operators Equals, Does Not Equal, Greater Than, Greater Than or Equal,
Less Than, Less Than of Equal:
params=[field:value]
. For example,params=[Gender:Male]
- For operators In, Not In, Contains, Does Not Contain:
params=[field:"value"]
. For example,params=[Gender:"Male"]
You can include multiple values by offsetting them with a comma. For example,params=[Gender:"Male","Female"]
- For operator Between:
params=[quantity_lower:value BETWEEN quantity_upper:value]
. For example,params=[quantity_lower:10 BETWEEN quantity_upper:20]
<td></td>
tags are just an example of what product tags
you might want to include here. You should include the product tags that represent
the product data you want to include for each recommendation.Sending Recommendation Messages
Recommendation messages are scheduled the same way you send any other message. We recommend sending a test message so you can see the design and overall effectiveness of the message with its recommendations before sending it to your contacts. This way you can tweak your settings and criteria, so you know you're sending the best possible recommendations.
We also recommend using A/B Split testing as a way to compare the effectiveness of recommendation messages. For example you could compare a message that uses recommendations to a message that have specific products included in them. Or compare a recommendation message to a message that includes links to your site instead of using products. For more information see A/B Split Tests. You can also A/B split test in workflows by using the Random Filter node.