I publish three websites: JohnWDeFeo.com (my personal website), Always Bring Sunscreen (a family travel blog) and Good, Cheap and Fast (a product review website). 

Each site receives a significant portion of its traffic from search engines and each site saw a sizable change in search visibility this year. 

Even after 16 years of working in search marketing, I’m always discovering something new. This article is a summary of my recent findings and observations.

Here are 10 things that I’ve learned about search engine optimization (SEO) in 2019.

Google Doesn’t Tolerate Anonymous Websites

When I launched Good, Cheap and Fast, it was published anonymously. My goal wasn’t to be mysterious: I wanted the site to emphasize data, not the person who compiled it. 

Maybe this intrigue was the reason for the site’s PR success. Yet, despite earning links from sites like Fast Company, Esquire and Slate, Google slammed the website in successive algorithm updates on January 4th, 2019 and once again on March 22nd, 2019. I was losing faith.

Despite receiving 100,000 referrals and an influx of great, earned links, Google dinged Good, Cheap and Fast…hard.

Despite receiving 100,000 referrals and an influx of great, earned links, Google dinged Good, Cheap and Fast…hard.

Then, I remembered that my friends and family members suggested that I include my photo and biography on the website. I admitted my mistake, took their advice and traffic recovered.

“Expertise, Authority and Trustworthiness” Might Be Detected Algorithmically

I added biographical information to each page on Good, Cheap and Fast in late March 2019.

The site’s search visibility climbed steadily within days of the change, achieving 200% growth only three weeks later. Unknown factors may have helped the site to recover, but the timing was spot on and I was able to repeat these results by adding “EAT” biographies on other websites.

Google Routinely Suffers Indexing Bugs

This article was dropped from Google’s index twice, possibly because Google was reading the timestamp incorrectly.

This article was dropped from Google’s index twice, possibly because Google was reading the timestamp incorrectly.

My top-performing article was dropped from Google’s index in March, and again in July.

Nevertheless, these drops occurred when the article was updated and improved. However, the drops did not coincide with the indexing bugs that Google admitted in April and August.

I believe that Google extracted a date from within the text of the article, assumed that it was the publish date, and determined that the article was too old to be relevant for a newsworthy topic.

Bing Filters E-Commerce Websites

The response I received from Bing. Click to expand.

The response I received from Bing. Click to expand.

Months after launching Good, Cheap and Fast, the site was still not indexed in Bing. I contacted Bing customer support to ask why. A representative told me that the site was blocked for reasons that he couldn’t disclose. He lifted the block, yet a year later, the site gets negligible traffic from Bing.

In the meantime, I’ve found other e-commerce websites that Bing entirely excludes from its index. For example, 10Beasts.com.

A Drop in Search Demand Can Look Like a Penalty

This looks like a clear example of algorithmic demotion, but in reality, it was merely a drop in search demand.

This looks like a clear example of algorithmic demotion, but in reality, it was merely a drop in search demand.

In June 2019, I published photos from the 2019 Coney Island Mermaid Parade. This website’s search visibility doubled, but then quickly fell by more than 60%. Was it a manual penalty? An algorithm change? Nope, it was a drop in people searching for “mermaid parade 2019 photos.”

Neither AMP nor Google News Are Prerequisites to Appear in Google Discover

I don’t use Google’s accelerated mobile pages (AMP) on my family’s travel blog, nor have I registered the site to be included in Google News. Nevertheless, the website’s articles appear in Google Discover (formerly known as Google Now and Google Feed). 

On the other hand, my product review website utilizes AMP and gets no traffic from Google Discover. I suspect that Discover emphasizes articles with a high dwell time.

Image Redirects Take a While to Process

Visits from Google Images hit rock bottom after my web host changed its content delivery network. Recovery was slow.

Visits from Google Images hit rock bottom after my web host changed its content delivery network. Recovery was slow.

Squarespace moved all of my websites’ images to a new content delivery network in the early fall. As a result, visits from Google Images briefly dropped to zero while Google processed the changes.

It took several months for these images to return to their prior rankings, despite the 301 redirects.

The Relative Importance of Links Is in Flux

My family travel blog has 50,000 words of unique content, hundreds of original photographs and very few backlinks. Nevertheless, the site’s search visibility grew steadily all year long…until recently.

The site was crushed by Google’s Nov. 7th algorithm update and it hasn’t recovered since. 

I’m not impartial, but I believe that my site’s travelogues are 10x better than the competition (e.g. Beaches Turks and Caicos, Dreams Punta Cana, and Eurodam Alaska). It kills me to see this content foundering, yet it may be a consequence of my failure to promote it.

Some algorithm Updates Adjust International Targeting (And It Can Look Like a Penalty)

Search visits to Good, Cheap and Fast fell off a cliff after Google’s Dec. 4, 2019 algorithm update, yet visits from the United States increased after that update. This makes sense because the site is only relevant to U.S. visitors. What seemed like a penalty was actually a reward!

Google Is Becoming a Pop Culture Engine

My name is shared with a victim of “The Amityville Horror” and Google doesn’t let me forget it. A Google search for “john defeo photographs” produces a list of crime scene photos and crackpot theories about ghosts. Meanwhile, both DuckDuckGo and Bing diversify their search results with respect to the fact that I was once a professional photographer.

Personal reasons aside, I find myself using DuckDuckGo more often because of its diverse search results. Click to expand.

Personal reasons aside, I find myself using DuckDuckGo more often because of its diverse search results. Click to expand.

The example above is a personal one, but certainly not an isolated one. Increasingly, I find that Google’s results are tailored to the wisdom of crowds, even when crowds are not so wise.

That’s all, folks. I’d love to hear what you’ve learned about SEO this year. You can find me on Twitter and LinkedIn. I hope you have a happy, healthy and prosperous 2020! -John


First peek of Bazaar — Bukalapak’s design system

Budi Harto Tanrim

In November 2018, I joined Bukalapak. Almost immediately after, we initiated a project to develop a new design system with me as the lead. The goal was to improve our product development approach to enable our 50 teams in the company in a more scalable and efficient way.

In June 2019, after 6 months of working, we reached our first milestone; we launched an internal design system documentation site. We call our design system Bazaar. While we silently celebrate that, we’d like to share what we’ve learned throughout this process that hopefully can be useful for you out there who going through the same adventure.

#1: Learn from the past before start on anything

Before we started developing the new system, we dug around to see if somebody else ever attempted to make a system like this in the past. We were afraid that we might be “wasting” time with this investigation, but it actually unearthed a lot of common challenges that informed our future decisions:

  • No single source of truth

    Every other designers collected their own sort-of UI kit and share it in their own circle or team. This creates a lot of duplication efforts and sometimes, there are a couple of different component to solve the same design problem
  • Inconsistent standard

    Most developers created their own mini component library. They did this because it made their job easier in the short term. However, this contribute into a huge inconsistency and inefficiency within our product
  • PDF documentation

    Some good folks actually attempt to make a documentation in a PDF format for others to reference. Unfortunately, this was not quite successful since people are busy, they have their own deadline, and the PDF is super hard to find, like, “In which folder was that again?”

Left: Documentation on PDF format | Right: Sketch UI Kit

And so you can see that learning what others tried was not a waste of time. It helped us validate and challenge various assumptions we had going in. The key learnings were that we had to define a “single source-of-truth” that was essential by all designers as part of their day-to-day work. Additionally, we had to make designers and developers work in sync via these centralized libraries.

#2: Make the invisible works visible

In the early stage of building design system, the team will often work in the background for foundational things that cricital to get them right so that they can be built upon. Basic questions like “What is our workflow when making a component?” or “How do we give update?” or “How do we prepare ourself with the new redesign?” or “Is the mono-repo better?”

While these are important to solve, but invisible to stakeholders. With that in mind, we tried to articulate all of this in a more tangible way by documenting everything on the doc. The feedback was positive. The team started to get more trust and gain more momentum from here. Takeaway: If you’re struggling with visibility, I’d suggest to give more tangible progress and articulate them while giving updates to stakeholders.

#3: Create a workflow and articulate it

You want your team to be autonomous and empowered. As a lead, all I can do is to make sure the preparation and the strategy are clear. Then, take the step back.

Well articulated workflow will help your team to be one. Generally speaking, start by asking these questions:

  • What is the primary way of working for my team?

    You can determine this through a 1 week sprint and document the overall process. Don’t forget to constantly iterate on this!
  • What are common situations my team faces?

    If you watch closely, you will notice a frequent and recurring questions that occur within the team. If it’s keep coming back, you need to do something about it. Find a way to solve those situations in more intentional way; e.g. by determining key principles on how the team should make decision
  • What is the definition of done?

    Due to the complexity, some tasks can end up being quite vague. Articulate the definition of done clearly to reduce uncertaininty and inefficiency.

#4: Start with centralized team to pave the foundation

Strictly speaking, this point may not always be true. However, we decided to use a centralized team model to get things moving and clear government first. In our case, we see a few benefits:

  • There is a clear ownership, so there is someone to be accountable to move things forward
  • The team can see a bigger picture, so when we make a decision, it is deliberately to benefit the whole organization
  • The team have more time to think about small things, like standardization and how to communicate them
  • People in the organization know where to go if they have issue or idea about design system

On the other hand, it comes with a cost. A few downsides you may want to consider:

  • People outside of the design system team don’t always think contribute to design system is part of their job. “Yeah, it’s somebody else’s problem.” Solving this challenge requires a proper change management approach to embed it in the DNA of the company
  • It’s challenging to transition from a centralized team model to more a distributed one as it is required to evolve the system
  • The core team run to a risk of working in sillo, althought this can be mitigated by constantly reminding them of the big picture and prepare an environment where people can collaborate
  • Potential to be a bottle-neck for the whole company if not given the proper resources

#5: Cohesive not consistent

We introduce a snowflake component. We actually embrace them! This term come from my previous colleague, when there is something off he will goes, “It feels like a snowflake experience.”

In short, snowflake component is to allow team to make their one-off component.

So I thought, well, I need to embrace this notion in our situation because there is no way the design system can accommodate the need of 20 product lines. In the beginning, I feel like this is a counter-productive solution. However, it has to be more like a cohesive concept rather than an exact and consistent specification. Allowing teams to create their one-off component can be useful in a few situation to the team can keep moving their project forward.

The intention of design system is not to stop people from doing. Design system is exist to help people work faster. Sacrifice control and embrace chaos when necessary

To tame down the chaos, we will do an evaluation periodically to see which snowflake components can be replaced and which can be promoted as a general components.

#6: Observe, communicate, collaborate with teams

Yes, it is not as smooth as I would like it to be for now. But optimizing collaboration among teams is always a continous process.

To be honest, the people who use your system are mostly available for you to access. So, we constantly use this opportunity to talk to them and observe how they use our system. This provides us with the feedback to determine and prioritize what changes we need to implement next.

Your users, just like the users of any product, are the best source of information about your product. All you need to do is to talk and be empathetic with them!

#7: Get buy-in from other functions and work together

I have always worked under the belief that design shouldn’t only be done by designers. Everyone working on a new product or service plays a role in shaping the design!

Designer design. But a good design is almost never created by a designer working in a vacuum.

We have to work together with the other functions to not only get their buy-in, but their feedback and opinions as well. This helps shake us out of our bias and forces us to look at something from a different perspective. Pumping out designs from the “design” organization alone won’t work. Once we have conversations with other functions and align on what are the important criteria and why, we feel the distribution of design ownership starting to spread.

We are very happy with what we’ve produced in these first 6 months. But for us, this is just a 10% of the whole picture and we can’t rest on our laurels! We still have a lot of work to do, but it is important to take breaks every now and then and recognize your accomplishments and how far you’ve come.

Next up: distributing the design system, continuing to develop the big picture strategy, ensuring continued operations of all the various bits and pieces of our current design system, and striving to evolve it in the right direction.

It’s impossible to have done this by myself. Credit for the talented people in Bazaar team as well. In no particular order — Dani Mahardhika, M. Ishaq Zainuddin, Dwi Karya Maha Putra, Barata Tampubolon, Ahmad Zakiy, Nurul Furqon, Laila Mauhibah, Krisbianto Cahyo Sumarto, Reza Faiz A. Rahman, Adwin Dwitaufani, Muhammad Hasby, Shellafuri Biru Mardika and Yoel Sumitro

Get in touch

You can reach me out on Twitter or via email to budi.tanrim@bukalapak.com

We are hiring for senior positions: Senior Product Designers, Senior Content Strategist, Senior iOS Developer, Senior Android Developer, and Senior Researchers to build a stronger team, further develop our human-centric approach, and better product quality at speed. Join us on this journey!


The quest for developing a reliable rating system - lessons learned from monitoring our suppliers quality

Trust plays a critical role when purchasing products online, but trusting the brand is not enough when booking a vacation or even ordering a massage at home, as the supplier in these cases is not the brand itself.

93% of consumers use online reviews to support their purchasing decisions; they seek for reassurance, a social proof that the product or service they plan to order is indeed the quality they expect it to be.

Rating and review systems are expected to be accurate because they are based on high volumes, however, as we learned over the years of operating our marketplace for beauty and lifestyle services – this is not always the case.

The problem

When we started Missbeez, we knew we were dealing with a sensitive business.

Haircuts, makeups, massages, even nail treatments – those are all personal treatments, and therefore our customers were concerned about who’s coming over, their work quality and their experience.

The more expensive or personal a product is – the more sensitive users become to the quality question.

To address these concerns, we designed a great business card for every service provider that included a personal photo, a few portfolio photos, details about the years of experience, expertise, ratings, reviews and more.

The app provided all of this information and in addition, encouraged customers to rate their experience and leave a review at the end of the treatment.

The quest for developing a reliable rating system - the mobile spoon

Take 01: The Ratings are too high 

Over time we started seeing anomalies between the ratings and the actual quality of our service providers.

We knew our service providers were very professional because we had a very strict onboarding process, but the scores were just overwhelmingly high (like 4.99 out of 5) and we barely had negative reviews or low ratings.

We did, however, receive enough complaints to conclude that our rating system doesn’t highlight the underperforming service providers. In a few extreme cases, we even saw customers who rated the service as 5 stars and then black-listed the service providers…

There was no correlation between underperforming service providers and their ratings or reviews.

Here’s what we found:

  • 41% of our customers rated their treatments (For Uber it’s ±70% of users, in Fiverr it’s ±65%, based on forums).
  • Only 15% wrote a review (Amazon sellers mention 10% as their benchmark). 
  • 97% of the ratings were 5 stars (the highest possible).
  • Only 2% of the ratings were negative (below 3 stars)
  • That means that 1% of all users reported: “bad service” 

Now, you may look at those figures and think: “what a perfect business they’re in!” but going back to the sensitivity level of our services, compiled with the number of complaints we got through our intercom live chat, our retention rates,  and our other KPIs – we just knew those numbers couldn’t represent the real quality of the supply side.

Our rating system was not reliable.

Take 02: Understanding why this is happening

Through customer interviews and frequent product iterations we came up with 3 main reasons:

1. The majority of customers is silent. These users mean the the world for the business, but they never communicate with it: they don’t leave reviews, they don’t provide feedback, and instead – they just act. If they are unhappy with the product they’ll just stop using it without saying anything. Poof… gone.

2. Complaining about someone publicly is usually an unpleasant act. In our case, it’s even harder: many of our service providers belong to a relatively low socioeconomic status: they work hard, travel from one customer to another carrying around their equipment, working hard to grow their business. Now you show me a customer who feels comfortable leaving a bad review for a beautician that just spent 2 hours working on her nails, just because her Pedicure wasn’t good enough.

3. It’s a question of timing. In our case, many of the problems were discovered a few days after the treatment took place (i.e. the manicure chipped or the hair got all curly again). By that time, it was much easier for the users to launch the app and contact us through the Intercom chat, than to navigate to their historical orders, enter the latest one, click the review button and leave a bad review. The chat option was not only more accessible, but it usually generated an immediate response from our customer success team.

We realized that due to the nature of our business (and customers), the positive feedback is through the rating system, while the negative feedback is received as complaints sent directly to our customer success team, indirectly misleading our rating system.

Check out the best of the mobile spoon

Take 03: Tackling this problem

Users seek transparency and our users were no different. If we wanted our rating system to be trusted by our customers, we had to make it more reliable.

We wanted to collect more reviews (and ratings) and more importantly: encourage customers to criticize us by writing negative reviews.

We added 2 small features/modifications to the product:

1. A prompt to rate the latest treatment no matter when users returned to the app: Since users didn’t always pay attention to the rating option, we made sure they’ll see it as an annoying pop up whenever they returned to the app – even if it happened 10 days after the treatment took place.

By doing so we wanted to increase the chances that users will rate their service, and if enough time has passed – then maybe they will feel more comfortable to criticize it.

This change generated some minor improvements:

  • 53% of customers rated their treatments (up from 41%).
  • 92% of the ratings were 5 stars (down from 97%).
  • 19% of customers wrote a review (up from 15%). 
  • Still, only 2% of reviews were negative. 

2. A single-click satisfaction survey: We added a single-click survey that was sent to customers 24 hours after the treatment ended. The survey asked something like: “how do you feel about your treatment?” and had 3 answers designed as smileys: a happy face, an indifferent face, and an upset one (that were later replaced by a different design).

The quest for developing a reliable rating system - the mobile spoon

The idea was to shift the focus away from the service providers and focus on the overall experience, hoping that the users will feel more comfortable to criticize “us” (the big bad company) vs. shaming the poor service provider.

Whenever a bad satisfaction experience was reported – a support ticket was created automatically so that our customer success team could contact the customer, understand what went wrong, and handle the case.

We tried a few designs and medias for this single-click survey (email, SMS, push, different text, different images) but as we learned from a similar use case by Fiverr – the timing had a big impact as well: sending the survey few hours after the transaction vs. few days can dramatically increase conversion rates. In our case, we started with a small panel embedded in the payment confirmation email, and added an SMS that was sent 24 hours after the treatment ended to all the users who missed the first chance to vote.

The single-click satisfaction survey generated the following results:

  • 16% of customers rated their experience through the single-click survey.
  • 80% of them selected the highest score.
  • Only 5% of them selected the lowest score (i.e. “Bad”)
  • This is where it gets interesting: out of that 5% who were extremely unhappy with their experience – 96% didn’t rate the service providers at all. 

So the changes we’ve made didn’t make a dramatic impact, but they did prove that users who were extremely unsatisfied with the service expressed their “unhappiness” through the single-click survey instead of placing a bad review or a low rating for the service providers.

Subscribe to my newsletter and become 23% more awesome than average!

Take 04: Switching to quantitative data

At this stage, we still had 3 serious problems:

  1. Our rating system was still over-positive and perceived to be unreliable.
  2. The satisfaction survey was only partially efficient in tracking unhappy customers due to low engagement.
  3. Once again, there wasn’t always a correlation between customer complaints, ratings and survey satisfaction rates. 

We started working on 2 smart indexes designed to measure the quality of each treatment without relying on human feedback.

1. Customer satisfaction score 

How do you calculate the satisfaction level of a customer without asking her?

You analyze the behavior of this customer after each treatment, compare it with previous behavioral patterns, and estimate the satisfaction level according to the delta.

For us, we had 8 types of actions that customers could perform and could teach us about their satisfaction level (i.e. mark a service provider as a favorite, pre-book another treatment, give a nice tip, and more). We monitored those actions and created behavioral patterns in order to compare new instances with existing ones and identify exceptions.

The result? Given a set of actions performed by a given customer, we could estimate (with some heuristics of course) how satisfied this customer was with a given treatment.

Next, we took the score gaps (the exceptions, i.e. the deltas) and started aggregating them for each service provider.

So if, for example, certain service providers frequently generated lower satisfaction rates – their average satisfaction delta was negative, while service providers who drove high satisfaction rates – started showing positive deltas.

2. A personal drop rate (churn) index per each service provider 

I’ve written about this in here: minimizing leakage in a marketplace for offline services.

We originally invented the personal drop rate in order to track offline leakage but as we discovered later on, this magic number was also very useful as a quality indicator.

In a nutshell: this index calculates the churn rate every service provider drives by measuring the drop rate of repeat customers who stopped using the product after being served by this specific service provider.

If the average drop rate in the system 20% and a certain service provider has a 50% drop rate, it means that this individual causes a serious churn – which is very bad.

High drop rate could point to one of the following:

  1. This individual provides a bad service quality (= bad).
  2. This individual is taking customers offline (= bad bad bad).

Either way – this individual is damaging our business and should either improve or be removed from the system.

Boom! Now you’re talking!

With these 2 indexes in place, we could now see a correlation between our satisfaction surveys, the satisfaction score, and the drop rate. And the beauty of those indexes was that they were always “on” and didn’t rely on customer engagement or conversion rates. Muhahaha!

At this point, we felt we had enough quality indicators to monitor our service providers community. 

But all of this beauty still didn’t solve the original rating reliability problem…

Take 05: Sharing some sensitive numbers with our customers

So the indexes were great for internal quality monitoring, but we still needed a way to increase the reliability of our providers’ business cards and fix our over-positive rating system.

Instead of trying to lower the ratings, we decided to keep it as is and add additional information based on some internal, biased-free KPIs.

The goal was to promote the top performing service providers based on authentic data, without urging customers to criticize their service providers.

In a bold move (at least this is how we felt about it), we added the following KPIs:

1. Punctuality: we knew late arrivals frustrated our customers, so why not share this information with them in advance?

By tightening our service procedures and logging late arrivals – we were able to maintain a punctuality score for every service provider. We exposed this number to our customers and by doing so we achieved 2 things: 1 – we encouraged the service providers to try harder. 2 – we were transparent with our “time-sensitive” customers who were happy to know this information before selecting a service provider.

2. Popularity (favorites index): so customers didn’t feel comfortable placing bad reviews, but we had something more valuable than their words: their actions. We used our ‘add to favorites’ functionality to measure the number of customers who favorited each service provider and shared this number with our customers.

You could find service providers with an average score of 4.95 stars, but their favorites index was 10% while other service providers had only 4.83 stars but had a 70% favorites rate. The favorites index felt more authentic since it was based on customer behavior instead of votes or words.

3. Rank: remember the drop rate? This brilliant index was not something we could share with our customers, but we could definitely promote some service providers who had the lowest drop rate (and highest retention) by giving them a special rank.

You see, service providers with low drop rates are contributing to the retention of the marketplace – they are good for the business so why not promote them by giving them a special badge? We created 4 rank levels and shared those badges as part of the business card.

The quest for developing a reliable rating system - the mobile spoon

So there you have it.

A very long journey as you now realize.

I believe we are just scratching the surface with this one though, there’s still a lot to do in order to improve the reliability and transparency of our marketplace.

  • We didn’t solve the over-positive rating problem, I believe many products suffer from a similar offset but for us, it felt extreme. 
  • We found some creative ways to get some more feedback from our customers (through our single-click surveys).
  • We developed some sophisticated quality indexes to automatically measure satisfaction rates and drop rates of individuals on both sides of the marketplace. 
  • We exposed some biased-free numbers. This helped us establish trust with our customers and become more transparent about the pros and cons of each service provider. 

Finally, we were able to cross-reference the above list and monitor our supply quality from different angles, using various data points: quantitive data, qualitative data, customers feedback, behavioral patterns – each one of them might fall short in some cases, but when used together they are extremely powerful.

Following these enhancements, we’ve developed a quality dashboard that showed the above list in a few graphs so our operations team can keep track of the quality trends in general and on an individual level. It’s a very powerful tool and I truly recommend each an every product manager dealing with similar issues to think about how to tackle the quality challenges internally and externally.

Check out the best of the mobile spoon and make sure to subscribe to my occasional, practical, non-spammy newsletter and become 23% more awesome than average.


Similar projects can benefit from shared resources

When we reviewed all the applications, we saw that many people are trying to tackle the same problems and are even using the same approaches to do so. For example, we received more than 30 applications proposing to use AI to identify and manage agricultural pests. The report includes a list of common project submissions, which will hopefully encourage people to collaborate and share resources with others working to solve similar problems.  

You don’t need to be an expert to use AI for social good

AI is becoming more accessible as new machine learning libraries and other open-source tools, such as Tensorflow and ML Kit, reduce the technical expertise required to implement AI. Organizations no longer need someone with a deep background in AI, and they don’t have to start from scratch. More than 70 percent of submissions, across all sectors and organization types, used existing AI frameworks to tackle their proposed challenge. 

Successful projects combine technical ability with sector expertise 

Few organizations had both the social sector and AI technical expertise to successfully design and implement their projects from start to finish. The most comprehensive applications established partnerships between nonprofits with deep sector expertise, and academic institutions or technology companies with technical experience.

ML isn’t the only answer 

Some problems can be addressed by using alternative methods to AI—and result in faster, simpler and cheaper execution. For example, several organizations proposed using machine learning to match underserved populations to legal knowledge and tools. While AI could be helpful, similar results could be achieved through a well-designed website. While we’ve seen the impact AI can have in solving big problems, you shouldn’t rule out more simple approaches as well. 

Global momentum around AI for social good is growing—and many organizations are already using AI to address a wide array of societal challenges. As more social sector organizations recognize AI’s potential, we all have a role to play in supporting their work for a better world. 


In curling, the main player throws a giant puck-shaped stone, aiming to reach a certain point, while 2 sweepers use their brooms to sweep the ice in front of the stone and slightly modify its path or speed until it reaches the target.

There’s nothing sexy in those hundreds of small tasks that usually drive minor improvements, but then again, there’s nothing sexy in curling either…

While it’s hard to find improvements that will sky rocket your conversion rates, there is one topic that can easily knock it down if it’s badly implemented: Money.

Whenever money is involved (purchases through the app, paid services, booking), the users become much more sensitive to security risks, uncertainties, unclear text, bugs, and practically anything that is not 100% perfect.

When your product deals with payments – even the smallest hiccup can drop your conversion rates to the ground. 

Here are 10 lessons we’ve learned along the years, that encapsulate the sensitivity of dealing with payments in a B2C product along with some tips for improving the product’s UX and overall conversion rates.

I must warn you though, some of the examples are not for the faint-hearted…

1. Start with trust

Users are used to trying out new products. Some products stick around, others are being dumped and forgotten, it’s a common thing, just like providing an email address or a phone number.

But dealing with payments requires a whole new level of trust. It’s a different level of commitment that users are willing to provide only to the must-have products or the ones that are already well established and famous. When it comes to new products – this can become a challenge.

When we just launched Missbeez (a marketplace for lifestyle services on demand) – my wife used to invite friends and neighbors over for “wine & beez” evenings where they had a chance to try the product, receive discounted treatments and have some fun, while we had a chance to see how real users behave and use the app in a relaxed, friendly environment.

I remember one of the things that always struck me was how surprised (and probably unhappy) those users were when they had to enter their credit card details before placing the order.

There was always this kind of feeling (and I’m sure I was over-sensitive about it, but nevertheless) that those users (although they knew my wife and surely trusted her when she said I’m perfectly normal despite my looks) were very suspicious with the app (“is it safe?”, “will they charge me right now?”, “isn’t there a way to pay with cash?”) and extremely reluctant to enter their credit card details to an unfamiliar app.

This was 4 years ago, and those habits have changed since, but the bottom line is still valid: users are suspicious about new products, and if those products involve payments – the sensitivity grows tremendously.

That’s why building trust is key.

It requires special attention across the board: within the boundaries of the product but also outside of it, long before it’s installed (through app store product page design, reviews, brand awareness and more).

One good way to build trust is to use social proof techniques such as user counters, customer logos, testimonials, media mentions and quotes, certifications and case studies.

2. Make sure the user feels safe and secure 

Users love certainties and hate risks, especially when it comes to spending money.

Make sure to address the zero-risk bias early in the process, by promoting your secure payment, money-back guarantee, free shipping, or anything else that can make the users feel safe and secure.

Minimizing risks by promoting your advantages (plus some good UX writing a bunch of cool security logos) can improve conversion rate and reduce potential drops.

The formula is very simple: Fewer risks = fewer drops.

3. Clarity = Conversion 

Clarity is one of the keys for creating a good UX, but when payments are involved – it drives conversion.

In every step within the payment/ordering process, the product must provide a clear and accurate status of what’s happening right now, what’s coming next, what’s the expected cost, when will the payment take place, etc.

Here’s an example that helped us address one of our users’ concerns and improve our conversion rates:

In the example above, a small explanation label makes a big impact: if users fear that the “book now” button will perform the payment (before they even got the service) – some of them may try to avoid it, but since there’s no other way to proceed with the booking process – many of them will simply quit in the middle of the process.

By adding a tiny explanation saying: “you won’t be charged yet” – we managed to eliminate the risk and make users feel confident with the booking process.

Here’s another example involving coupon codes:

On the left side (and I faked the scenario a bit to simplify the example): the user enters the coupon code and hits the “place order” button.

The problem with this design is that users may fear that their code is invalid, have been used already, or simply doesn’t work. The UI doesn’t explain what’s going to happen if the code will be rejected: will the transaction take place without the discount (full price)? Will it fail and let the user fix the problem and try again?

It’s unclear.

The right-side example fixes this uncertainty by providing immediate feedback for the coupon code. By hitting the “apply” button the users get a clear status of their coupon code: either it’s valid and good to go, or it failed and needs to be fixed.

So clarity is key, and unfortunately, lack of clarity can be found everywhere: special deals that don’t mention the exact timeline or the terms of use, discounts that are a bit too blurry, uncertainties about additional fees and more. Make sure to review your UI and texts over and over again from the unbiased user’s standpoint and try to imagine what can possibly go wrong in order to find those potential pitfalls.

4. Simplify 

When the right timing comes – ask for the user’s payment details. Make sure to ask for the payment details as late as possible in the process and give the user enough time to get used to the app, build trust, and feel more incentivized to complete this action.

The experience of filling the payment details should be well designed.

Remember the rule of thumb: more steps, more drops. 

This rule applies to the process of collecting payment details as well: so you need to make it as fast and simple as possible.

  • Set up your payment system in a way that will not require the ID and the CVV number (fewer fields to fill). 
  • Make sure your payment system supports all types of credit/debit cards. 
  • Add multiple payment options (PayPal, Apple Pay, Google Pay). 
  • Store the payment details securely (or if you can’t, use a 3rd party for that) so that the next purchase will not require re-entering the payment details. 
  • Follow this set of UX rules for providing a great mobile typing experience when entering the payment details.
  • Incorporate a credit card scanning feature to save the manual typing (researches indicate a 4%-5% increase in conversion rates when scanning feature is available). 
  • For heavy shopper apps – allow adding more than one credit card.

5. Make your cart accessible everywhere – even if you don’t have a cart. 

This goes back to clarity but it’s a big one: users get distracted easily, they forget what they did just 30 seconds ago. Make sure to include a detailed order summary and make sure it’s always accessible through a single click.

At the early days of our product, we didn’t have a cart because we didn’t see ourselves as a classic shopping app. Users had to select 1-2 services, preferred time and location and hit the “order now” button. Pretty simple right?

But as the product evolved, we started using balancers to balance between the demand and supply. As our demand always exceeded our supply, we ended up increasing the price through additional costs such as travel fees (for small orders), weekend rates, same day (VIP) service, etc. When we wanted to boost our demand we used in-app promotions such as happy hours, special deals, coupons and more.

The product still dealt with 1-2 services per order, but with all of these additions/reductions, the final price was pretty dynamic.

We were always very transparent about it by presenting an accurate bottom-line cost and explanation labels across the entire order flow, but since money was involved, users wanted to see the details. They wanted to understand how exactly we got to the final price and make sure we weren’t messing with them.

We got many questions about it in our customer support chat:

  • “Why is there an extra cost?”
  • “Will I really get a discount?”
  • “How can I be certain that my gift card will be used?”
  • “Did you receive my promo-code?”
  • “My booking is next week, will the discount still be applied?”

As mentioned above, uncertainties cause doubts, doubts cause hesitations, and hesitant users don’t convert.

Uncertainties cause doubts, doubts cause hesitations, and hesitant users don’t convert.

In our case, some of them dropped and some contacted us with questions.

Both options were bad for our business so we decided to add a cart.

The card was accessible at every step of the funnel. The cart icon was clickable, and when expanded, it presented a detailed order summary with all the special discounts and special fees (if existed). It was fully transparent, extremely detailed, and customers loved it.

A few weeks later – the questions stopped.

6. Avoid dark patterns even if you are desperate to move the needle. 

I recently made a collection of 20 dark patterns to avoid when designing products.

Many of those devious patterns mislead the users into additional/unplanned costs:

  • Hidden costs for certain shipments or packaging
  • Sneak into basket techniques where weird items are added to the basket automatically 
  • Confusing terminology causing users to accidentally subscribe to expensive plans

Regardless of how desperate you think you are to move the needle and improve your conversion rates – avoid using any of those 20 listed patterns, especially the ones dealing with money. They will just make your users frustrated and angry and will lead to a long term churn and a bad reputation.

7. When it comes to money – surprises are always a bad thing 

It is very easy to “surprise” the users with unexpected payments that can jeopardize the whole “trust” thing that you are trying to build.

Take ghost credit card authorization (this annoying $1.00 transaction that’s made to validate the card) or a badly written button caption that performs the payment a bit too early (from the user’s point of view).

Dig deeply into your UI and locate those pitfalls.

There are many ways to do it, one them is to work closely with the customer support/success teams. They know what pisses off customers and they’ll be more than happy to share the frequent complaints with you. Double-check their answers with real data and you’ll get a perfect picture of where to begin.

One issue that popped up by digging through our support tickets involved our product’s gift cards:

Originally, we promoted our gift cards as cool gifts our users could purchase and easily send to their friends, but after a while, we started getting a lot of complaints from users who wanted to purchase a gift card for themselves (and take advantage of a small discount some of those cards provided). They complained that the process was too cumbersome.

We realized we had an unplanned scenario to support: purchasing a gift card for the buyer herself.

This piece of information (which, BTW was pretty hard to detect through our mobile analytics because this workflow was never on our radar) motivated us to add a new option to purchase a gift card without sending it as a fancy email to a friend and instead add the card value to the balance of the buyer. Pretty straight forward isn’t it?

Here’s what we did:

Pretty genius isn’t it?

I know!

Soon enough, we started getting more complaints from users who have tried the new option – and were charged by mistake (according to them).

Apparently, the new option was inconsistent with what the users were used to (or expecting), and the payment was perceived as an unexpected (and unwanted) “surprise” because it didn’t have that extra step of adding the addressee details.

Of course, this was not a devious plan or a dark pattern, we just didn’t think that an extra step was required since there was no addressee, but for our users, the actual payment simply happened too fast.

It surprised them, and surprises that actually make the users pay unexpectedly are trust killers.

So we fixed it by adding an extra step that didn’t do much but gave the users a chance to better understand what’s about to happen and solved this issue for good.

Basic? Yep.

Dumb? You bet!

Not a story to share on LinkedIn? Tell me about it…

And still, this scenario demonstrates how sensitive users become when money is involved.

8. No bugs, please

In a world of frequent shipping, where companies release new features and tons of experiments on an hourly/daily/weekly basis – there are also occasional hiccups.

But because money is such a sensitive topic for users – hiccups must not happen in any of the payment workflows: security bridges when payment details are involved, privacy issues, bugs in payment processes, issues with special discounts or invalid coupon codes – whenever money is involved – there’s absolutely 0 tolerance for product hiccups.

As a company policy, we always defined a special test plan (with tons of regression) for every product release that involved any of our payments modules.

9. Transparency 

What’s the right way to launch a policy change or a new pricing model in a B2C app? 

Should the company announce it and share it with the customers in advance? Or should it just “appear” the next time the users use the app?

From our experience – it’s better to announce it and share the rationale of each change with the customers and use it to promote the change (as well as all the rest of the good stuff…).

Sure, the vocal minority will shout, but they will shout anyway, so that doesn’t count. 

What counts is that the silent minority may see such transparency as good and honest behavior.

In our case, we had a few chances to be completely transparent with our users: we changed our pricing logic a few times, added new policies, changed them, and made sure to communicate those changes transparently with our users. It worked well.

The only time we didn’t follow this guideline was when we had a critical bug involving our payment gateway that caused many of our transactions to fail.

The bug was kind of messy and took us a few weeks to fix it. Once it was fixed, our gateway company performed the faulty transaction retroactively.

It was a very bad move because many users got a notification about a transaction they didn’t remember doing. When we explained what happened and that the original transactions never happened in the first place – it was already too late to fix the bad impression.

My conclusion from this case was that it’s always better to communicate changes that involve payments in advance.

10. Make it easy for users to contact you in realtime 

I truly recommend adding a live chat button so customers can ask questions and address their potential uncertainties in realtime, without leaving their current stage within the app.

A few years ago we added intercom as our live customer support chat and it helped us improve our conversion rate in 2 levels:

  1. We were able to address user inquiries in almost real-time, help users gain trust by answering their questions real fast, make them feel secure with the process and convert better. 
  2. We were able to label and then analyze the types of questions we received, and polish our funnel using qualitative insights (as opposed to the common quantitive data you get from mobile analytics).

I absolutely love Intercom for making this functionality so friendly and super easy to implement. Users can use the chat button to contact the customer support team and get instant clarifications to their questions.

As a side note, make sure your chat button is always visible and accessible so users can contact you in every step of the way.

Not a summary:  


We’ve reached the end of lesson number 10, and you know what they say about lessons number 10…

Time for me to end this one!

If you’ve read through the whole thing you are either bored or a true friend, but that also means you may want to share it with your friends (do it! Dooo itttt!!!) or subscribe to my occasional newsletter.

Rumor has it that reading the mobile spoon makes you 23% more awesome than average.

I can’t deny this rumor.


Luka Buljan

Not that long ago, our company was contracted to develop an application which placed a large emphasis on users being able to listen to audio podcasts while browsing the rest of the application completely uninterrupted or multitask on their devices.

The previous version of the application had a separate, hybrid mobile app that allowed users just that, but had performance and functionality issues.

Our approach was to use our React Firebase tech stack to develop a PWA application, covering all use cases under one flexible, performant code base.

The player

We decided to present the audio player to the user at the bottom of the screen when an audio track is being played, without blocking any further interaction with other content displayed on the screen. Also, a condensed version for mobile screens is presented so that it can be expanded with a button press. A simple solution for both small and large screens.

Something like this

Feature set

From a functional perspective, there were a couple of features we had to look out for, such as:

  • Switching tracks from outside the player component itself
  • Setting narration speed within the player
  • A fully functional seek/progress bar
  • The ability to download the audio source
  • Most importantly, background playback on mobile devices

Using React and Redux made most of these requirements a non-issue, with the default HTML Audio element supporting most of these controls out of the box. It didn’t take long before we had a functional component ready for testing.


The requirements to pass testing were the following:

  • Desktop versions had to be able to persist playback even when minimised in Safari, Chrome, and Firefox
  • Mobile versions had to be able to persist playback when the application is in the foreground, in the background and when the screen is locked, with basic media controls showing up on the screen when the application isn’t in the foreground.


Android and desktop passed with flying colours in all cases, but iOS – not so much:

  • Worked only when the application was in the foreground.
  • When added to the home screen, audio playback stopped completely when the app was minimised or screen was locked.
  • When opened directly in the browser, audio playback persisted, but sometimes lost context and stopped playing.
  • Lock screen controls were spotty at best in both cases, sometimes showing up, sometimes not, and sometimes losing context during minimised playback (did nothing to audio playback).
  • No option to download the audio file, only open it in another tab.
  • Audio track doesn’t autoplay if there is no user action involved.

The harsh reality

As it turns out, we were fortunate to even have basic PWA functionalities. iOS 12 released a couple of days before testing with improved PWA support on iOS devices to the point that they were now usable.

Before iOS 12, PWAs didn’t persist their state — for example, with iOS 11, if a user was to browse the application, minimise it and then go back to it, the app would restart with a completely cleared cache.

The recent iOS 13 update didn’t fix any of the issues we had with iOS 12 at all, so all our hopes of Apple fixing the problem in the near future were squashed.

This presented a major problem since a large percentage of existing users had iOS devices and audio playback is a major feature to them, so Android and Desktop versions working as intended meant little at this point. Without a functioning audio player on iOS we could not ship the app. We entered limbo at this point, with all other features finished. We had to do something about it, but there was little in the way of helping us.

The next solution

The only thing left for us to try was to wrap the entire web app in a native shell and publish it on the App Store. The entire idea of having everything in one solution went flying out the window, but what can you do.

Enter Cordova.

We continued developing the solution and interoping between our web app, Cordova plugins for background playback, a separate build procedure and generally a separate project to maintain alongside the already huge PWA app.

We managed to utilise Cordova plugins and a little bit of tweaking to our audio player component to finally allow background audio playback. After a while, we had a native app to push to the store.

We tried and got rejected.

We had to implement in-app purchases to get published (because of other sections in the app allowing purchasing tickets to events). There was no efficient way to interop our React frontend with a functioning Cordova in-app purchase plugin from a technical perspective.

Exit Cordova.

At this point, we had a serious discussion on what to do next. We had to go native for iOS. It felt stupid after all this work and with Android and Desktop working perfectly, but it was the only thing to do.

The final solution

After seeing what maintaining a Cordova shell around the PWA app would look like, a native iOS application seems like a much wiser choice when considering future development.

Enter React Native, the obvious choice. We could reuse most of the functional components (entire Redux modules) from our PWA solution, which helped us immensely with a quick delivery. All we had to do was build screens and components.

It took a couple of weeks to finish development of the simplified media player app with all the audio player bells and whistles we expected to work in the PWA version in the first place. Audio download, background playback, fully functional lock screen media controls — we finally had it all.

Final word

The good thing is that audio player and PWA functionalities work perfectly fine on Android and Desktop. We built an extremely fast solution with React, Redux and Firestore that we’re very proud of. However, there are a couple of ugly aspects of it:

  • There is no control over lock screen media controls, only play and pause work.
  • An audio element has to be rendered at all times to not mess up playback permissions, no matter if there is an audio source or not. We’ve opted to use an audio object instead of an element, that is always rendered in the DOM.

Of course, the ugliest part of this is that iOS is the cause of nearly all the problems we had with audio playback and we had to build a native app to provide users the functionality Android allows from the get-go.

The worst part of the whole ordeal is that none of the issues were on our side.

Apple proved to be the blocking factor in all instances, even to the point of an application not working as intended. As to the reasons for it, we can’t be sure, but Spotify already has a pretty good idea why PWAs are discriminated against (which you can read about here: https://www.timetoplayfair.com/ ).

In the end, we lost the unified solution we wanted/the client expected and will have to maintain two solutions for the foreseeable future. Thank you, Apple.

A word of advice for any future projects involving PWA — if it has anything to do with media playback, don’t bet on iOS. Think of PWAs as ProblemsWithApple.


Account-based Marketing is one of the most discussed strategies in conferences rooms and at conferences. Sales and marketing research and advisory firm TOPO released a report to the B2B community last quarter that stated emphatically: “ABM is going mainstream in 2019.”

Game on.

In the spirit of understanding the state of all things account-based, here’s what I’ve learned from meeting with more than 50 B2B teams last quarter on the state of ABM.

B2B marketing and account-based marketing aren’t synonymous yet – but it’s close.

The B2B sales process is in sync with an account-based model, driven by how solutions are purchased and the total available market (TAM) of accounts for most B2B brands. 

The numbers so far are giving us a strong indication of what’s possible. Account-based leads are four times more likely to be followed up on by sales, according to Sirius Decision’s 2019 ABM research.

However, most marketing teams struggle with transitioning from a quantity-based lead generation system – create content, drive traffic, capture lead, nurture, score to qualify, route to sales and hope leads get followed up on – to the more precise and collaborative account-based approach.  

ABM is not the antidote to the elusive sales-marketing alignment. 

Having an account-based strategy and mindset gets deeper sales buy-in, focuses the marketing department’s effort and gets the organization moving in the same direction. But it’s not the way to get sales and marketing aligned. If metrics aren’t shared, the collaborative culture isn’t in place and/or executive leadership isn’t behind the strategy, the chance of revenue success with an account-based model is just as unlikely as the old lead gen model. 

Account-based Marketing is not enough to deliver results.

Marketing driving an account-based effort and/or operating in a silo will fail. Don’t believe me? Check the history books on “lead scoring.” Acknowledging this challenge, the B2B industry has attempted to adopt multiple different versions of “ABM” descriptions (Account-based everything, Account-based revenue, Account-based orchestration, etc.). 

For an account-based approach to work, it must include a holistic approach integrating (not just aligning) sales, marketing, customer success and product. 

ABM’s hidden gem use case may be customer revenue and expansion.

ABM works extremely well for revenue expansion and growing your relationships with existing customer accounts. 

Here, we have a very clear set of accounts. There is no debate about which companies or organizations should be on your “account list.” They’re straightforward to identify and to reach out and engage in context to your existing relationship. Just as importantly, your customers are looking to get more out of their existing investments and more value from existing, approved providers. 

Your current lead-based metrics will go down, don’t panic.

Lead quantity will go down. Embrace it. 

Many of us are driven (and often rewarded) by quantity metrics, such as web site visits, database contact size, and the number of leads – especially marketing qualified leads. Key strategic metrics for account-based efforts are different. Key success indicators include an increase in average contact value, faster close rates and larger lifetime contract value. 

Accounts don’t buy anything, people do.

As you adopt an account-based approach, be careful not to get so obsessed with accounts you lose sight of the true buyers – people. Accounts are important but ultimately people on the buying committee will make the decisions and determine your fate. 

Successful account-based marketers emphasize the things that still matter to people: being relevant, differentiated, timely and inspiring in their communications. 

Intent data is gaining traction and success in account-based strategies. 

The lead generation era was about digital buying language, and tracking and acting on the behaviors of individuals. In contrast, the account-based era is all about understanding the collective actions of people that work at target accounts, around action and engagement with specific topics. 

Using this “intent” data has become an important signal and way to prioritize when and how to follow up with specific accounts. The mindset needs to shift from “I see you downloaded this white paper” to “it looks like you may be doing research around x topic.”

Mastering account-based strategies and tactics is a good career bet. 

Account-based strategies and know-how have moved from nice-to-have to critical skills for B2B professionals. 

The good news is that there is a lot of data generated from those that have successfully deployed account-based strategies and tactics – and we can tap into deep learnings from that data. It’s the perfect time to commit to mastering account-based strategies for your professional advancement and for the success of your organization.

Opinions expressed in this article are those of the guest author and not necessarily Marketing Land. Staff authors are listed here.

About The Author

Integrate, an enterprise marketing software and solutions provider. With previous roles as CMO and B2B revenue marketing leader, Scott leads Integrate’s go-to-market, customer, and growth strategies. Scott’s experience and passion are fueled by working with customers and partners to create new levels of business and customer value.