Impact and Opportunity: Zero Click Results in Pharmaceutical Search

Over the past several years, Google has increasingly devoted screen real estate on their search engine results page (SERP) to reflect a mix of Google’s ad products and auto-generated content known as rich snippets and knowledge panels. In many cases, these Google-owned content items dominate the screen, pushing organic, corporate and brand web site listings down below the fold.

The net effect of this has meant fewer clicks to brand sites, in fact in many cases, no click at all. Google users can now find the answer they are looking for in these knowledge panels, and many never need to click through to a web site. According to a SparkToro/Jumpshot survey from 2019, 50% of all searches fall into this category, and estimates for the healthcare industry are even higher.

For pharmaceutical companies trying to tightly control their brand and claims, and manage their content under regulatory scrutiny, these so-called ‘zero click’ searches represent a key opportunity to ensure that a brand and product is well-represented in what is often a high-intent digital moment.

Studies have shown that users trust the knowledge panels, click on them at higher rates, and that user experience satisfaction is high. If your brand’s goal is to be associated as an authority on a disease state, drug facts or brand information, it’s important to understand the impact and opportunity of zero-click results.

This automated content is part of Google’s Knowledge Graph, a database which uses structured data to define the context of internet data and content. It obtains this from a number of first and third party sources. This database classifies content using data structures, also known as schemas, to create complex references and relationships between all sorts of things, including a rich set of schemas for the healthcare, medical, and pharmaceutical industries. You can see an open-source library of definitions at https://www.schema.org/.

Google’s bots use this structure to classify and link data through context. Schema definitions can be inserted as XML snippets into the code of a web site, often called a ‘rich snippet’, and Google will look for them as they index the site.

There are dozens of rich snippet types out there, but specific to pharmaceutical and disease state searches, there are several key knowledge panels we want to get familiar with. Google has a huge amount of data it has obtained by indexing a large amount of medical information. Relatively few sites take advantage of schema markup and rich snippets, even as health-related searching has skyrocketed in recent months, and is anticipated to continue to grow.

Health Fact Featured Snippet Card

This smaller card essentially will appear in what is effectively the #1 page position. It is usually reserved for high volume searches on a topic. Content publishers such as WebMD often own this card. These cards generally define clear topic, category, or item.

Medical Fact Knowledge Panel: 

This panel is typically displayed when a specific disease, condition or disease state term is searched. Disease state panels can be very robust, and often link to related diseases and conditions.They also often cross-reference drug fact panels. Especially for rare diseases, displaying a knowledge panel for this result should be a priority. These panels can be very robust with related facts, cross-references to other knowledge panels, and many other valuable links. Note that Google employs a staff of medical artists to illustrate these knowledge panels.

Drug Fact Knowledge Panel

This panel typically is displayed when a specific drug or brand name is searched, and will display a variety of auto-generated information about the drug, it’s indications, FDA status and much more. Getting a knowledge panel result for your brand terms is ideal. Basic panels will contain minimal information, while the more robust panel example below has related searches and cross-references other medical fact panels.

Q&A Knowledge Panel

This is the most common knowledge panel and it attempts to answer commonly searched questions. Many sites will implement Q&A rich snippets to attempt to own this space. Often you may find dosing, side effects and claims being answered through these automated Q&A snippets. Owning these results should be doable and is generally less difficult than the drug fact and disease fact knowledge panels. Rich snippets included in Q&A panels can be datatables, numbered lists, related links, and much more.

Common Knowledge Panel Sources

Google relies on a variety of first and third party data sources, favoring a mix of government agencies and commercial data portals. Ensuring that your brand and product is accurately represented with these sources is a must. You can view a complete list of sources here: https://support.google.com/websearch/answer/2364942?p=medical_conditions&hl=en

For many US search results, Google seems favors a smaller number of government and commercial sites, including NiH.gov, FDA, as well as media sites like WebMD, RXList and MedInfo, major universities, and Wikipedia.

How to influence Knowledge Panels

It’s not possible to directly control the content or visibility of any individual knowledge panel. However there are some relatively easy ways to improve the odds that Google will include your content over another source.

First and most important is strong fundamentals. A fast-loading, error-free site allows Google’s bot to crawl and index the site. Make sure to enable Google Search Console and Google Analytics to get rich data on search traffic and impressions. Watch out for the typical SEO gotchas like content duplication or too much content locked up in images.

Next, implement rich snippets and structured data on your site. Many CMS systems have plugin support for schema.org definitions. Q&A Rich Snippets and Featured Snippets are easy starting points, and you can adapt existing FAQ-style pages to this format. When creating new pages on the site, focus on how new content can answer patient, caregiver and HCP questions.

Audit sites where your brand, product or drug facts are listed. If necessary, reach out to these sites to ensure that the content is accurate, and when appropriate, attributed back to your official site. Wikipedia and other self-service data sets are easy, quick fixes that often can generate an instant result.

Regular, authoritative content publishing is another way to address high demand search queries and improve the chances your content will be picked up vs. a competitor.

Finally, you can directly give feedback to Google regarding the validity and accuracy of their results. Each knowledge panel renders a small feedback link which you can use to submit feedback for review by Google.

Additional Reading

https://ahrefs.com/blog/search-traffic-study/

https://ahrefs.com/blog/find-featured-snippets/

Build a Web App with Python, Flask and AWS Elastic Beanstalk

Flask is a popular framework for building lightweight server-side web applications with Python. As an antidote to the more complex and fully-featured siblings such as Django, Flask excels with a minimal footprint, intuitive MVC-style routing and view controls, and a host of thoughtful plugins for things like SQLAlchemy.

In this article we’ll review my experience building a single-page Flask app and deploying it to AWS Elastic Beanstalk (EB), Amazon’s single-click scale-out application server. AWS EB orchestrates everything from spinning up an EC2 instance to setting up load balancing to configuring alerts and monitoring, all from a single command.

If you wish to take a look at the source code you can find it here: https://github.com/Sassberto/MP-GPX/

The example application can be found here: http://gpx.ridgeline-analytics.com/

As with all good programming projects I had an itch to scratch.  In my spare time I enjoy rock climbing and mountaineering, and I use a site called MountainProject.com to identify, select and  research potential climbing routes.  The site has a handy feature which allows me to add routes to a todo list, where I can easily find them later.  This route data has all sorts of stuff, but most important is the latitude and longitude of the climb itself.

My todo list on MountainProject. Doesn’t do me much good if I’m not online…

I needed to get this location data off the web site and onto a GPS device, or smartphone GPS app, so I could use it offline when I’m in the field and out of cell reception.  
There’s no really good way to do this with the web site, so enter the Mountain Project Data API:  https://www.mountainproject.com/data.vvI figured I could fetch my todo list, get all the routes on the list and their GPS data, and create a GPX file that could uploaded to my GPS device and would work offline.

Example of the GPX file loaded into Google Earth – Red Rock Canyon, Las Vegas NV

Thankfully there is a Python library called gpxpy https://pypi.org/project/gpxpy/ which seemed to be the ticket.  This library would allow me to create a GPX file with tracks and waypoint data.  By mapping the API fields from MountainProject to the gpxpy object, I could send a GPX file to the end user’s device, which could now work offline.

The first step is to set up the development environment.  This is important to get right if you are going to use Elastic Beanstalk or want to package your app for automated deployment on a WSGI server.  Later we are going to look at the EB command line utility, but for now, set up your application something like this, with your flask app in the application.py file. 

Install Flask and gpxpy using pip, then use pip freeze > requirements.txt to hold the external dependencies list for EB.  You’ll also want to use git as the EB CLI allows you to deploy directly from a git repo, package to a zip, upload, and deploy all in one go.

Example of requirements.txt

Creating the basic Flask app shell using the excellent tutorial is enough to get started. Rigging routes to the controller and passing request variables is really handled very nicely. I figured I needed a form and a results page.  In my first iteration I just served the file on form submit, but that didn’t give the end user much feedback, so I switched to two views, a form view and a results view. 

application.py contains all the view logic and application routing.

The MountainProject.com API was pretty simple, it returns JSON which I passed mostly back as strings or lists.  It’s pretty easy to map this to gxpy as you see below.  I elected to send the XML as an attachment to the request vs. write it to a temp file, it just seemed cleaner with no temp files to delete.   I used very little of Bootstrap to implement some styling and the built-in javascript validation.

The main function that gets Lat / Long from the API and makes GPS waypoints.

Jinja2 templating is clean and and allows for nested templates and layouts.  I just used a single template with minimal show & hide UI logic.  It worked well with Flask’s message-flashing feature that allows for snappy UI responses.   You can also use the built-in development server for Flask, which will auto-restart when it detects a code change – very nice indeed.

Jinja2 template block for showing info and error messages.
The GPS Generator in action, showing flashed messages and dynamic content.

Finally it was time to deploy this thing on EB.   EB is essentially a series of scrips that manage a virtual environment.  These environments can put up a scale-out web server infrastructure in just a few minutes.  As you can imagine they are very sensitive to configuration so you’ll want to get familiar with finding the logs in the AWS console. I won’t  get into the details, but you can find comprehensive info here:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html

Just commit your code and run eb deploy – the rest is done for you.

Once up and running managing the EB instance is very simple, and you can configure monitoring and alerts.  Setting up DNS and SSL would be a logical next step and requires a bit more technical work.   If millions of people somehow wanted to download their todo lists as GPS files, this would be a fantastic set up for a cloud-based application that needs scalability.

AWS Cloudwatch metrics up and running automatically. You can add lots more.