Package Spotlight: Lodash

lodash logo

Sometimes as a developer you come across a problem and through research on how to solve it you discover a package that changes your life (so to speak.) In my case, Lodash is that package. 

Many years ago I was trying to release a wizard where at the beginning of the wizard a payload of product data was presented. As questions were asked the JavaScript needed to narrow down that list until eventually a single product was left. 

In order to do this I needed a way to manipulate, filter, and search complex arrays and objects. This is what Lodash excels at and I have been the biggest fan ever since.

With Lodash you are able to take complex objects and arrays and sort, search, filter, and otherwise manipulate them to fit your specific needs. It’s a highly optimized script and can perform extremely fast on large and complex data sources. It’s utility seems to have no end and I am always finding new ways to use Lodash to solve both simple and complex problems alike.

Package Name: Lodash
Website: https://lodash.com/

Consumer Buying Habits

three people pointing and debating about something on a computer screen

In September 2019 we asked consumers to answer five questions about their last vacation. The goal was to learn more about how consumers think about and plan vacations and the experiences that they have while on vacation.

Below are the results of the survey as well as the analysis of the results. We’ve broken this down into three primary sections: when consumers take vacations, how the book experiences, and if online booking matters to them.

At TRYTN we strive to bring not just new functionality to help tour and activity operators and businesses sell more but also information. Information can be key to understanding your market and how to better execute your business and marketing plans. This case study was created to help businesses understand what their consumers may be thinking about when taking a vacation. 

When Consumers Vacation

The first question that was asked in the survey was approximately when was the date of your last vacation? From this question we can identify two primary data points: distribution of months vacations are typically taken and how long ago the last vacation was. This first graph shows the distribution by month of when survey respondents said they took their last vacation. Perhaps not surprising but most vacations are taken around spring break (March or April) and are very steady through Summer months and into early Fall (June through September) which is also typically when school is not in session.

bar graph showing the distribution of months a vacation was taken along with a trend line

We can also see that many people do not vacation in the Winter months. This is surprising given that many consumers do tend to travel to warmer places to get away from the cold or to mountain regions for ski trips. Our suspicion is that consumers are taking multiple vacations a year and the Summer vacation came after the Winter vacation.

We can also determine the length of time since the consumers last vacation. Given that we asked in September most customers had taken a trip within the month or the last three months which corresponds to the distribution of vacation months from the above graph. 

donut pie chart showing how long ago the last vacation was taken in ranges

Some interesting data points is that a combined 8.5% of respondents stated they hadn’t taken a vacation in over a year. The vast majority of consumers take at least one vacation a year (91.6% of all respondents have taken a vacation in the last year.)

How and When Customers Book Experiences

Perhaps more important than when or how often a consumer takes a vacation is how that consumer books experiences for that vacation. This first graph represents the question did you book experiences for your vacation prior to arrival at your destination? This helps us to understand if consumers like to plan out their vacations or see what interests them as they learn more about the location while in the destination.

donut pie chart showing breakdown of customers who book experiences prior to arrival at a destination

From this graph we can see that around seven out of every ten consumers like to pre-book their activities and experiences prior to arrival at their destination. About three in ten will wait until they arrive for vacation to book their activities and experiences. 

As a business owner it’s important to remember both types of consumers are potential customers. Are you enabling customers to book with short notice? If you have a large purchase cut-off window set you may be missing out on potential customers. 

Likewise, are you incentivising customers to book online ahead of time, perhaps through an online booking discount, promotion codes, or flash sales? Given the majority of customers like to book activities and experiences ahead of time this is a consumer buying habit that you cannot afford to ignore. 

Next we asked consumers to tell us what primary method they used to book experiences for their last vacation. The following chart shows the breakdown of responses from respondents. 

donut pie chart showing breakdown of the method a customer used to book experiences

Surprisingly direct was the number one response. Given the popularity of online travel agents (OTAs) we expected the OTA segment to be larger and reduce from the direct traffic. Around 11% place their bookings through a traditional travel agent or through a hotel or cruise package (think all-inclusive packages.) This shows the importance for tour and activity operators to offer a way to book online. Direct bookings offer you the largest return for your investment because you don’t have the large commissions that you do with the other methods. 

We next asked a similar question: what medium did you use to book your activities and experiences? For this we wanted to learn how people are booking. As an example did you go into the travel agent office or did you call or email them? Not surprisingly most respondents book their activities online as this is the most convenient. The next largest category was in person which likely results in walk-up reservations which does not directly correlate with the percentage that books their experiences once they arrive (this is about half of that response.) Given the availability of phone and internet service it’s likely that even once at the destination consumers are still using phone and online means of booking to book their activities and experiences. 

donut pie chart showing breakdown of the medium used for a customer to book an experience

Given the large number of responses in the online column it’s important for tour and activity owners and operators to realize that online booking is an important part of a consumers journey when planning out their vacation. This question also helps to show that tour and activity operators need to allow customers to book online. 

Do Customers Really Care about Booking Online?

The million dollar question really is are you more apt to book if online booking is available? It can take a lot of time and effort to switch systems or move from an in-person/phone reservations to accepting online reservations. Tour and activity operators that really want to drive business and increase the growth of the business in a dramatic way need to have the ability to accept reservations online.

donut pie chart showing breakdown if customers are more apt to book an experience if the business offers online booking

But what does it matter as a tour or activity operator if the customer doesn’t see the value in online booking ability? That’s why we asked if it made a difference to them. Would a customer be more willing to book an activity or experience if that business offered online booking? Yes, a resounding yes! Most consumers, nine out of every ten, are more likely to book an activity or experience for their next vacation if that business offers the ability to book online. 

Conclusion

In conclusion the majority of consumers are taking vacations in the Summer months and the vast majority take one to two vacations per year. Most consumers book activities and experiences directly with the business online and are more likely to book with a business if that business offers online booking capability. 

Mailchimp Integration

mailchimp logo

We are excited to announce a new integration partner: Mailchimp. With Mailchimp businesses can maintain customer contact lists and using advanced segmentation strategies can specifically target customers with marketing messages through social, email, and postcards.

Enabling Mailchimp with TRYTN is easy. Simply navigate to the settings page, find Mailchimp under the Integrations section, and enter the required fields. There are support documents that also list where you can find the required information within Mailchimp.

Once activated your customers will be prompted if they wish to opt-in to marketing communications with your business during the checkout process. We will continue to enhance this integration in the coming months to give you even more powerful ways to utilize Mailchimp and drive additional revenue to your business.

Improvements to Dashboard Performance

The dashboard is what every user lands on when they log into the account application. It’s the place where multiple data sources are consolidated together and shown in a useful way. But what good is it if your dashboard takes many seconds to load?

This is a common issue we hear from those who switch to us from competitors.  When the reservations management system is slow it naturally slows everyone down. The dashboard is often a point of concern for users.

dashboard

We recently noticed that the way we were supporting dashboards was also starting to show performance issues. We’re pulling large amounts of data and pulling them multiple times on the same page. This causes significant performance issues. So we changed that in a few different ways.

Caching

Caching isn’t a new concept for us, nor is it a new concept in general. Caching means once you pull the data we store a copy of it for a set amount of time. If you request the same data again during that time we return the saved, or cached, version instead of fresh data. This alone caused the performance cost to drop for the dashboard in about half.

Asynchronous Rendering of Widgets

Prior to this release we relied on the server to get nearly all of the dashboard data prior to rendering the page. This meant that as the dashboard slowed down the user would wait at a white screen before returning all of the dashboard all at once. But some widgets have larger data payloads than other. Because of this some data points could be ready but we have to wait until all are done before the page renders.

Going forward we now request the data for each widget independently. So, the default dashboard has five widgets currently. The widget that takes the longest is the calendar of reservations so prior to this update the entire page waited for all five widgets to come back with data before rendering.  Flash-forward to today and we are rendering out the dashboard with no data, then asking the server for five different sets of data. Whenever one of the widget data sets returns, it renders on the page. Those that are fast render before those that are slower. This means we’re using the concept of asynchronous programming, meaning request and receive on-demand. 

The Results

We looked at three test businesses that do high volume. We registered an average of 51% reduction in load time for DOM ready. DOM ready means that all of the HTML is been parsed by the browser but not all resources are loaded (think images and such.) We also looked at DOM load, which is when all resources are fully loaded on the page. We saw an average reduction of 50% for DOM load. We also noticed that the overall reduction improved the bigger the dataset. Put in another way: the more data a business has (i.e. the bigger the scale) the better the performance gains.

These numbers represent the first time a user visits the dashboard. But we also implement caching so subsequent views of the dashboard within the caching window will be even faster. On the first request the dashboard data, meaning the data that tells the site what a dashboard should look like and the widgets it contains, takes on average of 2.33 milliseconds. Ignoring that this is already a massive improvement from the previous experience, a cached dashboard will take less than 1 millisecond to process. On average that’s a reduction of 57% for dashboard processing time. 

Additionally the default dashboard contains five widgets. The average processing time for a widget for the first view of the dashboard is 263 milliseconds. If the same user comes back within the cache window these same widgets will process within 2 milliseconds! Even better, the widgets, once cached, will render in 99% less time than the initial load. 

We will continue to be tuning the performance of dashboards to make them even faster to help operators, users, and owners work faster and smarter. 

Miami Seaplane Lands with TRYTN

TRYTN expands its presence in Florida with Miami Seaplane, a tour and activity operator focusing on private charter and sightseeing flights in the Miami area and beyond. Miami Seaplane utilizes the online booking, reservations management system, and optional website services provided by TRYTN.

CHICAGO – TRYTN is proud to announce a new partnership with another Florida tour and activity operator. This is the first partnership with a Miami tour and activity operator. Within weeks of contacting TRYTN, Miami Seaplane is now fully live on TRYTN — booking engine, reservations management system, and website services. 

Miami Seaplane contacted TRYTN after utilizing a different provider and noticed their reservations dropped dramatically.  Within weeks of initial contact with TRYTN Miami Seaplane is now well on their way to an upcoming successful season with TRYTN, one of many to come. The fully-optimized booking engine makes it quick and easy for Miami Seaplane customers to book online while the reservations management system enables Miami Seaplane staff to intuitively manage reservations and capacity. Miami Seaplane also saw the opportunity to utilize TRYTN’s optional website services and their new website is now fast, simple, and SEO-friendly.

About Miami Seaplane

Miami Seaplane Tours had its genesis in 1995 as Fun Flight Miami, with a very humble beginning that consisted of a very passionate seaplane pilot, one Ultralight, and the desire to fly over the South Florida waters. Settling on an easily accessible area at Key Biscayne, the business was born and, after a few years, became Ultralight Adventures, with the mission of training a growing number of Ultralight enthusiasts as pilots.

About TRYTN

TRYTN is an online booking and centralized reservation management system for tour and activity businesses. The simple, intuitive interface means setup can be completed in minutes. Businesses increase their direct sales while reducing costs by gaining access to TRYTN’s subsidized web development and marketing services.  A streamlined web presence combined with reliable software gives TRYTN partners the tools they need to succeed in the increasingly competitive activities industry. For more information visit https://www.trytn.com

Transaction Search Performance Gains

Today I wanted to talk about some ways that we’re improving the performance of transactional data found in places like the transaction search page, custom report generator, transaction details page, etc. Prior to this update we were taking the entire payment record even if we didn’t need it. So, a business that does 1,000 bookings a month we’re pulling all the data for 1,000 bookings for that month even if your custom report only uses three fields from that record.

person on blocks getting ready to race

To demonstrate why this can be a significant cost for performance assume that each transaction record has 100 fields of data. Let’s also assume (for round numbers) that each of these fields is 10 bytes of data. That would make each booking record 1,000 bytes (or close to 1Kb of data which is what we will round this example to for round numbers.)  Given our example of 1,000 bookings per month that would be 1,000 Kb of data per month (or, round numbers, 1Mb of data) per month. 

Given our example we’re only generating a report for three fields so really we’re overfetching our data by 97 fields (or 970 bytes of data). Put another way, to get a report that uses these three fields we are pulling an extra 97% of data! For businesses that are high volume this causes a problem because as a business scales larger more and more data is being fetched that isn’t used. The additional data takes longer to retrieve, longer to process, and longer to render.

Dynamic Queries to the Rescue

Enter dynamic queries. With dynamic queries we are able to request which fields are returned to us from a request and only those fields. So in our above example if we’re generating a report of three transaction fields, instead of bringing back 100 fields per booking we’re bringing back three fields per booking. Substantial savings in both size of payload as well as processing time. 

We ran tests on some of our highest-volume businesses before and after this change. We pulled a month of data before this dynamic queries change was released and got a baseline of 5,678 milliseconds or 5,678  seconds to process. After this was released we ran the same report and it returned in 341 milliseconds. That’s a reduction of 94% in processing time. After the release we also used the same business and report but pulled a year of data which was returned in 3,045 milliseconds or 3.045 seconds. Pulling an additional 11 months of data took 46% less time than pulling a month of data the previous way!

Performance is one of our primary focuses because we know tour and activity operators consider time to be money. If you’re sitting around waiting for reports to generate that’s time you could be spending another way. Stay tuned for additional performance improvements as we release them.