Connect with us


More Automated Intent Classification Using Deep Learning



My original plan was to cover this topic: “How to Build a Bot to Automate your Mindless Tasks using Python and BigQuery”. I made some slight course changes, but hopefully, the original intention remains the same!

The inspiration for this article comes from this tweet from JR Oakes. 🙂

As Uber released an updated version of Ludwig and Google also announced the ability to execute Tensorflow models in BigQuery, I thought the timing couldn’t be better.

In this article, we will revisit the intent classification problem I addressed before, but we will replace our original encoder for a state of the art one: BERT, which stands for Bidirectional Encoder Representations from Transformers.

This small change will help us improve the model accuracy from a 0.66 combined test accuracy to 0.89 while using the same dataset and no custom coding!

Automated Intent Classification Using Deep Learning (Part 2)

Here is our plan of action:

  • We will rebuild the intent classification model we built on part one, but we will leverage pre-training data using a BERT encoder.
  • We will test it again against the questions we pulled from Google Search Console.
  • We will upload our queries and intent predictions data to BigQuery.
  • We will connect BigQuery to Google Data Studio to group the questions by their intention and extract actionable insights we can use to prioritize content development efforts.
  • We will go over the new underlying concepts that help BERT perform significantly better than our previous model.

Setting up Google Colaboratory

As in part one, we will run Ludwig from within Google Colaboratory in order to use their free GPU runtime.

First, run this code to check the Tensorflow version installed.

import tensorflow as tf; print(tf.__version__)

Let’s make sure our notebook uses the right version expected by Ludwig and that it also supports the GPU runtime.

I get 1.14.0 which is great as Ludwig requires at least 1.14.0

Under the Runtime menu item, select Python 3 and GPU.

You can confirm you have a GPU by typing:

! nvidia-smi

At the time of this writing, you need to install some system libraries before installing the latest Ludwig (0.2). I got some errors that they later resolved.

!apt-get install libgmp-dev libmpfr-dev libmpc-dev

When the installation failed for me, I found the solution from this StackOverflow answer, which wasn’t even the accepted one!

!pip install ludwig

You should get:

Successfully installed gmpy-1.17 ludwig-0.2

Prepare the Dataset for Training

We are going to use the same question classification dataset that we used in the first article.

After you log in to Kaggle and download the dataset, you can use the code to load it to a dataframe in Colab.

Configuring the BERT Encoder

Instead of using the parallel CNN encoder that we used in the first part, we will use the BERT encoder that was recently added to Ludwig.

This encoder leverages pre-trained data that enables it to perform better than our previous encoder while requiring far less training data. I will explain how it works in simple terms at the end of this article.

Let’s first download a pretrained language model. We will download the files for the model BERT-Base, Uncased.

I tried the bigger models first, but hit some roadblocks due to their memory requirements and the limitations in Google Colab.


Unzip it with:


The output should look like this:

   creating: uncased_L-12_H-768_A-12/
  inflating: uncased_L-12_H-768_A-12/bert_model.ckpt.meta  
  inflating: uncased_L-12_H-768_A-12/  
  inflating: uncased_L-12_H-768_A-12/vocab.txt  
  inflating: uncased_L-12_H-768_A-12/bert_model.ckpt.index  
  inflating: uncased_L-12_H-768_A-12/bert_config.json

Now we can put together the model definition file.

Let’s compare it to the one we created in part one.

I made a number of changes. Let’s review them.

I essentially changed the encoder from parallel_cnn to bert and added extra parameters required by bert: config_path, checkpoint_path, word_tokenizer, word_vocab_file, padding_symbol, and unknown_symbol.

Most of the values come from the language model we downloaded.

I added a few more parameters that I figured out empirically: batch_size, learning_rate and word_sequence_length_limit.

The default values Ludwig uses for these parameters don’t work for the BERT encoder because they are way off compared to the pre-trained data. I found some working values in the BERT documentation.

The training process is the same as we’ve done previously. However, we need to install bert-tensorflow first.

!pip install bert-tensorflow
!ludwig experiment 

  --data_csv Question_Classification_Dataset.csv

  --model_definition_file model_definition.yaml

We beat our previous model performance after only two epochs.

Automated Intent Classification Using Deep Learning (Part 2)

The final improvement was 0.89 combined test accuracy after 10 epochs. Our previous model took 14 epochs to get to .66.

This is pretty remarkable considering we didn’t write any code. We only changed some settings.

It is incredible and exciting how fast deep learning research is improving and how accessible it is now.

Why BERT Performs So Well

There are two primary advantages from using BERT compared to traditional encoders:

  • The bidirectional word embeddings.
  • The language model leveraged through transfer learning.

Bidirectional Word Embeddings

When I explained word vectors and embeddings in part one, I was referring to the traditional approach (I used a GPS analogy of coordinates in an imaginary space).

Traditional word embedding approaches assign the equivalent of a GPS coordinate to each word.

Let’s review the different meanings of the word “Washington” to illustrate why this could be a problem in some scenarios.

  • George Washington (person)
  • Washington (State)
  • Washington D.C. (City)
  • George Washington Bridge (bridge)

The word “Washington” above represents completely different things and a system that assigns the same coordinates regardless of context, won’t be very precise.

If we are in Google’s NYC office and we want to visit “Washington”, we need to provide more context.

  • Are we planning to visit the George Washington memorial?
  • Do we plan to drive south to visit Washington, D.C.?
  • Are we planning a cross country trip to Washington State?

As you can see in the text, the surrounding words provide some context that can more clearly define what “Washington” might mean.

If you read from left to right, the word George, might indicate you are talking about the person, and if you read from right to left, the word D.C., might indicate you are referring to the city.

But, you need to read from left to right and from right to left to tell you actually want to visit the bridge.

BERT works by encoding different word embeddings for each word usage, and relies on the surrounding words to accomplish this. It reads the context words bidirectionally (from left to right and from right to left).

Back to our GPS analogy, imagine an NYC block with two Starbucks coffee shops in the same street. If you want to get to a specific one, it would be much easier to refer to it by the businesses that are before and/or after.

Transfer Learning

Transfer learning is probably one of the most important concepts in deep learning today. It makes many applications practical even when you have very small datasets to train on.

Traditionally, transfer learning was primarily used in computer vision tasks.

You typically have research groups from big companies (Google, Facebook, Stanford, etc.) train an image classification model on a large dataset like that from Imagenet.

This process would take days and generally be very expensive. But, once the training is done, the final part of the trained model is replaced, and retrained on new data to perform similar but new tasks.

This process is called fine tuning and works extremely well. Fine tuning can take hours or minutes depending on the size of the new data and is accessible to most companies.

Let’s get back to our GPS analogy to understand this.

Say you want to travel from New York City to Washington state and someone you know is going to Michigan.

Instead of renting a car to go all the way, you could hike that ride, get to Michigan, and then rent a car to drive from Michigan to Washington state, at a much lower cost and driving time.

BERT is one of the first models to successful apply transfer learning in NLP (Natural Language Processing). There are several pre-trained models that typically take days to train, but you can fine tune in hours or even minutes if you use Google Cloud TPUs.

Automating Intent Insights with BigQuery & Data Studio

Now that we have a trained model, we can test on new questions we can grab from Google Search Console using the report I created on part one.

We can run the same code as before to generate the predictions.

This time, I also want to export them to a CSV and import into BigQuery.

test_df.join(predictions)[["Query", "Clicks", "Impressions", "Category0_predictions", "Category2_predictions"]].to_csv("intent_predictions.csv")

First, log in to Google Cloud.

!gcloud auth login --no-launch-browser

Open the authorization window in a separate tab and copy the token back to Colab.

Create a bucket in Google Cloud Storage and copy the CSV file there. I named my bucket bert_intent_questions.

This command will upload our CSV file to our bucket.

!gsutil cp -r intent_predictions.csv gs://bert_intent_questions

You should also create a dataset in BigQuery to import the file. I named my dataset bert_intent_questions

!bq load --autodetect --source_format=CSV bert_intent_questions.intent_predictions gs://bert_intent_questions/intent_predictions.csv

After we have our predictions in BigQuery, we can connect it to Data Studio and create a super valuable report to helps us visualize which intentions have the greatest opportunity.

Automated Intent Classification Using Deep Learning (Part 2)

After I connected Data Studio to our BigQuery dataset, I created a new field: CTR by dividing impressions and clicks.

As we are grouping queries by their predicted intentions, we can find content opportunities where we have intentions with high search impressions and low number of clicks. Those are the lighter blue squares.

Automated Intent Classification Using Deep Learning (Part 2)

How the Learning Process Works

I want to cover this last foundational topic to expand the encoder/decoder idea I briefly covered in part one.

Let’s take a look at the charts below that help us visualize the training process.

Automated Intent Classification Using Deep Learning (Part 2)

But, what exactly is happening here? How it the machine learning model able to perform the tasks we are training on?

The first chart shows how the error/loss decreases which each training steps (blue line).

But, more importantly, the error also decreases when the model is tested on “unseen” data. Then, comes a point where no further improvements take place.

I like to think about this training process as removing noise/errors from the input by trial and error, until you are left with what is essential for the task at hand.

There is some random searching involved to learn what to remove and what to keep, but as the ideal output/behavior is known, the random search can be super selective and efficient.

Let’s say again that you want to drive from NYC to Washington and all the roads are covered with snow. The encoder, in this case, would play the role of a snowblower truck with the task of carving out a road for you.

It has the GPS coordinates of the destination and can use it to tell how far or close it is, but needs to figure out how to get there by intelligent trial and error. The decoder would be our car following the roads created by the snowblower for this trip.

If the snowblower moves too far south, it can tell it is going in the wrong direction because it is getting farther from the final GPS destination.

A Note on Overfitting

After the snowblower is done, it is tempting to just memorize all the turns required to get there, but that would make our trip inflexible in the case we need to take detours and have no roads carved out for that.

So, memorizing is not good and is called overfitting in deep learning terms. Ideally, the snowblower would carve out more than one way to get to our destination.

In other words, we need as generalized routes as possible.

We accomplish this by holding out data during the training process.

We use testing and validation datasets to keep our models as generic as possible.

A Note on Tensorflow for BigQuery

I tried to run our predictions directly from BigQuery, but hit a roadblock when I tried to import our trained model.

!bq query 

BigQuery complained about the size of the model exceeded their limit.

Waiting on bqjob_r594b9ea2b1b7fe62_0000016c34e8b072_1 ... (0s) Current status: DONE BigQuery error in query operation: Error processing job 'sturdy-now-248018:bqjob_r594b9ea2b1b7fe62_0000016c34e8b072_1': Error while reading data, error message: Total TensorFlow data size exceeds max allowed size; Total size is at least: 1319235047; Max allowed size is: 268435456

I reached out to their support and they offered some suggestions. I’m sharing them here in case someone finds the time to test them out.

Automated Intent Classification Using Deep Learning (Part 2)

Resources to Learn More

When I started taking deep learning classes, I didn’t see BERT or any of the latest state of the art neural network architectures.

However, the foundation I received, has helped me pick up new concepts and ideas fairly quickly. One of the articles that I found most useful to learn the new advances was this one: The Illustrated BERT, ELMo, and co. (How NLP Cracked Transfer Learning).

I also found this one very useful: Paper Dissected: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding” Explained and this other one from the same publication: Paper Dissected: “XLNet: Generalized Autoregressive Pretraining for Language Understanding” Explained.

BERT has recently been beaten by a new model called XLNet. I am hoping to cover it in a future article when it becomes available in Ludwig.

The Python momentum in the SEO community continues to grow. Here are some examples:

Paul Shapiro brought Python to the MozCon stage earlier this month. He shared the scripts he discussed during his talk.

I was pleasantly surprised when I shared a code snippet in Twitter and Tyler Reardon, a fellow SEO, quickly spotted a bug I missed because he created a similar code independently.

Michael Weber shared his awesome ranking predictor that uses a multi-layer perceptron classifier and Antoine Eripret shared a super valuable robot.txt change monitor!

I should also mention that JR contributed a very useful Python piece for that shows practical uses cases of the Google Natural Language API.

More Resources:

Image Credits

All screenshots taken by author, July 2019

Continue Reading
Click to comment

You must be logged in to post a comment Login

Leave a Reply


FTC smacks down anti-review ‘non-disparagement clauses’ in form contracts



There are numerous studies circulating that show how important reviews are to consumer purchase decision-making. To protect the integrity of online reviews Congress passed The Consumer Review Fairness Act (CRFA) in 2016. This was largely modeled on an earlier California law.

CRFA makes non-disparagement clauses illegal. The intention of CRFA was to “prohibit the use of certain clauses in form contracts that restrict the ability of a consumer to communicate regarding the goods or services offered in interstate commerce that were the subject of the contract, and for other purposes.”

These terms are typically called “non-disparagement” clauses and have been used periodically by professionals and corporations to pre-empt and prevent negative reviews. They often provide financial penalties or the right to sue for their violation. But they’re illegal.

Trying to get away with it anyway. Apparently quite a few businesses didn’t get the memo. Last week the FTC announced that it had settled administrative complaints with five firms using these illegal clauses in their customer contracts:

  • A Waldron HVAC
  • National Floors Direct
  • Shore to Please Vacations
  • Staffordshire Property Management

The FTC administrative complaints were originally announced in May and June. (The Yelp blog has some additional factual detail about the companies and circumstances.) It’s not clear if these contracts have just been in use for years (pre-dating the CRFA) or whether the companies got bad legal advice.

Must notify all their customers. Each of these firms must now notify all consumers who signed their agreements that the contractual provisions in question are not enforceable. There are other multi-year reporting and compliance requirements that the FTC orders impose as well.

In addition, Shore to Please Vacations apparently sued a vacation renter, who had written a negative review, in Florida civil court. It must now dismiss the private lawsuit for breach of contract.

Why we should care. Any marketer, brand or business owner contemplating any scheme to prevent or preempt negative reviews needs to stop thinking this way immediately. These efforts invariably backfire and cause more damage to the business’ reputation than anything contemplated by the non-disparagement clause.

Marketers need to follow review best practices and treat reviews and responding to them as just an ordinary part of doing business. It’s also important to remember that businesses that have some critical reviews ultimately have more credibility than those with only five star reviews.

About The Author

Greg Sterling is a Contributing Editor at Search Engine Land. He researches and writes about the connections between digital and offline commerce. He is also VP of Strategy and Insights for the Local Search Association. Follow him on Twitter or find him at Google+.

Continue Reading


7 Expert Tips to Boost Your PPC Performance Today



Over the last decade, the number of account and campaign parameters to consider has shot up almost 20 times.

How are PPC specialists expected to know which actions to choose for the best results?

And what exactly do you need to do to continually increase performance while staying ultra-competitive in the marketplace?

On August 14, I moderated a sponsored SEJ webinar presented by Adzooma’s Puneet Vaghela and Sal Mohammed.

They shared seven essential PPC optimization strategies that are proven to boost ROI, save time, and reduce spend.

Here’s a recap of the webinar presentation.

 Adzooma’s Puneet Vaghela and Sal Mohammed share seven essential PPC optimization strategies that are proven to boost ROI, save time, and reduce spend. From set up, budgeting and account structure, to the use of data, technology integrations and audience settings, this valuable webinar will cover it all.

So much has changed in the paid search landscape in the past few years. Today, it has become a complex ecosystem with:

With all of this to consider, it’s essential to determine what actions to take through all the clutter of managing a PPC account.

Here are seven areas to consider when optimizing your paid search campaigns if you want to bring the greatest returns.

1. Account & Campaign Settings

No one has an infinite marketing budget, therefore it’s important to find efficiencies wherever possible in your account.

There are three different settings in your account and campaign that you can easily change to boost PPC performance.


Location targeting

It’s important to use location targeting in your PPC campaigns to drive efficiencies and identify geographic areas with a higher propensity to convert.

It’s one of the best ways to actually reduce wastage in ad spend. Make sure to target your audience in the areas they’re searching.

If you don’t use location settings, you’ll be wasting budget showing ads to people who have no interest in your business.

Location settings also allow you to see in which areas you have the most traction. Therefore, you should concentrate budgets in these areas to maximize the effectiveness of your PPC spend.

Make sure you select the country you want to target when you set up your campaigns initially and then drill down and create campaigns for specific locations for the top-performing areas.


Device targeting

Ensuring you’re targeting the correct devices is also key to success.

Google has said that about 30–50% of searches on mobile have local intent.

If you’re a business or a high street store, you should be increasing bids on mobile targeting to reach people in the right place, at the right time.

People also interact on devices differently so use the data within your search engine to see which devices are driving the strongest KPI performance and modify bids accordingly.

Don’t worry about bidding too high, the data you gather will help inform you in your most profitable areas moving forward. That extra you spend in the beginning will just help you further down the line.

Ad Copy Rotation

Ad copy rotation

This is something that a lot of people just leave to Google to do for them.

But a lot of advertisers do like rotating ads evenly so they can optimize it themselves.

If the aim of your campaign is for branding, then this works. You can use tag lines from other media channels to support your messaging and then test it. Learn their ad copy to make sure you’re using the right one.

However, if you’re running a direct response campaign, then you should be trying to maximize the number of clicks or conversions coming to your site.

It would be a good idea to allow the system to actually optimize the ads for you based on the best click-through rate or conversion rate.

2. Automated Bid Management

Bid Management in the Engine

You should be using bid management in Bing or Google Ads to make your ads work as hard as possible for you.

Firstly, you need to analyze your data from the engine or analytics to see how many searches people take to convert with you. You need this to know which bidding works best.

You can then set up automated bidding in the engine based on the last-click conversion model if your conversion length is small.

If your conversion length is high, set it up based on a many-per-click conversion model so you can capture all the keywords required for someone to convert.

Bid Management Using Rules

You can also use automated rules to ensure your account is performing to the standards you expect using third-party bid management platforms, such as Adzooma.

When you’ve analyzed the data in your account, you’ll have identified how many impressions, clicks and conversions you need to drive profitability or hit your target KPI.

With this knowledge, you can set up automated rules to make changes to your account based on these criteria and help drive greater performance on your account while saving you time.

Bid management is generally a good strategy, particularly if you’re new and you don’t know which bids you should be putting in and how to manage them.

If you’re a large-scale advertiser and you’re inundated with different campaigns that you’re running, it is also another great thing you can use.

3. Data Integrations

Data integration is vital to any marketing team. There’s an easy way to integrate your analytics data with your search data in one platform.

Google Analytics, even if it’s the free version, is an important tool for marketers as it allows you to make more informed decisions on your PPC spend.

To link Google Ads and Google Analytics, you’ll need administrative access to Google Ads account and edit permission to a Google Analytics account.

Once you actually have the two platforms linked, you’ll be able to see a number of metrics you couldn’t before including:

  • How many of your clicks resulted in new visitors to your site.
  • How long people are spending on your site from PPC.
  • And, using goals in analytics, what actions people are actually taking on your site from PPC.

Using this data, you can see which keywords are working best for site engagement and optimize accordingly based on your KPIs.

If you’re running a branding campaign, you want more people to spend more time on your site and visit more pages if you’re running a direct response campaign, you want more people to interact with specific goals on your site and probably convert at the same time.

With an analytics integration, you can also start creating audiences based on people’s on-site behavior which is really important.

4. Audience Data

Paid search is based on keyword intent – targeting people based on what they are looking for at all times. It’s been like this since the start.

However, today’s climate is very busy with multiple channels, devices, locations, seasonality, increasing competition, and more data than ever been before.

So how do you sort through the clutter to make sure you’re targeting the people most likely to convert with you and thereby maximize the utilization of your marketing budget?

Why You Should Be Using RLSA

Remarketing lists for search ads (RLSAs) were introduced by Google in 2013 and have grown to become one of the most important strategies available to marketers.

Identifying where people are interacting with your site and gauging who are most likely to convert with you is key to increasing efficiency in your ad spend and improving your conversion rate and cost per acquisition or cost per lead.

In Google Ads and Bing Ads, you can create audiences based on which URLs people have visited on your website and then retarget them when they search for other relevant terms to either:

  • Ensure your ad is appearing in front of them (particularly good for generic keyword efficiency).
  • Or show people different messaging to entice them.

You can also use other data, like demographic data, to make your ads even more targeted. However, this is just one aspect of remarketing with audiences.

How to Create More Enhanced Lists for RLSA

Moving further along, you should also be integrating any CRM data with your search platforms to create customer match lists which are audience lists based on the email addresses within your database.

This allows you to target people you know have already interacted with you and creates similar audience lists to target people similar to people who have already engaged with you and should play a part in your CRM strategy.

Linking your analytics platform with Google Ads allows you to use other on-site metrics to create audience lists. Time on-site, bounce rate, goals, pages visited, etc. are all very important in creating audience lists.

This will let you retarget people, not only based on what pages they visited on your site, but also how long they spend. This means you have another engagement aspect you can layer into your audience strategy.

Why is this important?

Audiences allow you to narrow down your targeting ratio.

This means that rather than spending your budget guessing who might interact and convert with you, you can use this data to:

  • Make informed decisions on which groups of people have the highest propensity to convert.
  • Target them specifically – increasing the effectiveness of your media budget.

That’s really important because acquiring a customer can cost five times the amount of retaining a customer.

If you find someone who’s gone to your site and shown interest, then creating a strategy that can reengage or similarly find more people like that user is something you should be leveraging.

Demographic targeting is also key. It enables you to reach a specific audience based on age, gender, parental status, household income, and multiple other variables.

5. Generic Keyword Efficiency

With generic keyword being so expensive, it’s important to use them properly.

Generics are higher in the funnel, used more for research purposes. Conversion rates on generic terms tend to be very low, and far lower than brand terms.

It’s an ineffective way to drive business goals based on a last-click conversion model.

How to Use Generics Properly

You can use generics as a retargeting mechanism – targeting people in your audience lists when they search for generic terms are after visiting your site.

They will have already engaged with you and so they will be familiar with your brand. Thus, when they widen their search, keep your brand at the forefront of their minds and get them back to convert, either through:

  • A different messaging (i.e., put an offer into the ad copy).
  • Or by increasing your bids on your audiences so that you appear more prominently on generic terms at a time when people are more likely to convert.

This will allow you to concentrate your generic keyword budget to an audience with a higher propensity to engage which will drive higher click-through rates (and hopefully conversion rates), reduce impression wastage, and allow you to use your budget more effectively.

Using scripts can make the use of generics a lot easier. If you ensure your generic keywords are only live during certain moments or triggers, it increases their value to your business and makes the use of them more efficient.

One example is if you sell ice cream, use generic terms when it’s really hot to increase the likelihood of people purchasing your product rather than wasting money showing your ad when it’s cold.

How to use generics properly

To run a strategy like this you can either write a weather script in Google ads using an API connection from a weather information source or you can use a third-party platform that already has the API connection set up.

This will allow you to automate the process of activating ads for specific generic keywords based on the trigger you decide.

This strategy can be used with a multitude of triggers such as TV ads, programs, social posts, news articles, stock market fluctuations, pollution levels, sports, and even other events.

Basically, anything that you can get an API connection to, you can feed that back into Google Ads to trigger into a strategy like this.

6. Effective Account Structure

Your account structure forms the foundation of your entire account and how well it will performs.

A broad structure will lead to impression wastage.

A granular account structure may take longer to set up in the short run but will benefit you with more accurate data and bid management capabilities moving forward.

Ensure Your Campaigns Are Split by Products or Categories

Don’t lump random keywords together. This will allow you to write more relevant ad copy based on the keywords in your ad groups and campaigns.

Some people like to use their websites as a touchpoint on how to structure their account and that’s a good idea.

However, if it’s a particularly large website, it can get quite difficult to use so just make sure that you are splitting your products and categories into the keywords that they should be by a group.

If You’re Covering Your Main Brand Term, They Should Have Its Own Campaign

This will allow you to manage the daily budget for this keyword much more accurately than if it’s fighting for budget with other keywords.

The same here comes into effect for your highest performing terms as well, even if they’re generics.

Create Single Keyword Ad Groups (SKAGs), Where Possible

For your top-performing keywords, keep them in their own ad groups to:

  • Make the ad copy as accurate as possible for testing and learning.
  • Give you the ability to manage their daily budgets and bids separately so all your other keywords in your account.

Split Your Campaigns by Match Types

Using the following match types is recommended:

  • Exact match for traffic generation.
  • Broad match modifier to identify new keywords to add to your account.

Why avoid other match types?

  • Using broad match can cause impression wastage and your budget can get depleted quickly.
  • Broad match modified basically can cover all phrase match plus can harness a large net for harvesting new keywords.

This will allow you to manage your traffic drivers more effectively and allocate the correct budget levels to them and then use your remaining budget to invest in broad match modifier terms to harvest new keywords

By following these tips to building a strong foundation in your account, you’ll be able to initially identify your optimal bidding levels and you can then allow the bidding algorithms within the engine or third-party tool you’re using to optimize activity for more secure base.

Once you’re happy with your account structure, you can use numerous review tools to check how it’s performing and benchmark against that.

Using Adzooma’s free Google Ads Health Check tool can help you quickly spot 47 automatic areas on your account to see if it is set up the correct way.

7. Attribution

When most people think about attribution, they think about a complex user journey and having to use a data science team to translate what the numbers mean into actionable marketing ideas.

But attribution doesn’t have to be time-consuming or something only data scientists can do.

Using Google Ads, you can use data-driven attribution to report on your performance and see which touchpoints along the user journey are leading to the conversions on your site.

You can also use it to inform your bidding rules – which keywords to bid on – not based on the last-click model, but based on the effectiveness of each keyword in the journey.

This means that rather than just pausing a keyword because it didn’t result in a conversion, you can now ensure that:

  • You’re visible on keywords that help in driving conversions throughout the user journey.
  • You’re optimized towards the ones which have the greatest impact at the beginning and in the middle of the journey

Data-driven attribution is different from the other attribution models in that it uses your conversion data to calculate the actual contribution of each keyword across the conversion path.

Each data-driven model is specific to each advertiser.

There’s a caveat, however.

Data-driven attribution requires a certain amount of data to create a precise model of how your conversions should be attributed.

Because of this, not all advertisers will see an option for data-driven attribution in Google Ads.

As a general guideline, for this model to be available you must have at least 15,000 clicks on Google search and conversion action must have at least 600 conversions within 30 days.

If you don’t have this volume of data, you can use attribution modeling in Google Analytics to identify your keyword values through the funnel, analyze that manually, and then attribute it back to your activity.

7 Key Takeaways

  • Push some simple change to your account that will make a big difference.
  • Automate the way you manage bids and improve performance.
  • Integrate data to enhance your bidding strategies.
  • Know why audience data is so important and how to use it.
  • Make generic keywords work harder for you.
  • Boost performance quickly with simple account structure changes.
  • Deploy data-driven attribution that drives performance.

[Video Recap] Improve Your PPC Performance Starting Today with These 7 Expert Actions

Watch the video recap of the webinar presentation and Q&A session.

Or check out the SlideShare below.

Image Credits

All screenshots taken by author, August 2019

Continue Reading


Are your Google text ads getting truncated? Here’s what to consider



This week, Andrea Cruz, digital marketing manager at KoMarketing noticed text ad headlines and descriptions getting cut off and wondered if is new.

I looked back at some older screenshots of search results and didn’t see truncation happening very often. But now I’m easily able to replicate the kind of result Andrea saw, including in the first text ad position, as in the example below.

Truncated headlines and descriptions in expanded text ads aren’t new, but it could be that it’s happening more often lately with certain ad renderings, which frequently include no ad extensions. Is the pendulum swinging back to simpler ads?

Why does ad truncation happen?

One thing to keep in mind is that truncation is about pixels rather than a specific character count, and wider characters use more pixels. In 2016, when expanded text ads were introduced, Google said advertisers should consider limiting headline length to 33 characters to keep them from potentially being truncated. That’s still the suggested length in the help center, even since Google added the third headline option:

“In some situations, Google Ads needs to shorten your text, usually with an ellipsis (“…”). This could happen if your ad text frequently uses wider characters (like “m”) instead of narrower characters (like “i”), because your headline text could be wider than the space available for it on some browser sizes. With most Latin languages, you can avoid this effect by limiting your line’s overall character count to 33 characters total.”

Additionally, if the ad preview in Google Ads shows the full headline, Google says it will generally render completely.

For descriptions, Google doesn’t give specific guidelines, and the preview tool won’t show truncation. Again, pixels will matter. In several results I looked at, description truncation happened between 84 to 86 characters, but a description with 91 characters displayed in full on one line because it had a lot of narrow letters.

Is ad truncation happening more often?

It may appear that truncation is happening more often because of the way Google often displays text ads now. The text ads above the organic results often show with just one description line, particularly on desktop.

Consider this screenshot of a results page for the query “car loan” captured last year in July 2018:

A Google search result from 2018.

Now, compare that to a results page served today in which the ads in positions two to four include just one line of description copy (the last ad’s description is truncated) and no ad extensions below them:

In a result from today, only the first ad shows ad extensions. The other ads show just one line of description copy.

I see this shorter ad rendering regularly across various queries, particularly on desktop. And the lack of ad extensions is interesting. Ads at the bottom of the page on mobile and desktop tend to show more description copy as well as ad extensions than ads above the organic results.

Ad rendering changes are constant

Google is always experimenting with the way it displays ads, even within the same results page. In the mobile example below (from today), notice the Expedia ad in the second position has a description that gets truncated and no ad extensions showing with it.

After refreshing that search result page later in the day, Expedia’s ad, still in the second position, appears with a description followed by callout extensions and an app extension, while the Hotwire ad in position three shows with just a description.

We don’t have control over how Google chooses to display our ads from one search result to the next, and it will vary based on device, browser and other contextual signals. It also decides when and what ad extensions to show. But we do have some control over truncation. If you want to avoid having your titles and descriptions cut off, experiment with length.

Something more interesting to watch may be the frequency with which your ad extensions show. It’s interesting to often see simpler ad treatments above the organic results these days.

About The Author

Ginny Marvin is Third Door Media’s Editor-in-Chief, managing day-to-day editorial operations across all of our publications. Ginny writes about paid online marketing topics including paid search, paid social, display and retargeting for Search Engine Land, Marketing Land and MarTech Today. With more than 15 years of marketing experience, she has held both in-house and agency management positions. She can be found on Twitter as @ginnymarvin.

Continue Reading


Copyright © 2019 Plolu.