Experience the difference of "Elite".

Add-On Discount Codes, SMS to Non-Guest Numbers, Better Excel Imports, Better Tag Filters, Channel Bridge Info on Bookings

  • Posted on
  • By

Happy Thursday, everyone!  We've been hunkered down for the past several weeks, beavering away on work, and we've stacked up an impressive 57 updates to talk about!  No new features but lots of great enhancements and bug fixes.

Enhancements & Tweaks

We'll first cover updates to discounts, SMS, Travel Insurance, imports and Airbnb.  Then, we'll run through another dozen-or so miscellaneous updates.  Here we go...

The update to discounts was small but super important. When creating code-based discounts, you'll notice a new option for "remove all other discounts" right below it.

This new option allows you to specify whether the discount code will replace or add-onto other automatic discounts that are applied.  Consider common discounts for things like Last Minute or LOS (length of stay) bookings.  These are automatic discounts that kick in when the booking is close to arrival or has many nights.  If the guest also puts in a discount code, do you want that LOS discount, giving them a weekly or monthly rate, to fall off or be included?  This option lets you decide on each discount code you enter.  It is recommended that you select this "remove all other discounts" option if you're not sure.  Typically, when someone is putting in a promo code, you only want that code to apply and nothing else.  Need it to be different for a particular guest where you're giving them both discounts but nobody else?  No problem - just create a special quote for that guest with anything you want!

One thing we noticed a few weeks back is that the "Email" tab under bookings was a little funky.  To be clear, it's been funky for a long time and needs to be completely overhauled, but we noticed that recently it's turned into a dumping ground for anything messaging related.  SMS and Airbnb trigger show there too even though the tab is called "Email".  So first, we changed the tab to be called "Messages".  But we also noticed that when you wanted to send an SMS message immediately, the page either redirected to the guest conversation with nothing showing or it showed an SMS compose screen with the wrong template loaded.  We changed that so that the booking Messages tab now lets you compose a proper SMS message and load the correct template based on the trigger you're trying to send.  It works the same as composing email.  You see a full page-width editor with the trigger template loaded for you and, from there, you can make changes and send it out.

This means you can also send SMS trigger messages to non-guest numbers on the booking just like email.  It's common for SMS triggers to be sent to non-guest numbers because the trigger is designed to alert yourself (as the host or PM) or a third party (like a cleaner) about the booking.  This new booking > Messages > Send page for SMS now allows all that to work.

Over in Travel Insurance world, a few changes were made to clarify messaging and comply with some updates from the carriers.

Travel Insurance is not allowed to be purchased on the same day as arrival nor for a stay of longer than 90 nights.  This has been the case for some time, but our validation logic wasn't checking for this and showing it to guests, so the guest would attempt to buy Travel Insurance and then get a nasty error message from the carrier.  We now check for day-of-arrival and 90+ day stays and show a friendly message disallowing Travel Insurance to both you and the guest, depending on where in the interface you are, and properly update our Not Available logic on triggers and other things.  To be clear, the 90+ day restriction is for Travel Insurance only.  Damage Protection can be purchased for bookings of any length of stay as that is billed at a 30 day multiple.  Damage Protection and Travel Insurance are two totally different things and have totally different policies and rules.

We also noticed that there were some places where our validation logic was not allowing Travel Insurance but not showing the exact reason why.  We clarified those places as well so that you (or the guest) have more transparency into seeing why you can't buy it.

The last Travel Insurance change was an increase in rates.  CFAR (Cancel For Any Reason) was increased to 10.8% as of March 15 at midnight.  This was a change mandated by the underlying carriers (eg. Nationwide, Berkshire) and not RentalGuardian or OwnerRez.  As always, this type of rate change is handled automatically by OwnerRez, so there's nothing you need to do here.  However, you should be aware of the change so that you can answers questions that guests have if they ask about costs.

Over the past few months, a lot of our changes have been designed around handling the large growth OwnerRez is going through.  You'll notice that the "New Features" section of these blog posts has been sparse while the enhancements, tweak and bug fixes are bulging.  This is on purpose.  We've been working hard to optimize our audit logs, messaging, error handling, channel syncing and other "chatty" features so that we can continue offering our wide array of powerful, transparent features while handling large spikes in growth and traffic.  Part of that has been focused on imports and bulk-update operations.  As new users continue joining at a fast rate, we want to minimize the time and effort it takes in moving properties, bookings and other records into our system and allowing more data to be brought over.  Here are some changes we've made to importing.

In our new Excel-based property import, we removed the lat/long columns and instead geo-code the address automatically if the address is new or changed.  This removes confusion and streamlines the process.  The vast majority of addresses can be easily and accurately geo-coded off of the address itself and adding the lat/long columns adds confusion and bad data.  If the automatic geo-coding is incorrect or missing after the property import is finished, you can always fix that on the property's Location tab yourself.

In the same Excel-based property import, we added columns for size/area and shared space types.  The size/area column is for showing your square footage (or meters) on the property which is pushed to a lot of channels via API.  The shared space type is for specifying whether the property is an Entire House, Private Room, Shared Room which is also pushed to channels, particularly Airbnb. You can now import this via Excel directly.

While we were in there, we realized that our Excel template could be smarter.  We added drop-down values to some of the columns where a known type is supposed to be specified.  (I didn't even know Excel could do that - did you?)

We haven't added type drop-downs for all import templates everywhere, but we'll update our Excel templates over time to make this a standard.  Right now, you can see them in the Excel template for importing properties.

While we were working on imports, we also updated the Custom Fields import (via Excel) to ignore empty values.  This was causing some issues, so we changed the import engine to skip past the empty ones.

Another thing we noticed was that imported bookings were being rejected when host and guest fees were included but no charges.  We updated this so that you can now import bookings that have host and guest fees even if the charges are set to zero (0).

We also improved our support for better date parsing in Excel imports, and this applies to all Excel imports across the board.  Warning, I'm about to get nerdy here...  Excel can be frustrating in how it stores and presents data.  A cell might have a date value (eg. "3/4/2021") but the value might seem ambiguous to our system when we parse it out.  Does 3/4 mean March 4th or April 3rd?  Both are correct depending on how the user wrote it at the time.  Complicating things even more, Excel might convert columns into dates when the user never intended them to be.  If you own "3-4" properties, and enter that in Excel", you might end up with "March 4 properties" instead of "3-4 properties".  Excel offers an OADate format that attempts to store dates based on the original user's input and not convert the date from text.  We updated our parsing logic to look for OADate values in Excel first before converting from text in date columns.  This should keep imported date values more consistent and correct across all of our Excel imports.

Over on exports, we noticed that the Excel export for reviews wasn't including the Private Feedback field, so reviews did not include that when exporting to other systems or sharing with a friend.  We have updated our Excel export for reviews to include the Private Feedback field.

It wouldn't be a complete week without Airbnb API updates, would it! 😀 We love the Airbnb API because it's a real-time push-based integration where users can watch their changes show up instantly on their live Airbnb listings, but there's a lot of moving parts and updates, so we're constantly improving it.  Here's what we did recently...

Airbnb is migrating their message threads (ie. guest conversations) to a new type of ID and we already built support for that in months past.  This past week, we went ahead and migrated all Airbnb message threads in OwnerRez to the new ID type.  This may not mean much on the surface, but it demonstrates why OwnerRez is a preferred partner of the channels - we proactively work on being ready for the next batch of changes coming down the pike.

Another under-the-covers change for Airbnb is that we now support their "asynchronous" calendar batch update API.  This allows OwnerRez to make faster and smoother calendar updates across all Airbnb API-connected users' accounts.

We have a really cool Airbnb listing import, and it's heavily used by new users to bring in property content like photos, amenities and descriptions.  This import process works by navigating to your live Airbnb listing and "screen scraping" the data that we see.  We then clean up and normalize that data and map it to your new property in OwnerRez.  We notice that "aparthotel" room types on Airbnb were not importing property.  Some of the characteristics of an aparthotel are different than the traditional vacation rentals, apartments and regular listings you see on Airbnb.  We updated our Airbnb listing import process to handle aparthotel room types so those can now be brought in to OwnerRez!

We noticed that multiple discounts weren't "backing out of" rent properly for Airbnb bookings, so we updated that too.  Now we total up your OwnerRez discounts, calculate what that means against your rent and then distribute that evenly to each discount.  For instance, suppose you have an Airbnb booking that is $500 in rent but we see that there were two OwnerRez-based discounts of 10% and 20% surcharge that affected that $500.  We now follow these steps:

  1. Total the percents and get 30%
  2. Calculate that out of the total: 500 x 30% = 150
  3. Distribute the 150 amongst the ratio of discounts:
    1. The 10% discount would get 10/30 x 150 = 50
    2. The 20% discount would get 20/30 x 150 = 100
    3. Rent would end up being 350

We noticed that for the "Display Exact Location" setting, we were telling Airbnb to use exact location if you had the property lat and long values set, no matter if you specified that you want to show an approximate location.   We now make sure to check if you want the exact location shown when updating Airbnb no matter if lat and long are set.

The last thing we did for Airbnb was to add a Listing Quality Analyzer check for security deposit amounts.  Airbnb only allows a range of $100 to $5,000 USD for the security deposit amount, so if your OwnerRez security deposit rules are outside of that, we now show an error message on Listing Quality Analyzer for the security deposit amount.  We also warn if the property or user uses a non-USD currency because we don't have a way to check the amounts on that given the differences in currency exchange rates.

Tags have been a big hit, and as we've watched how users use them, we've adjusted how they work.  We recently changed the filters on lists and grids to that you now have two filter options for tags: Has Tags and Does Not Have Tags.

This gives you the ability to fine-tune your tag filtering for whitelist or blacklist situations or both at the same time.  For instance, you may want to select all bookings that are tagged as "need-ID" but exclude those that are tagged "owner-booking".  You can now do both at the same time by using both tag filters concurrently.  This new set of tag filters can be found on all lists or grids that have tags including bookings, quotes, inquiries, properties, contacts (ie. guests) and owners.

Ever wanted to see if a Channel Bridge file was already imported for a booking, how many times, or when it happened last?  Now you can.  Bookings already have a "Channel" tab, so we added Channel Bridge data to the same location.  If you click on the Channel tab, it will show when Channel Bridge ran last and whether it succeeded or failed.

In the above picture, the top booking is a booking that is not API-connected to the channel and only shows the Channel Bridge import.  The bottom booking is API-connected and shows the API-connected stuff along with Channel Bridge stuff next to each other.  Over time, we plan to add more information here.

With PMs now using our new "exclude" option on statements, we added Shift + Click so that you can select a range of line items in two clicks. This works the same as most other apps you use such as Gmail when selecting a range of emails.  Click one to select the first row, then go down to the end of the range and hold the Shift key while clicking again.  Every row in between will become selected.  This works on owner statement and PM statements when in preview mode.

Ever wondered about the channels' cancellation policies when configuring your cancellation policies in OwnerRez?  Ever wanted see how Airbnb/Vrbo discussed the policy in more detail?  When setting cancellation policy on the channel, you can now see a link to the channel's help article about their cancellation policy.  Open that in a new tab and you can compare the channel option in OwnerRez to how the channel describes it on their side.

When guests book your property and make payment by PayPal, the payment process is a little different because the guests has to use the PayPal website to authorize payment and OwnerRez can't store a card on file.  Because of that, our quote-to-booking guest forms have to present information differently.  We noticed that for last minute bookings, guests didn't have a way of handling the security deposit if a security deposit is required and the user would have to take care of this in a second step.  Now, when guests finish booking after paying with PayPal, we show them information about the security deposit and a link they can use to authorize that via PayPal right on the booking confirmation page.  You might still need to follow up and prod them to send the security deposit, but at least they see it right away and in-line with the booking confirmation.

Speaking of payments, we also changed our default "Sent Payment Request Form to Guest" system message to include a raw link in the body after the clickable link.  We did this because certain channels (ahem-- Booking.com) will strip links or re-style them without showing the actual link.  You don't want the guest to get a plain-text message with the words "Payment form booking" without actually being clickable.

Now, when Booking.com intercepts the message and strips the clickable link, the plain URL will still show in the message that the guest gets. Of course, this may not look as pretty as it did before, and if you don't like it, you can change the system message to use your own email template instead.

Stripe got a little love this past week.  We noticed some usage patterns around the new Stripe integration and 3D Secure stuff, so we made some adjustments.

First, we upgraded the Stripe integration to support Direct Processing (ie. using raw credit card numbers from guests) for guests, but we always allow them internally.  This gives you the flexibility of bypassing tokenization and running raw cards if you need to from inside the OwnerRez control panel.

Then, we upgraded the integration to show friendly error messages when switching between multiple Stripe accounts in tokenized mode.  Tokenized mode means that OwnerRez doesn't have the raw card number on file, but we have a secure token representing the card number that is stored by Stripe.  If you change Stripe accounts, those tokens no longer work and you need to know that.  You can certainly request payment from the guest again, but the old card info that was stored on the booking can no longer be used.

Finally, we clarified the Stripe documentation to remove references to the "Processing Unsafely" mode because that is now handled inherently by the latest version of the Stripe integration.  You can still turn that on if you'd like, but the Stripe Connect model makes it no longer necessary and we encourage all Stripe users to join the Stripe Connect model as soon as possible.

Here are a couple of final updates that made it out the door this week:

The Payment Detail report now shows Arrival, Departure and Booked date columns in addition to the other columns that were already there.  We plan to overhaul our reporting area and add the ability to select columns, but for now we wanted to show the booking dates as many users use the Payment Detail report for reconciliation. Knowing when the booking occurred can help with reconciliation.

You can now set door lock codes on blocked-off time if you have the Manual Door Lock integration configured.  There are many use cases for blocked-off time and they often represent friend or owner bookings.  We plan to add owner-type bookings and other things to help with this, but it doesn't harm anything to set door codes on blocks, so we went ahead and put that in place.

Bug Fixes

PM statements use your preferred date format now. We've allowed you to select your preferred date format in Settings > Culture for some time. However, there are places in the system that don't yet honor that selection. PM Statement rendering was one such place that has now been fixed.

Legal Agreement preview and examples values.  Our preview windows (ie. the thing that pops open and shows you how your templates look in real life) is pretty cool.  It shows you real bookings, properties and other records you can use to load your preview.  However, when it doesn't have real stuff to use, it uses "example values" which is a nice way of saying dummy data.  The example values helps you see how your field codes will look so that you're not staring at blank nothingness while editing your templates.  However, over on Legal Agreements, the preview button wasn't loading example values.  As long as you had bookings on file, you wouldn't see this because the real stuff is used.  We fixed it so that the preview window falls back to use example values on Legal Agreements just like everywhere else.

Analyze Listing on one property.  When you drill into a property, there's a prominent button at the top called "Analyze Listing".  This button takes you to the Listing Quality Analyzer where you can see all the errors, warnings and info about your property.  However, it's suppose to only automatically load the one property you started from, not all of them.  We fixed this so that it only shows the on property.

Clarity when deleting Airbnb listings. There's a Delete button on the Airbnb API settings page that lets you select and delete listings, and when you delete them, you're deleting the actual live Airbnb listings.  This only works for listings that are currently synced to OwnerRez properties.  Instead of attempting to delete a property/listing that isn't synced, and seeing it blow up, we now show a proper message telling the user that the listing cannot be deleted because it's not synced.

Can now delete owners after deleting ownership history. We discovered a bug that would sometimes prevent you from deleting an owner even if that owner had no property ownership history. We've fixed it.

Inquiry "Quote" buttons should finish up at the same place. A savvy user pointed out that the "Quote & Email" button on an inquiry finishes up at the quote overview, while the "Quote" button places you on the inquiry "quoted" tab. This can be confusing when working through several inquiries, so we made it more consistent. Both work flows will now finish up at the "quoted" tab on the inquiry.

Cancel button on templates.  We noticed when adding or changing templates, specifically channel or SMS templates, the "Cancel" button was going to the wrong place.  This is now fixed.

The case of the missing ".carousel" links.  Since we create and manage websites for our users, we spent a lot of time looking at SEO and website analysis.  After all, your website is your marketplace and how you appear online matters enormously.  We've noticed for awhile that link and SEO analysis tools (eg. ahrefs) tell us that we are linking to ".carousel" pages on our hosted websites and those .carousel pages are broken.  But what .carousel pages??  We've never been able to find them.  We finally figured out what they were seeing and fixed it.  If you're curious, the photo carousel or "Hero Unit" on the website home page works by using ".carousel" references to move between photos.  The way this was built, it gives the impression that we're linking to a page with that name.  We removed those references and made the photo carousel work a different way.

Renter agreement signature time zones.  When a guest signs the renter agreement, we stamp a permanent signature block on the top and bottom of the renter agreement and render it to PDF.  As part of the signature block, we include the exact date and time that the signing happened.  Before, we were using eastern time for everyone but we now render the signature time in the local time zone of the property or user's account.

Themes use field codes too.  Recently, we updated our field codes list to make Contacts (ie. Guests) show their own unique field codes and add others.  In the process, we updated thousands of existing references throughout the system.  Turns out, we forgot to check all the places in Themes that use field codes (like Legal Agreement header or footer sections).  This is now fixed.

Number of hours in which time zone?  When you specify rules about time, it matters where you live, where the guest lives and where OwnerRez's servers are located.  After all, if the guest's time zone is 15 hours behind yours, and you require 12 hours of notice on same day bookings, does that mean they can book at check-in time? ðŸ¤” What if both you and your guest live in the same time zone, but your time zone is 15 hours behind where OwnerRez's servers are located?  We noticed some places where rules were being evaluated against OwnerRez time and not the time of the property/user's account.  We fixed this so that now your rules are evaluated in your time zone and OwnerRez and the location of the guest don't matter.

Property owner configuration showing invalid fields. Under certain circumstances, owner configuration on a property was showing invalid fields like "from the beginning of time." These options now only appear for the very first owner added to each property.

Vrbo numbers might have letters.  When Vrbo decided to close its HomeAway brand, many users still had HomeAway-specific listing numbers. Those listing numbers typically started with "ha" like "ha12345".  Our Excel imports, for things like Reviews and Channel Bridge, match against listing numbers but they were struggling to find properties in OwnerRez depending on how the Vrbo/HomeAway number was written.  We updated this to strip all letters first, then match on the numbers only.

OwnerRez logo on the Airbnb connection login.  When you go to connect the Airbnb API to OwnerRez, you're taken to a special Airbnb page that asks you to login to Airbnb and authorize OwnerRez as your channel manager.  The OwnerRez logo on that page was showing the old palm tree, so we updated it to the newer green "OR" logo.

Infinite loop in search when highlighting non-alphanumeric terms. Our full-text search feature allows you to search across your entire OwnerRez account quickly from one place.  It's very fast and returns results that are highlighted for the terms you searched on. We noticed a situation where non-US users were searching on non-alphanumeric characters and our search engine was stripping the other characters, taking the empty term and attempting to highlight it which created an infinite loop.  Nasty little bug!  But thankfully we found it, and it's all good now!

Adding a manual review with no listing site.  When adding a manual review (ie. recording it in the control panel by typing it in yourself) we noticed that the page would crash if no listing site was selected.  We fixed this.

Allow any kind of italics in the rich-text editor.  Our rich-text editor supports italics, but there are different kinds of italics under the covers that can produce the same result.  This has to do with the HTML5 standard and the way "elements" are deprecated or upgraded over time.  Our rich-text editor was forcing all italics to use the new <em> standard which was breaking our icon support for FontAwesome icons.  We changed the rich-text editor to allow both the new <em> style of italics and the old <i> style as well.  Live and let live!

Links in trigger forecast.  Did you know you can "forecast" what messages your triggers will send?  Yep!  We have a really cool screen that will show you what messages will be sent, in the future, for the bookings coming up.  You can narrow it down to certain templates and trigger types, and you can bulk select and skip ones if you want.  On that page, the trigger forecaster links to each template in the list of results, but we noticed that the link for channel templates was broken.  That is now fixed.

Monthly rate in rate without matching rules.  We found and fixed an issue where a "Monthly" rate was shown in the rate table (in the Rate widget or Rate table section of a hosted website property page) even if the monthly rate didn't match the rule.

Switching from system to custom listing site.  When editing an inquiry, quote or booking, you can select the Listing Site that the inquiry, quote or booking came from.  Often, this is set automatically by a channel or integration point, but you can also do it manually.  We noticed that if you switch the listing site from a system one (like Vrbo) to a custom one (like My Hawaii Rentals) you would get a crash message.  This has now been fixed.

Which properties have duplicate mappings?  When you go to map your listings, we check whether there are duplicate mappings and show a message.  We noticed that this was a bit opaque, so we now show the property numbers in the message so you know which properties we're referring to.

Surcharges don't have to be unique.  A long time ago, we "fixed" an issue where multiple cleaning fees or other same-name surcharges were being picked up by doing an inline de-dupe when selecting surcharges.  This was a rare edge case, but it was still in there and it started causing problems.  It's no longer necessary, so we removed it.  You can now have multiple pet fees, cleaning fees, or anything else on the same booking with the exact same description if that's how you have it set up.  And if you do run into that, look at your surcharge settings (the property or channel criteria, etc) and fix it there.

Running reports with inactive owners or properties. You can make owners or properties inactive (ie. disabled) but what happens when you view historical data?  We noticed that some reports were crashing when running reports with inactive owners or properties, particularly when those owners or properties were in the filters.  We fixed it so that it now works correctly.

4 Comments (add yours)

Alece
Mar 25, 2021 3:05 PM
Joined Jan, 2020 165 posts

I look forward to reading these updates each week! Thank you for all your hard work, OR team!

Fun Coast Rental
Mar 25, 2021 8:17 PM
Joined Dec, 2020 13 posts

Great work! Thanks!

Michelle Z
Mar 25, 2021 8:20 PM
Joined Jan, 2020 11 posts

So do I! Thanks for all the improvements.

Paul W
Mar 26, 2021 1:37 PM
OR Team Member Joined Jun, 2009 827 posts

Welcome! Thanks for reading it and the kind words!