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

In the email message editor recommendations are added to messages using the Rec Loop element. If you created a premium recommendation that relies on a reference product, you will need to include at least one product or p in your message that the recommendation can reference in order for it to build results. Typically, if you use a predictive model and/or have set Related Products Criteria you will need a reference product. The contact the message is sent to will be used as the reference contact. To add a recommendation to an email message editor message:
  1. 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.

  2. Drag the Rec Loop into a single-column container on the canvas.
  3. In the Rec Loop palette:
    1. Enter a Loop Name.

      The loop name must be alphanumeric.

    2. Select the recommendation you want to use from the Recommendation List.
    3. 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.

  4. 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.

  5. 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.
  6. 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.

  7. Click Done.
  8. 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.

    1. 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.

    2. 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.

    3. 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.

    4. 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.

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.

The loop should be included within a table that is wrapped in a dynamic code block. For example:
<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>
In the preceding example, all of the content required in the email message editor Rec Loop editor are represented as attributes of the 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, and recloop3.
The following recommendation loop example uses real content:
<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>
If your recommendation includes the Use Request Time Criteria parameter, you will need to add 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]
Additionally, the product tags between the <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.
Note: When you save the message, the code you entered will be temporarily replaced as the message is saved. This is Bronto converting the code for our database. After the message is saved the code will return to what you entered.

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 Rec Loop settings, or recommendations criteria, etc. 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.