A new document viewer

Responding to technical limitations from Google

Overview
In March of 2021, Google announced that they were removing third-party cookie support from Chrome. This change meant we had to entirely re-build our plugin with a different workflow to view documents. The challenge was to do this in a way that did not ruin the existing user experience.

Quick Summary

The problem

Google’s decision to drop support for third-party cookies in Chrome made it so our document plugin would no longer be able to work on our users' websites.

The solution

Create a first-party cookie experience with enough enticing features that users would be willing to switch to it.

The journey

2 rounds of user interviews, multiple workflow tweaks, and a beta test to gain real-world feedback.

Results

Initial user apprehension turned to satisfaction. 95% client retention. 0 clients cited this as reasons for unsubscribing to Buildout.

Quick Summary

In 2023, Buildout's core leadership decided that there was a potential opportunity in matchmaking brokers and buyers who were looking to sell and buy listings off-market, respectively.

The problem

Brokers want to find buyers to sell to off-market, but don’t have a great way to find buyers outside of their personal network.
Buyers have a hard time finding off-market listings outside of their personal network.

The solution

Create a matchmaking service to pair brokers and buyers who are interested in buying and selling off-market listings

Results

Our changes made a huge difference and we eventually found decent product-market fit with improved and stable user adoption. App usage was good enough start building a mobile app for the product--Buildout's first.

Results

Our changes made a huge difference and we eventually found decent product-market fit with improved and stable user adoption. App usage was good enough start building a mobile app for the product--Buildout's first.

Full Case Study

The project
In March of 2021, Google announced that they were removing third-party cookie support from Chrome. This change meant we had to entirely re-build our plugin with a different workflow.

The challenge was: How do we build this in a way that does not disrupt the existing user experience?
My Role
Lead UX Designer
Lead UX Researcher
Lead UI Designer
Team
1 UX Designer
1 Project Manager
2 Developers
Tools
Figma
FigJam
Pendo
Internal tracking

Our Problems

Brokers want to find buyers to sell to privately, but don't have a great way to find those buyers
Brokers want to find buyers to sell to privately, but don't have a great way to find those buyers

The Solution

Create a matchmaking service to pair brokers and buyers who are interested in buying and selling off-market listings

Project Timeline

This is the H1 title

H1 titles are ignored in the table of contents. We always start the table of contents links with H2.

The best part about H2 elements

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

H3 is one number lower than H2

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

I'm an H4 chilling under an H3

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

And now back to H2

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

H3 is one number lower than H2

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

I'm an H4 chilling under an H3

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

H5 is very rare

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

and H6 is a unicorn!

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

Another H2 here

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

H3 is one number lower than H2

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

I'm an H4 chilling under an H3

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

Context

Our most popular feature

One of the core features of Buildout’s software suite is our website plugin. Instead of having to build a custom solution to show all of their property listings, users could simply install Buildout’s plugin on their website and have a fully-functional listing search.
Having our plugin installed also became a key metric whether users were likely to churn. Out of all of our features, the website plugin was both the most popular for our users and the most important to our business’ success.

A problem appears

In June of 2021, Google announced that it would be dropping support for third-party cookies in Chrome. This was a huge problem for us since our plugin required third-party cookies to make its core functionality work.
Types of cookies
First-party cookies
Created and stored by the website you're visiting, these cookies are used to improve your experience on that site.
Third-party cookies
Created and stored by a different domain than the one you're visiting, these cookies are used to track your behavior across multiple websites.
Therefore, we had to figure out a way to re-build our plugin in a way that would work under these new browser restrictions. To get rid of third-party cookies, we had to take our users’ clients off of our their brokerage website and onto a Buildout domain. The core challenge with this was how build it in a way that did not disrupt the existing user experience.

Discovery

How much change are people comfortable with?

Since the website plugin was so popular, we didn’t know how users would react to any type of modifications to it—let alone large-scale, structural changes. To test the waters, we reached out to some of our power users. First, we informed them about Google’s new requirement, then asked them what type of solutions they might be comfortable with given the circumstances.

The core issue

Throughout the discussion, it became clear that our users’ wants were directly opposed to the technical limitation from Google. Namely, they wanted their clients to stay on their website. This was due to 3 main factors:

Reasons users were against the change

Lead tracking
They wanted to see who was visiting their site and what documents they were viewing
Marketing and brand identity
They wanted their brand to be at the forefront of the experience for their users
User confusion
Their clients aren’t very tech-savvy and they didn’t want to confuse them by taking them to another software that they didn’t know about

The hard part here was—I agreed! I didn’t want to take their leads off of their website or interrupt their user flows. However, due to the impending restriction, we had to figure out a solution or else the plugin would be rendered useless. After explaining those circumstances, people were generally down to brainstorm with us.

Project Goals

1

Add a new feature to the Buildout Marketing product for Brokers to be informed of interested Buyers

2

Create a new product for Buyers to browse listings and mark their interest

Create a new feature in Buildout for BROKERS that shows them if there are potential buyers interested in their listing. They would then be able to pay for access to those contact details.
Create a new experience for BUYERS to input their investment criteria and be shown listings that match. Allow them to mark interest in listings. This information would then be shown to the broker if they paid for it.

Since this project made things worse in some ways for our users, I wondered if we decrease the pain by adding new functionality that would benefit them in other ways. Sure, we have to take your leads away from your website, but could we create an experience that is better for them and results in them viewing more of your documents? Were there new features you wanted that we could give you in return?

In my interviews, people reacted positively to this prospect and it gave us solace that, if we could add enough value to this new experience, it would soften the blow of forced change.

Defining success

After taking in all of this research, my PM and I synthesized it into 3 success markers for this project. We knew that if we did not succeed at all 3, this project do more harm than good. Therefore, we constantly evaluated every idea through these lenses to make sure it was actually helping us do what we set out to do.

Let’s get to work!

With these goals in mind, I began ideating on what a new document viewing experience could entail. To start, I listed out everything that people did not like about the plugin today:

Then, I combed through feature requests and old interviews to see what things people have asked for in the past:

Last, I added some of my own ideas of things that could be valuable:

Creating a new experience

Now that I had the whole picture of what I was designing for, I dove into Figma to create a solution. I sought to combine all of the above features into one experience:

After a few iterations, I landed on a version that acheived that:

The document viewer

The final design that gave users a way to see documents and perform actions all in one view.

A new feature

Since we were now re-directing users to Buildout's Connect domain, we added the ability for them to see all the listings they had viewed across all brokerages.

But how do they get here?

The document viewer was only half of this solution, however. The more complex part was the step between a user being on a brokerage website and then being redirected to a Buildout website.

If not done correctly, users could get confused and give up, resulting in our clients losing leads—and that’s not the recipe for a successful feature. Therefore, I sought out to design an experience that was as clear as possible

How users accessed this new document viewer

We prototyped this whole flow and ran by the same power users we had originally interviewed. They liked the solution and were happy with the new features.

Beta testing for more feedback

Since this was a change to a highly-used feature, we decided the best way to get real-world feedback was to run a small beta-test of the new experience.

After having 10 very active accounts use this for 3 months, there were two major takeaways:

Beta findings

The new document viewer was a hit
They wanted to see who was visiting their site and what documents they were viewing
The journey to get there was not
They wanted to see who was visiting their site and what documents they were viewing

This was good news to hear, as it meant only one of our solutions needed to be tweaked. To do this, we decided to get rid of the interstitial screen and take users right to the document viewer. This more clearly showed them what logging in would give them--documents.

The updated version of the log in experience

Results

After seeing that our final tweaks improved user understanding, we launched this new experience to all our users at once. The results have been genuinely positive for both our users and their clients.

User feedback

Did we meet our goals?

Lessons learned

1

Be creative with restrictions

This project stemmed from a technical requirement from Google. Instead of thinking of it as a burden, however, it helped to think of it as an opportunity to do something new. Sure, we have to do this, but what else does it allow us to do while we’re here?

2

Beta is best

Interviews are helpful, but they pale in comparison to real-world feedback. Being able to run a beta on this project gave us so much more insight, so much more quickly as to how our users and their clients responded to our changes.  Since they’re actually using the product for their day-to-day business, they gave us feedback wouldn’t have come up in hypothetical questioning.

3

Never for nothing

Even though Google didn’t end up taking away third-party cookies, this feature was still worth building. Through the discovery process on this project, we also heard user frustration with the way we handled user permissions. This feedback was the impetus for us to take a look at improving that feature a few months later.