Automate Browse-Abandonment Responses

Your automated, personalized messages help convert each detected known browser into a buyer.

Requirements

Before creating and activating a Browse Abandoned flow, ensure that the following prerequisites are in place:
  1. The latest JavaScript tag. Users who click links in email will automatically be identified and cookied when they arrive on site. If you identify a site visitor by other means (login or purchase), it is also recommended that you set their cookie using the user API or userSignUp JavaScript function.
  2. An up-to-date Content Library being crawled by Sailthru Tag or updated by the Content API.
  3. For commerce sites, it is recommended that you are passing purchases and incomplete carts through the Purchase API or the JavaScript API calls. This helps us automatically distinguish between sessions with an abandon cart and sessions that were truly browse abandonment
  4. A customized Browse Abandon template. Default templates are provided and are configured to receive the array of applicable URLs the user visited prior to abandoning the session.

How It Works

Marigold Engage by Sailthru detects when each visitor has ended their session on your site by identifying a lapse in pageviews that lasts more than 30 minutes. Many of these site visitors will have previously been identified when they last clicked a link to your site in email, logged in or registered on your site, or made a purchase. If the abandoned browsing session is held using the same web browser as above, and the cookie is still present, the system links the abandoned session to the known user profile on your account.

How It Works in Lifecycle Optimizer

Using a single Lifecycle Optimizer (LO) flow, you can:
  • automate abandoned session detection by using a Browse Abandoned entry
  • restrict these flows to users who
    • visited a minimum number of pages of a certain type (based on URL path or pattern)
    • spent a minimum amount of time on site
  • automate follow-up communication to help convert each known browser into a buyer, personalizing content based on the user and their most recently viewed items

The flow will not start if the user has made a purchase or retained an item in their cart since the last applicable pageview to avoid unnecessary messaging.

browse-abandon-flow

Configuring the Browse Abandoned Entry

Similar to Cart Abandoned entries, the Browse Abandoned entry monitors any pageview where the JavaScript tag is placed within your site. When a user's session ends 30 minutes after last activity, a customer matching the entry settings and with an empty customer profile cart enters the flow. When you select the "Browse Abandoned" recipe, Lifecycle Optimizer automatically displays our best practice flow layout for your account. This layout consists of:
  • A wait period (additional to the 30 minutes after a session ended)
  • Check for additional pageviews
  • Check for purchases, if applicable to your account
  • Send Email action
You can modify this default layout, for instance, if you'd like to add an AB test based on wait duration.

Interaction with Cart Abandonment and Purchases

When the 30 minute window closes and the user's session is considered to have ended, Sailthu checks to determine if an item has been added to and remains in the user's cart. Marigold Engage by Sailthru also checks for any purchases since the last registered pageview. If either occurred, a Browse Abandon flow is not initiated. The possible cases are evaluated in the following sequence:
If a user made a purchase If an incomplete cart exists If no incomplete cart exists
  • No Abandoned Cart or Abandoned Browse entries are activated.
  • Flows with Purchase entries would have been activated immediately upon purchase.
  • Flow(s) with the Abandoned Cart entry are activated.
  • Flow(s) with the Abandoned Browse are not activated.
  • Flow(s) with the Abandoned Browse entry are activated.
  • Flow(s) with the Abandoned Cart are not activated.

Entry Options

Conditions

When you select the Browse Abandoned entry in Lifecycle Optimizer, you can modify the default thresholds for number of pageviews and the total length of the session (time on site). These are the minimum levels that must be met for the session to start a flow. If you configure URL targeting rules, then the number of pageviews only applies to URLs that match your rules.

browse-abandon-entry

URL Targeting
You can add optional URL filters that determine which URLs count for the pageview threshold and session length thresholds, as well as which URLs are then passed on to the templates in your flow as viewed content. There are three types. You can add any number of each. If a visited URL matches any rule, it will be counted.
Filter type What it does Example entry
Exact Match Matches a specific webpage address (URL) http://my.domain.com/sweepstakes
Contains Looks for a substring of the address that matches exactly what is entered Note: Pipes are not supported for contains. /product/
Pattern Match Uses Regular Expression to target specific groups of similar pages https?://[^/]+($|/(?!admin)/?.*$)Matches every page except your /admin pages
URL Targeting Notes:
  • If there are multiple URL Targeting Rules, only one rule will need to be met, in order for a user to enter the flow.
  • There is no limit of URLs or rules you can input
  • Filters affect "number of pageviews" and the "total length of session" in the conditions threshold
  • For contains and pattern, URL paths are case-sensitive in accordance with URL standards. Protocol (http:// or https://) is not case sensitive for exact match.

Example: To match: https://www.domain.com/product-11245-registry Use: .*product-.*-registry (You must lead off with a wildcard if not specifying the full domain.)

lo-browse-abandon-url-targeting-rules

Default Browse Abandon Templates

All accounts are preloaded with browse abandonment templates. You can use these templates with your own logo and footer information, or use them as examples to create your own templates. These templates are expertly crafted by our in-house Implementation team. They also include suggested call-to-action phrases prepared by our customer-focused Strategy and Optimization team.
Template Name What it displays Default Pageview Sorting Best For Example Image
Sample Browse Abandon: 1 hero One item session_interest Commerce Screen Shot 2018-03-28 at 7.52.29 PM
Sample Browse Abandon: 1 hero and 4 small items 1 hero item, and 4 sub-items displayed in a row session_interest Commerce browse-abandon-template-preview-5-items
Each template displays items from the session. For templates that are configured to display multiple content items, they will be selected and ordered based on the chosen algorithm. All default to the session_interest algorithm, but this can easily be changed. If the number of available content slots is greater than the number of session pageviews, the template uses a fallback mechanism to bring in your most popular (most viewed) products. You can configure the total number of recommendations made by changing the number of "recommended_items" in the Advanced Tab. Look for this code below.
{* ----- RECOMMENDATIONS MODULE----- *}
{recommended_section_switch = "on"}{* "on" or "off" *}
{recommended_items = "4"}{*"2", "3" or "4";*} {*select the number of products to display in a row*}

Testing and Previewing

Use the "Test Vars" box in the Preview tab to mimic a browse abandon session for your site, which will allow products/content to appear in the template. In the Test Vars box, replace only the URLs with URLs from your Content Library. Hit Refresh to see the items displayed in the template below. Alternatively, if you remove the contents of the Test Vars box and click Refresh, the template's fallback mechanism will display your most-popular content. For more information on testing, see Test tempate structure

Configure Settings in the Advanced Tab

When viewing the template in the Template Editor, many settings can be configured using Zephyr in the Setup box in the Advanced tab. This includes call-to-action text, template colors/styles and the total number of recommendations made by changing the number of "recommended_items".

The template code for the call-to-action text, template colors/styles, and the number of recommended_items is below: Call-to-action Text

{* ----- TOP CTA SECTION CONTENT----- *}
{subitems_text = "Still interested?"}
{subitems_url = "http://www.sailthru.com/marketing-blog/?browse_abandon_top_cta"}
{subitems_description_text = "some additional text for the CTA"}
{subitems_btn_text = "SHOP NOW"}  {*call-to-action for button*}
Template Colors/Styles
{* ----- FOOTER STYLES ----- *}
{footer_shading = "off"}{* #hex_code or "off" *}
{footer_text_color = "#000001"}{* #hex_code *}
{footer_text_size = "13px"}
{footer_text_font = main_font}
Recommendations
{* ----- RECOMMENDATIONS MODULE----- *}
{recommended_section_switch = "on"}{* "on" or "off" *}
{recommended_items = "4"}{*"2", "3" or "4";*} {*select the number of products to display in a row*}
For more information on the Advanced tab, see The Template Editor documentation.

Access Session Information in the Template

The 10 most recently viewed pages are accessible to any template sent after a Browse Abandon entry. Use the personalization Zephyr function to sort and display pageviews. Personalize will sort the pageviews and also access up-to-date content details for each item.

 
Sorting Type What it Does (Up to 10 URLs included in the browse session) personalize Algorithm Selection to Use
Recently Viewed Pageviews in reverse-chronological order, as determined by page start times (in the event multiple tabs close at once) recently_viewed
Browse Duration First item is the longest-viewed page in the session browse_duration
Session Interest Items are ordered based on system standard interest ratings session_interest
The personalize function will output a list (array) of content that mimics the format of a Content Data Feed. Here's an example:
{my_pageviews = personalize({
"algorithm" : "recently_viewed",
"session": session
})}
In the example, "my_pageviews" is an arbitrary name we've used to store the list of pageviews after it is sorted. When the template is sent:
  1. The Personalize function will sort the session pageviews by what was most recently viewed, as the defined sort algorithm.
  2. The function will also use your Content Library to display details for each page, such as title, description, price, etc.
  3. The sorted content and its details will be accessible using {my_pageviews}.
Here's a detailed example for a session that had two pageviews:
Using this code: {my_pageviews} will display:
{my_pageviews = personalize({
 "algorithm" : "recently_viewed",
 "session": session
})}
[  
   {  
      "extid":1,
      "date":1507836165,
      "first_purchase_time":1507836165,
      "price":56543,
      "title":"Sailthru Item 2",
      "purchase_qty":6,
      "purchase_price":1143086,
      "url":"http://www.sailthru.com/product/item_312",
      "sailthru":{  
         "id":"59dfc105bcaad2234f8b4568",
         "hash_id":"6732d2acab450fac75357ccfae502060"
      },
      "weight":1.0
   },
   {  
      "extid":1234,
      "date":1509461657,
      "first_purchase_time":1509461657,
      "price":600,
      "tags":[  
         "book"
      ],
      "title":"Book",
      "purchase_qty":103,
      "purchase_price":61100,
      "url":"http://www.sailthru.com/product/item_317",
      "sailthru":{  
         "id":"59f88e99bcaad2df3e8b4568",
         "hash_id":"bec7c8e00f6a7fb66dee255808578049"
      },
      "weight":1.0
   }
]
Using the example code, you would then be able to use {my_pageviews} in a similar way to {content} for content data feeds.

Additional Considerations

Multiple views of the same URL
Personalize will de-duplicate multiple views of the same URL, leaving only one instance to display in its results. It will use the view with the longest duration or most-recent page-open time, depending on the sorting mechanism requested.
Pageview not in Content Library
The personalize function will continue working through the list and quietly ignore any URL it cannot locate in your content library. If you're unsure about your content library matching your URL rules, you may consider using an assert function to cancel the send if there is no output from the personalize function.
Test template structure
The session pageviews are passed at send time, and are not stored on the profile. To test, we recommend pasting in an example session object into the "Test Vars" of the Template editor. Note: In the code below, you should replace the marketing blog URLs with URLs you know exist in your content library. The template will show up empty, otherwise.
  1. Open the template in the template editor.
  2. In the Code tab, insert the following code.
    {my_pageviews = personalize({
     "algorithm" : "recently_viewed",
     "session": session
    })} 
  3. In the Preview tab, select Test Vars from the drop-down, and then insert the following sample session object. You must change the URLs to match URLs that exist in your Content Library, and you can optionally edit the other included session attributes.
    {"session": {  
       "session_time":1740,
       "pageview_count":3,
       "pageviews":[  
          {  
             "url":"https://www.sailthru.com/marketing-blog/equinox-dollar-shave-club-content-commerce/",
             "start_time":"2018-01-25T14:58:00+0000",
             "end_time":"2018-01-25T15:20:00+0000",
             "duration":1320
          },
          {  
             "url":"https://www.sailthru.com/marketing-blog/ny-times-olympics-personalized-pushes/",
             "start_time":"2018-01-25T15:05:00+0000",
             "end_time":"2018-01-25T15:06:00+0000",
             "duration":60
          },
          {  
             "url":"https://www.sailthru.com/marketing-blog/keep-needsupply-revzilla-strategies-success/",
             "start_time":"2018-01-25T14:59:00+0000",
             "end_time":"2018-01-25T15:05:00+0000",
             "duration":360
          }
       ]
    }
    }
Test send real session information
There are two best-practice options you may choose from:
  1. Create a check at the start of the flow to look at a custom field. Apply this custom field only to users (such as your staff) that you want to have receive the email.
  2. Use a template "assert" function (in Advanced>Setup in the Template Editor) to check against the email address and match. For example, to match all sailthru.com email addresses, you would use assert(contains(profile.email, sailthru.com).If you want to test your flow internally, you can activate your flow and add an assert function to your template to only message yourself or, for example, other colleagues.
    {*assert(contains(profile.email, my_email_domain), "user is not an employee")*}
    {*assert(contains(profile.email, my_email_string), "user is not " + my_email_string)*}

Example Session Object

The "session" object is accessible to templates sent via Lifecycle Optimizer following a browse abandonment entry. The session object contains:

  • The total number of pageviews in the session
  • The total duration of the session
  • The most recent 10 pageviews in the session, which matched the optional URL filters used in the browse abandon entry settings
The session object is available as a top-level Zephyr object - {session} - just as you use access the profile {profile} or other message-specific "vars" or custom fields. Here's an example "session" object:

{"session": {  
   "session_time":2700,
   "pageview_count":6,
   "pageviews":[  
      {  
         "url":"http://www.sailthru.com/product/item_123",
         "start_time":"2018-01-25T14:58:00+0000",
         "end_time":"2018-01-25T15:20:00+0000",
         "duration":1320
      },
      {  
         "url":"http://www.sailthru.com/product/item_456",
         "start_time":"2018-01-25T15:05:00+0000",
         "end_time":"2018-01-25T15:06:00+0000",
         "duration":60
      },
      {  
         "url":"http://www.sailthru.com/product/item_555",
         "start_time":"2018-01-25T14:59:00+0000",
         "end_time":"2018-01-25T15:05:00+0000",
         "duration":360
      },
      {  
         "url":"http://www.sailthru.com/product/item_222",
         "start_time":"2018-01-25T15:01:00+0000",
         "end_time":"2018-01-25T15:02:00+0000",
         "duration":60
      },
      {  
         "url":"http://www.sailthru.com/product/item_317",
         "start_time":"2018-01-25T15:00:00+0000",
         "end_time":"2018-01-25T15:01:00+0000",
         "duration":60
      },
      {  
         "url":"http://www.sailthru.com/product/item_260",
         "start_time":"2018-01-25T14:57:00+0000",
         "end_time":"2018-01-25T14:58:00+0000",
         "duration":60
      },
      {  
         "url":"http://www.sailthru.com/product/item_212",
         "start_time":"2018-01-25T14:56:00+0000",
         "end_time":"2018-01-25T14:57:00+0000",
         "duration":60
      }
   ]
}
}
Tip: Replace the above sample URLs with actual product URLs from your site. Then, copy and paste the whole example into the "Test Vars" field of a template preview.

Contact us

Top