Connect with us

SEO

Major Changes to a Website: Why Are You Even Doing It?

Published

on

Main Article Image

Google’s John Mueller answered a question about how long it takes for Google to process moving from non-www version of a site to a www version of the site. Mueller answered the question but he also addressed the bigger issue of site changes and whether or not they are even necessary.

What’s Best Way to Change Site Without Affecting SEO?

The person asking the question wanted to know how to make a major site change without it impacting their top ranks.

The question:

“My website is on non-www which is ranked number one on Google. Both pages and posts …I want to switch from the non-www version to the WWW version.

What’s the best way to do it without affecting SEO ans is there any risk in… of changing when you do that?”

Google’s John Mueller answered:

“The best way to do this is to follow the normal site move guidelines that we have. And essentially everything is outlined there.

So with regards to tracking the URLs that you have previously to kind of the following through with the redirect and making sure that all of that is set up properly, I would follow  those things.

My feeling is that overall a move within the same domain where you’re just changing essentially a different subdomain is something that is fairly unproblematic and should happen essentially fairly smoothly.

And if you set up the redirects properly, if you’re not blocking things in any specific way then I would imagine that this is something that is processed within a week or so.

Even for, I don’t know, a medium-sized website it should be like a fairly straightforward move just from one subdomain to another.

Moving between domains is a little bit trickier.

Moving or kind of splitting or merging websites, that’s a lot trickier.

But this kind of move from one version to another version is usually totally unproblematic and it’s also something where if it were to take a little bit longer it doesn’t change anything for the user because they would click on the old link and just end up on the new page and it would all just work.

So, I think this is totally unproblematic and probably something that’s easily doable.”

Related: Site Migration Issues: 11 Potential Reasons Traffic Dropped

See also  YouTube Adds Real-Time Subscriber Counts in Channel Dashboards

Website Changes Should Make Things Better

John Mueller brought up an interesting point about making website changes. The point he makes is that any change that is made to a website should ideally help the site become better in some way.

That can mean that the site is easier for users to navigate and find content.

Or it could mean that the site has faster performance.

John Mueller continues his answer:

“The main thing I would think about here though is that this is always like a site move kind of situation where you have a lot of work that’s involved.

So I would kind of consider like what are you really trying to do by moving like this?

What is the problem that you are trying to fix?

Because it might be that you do all of this stuff essentially everything is the same in the end if you get it right.

But if everything is the same in the end why are you even doing it?

So that’s kind of the direction I would look at there.

I could imagine there might be situations where you have a CDN where you need to do that to have kind of separate host name.

Bu if there’s no strong technical reason to do it I would just keep it as-is.”

Major Website Changes Should Be Considered Improvements

John Mueller began his answer by answering the question directly. But then he did an interesting thing and pulled back from viewing the tree and took a look at the forest and began addressing the larger issue of successfully implementing large website changes.

See also  Google Update November 2019

The key point he made is to ask if there is a valid reason for making the change and if the answer is that it makes the site substantially better then that’s a great reason to proceed.

Citation:

Time it Takes for Google to Process Non-WWW to WWW Change

Watch John Mueller answer the question at the 37:48 minute mark

Searchenginejournal.com

SEO

19 Easy (But Effective) Digital Marketing Tips

Published

on

19 Easy (But Effective) Digital Marketing Tips


Looking for some simple yet effective digital marketing tips? You’re in the right place.

Get ready to implement the tips below, which will improve your business:

  1. Set SMART marketing objectives
  2. Track the right KPIs
  3. Design a simple, logical website structure
  4. Create a clear positioning statement
  5. Create a Google Business Profile
  6. Target low-competition topics
  7. Build a following on one social network
  8. Build a damn email list
  9. Target topics with search traffic potential
  10. Steal” your competitors’ keywords
  11. Create a versus page
  12. Make a statistics page
  13. Use HARO
  14. Capture featured snippets
  15. Rank videos on Google
  16. Run ads on less popular platforms
  17. Outsource boring tasks
  18. Double down on what’s working
  19. Be different

1. Set one to two SMART marketing objectives for the year

What is the first thing you do when you begin planning for a vacation? You decide where to go, aka the destination.

It’s the same for marketing. To head somewhere, you must first decide where you want to go. You can’t know if you’ve reached your destination if you don’t set one in the first place. 

That means knowing what marketing objectives you’re trying to achieve.

You can’t be vague too. “Increase sales by 30%” inspires no one. Instead, you should create objectives that fit the SMART criteria:

  • Specific – Clearly state the desirable outcome and explain who, what, when, how much, etc.
  • Measurable – Track progress with key performance indicators (KPIs).
  • Achievable – Set bold goals, but also be realistic; use the current growth as a benchmark.
  • Relevant – Does the objective align with your overall marketing and business strategy?
  • Timely – Set up a time frame for achieving the goal.

For example, if we were to create a marketing objective for our blog, it might be something like this:

Grow organic traffic from 300K to 700K by the end of 2022.

Recommended reading: Marketing Objectives: How to Set Them Right (With Examples)

2. Track the right marketing KPIs for your marketing objectives

Your GPS tells you if you’re going the right way when traveling. But what’s the GPS for your marketing?

Those are your marketing KPIs. After you’ve decided on your objectives (i.e., your destination), these KPIs tell you if you’re going in the right direction.

But not all KPIs are equal. You likely don’t care about how many kilometers you’ve traveled. You just want to know if you’re getting closer or farther away. Same goes for marketing. There are many KPIs you can track, but most are simply vanity metrics.

You only need to track a few to know if you’re going in the right direction. Read the article below to find out which KPIs are worth your time.

Recommended reading: 7 Marketing KPIs Actually Worth Tracking

3. Design a simple and logical website structure

People and search engines may struggle to find pages on a disorganized website. So it’s usually best to use a flat website structure where all pages are no more than a few clicks away from the homepage.

Respective flow charts of flat and deep site structures. One shows homepage dropping down to a few layers; the other shows homepage dropping down to many layers

If you’re launching a new website, plan your structure something like this:

Flow chart showing ideal way to organize website structure

Credit: Backlinko.

We recommend that most of your pages should be no more than four clicks from the homepage. If there are pages more than six clicks away, consider bringing them closer to your homepage to make it easier for visitors and search engines to find them.

Recommended reading: Website Structure: How to Build Your SEO Foundation

4. Create a clear positioning statement for your business

Even in tiny Singapore, there are hundreds of gyms and fitness centers. Why should someone choose your business over the others?

They won’t—unless you tell them why.

This is called positioning. And in your positioning statement, you must clearly explain what your product or service is, why it’s different, and why it matters to your target customers.

It is impossible to teach you how to create one in a blog post (it’d take a book!), so I highly recommend that you read April Dunford’s “Obviously Awesome”—a step-by-step guide to creating a positioning statement.

Here’s a quick Cliffs Note:

  • Understand who your best customers are
  • List your competitive alternatives
  • Figure out the attributes and features that make your product/service unique
  • Figure out what these attributes and features do for your customers
  • Find a target market that cares about these values

See also  H1 Headings For SEO – Why They Matter

5. Create a Google Business Profile

If you’re a local business serving local customers, you’ll need a Google Business Profile. Claiming this profile helps you rank better on relevant Google searches—both on web search and Google Maps.

Optimizing this is easy with Google My Business and takes only 30 minutes of your time. It’s a low-hanging fruit you should pick.

Follow the guide below to learn how to create an optimized profile.

Recommended reading: How to Optimize Google My Business in 30 Minutes

6. Target low-competition topics

Finance writer Morgan Housel writes:

The key is recognizing that the long run is just a collection of short runs, and capturing long-term growth means managing the short run effectively enough to ensure you can stick around for a long time.

Simply put, if you can’t survive now, you can’t exist in the long term. So even if you want to rank for the most valuable keywords for your business, that’ll take time. Meanwhile, start ranking for low-competition keywords.

These are keywords you can rank for without much effort. You usually won’t have to build many links or have high website authority to rank for them and get organic traffic for your website.

How do you find these keywords? Watch this video to learn how:

https://www.youtube.com/watch?v=s7hR-i6Go4c

Recommended reading: How to Find Low-Competition Keywords for SEO

7. Build a following on one social network

Should you start shimmying on TikTok or go old-school and stick with Instagram? Perhaps you should create multiple 🧵 on Twitter or write broetry on LinkedIn. Or maybe you should take a punt on that new, upcoming social platform.

Whatever it is, just choose one. Don’t join a platform just because it’s the latest, shiny tool.

The allure to be present on multiple social media platforms is huge. But don’t give in to that temptation. Doing well on each platform means creating content that fits in natively. That is a lot of time, effort, and resources.

It takes work, even if you’re repurposing content. Sure, Gary Vee may make it look easy, but that’s because he has a team behind him. If you’re a one-person operation, you can’t replicate his efforts overnight.

Which social network should you choose? Well, that goes all the way back to your marketing objective (tip #1). If your target audience is on Twitter and it moves you closer to your goal, then that’s the platform you want.

After you’ve built a strong following, expand to other social media platforms. For example, Instagram has been around since 2010, but we’ve only recently started our Instagram account.

8. Build a damn email list

Even though we recommend building a following on one platform, you should remember that you’ll never own that audience. You’re “borrowing,” which means you’re always at the mercy of the platform.

If it wants to limit your reach one day, it can. But email is different—you own the list. Nobody can limit your reach. So even though building an email list seems like digital marketing advice from 2005, it’s not bad advice.

Every business should have an email list.

The simplest way to build one is to offer potential subscribers something in exchange for joining the list. This can be anything: an eBook, a course, a discount, or more.

For us at Ahrefs, we have a simple “subscribe” opt-in:

Text field for people to enter email address

9. Target topics with search traffic potential

If you want to rank on Google, the topic you’re targeting should be one that people are searching for. That makes sense, right? Yet, most businesses begin blogging by creating an article and praying that it ranks.

Hope is not a strategy. We want to get intentional. We want our articles to rank. To do that, we need to target topics with search traffic potential.

How do you find such topics? Here’s how:

  1. Go to Ahrefs’ Keywords Explorer
  2. Enter a relevant topic
  3. Go to the Matching terms report
  4. Switch the tab to Questions
Matching terms report results for "basketball"

As you can see, there are over 197K topics you could potentially target. Eyeball the list and pick out topics that are relevant.

Recommended reading: Keyword Research: The Beginner’s Guide by Ahrefs

10. “Steal” your competitors’ keywords

What if you could figure out which keywords your competitors rank for so that you could replicate their strategy?

Good news: you can. Here’s how:

  1. Go to Ahrefs’ Site Explorer
  2. Enter a competitor’s domain
  3. Go to the Top pages report
Top pages report results

Here, all your competitor’s pages are ranked by the amount of organic traffic they receive, plus the keyword that sends each page the most traffic.

Look through the list and tackle the ones that are most relevant to your business.

Your customers want the biggest bang for their buck. So they’ll compare you and your competitors. Once again, rather than leave it to chance, you should take the initiative.

Create a versus page where you compare the pros and cons between your business and a competitor’s.

How do you know who your customers are comparing you with? Here’s how to find out:

  1. Go to Ahrefs’ Keywords Explorer
  2. Enter your brand name
  3. Go to the Matching terms report
  4. Under the Terms menu, choose “vs” (or some other term that signifies comparison)
Matching terms report results. Sidebar showing "vs" selected

Doing this for our own brand shows that people are comparing us with Moz, SEMRush, and Majestic.

At this point, most businesses will create separate comparison pages for each competitor. However, we decided to do something different and created a versus page that tackled all of them at once.

Excerpt of Ahrefs' "versus" page

One page or a few—the choice is yours.

12. Make a statistics page

Journalists often need to back up their arguments with data. However, they don’t always have access to this information. So they’ll look for data online, then mention and link to that source of data.

For example, in 2020, Ahrefs was mentioned in Bloomberg because of our top Google searches data.

Excerpt of Bloomberg article mentioning Ahrefs

But not everyone has access to unique data. So one way to get around this is to curate a list of statistics for your industry.

That’s what we did when we created our SEO statistics page. Since then, we’ve ranked #1 for the query “SEO statistics” and have accumulated ~2.4K links from ~1.1K unique websites.

SERP overview for "seo statistics"

Learn how we did it here:

https://www.youtube.com/watch?v=eTF6OBwidhc&list=PLvJ_dXFSpd2u_ABxIRO6RVK3ucKyzn96Y

Recommended reading: Link Building Case Study: How We Built Backlinks With a ‘Stats’ Page

Not only do journalists need data, but they also need expert insights. And Help a Reporter Out (HARO) exists to connect journalists to experts.

If you’re an expert in your industry, you can be that source of information too. Sign up, monitor the requests in your category, and respond with valuable information as soon as possible.

My colleague, Michal Pecánek, has tons of experience with HARO. Here are some tips from him:

  • Check the publication – Avoid those that aren’t authoritative.
  • Be picky – Only respond to requests where you can truly provide great information.
  • Respond as fast as possible – Many people are monitoring the same niche as you.
  • Get help – Don’t hesitate to bring colleagues on board if they’re more qualified to answer.
  • Stick to the script – Don’t deviate from the format the author is requesting.

Recommended reading: 9 Great Public Relations Tactics With Campaign Examples

14. Capture featured snippets

If you’ve searched for something in Google and seen this…

Ahrefs' featured snippet on Google SERP of "how to do seo"

… then you’ve seen a featured snippet.

Capturing one means leapfrogging all the other ranking websites and jumping into the first position. And you can do this without having to build links or rewrite your content.

The easiest way to begin is to leverage content you already own. Here’s how to do it:

  1. Go to Ahrefs’ Site Explorer
  2. Enter your own domain
  3. Go to the Organic keywords report
  4. Filter for featured snippets (where target doesn’t rank for) using the SERP features filter
  5. Filter for positions #2–10 using the Position filter
Organic keywords report results

You’ll get a list of low-hanging opportunities to steal featured snippets from your competitors.

Then, how do you capture these snippets?

We have a step-by-step guide that shows you how you can rework your content so that you stand the best chance of capturing the snippet. Read it below here.

Recommended reading: How to Optimize for Google’s Featured Snippets

15. Rank videos on Google

YouTube videos rank on YouTube. Duh. But did you know YouTube videos rank on Google too?

In fact, our YouTube channel got over 200K views from Google in the past year:

Table showing data on Ahrefs' Youtube channel

To do this, you’ll need to rank for topics that have both:

  1. Search traffic potential – People are searching for these topics on YouTube and Google.
  2. Video intent – People who prefer to watch a video instead of reading. 

Here’s how to find these topics:

  1. Go to Ahrefs’ Content Explorer
  2. Run this search: site:youtube.com inurl:watch title:topic
  3. Sort the results by Page traffic
Content Explorer search results

This should give you a list of relevant YouTube videos that currently get organic search traffic from Google. Eyeball the list for ones that are relevant to your business, then create a video that ranks:

https://www.youtube.com/watch?v=BObU_VCwnvY

Recommended reading: Video SEO: How to Rank YouTube Videos on Google

16. Run ads on less popular platforms

Everyone knows Facebook, Instagram, and Google Ads. Those are the go-tos when it comes to paid advertising. But don’t forget that YouTube, Twitter, Quora, and even TikTok have advertising platforms too. If your target audience is on these platforms and they fit your marketing objectives, then they’re worth considering.

For example, we regularly run ads on YouTube.

We also run ads on Quora:

Ahrefs' ads manager on Quora

17. Outsource boring tasks

There’s a common saying that you should never do the same thing twice. If you find yourself doing something over and over again—and you’re not enjoying it at all—then it’s a task you can outsource.

Some tasks can be easily completed with the right tool. For example, instead of “copy-pasting” drafts to WordPress, we simply upload them by using Wordable.

For other tasks, you may have to hire freelancers or even a full-time staff. Create standard operating procedures (SOPs), hire and train people using those documents, and refine your system.

Learn how to outsource your marketing tasks using the framework below (it’s for SEO but can be generalized across any marketing channels):

Recommended reading: How to Outsource SEO (Simple Framework)

18. Double down on what’s working

As you’re applying the tips from this post, keep a lookout for what’s working. Do the same for the existing channels and tactics you’ve been using.

Then, double down on them. Invest your resources. Make it generate more returns for you.

That’s what we did at Ahrefs. We started with the blog. And when it was working, we scaled it up by hiring more writers, creating SOPs, etc. And since we knew that content marketing was working for us, we invested in creating more content—this time on YouTube.

With an eight-figure annual recurring revenue (ARR), our results speak for themselves.

Pablo Picasso once said, “Good artists copy, great artists steal.”

Inspired by this quote, marketers started copying each other. If there was a strategy that worked, countless others would follow suit—sometimes without consideration for their own circumstances.

Sometimes, this idea worked. But most of the time, what happened was that the marketplace was glutted with imitations.

Marketing is about differentiation. That’s why you need a positioning strategy. That’s why you create a comparison page. You want to stand above the competition. But if you are the same as the rest, there’s no reason for others to choose you.

I think there’s nothing wrong with following best practices. But try to add your own twist. For example, look at our homepage and our versus page.

The tactics we used are not unique, but we’ve always tried to be different.

Final thoughts

I hope you’ve walked away from this post with a handful of actionable digital marketing tips you can test for your business.

Did I miss out on any cool tips? If you have any to share, let me know on Twitter.





Source link

Continue Reading

SEO

How To Drive Facebook Leads Via Phone Calls

Published

on

How To Drive Facebook Leads Via Phone Calls


By now, most advertisers are aware of the potential Facebook offers as a lead generation channel.

Whether you’re a mom-and-pop retail store or a massive multinational conglomerate, chances are that the largest social network on the planet has a product that can help you.

This platform can identify and activate hand-raisers who are interested in doing business with you.

And as the digital and privacy landscape has evolved, so have the lead generation offerings from Facebook.

Apple’s iOS 14 update in 2021 has made the traditional approach of sending traffic to your website to transact more difficult to track and attribute.

Lead generation forms can fill the void by allowing audiences to submit their contact information directly within the Facebook or Instagram platform.

However, these leads (if not properly qualified) can be of poor quality.

Messenger now offers lightweight chatbots and can capture the same type of leads you would through a form, but through Facebook and Instagram’s native conversational tools.

But there is one lead generation method that Facebook has been quietly improving over the past year – a method with the potential to supplement your existing lead generation strategy conveniently.

Phone calls.

Sure, driving phone calls may not be the most digitally sexy way to put would-be customers in contact with your business.

But, maximizing the impact of your lead generation efforts means giving your audience several options to contact you, phone included.

How To Set Up A Facebook Phone Call Lead Generation Campaign

Experienced Facebook marketers will remember that phone calls have been an option for a while.

However, before the recent addition of phone calls as an optimizable event within the lead generation objective, the only way to drive calls from FB ads was by using the Reach objective.

This was generally ineffective at driving inbound calls, as Reach-optimized campaigns did little more than displaying your ads for the lowest possible CPM.

Tracking was also non-existent.

But now, Calls are integrated into Facebook’s lead generation objective and are available alongside Forms and Chats, and the initial setup is very straightforward.

Step 1: Create A New Lead Generation Campaign In Ads Manager

Screenshot from Facebook, January 2022

Step 2: Select Phone As Your “Lead Method” Under The Ad Set Settings

How to Drive Facebook Leads Via Phone Calls | SEJScreenshot from Facebook, January 2022

Step 3: Create A New Ad And Enter The Phone Number You Wish To Route Incoming Calls To

How to Drive Facebook Leads Via Phone Calls | SEJScreenshot from Facebook, January 2022

How Phone Lead Generation Works

Setting up a phone lead generation campaign is as simple as the execution.

See also  Google Update November 2019

Facebook audiences will see your ad, and instead of the usual and customizable CTA button options, your ad will have a “Call Now” CTA.

Clicking on the ad or CTA button will generate a prompt on the user’s smartphone to confirm if they would like to call the number you entered in Step 3 of the setup process.

If they confirm, the call will go through. Easy.

Unlike previous iterations of Facebook click-to-call ads, where tracking was hard to come by, marketers will now be able to see how many people clicked confirmed they would like to initiate the outbound call.

Similar to lead generation forms submitted or messenger chats initiated, this is the event that Facebook’s algorithm will use to optimize the phone lead generation campaign.

How to Drive Facebook Leads Via Phone Calls | SEJScreenshot from Facebook, January 2022

In essence, it works similar to a Traffic objective, where Facebook is optimizing your campaign to landing page views – not just people who clicked on your ad, but people who took the extra step to confirm they wanted to call your business.

In theory, that extra confirmation step will reduce the number of accidental button clicks and ensure that the people who are calling the number are legitimate leads.

How Phone Lead Generation Performed For Us

Our agency had the opportunity to test the phone lead generation optimization in mid-2021 when it was relatively new.

The client was looking for ways to bolster their existing lead flow on Facebook, which previously consisted of lead generation forms and an option for users to visit their website to create accounts.

We found that the phone lead objective efficiently drove inbound calls. The average form lead CPL was around $100 when an inbound phone call was around $4.

See also  4 Ways SEO Improves Small Business

But before we started popping champagne corks, it turned out that there were a lot of incoming poor-quality calls.

  • Around 50% of the calls didn’t make it to the IVR (interactive phone response) menu.
  • Nearly 15% of the calls made it through and spoke with a sales representative.
  • But those who did speak with a representative qualified at a 2x higher rate compared to form leads.

In the end, the cost per net qualified lead was relatively on par with form leads, and the client decided to maintain a phone lead generation campaign on a limited basis.

How To Maximize The Potential Of Phone Lead Generation Campaigns

A phone lead generation campaign will make your phone ring.

So you’ll want to have the appropriate staff dedicated to answering inbound sales calls.

Have An Inbound Call Plan

For small businesses, resist the temptation to use your personal phone and instead have a dedicated, regularly-monitored line available.

Be prepared with an appropriate greeting and script, knowing that people calling this line are potential customers looking for more information.

If your company uses an automated phone menu, please note that you will likely see many inbound calls abandon once they hit it.

This could be a good or bad thing depending on your qualification process.

Too many poor-quality calls will tax your sales team, while your menu system might be eliminating otherwise quality leads because they get frustrated waiting.

Consider Call Tracking Software For Additional Insights

Facebook platform data will show you all of the KPIs and metrics that take place on the platform: impressions, clicks on your ad, call confirmations, etc.

But once they leave Facebook and start the call, that’s it.

Call tracking solutions like Invoca or CallRail can provide additional insights to give you more valuable data, like call duration, quality, and conversion rate.

These platforms also allow you to create additional phone numbers for specific internal purposes, so you don’t need to rely on existing numbers.

Retarget Smartly

If you are nervous about the volume of calls that a prospecting campaign could generate or aren’t seeing the quality if you’ve already tried it, consider using phone calls as a retargeting-only contact method.

See also  Google to Discontinue Classic Version of YouTube on Desktop

Start with uploading a list of previous leads that have not been contacted, with an offer to call for more information.

Instead of using a form or a chat, see if this audience is more inclined to convert via phone call.

You can also use phone calls as an opportunity to upsell existing customers who may be eligible for incentives.

Also, don’t be afraid to delve into the demographic data and tailor phone lead generation campaigns to audience segments who are not converting via more digital methods.

It’s all about giving your customers a variety of ways to get in contact with you.

Use Lifetime Budgets To Daypart Campaigns

Chances are, you don’t want your phone to be ringing at all hours of the night.

Since your team is likely only available to answer calls during specific business hours, you’re going to want to make sure your ads don’t show when you don’t have people available.

Unless you want to manually pause and unpause your phone lead generation campaign every day, you should daypart it.

To do this, you’ll need to select Lifetime budgets, either on the campaign level if you’re using campaign budget optimization…

How to Drive Facebook Leads Via Phone Calls | SEJScreenshot from Facebook, January 2022

OR on the ad set level if you’re not.

How to Drive Facebook Leads Via Phone Calls | SEJScreenshot from Facebook, January 2022

Selecting Run ads on a schedule will give your ad sets the ability to selectively run when you want them to, instead of all hours.

How to Drive Facebook Leads Via Phone Calls | SEJScreenshot from Facebook, January 2022

Advertisers also can run ads during times specific to the viewer’s time zone or the default time zone for the ad account.

Conclusion

Driving phone calls to your business via Facebook is a viable tactic for advertisers thanks to some recent updates to Facebook lead generation campaigns.

Making the most of phone leads will require pre-planning and a solid process that ensures inbound leads are routed quickly to the right people.

However, once these processes are worked out, the result could be a supplemental source of high-intent leads that convert better than more traditional tactics.

As is the case with just about every facet of digital marketing, it’s worth a test.

More resources: 


Featured Image: sergey causelove/Shutterstock





Source link

Continue Reading

SEO

Visualizing Google Core Update Winners & Losers With Python

Published

on

Visualizing Google Core Update Winners & Losers With Python


For SEO experts, Google’s core updates are a way of life. They will happen at least once – if not multiple times – a year.

Naturally, there will be winners and losers.

So while Google doesn’t disclose most of the ranking factors behind the algorithm updates, there are things we can do to get a greater understanding of what’s going on, in terms of:

  • Which site content is affected.
  • Sites operating in your search space.
  • Result types.

The limit is your imagination, your questions (based on your SEO knowledge), and of course, your data.

This code will cover aggregations at the search engine results page (SERP) level (inter-site category comparison), and the same principles can be applied to other views of the core update such as result types (think snippets and other views mentioned above).

Using Python To Compare SERPs

The overall principle is to compare the SERPs before and after the core update, which will give us some clues as to what’s going on.

We’ll start by importing our Python libraries:

import re
import time
import random
import pandas as pd
import numpy as np
import datetime
from datetime import timedelta
from plotnine import *
import matplotlib.pyplot as plt
from pandas.api.types import is_string_dtype
from pandas.api.types import is_numeric_dtype
import uritools  
pd.set_option('display.max_colwidth', None)
%matplotlib inline

Defining some variables, we’re going to be focusing on ON24.com as they lost out to the core update.

root_domain = 'on24.com'
hostdomain = 'www.on24.com'
hostname="on24"
full_domain = 'https://www.on24.com'
site_name="ON24"

Reading in the data, we’re using an export from GetSTAT which has a useful report that allows you to compare SERPs for your keywords before and after.

This SERPs report is available from other rank tracking providers like SEO Monitor and Advanced Web Ranking – no preferences or endorsements on my side!

getstat_ba_urls = pd.read_csv('data/webinars_top_20.csv', encoding = 'UTF-16', sep = 't')
getstat_raw.head()
Screenshot by author, January 2022
getstat_ba_urls = getstat_raw

Construct the URLs by joining the protocol and URL string to get the full ranking URL for both before the update and after.

getstat_ba_urls['before_url'] = getstat_ba_urls['Protocol for Nov 19, 2020'] + '://' + getstat_ba_urls['Ranking URL on Nov 19, 2020']
getstat_ba_urls['after_url'] = getstat_ba_urls['Protocol for Dec 17, 2020'] + '://' + getstat_ba_urls['Ranking URL on Dec 17, 2020']
getstat_ba_urls['before_url'] = np.where(getstat_ba_urls['before_url'].isnull(), '', getstat_ba_urls['before_url'])
getstat_ba_urls['after_url'] = np.where(getstat_ba_urls['after_url'].isnull(), '', getstat_ba_urls['after_url'])


To get the domains of the ranking URLs, we create a copy of the URL in a new column, remove the subdomains using an if statement embedded in a list comprehension:

getstat_ba_urls['before_site'] = [uritools.urisplit(x).authority if uritools.isuri(x) else x for x in getstat_ba_urls['before_url']]
stop_sites = ['hub.', 'blog.', 'www.', 'impact.', 'harvard.', 'its.', 'is.', 'support.']
getstat_ba_urls['before_site'] = getstat_ba_urls['before_site'].str.replace('|'.join(stop_sites), '')

The list comprehension is repeated to extract the domains post update.

getstat_ba_urls['after_site'] = [uritools.urisplit(x).authority if uritools.isuri(x) else x for x in getstat_ba_urls['after_url']]
getstat_ba_urls['after_site'] = getstat_ba_urls['after_site'].str.replace('|'.join(stop_sites), '')
getstat_ba_urls.columns = [x.lower() for x in getstat_ba_urls.columns]
getstat_ba_urls = getstat_ba_urls.rename(columns = {'global monthly search volume': 'search_volume'
                                                   })
getstat_ba_urls
Before and after URLsScreenshot by author, January 2022

Dedupe Multiple Ranking URLs

The next step is to remove the multiple ranking URLs by the same domain per keyword SERP. We’ll split the data into two sets, before and after.

See also  Relationship Building: How to Earn Trust & High-Quality Links

Then we’ll group by keyword and perform the deduplication:

getstat_bef_unique = getstat_ba_urls[['keyword', 'market', 'location', 'device', 'search_volume', 'rank',
       'result types for nov 19, 2020', 'protocol for nov 19, 2020',
       'ranking url on nov 19, 2020', 'before_url', 'before_site']]
getstat_bef_unique = getstat_bef_unique.sort_values('rank').groupby(['before_site', 'device', 'keyword']).first()
getstat_bef_unique = getstat_bef_unique.reset_index()
getstat_bef_unique = getstat_bef_unique[getstat_bef_unique['before_site'] != '']
getstat_bef_unique = getstat_bef_unique.sort_values(['keyword', 'device', 'rank'])
getstat_bef_unique = getstat_bef_unique.rename(columns = {'rank': 'before_rank', 
                                                          'result types for nov 19, 2020': 'before_snippets'})
getstat_bef_unique = getstat_bef_unique[['keyword', 'market', 'device', 'before_snippets', 'search_volume', 
                                         'before_url', 'before_site', 'before_rank'
                                        ]]
getstat_bef_unique
keyword trackingScreenshot by author, January 2022

The procedure is repeated for the after data set.

getstat_aft_unique = getstat_ba_urls[['keyword', 'market', 'location', 'device', 'search_volume', 'rank',
       'result types for dec 17, 2020', 'protocol for dec 17, 2020',
       'ranking url on dec 17, 2020', 'after_url', 'after_site']]
getstat_aft_unique = getstat_aft_unique.sort_values('rank').groupby(['after_site', 'device', 'keyword']).first()
getstat_aft_unique = getstat_aft_unique.reset_index()
getstat_aft_unique = getstat_aft_unique[getstat_aft_unique['after_site'] != '']
getstat_aft_unique = getstat_aft_unique.sort_values(['keyword', 'device', 'rank'])
getstat_aft_unique = getstat_aft_unique.rename(columns = {'rank': 'after_rank', 
                                                          'result types for dec 17, 2020': 'after_snippets'})
getstat_aft_unique = getstat_aft_unique[['keyword', 'market', 'device', 'after_snippets', 'search_volume', 
                                         'after_url', 'after_site', 'after_rank'
                                        ]]

Segment The SERP Sites

When it comes to core updates, most of the answers tend to be in the SERPs. This is where we can see what sites are being rewarded and others that lose out.

With the datasets deduped and separated, we’ll work out the common competitors so we can start segmenting them manually which will help us visualize the impact of the update.

serps_before = getstat_bef_unique
serps_after = getstat_aft_unique
serps_before_after = serps_before_after.merge(serps_after, left_on = ['keyword', 'before_site', 'device', 'market', 'search_volume'], 
                                                right_on = ['keyword', 'after_site', 'device', 'market', 'search_volume'], how = 'left')

Cleaning the rank columns of null (NAN Not a Number) values using the np.where() function which is the Panda’s equivalent of Excel’s if formula.

serps_before_after['before_rank'] = np.where(serps_before_after['before_rank'].isnull(), 100, serps_before_after['before_rank'])
serps_before_after['after_rank'] = np.where(serps_before_after['after_rank'].isnull(), 100, serps_before_after['after_rank'])


Some calculated metrics to show the rank difference before vs after, and whether the URL changed.

serps_before_after['rank_diff'] = serps_before_after['before_rank'] - serps_before_after['after_rank']
serps_before_after['url_change'] = np.where(serps_before_after['before_url'] == serps_before_after['after_url'], 0, 1)
serps_before_after['project'] = site_name
serps_before_after['reach'] = 1
serps_before_after
rank difference before vs afterScreenshot by author, January 2022

Aggregate The Winning Sites

With the data cleaned, we can now aggregate to see which sites are the most dominant.

See also  Can email marketing help companies increase sales?

To do this, we define the function which calculates weighted average rank by search volume.

Not all keywords are as important which helps make the analysis more meaningful if you care about the keywords that get the most searches.

def wavg_rank(x):
    names = {'wavg_rank': (x['before_rank'] * (x['search_volume'] + 0.1)).sum()/(x['search_volume'] + 0.1).sum()}
    return pd.Series(names, index=['wavg_rank']).round(1)

rank_df = serps_before_after.groupby('before_site').apply(wavg_rank).reset_index()
reach_df = serps_before_after.groupby('before_site').agg({'reach': 'sum'}).sort_values('reach', ascending = False).reset_index()

commonstats_full_df = rank_df.merge(reach_df, on = 'before_site', how = 'left').sort_values('reach', ascending = False)
commonstats_df = commonstats_full_df.sort_values('reach', ascending = False).reset_index()
commonstats_df.head()
calculate weighted average rank by search volumeScreenshot by author, January 2022

While the weighted average rank is important, so is the reach as that tells us the breadth of the site’s presence in Google i.e. the number of keywords.

The reach also helps us prioritize the sites we want to include in our segmentation.

The segmentation works by using the np.select function which is like a mega nested Excel if formula.

First, we create a list of our conditions.

domain_conds = [
    commonstats_df['before_site'].isin(['google.com', 'medium.com', 'forbes.com', 'en.m.wikipedia.org',
                                        'hbr.org', 'en.wikipedia.org', 'smartinsights.com', 'mckinsey.com',
                                        'techradar.com','searchenginejournal.com', 
                                        'cmswire.com']),
    commonstats_df['before_site'].isin(['on24.com', 'gotomeeting.com', 'marketo.com', 'zoom.us', 'livestorm.co',
                                        'hubspot.com', 'drift.com', 'salesforce.com', 'clickmeeting.com',
                                        'qualtrics.com', 'workcast.com', 'livewebinar.com', 'getresponse.com', 
                                        'superoffice.com', 'myownconference.com', 'info.workcast.com']),
    commonstats_df['before_site'].isin([ 'neilpatel.com', 'ventureharbour.com', 'wordstream.com', 
                                        'business.tutsplus.com', 'convinceandconvert.com']),
    commonstats_df['before_site'].isin(['trustradius.com', 'g2.com', 'capterra.com', 'softwareadvice.com', 
                                        'learn.g2.com']),
    commonstats_df['before_site'].isin(['youtube.com', 'm.youtube.com', 'facebook.com', 'linkedin.com', 
                                        'business.linkedin.com', 
                                       ])
]

 

Then we create a list of the values we want to assign for each condition.

segment_values = ['publisher', 'martech', 'consulting', 'reviews', 'social_media']

 

Then create a new column and use np.select to assign values to it using our lists as arguments.

commonstats_df['segment'] = np.select(domain_conds, segment_values, default="other")
commonstats_df = commonstats_df[['before_site', 'segment', 'reach', 'wavg_rank']]
commonstats_df
new column to use np.selectScreenshot by author, January 2022

The domains are now segmented which means we can start the fun of aggregating to see which site types benefitted and deteriorated from the update.

# SERPs Before and After Rank
serps_stats = commonstats_df[['before_site', 'segment']]
serps_segments = commonstats_df.segment.to_list()


We’re joining the unique before SERPs data with the SERP segments table created immediately above to segment the ranking URLs using the merge function.

The merge function that uses the ‘eft’ parameter is equivalent to the Excel vlookup or index match function.

serps_before_segmented = getstat_bef_unique.merge(serps_stats, on = 'before_site', how = 'left')
serps_before_segmented = serps_before_segmented[~serps_before_segmented.segment.isnull()]
serps_before_segmented = serps_before_segmented[['keyword', 'segment', 'device', 'search_volume', 'before_snippets', 
                             'before_rank', 'before_url', 'before_site']]
serps_before_segmented['count'] = 1
serps_queries = serps_before_segmented['keyword'].to_list()
serps_queries = list(set(serps_queries))
serps_before_segmented
joining the unique before SERPs data with the SERP segments tableScreenshot by author, January 2022

Aggregating the before SERPs:

def wavg_rank_before(x):
    names = {'wavg_rank_before': (x['before_rank'] * x['search_volume']).sum()/(x['search_volume']).sum()}
    return pd.Series(names, index=['wavg_rank_before']).round(1)

serps_before_agg = serps_before_segmented
serps_before_wavg = serps_before_agg.groupby(['segment', 'device']).apply(wavg_rank_before).reset_index()
serps_before_sum = serps_before_agg.groupby(['segment', 'device']).agg({'count': 'sum'}).reset_index()
serps_before_stats = serps_before_wavg.merge(serps_before_sum, on = ['segment', 'device'], how = 'left')
serps_before_stats = serps_before_stats.rename(columns = {'count': 'before_n'})
serps_before_stats
Aggregating the before SERPs.Screenshot by author, January 2022

Repeat procedure for the after SERPs.

# SERPs  After Rank
aft_serps_segments = commonstats_df[['before_site', 'segment']]
aft_serps_segments = aft_serps_segments.rename(columns = {'before_site': 'after_site'})
serps_after_segmented = getstat_aft_unique.merge(aft_serps_segments, on = 'after_site', how = 'left')
serps_after_segmented = serps_after_segmented[~serps_after_segmented.segment.isnull()]
serps_after_segmented = serps_after_segmented[['keyword', 'segment', 'device', 'search_volume', 'after_snippets', 
                             'after_rank', 'after_url', 'after_site']]
serps_after_segmented['count'] = 1
serps_queries = serps_after_segmented['keyword'].to_list()
serps_queries = list(set(serps_queries))
def wavg_rank_after(x):
    names = {'wavg_rank_after': (x['after_rank'] * x['search_volume']).sum()/(x['search_volume']).sum()}
    return pd.Series(names, index=['wavg_rank_after']).round(1)
serps_after_agg = serps_after_segmented
serps_after_wavg = serps_after_agg.groupby(['segment', 'device']).apply(wavg_rank_after).reset_index()
serps_after_sum = serps_after_agg.groupby(['segment', 'device']).agg({'count': 'sum'}).reset_index()
serps_after_stats = serps_after_wavg.merge(serps_after_sum, on = ['segment', 'device'], how = 'left')
serps_after_stats = serps_after_stats.rename(columns = {'count': 'after_n'})
serps_after_stats
Repeat procedure for the after SERPsScreenshot by author, January 2022

With both SERPs summarised, we can join them and start making comparisons.

serps_compare_stats = serps_before_stats.merge(serps_after_stats, on = ['device', 'segment'], how = 'left')
serps_compare_stats['wavg_rank_delta'] = serps_compare_stats['wavg_rank_after'] - serps_compare_stats['wavg_rank_before']
serps_compare_stats['sites_delta'] = serps_compare_stats['after_n'] - serps_compare_stats['before_n']
serps_compare_stats
Comparing before and after rank by keywordScreenshot by author, January 2022

Although we can see that publisher sites seemed to gain the most by virtue of more keywords ranked for, a picture would most certainly tell a 1000 more words in a PowerPoint deck.

See also  Facebook Adding Context Labels to Pages Seen in News Feeds

We’ll endeavor to do this by reshaping the data into a long format that the Python graphics package ‘plotnine’ favors.

serps_compare_viz = serps_compare_stats
serps_rank_viz = serps_compare_viz[['device', 'segment', 'wavg_rank_before', 'wavg_rank_after']].reset_index()
serps_rank_viz = serps_rank_viz.rename(columns = {'wavg_rank_before': 'before', 'wavg_rank_after': 'after', })
serps_rank_viz = pd.melt(serps_rank_viz, id_vars=['device', 'segment'], value_vars=['before', 'after'],
                     var_name="phase", value_name="rank")
serps_rank_viz
serps_ba_plt = (
    ggplot(serps_rank_viz, aes(x = 'segment', y = 'rank', colour="phase",
                             fill="phase")) + 
    geom_bar(stat="identity", alpha = 0.8, position = 'dodge') +
    labs(y = 'Google Rank', x = 'phase') + 
    scale_y_reverse() + 
    theme(legend_position = 'right', axis_text_x=element_text(rotation=90, hjust=1)) + 
    facet_wrap('device')
)
serps_ba_plt
Google RankScreenshot by author, January 2022

And we have our first visualization, which shows us how most site types gained in ranking which is only half of the story.

Let’s also look at the number of entries into the top 20.

Desktop vs. smartphoneScreenshot by author, January 2022

Ignoring the ‘Other’ segment, we can see Martech and Publishers were the main winners expanding their keyword reach.

Summary

It took a bit of code just to create a single chart with all the cleaning and aggregating.

However, the principles can be applied to achieve extended winner-loser views such as:

  • Domain level.
  • Internal site content.
  • Result Types.
  • Cannibalised results.
  • Ranking URL Content types (blogs, offer pages etc).

Most SERP reports will have the data to perform the above extended views.

While it might not explicitly reveal the key ranking factor, the views can tell you a lot about what is going on, help you explain the core update to your colleagues, and generate hypotheses to test if you’re one of the less lucky ones looking to recover.

More resources:  


Featured Image: Pixels Hunter/Shutterstock





Source link

Continue Reading

DON'T MISS ANY IMPORTANT NEWS!
Subscribe To our Newsletter
We promise not to spam you. Unsubscribe at any time.
Invalid email address

Trending