Git Product home page Git Product logo

ads-account-structure-script's Introduction

Google Ads - Account structure script

Context

Search advertising has changed, in large part thanks to machine-learning. Over the years, Google has incorporated more and more machine-learning into products like Smart Bidding, DSA, RSA, Optimized Ad rotation, DDA, Ad extension selection, Semantic Keywords, etc.

Thanks to these advancements, granular account structures are no longer necessary. They segment traffic and limit learning data for some machine-learning based solutions, they require unnecessary upkeep and time commitment to manage, and their complexity can lead to operational mistakes. Furthermore, Smart Bidding opens the door for simpler structures by analyzing thousands of signals in real time to define optimal bids for each search query.

Adopting a simpler account structure (aka. Account Structure for Modern Search) leads to:

  • Larger volume of learning data at ad group level, crucial to improving performance of components such as RSA. In general, machine learning needs volume as well as variety to learn faster and deliver even better results.
  • Simpler management (up to 20% of time used to manage an account saved and repurposed on higher-value, strategic tasks)
  • Easier to identify insights, detect patterns and identify opportunities while lowering the margin of error as accounts are streamlined.

Purpose of the account structure script

In order to help identify your account structure improvement opportunities, this Google Ads script will generate a report in Google Sheets with the following KPI (see details below):

Landing pages analysis

  • KPI
    • # of unique landing pages
    • Ratio of standard ad groups per unique landing page
  • Rationale
    • These KPI highlight the level of granularity of the account at landing page level: the less granular it it, the larger the volume of learning data will be for the assets targeting each landing page
  • Recommendations
    • For starting ratios above 1 : 1 aim at lowering it 1 : 1 or slightly below by merging ad groups targeting the same landing page with the same business objective and using DSA
    • Ratios below 1 : 1 are normal and mean that some landing pages are exclusively covered by DSA ad groups

Ad groups analysis

  • KPI
    • # of ad groups - standard + DSA
    • % of investment on standard ad groups with a RSA at Ad Strength above "Good"
    • % of investment on DSA ad groups
    • % of standard ad groups >= 3k impressions/week (or the threshold of your choice)
    • Average impressions per standard ad group with < 3k impressions/week (or the threshold of your choice)
  • Rationale
    • These KPI highlight the readiness of ad groups for simpler account structure by ensuring that the potential of ad formats is maximized, and that standard ad groups get enough learning data from impressions
  • Recommendations
    • Leverage the full creative possibilities of RSA to ensure that a relevant ad can be displayed for each reason to visit the landing page
    • Use DSA to cover the long tail of landing pages
    • Ideally the % of investment on standard ad groups with a RSA at Ad Strength above "Good" + on DSA = 100%
    • Merge relevant ad groups to maximize the % of standard ad groups >= 3k impressions/week
    • Ensure semantic coverage is not limited to help average impressions per standard ad group < 3k impressions/week get closer to this value

Campaigns analysis

  • KPI
    • # of search campaigns
    • # of experiment search campaigns
    • % of investment on conversion-based smartbidding campaigns
    • Bidding strategies
    • % of search campaigns >= 10 conversions/week (or the threshold of your choice)
    • Average conversions on campaigns with < 10 conversions/week (or the threshold of your choice)
    • # of campaigns with IS lost due to budget (account level)
    • Impression Share lost due to budget (campaign level)
  • Rationale
    • These KPI highlight the readiness of campaigns for simpler account structure by ensuring they use the right smartbidding strategy, that they get enough learning data from conversions, and that they do not lose impression share due to limited budget
  • Recommendations
    • Increase average conversions by merging campaigns with similar business objective to increase traffic on creatives, generate more training data for algorithms, and have more insightful & less volatile reporting
    • Use conversion-based smartbidding strategies aligned with your business objectives
    • Ensure campaigns do not lose impression share due to limited budget

Keywords analysis

  • KPI
    • # of active keywords with Impressions > 0
    • % of active keywords with < 10 impressions
  • Rationale
    • These KPI highlight the level of granularity of keywords portfolios and the opportunity of making them lighter
  • Recommendations
    • Take advantage of broad match types to lighten keyword portfolio and make maintenance easier

Features

  • Reports can be created at different levels
    • For all accounts in a MCC
    • For a list of accounts in a MCC
    • For a specific account (this level of analysis adds campaign level reporting and a landing page report)
  • Choice of the period for the analysis
    • Default: previous week
    • Custom: period of your choice
  • KPI can be compared between two periods
  • Impressions and conversions thresholds can be modified
  • URL parameters are by default ignored for landing pages analysis, this setting can be switched

Generating the reports

  1. Create a new Google Sheet

  2. In Google Ads go to Tools & Settings → Bulk Actions → Scripts

  3. Add a new script

  4. Delete all the content in the text editor

  5. Paste the script into your account

  6. Change parameters according to the analysis you want to run:

    • SPREADSHEET_URL = ‘xyz’
    • (optional) PERIOD_BEGINNING = 'default'
      • To run the analysis on a period different than the previous week, replace default with the format 'YYYYMMDD' (eg. '20200131')
    • (optional) NUMBER_OF_DAYS = 7
      • To run the analysis on a period of a different length, change 7 to the desired number of days
    • (optional) PERIOD_COMPARISON_BEGINNING = 'disabled'
      • To compare 2 periods, replace 'disabled' with the start date of the second period with the format 'YYYYMMDD' (eg. '20190131')
    • (optional) ACCOUNT_LIST = ['disabled']
      • If the analysis should be done on a subset of accounts in the current MCC, replace ['disabled'] with the list of accounts (eg. ['xxx-xxx-xxxx','yyy-yyy-yyyy','zzz-zzz-zzzz'])
    • (optional) IMPRESSION_THRESHOLD = 'default'
      • To change the ad group impression threshold over the selected period used in analysis, change 'default' to the desired value (eg. 5000). The default value is 3000/week and is adjusted automatically to the period selected.
    • (optional) CONVERSION_THRESHOLD = 'default'
      • To change the campaign conversion threshold over the selected period used in analysis, change 'default' to the desired value (eg. 30). The default value is 10/week and is adjusted automatically to the period selected.
    • (optional) IGNORE_URL_PARAMETERS = true
      • URL parameters are by default ignored for landing pages analysis, this setting can be switched by replacing true with false
  7. Click on Run, give authorizations if prompted

  8. Your report is being built on the Google Sheet you provided, it may take up to 30 minutes

  9. If you are running the analysis for a MCC with more than 50 accounts, or a single account with more than 100 campaigns, see Instructions for large accounts

Instructions for large accounts

Due to Google Ads script timeout limitations, analysis on MCC with more than 50 accounts will require you to run the script again for each subsequent batch of 50 accounts.
When doing so, change the value of ACCOUNTS_ALREADY_ANALYZED to the number of accounts already analysed (eg. 50, 100, 150...). This indication will also be displayed in the report.

Similarly, for analysis on accounts with a large number of campaigns you will need to run the script again where the analysis was paused at the timeout (after 30 minutes).
When doing so change the value of CAMPAIGNS_ALREADY_ANALYZED to the number of campaigns already analysed (eg. 100, 200, 300...). This indication will also be displayed in the report.

Details of account structure KPIs in the reports

Landing pages analysis

  • # of unique landing pages
    • From ad groups in search campaigns with Impressions > 0
    • Unique landing page criteria detailed below
  • Ratio of standard ad groups per unique landing page
    • Number of standard ad groups with impressions > 0 in search campaigns

Ad groups analysis

  • # of ad groups (standard + DSA)
    • Number of ad groups with Impressions > 0 in search campaigns
  • % of investment on standard ad groups with a RSA at Ad Strength above "Good"
    • In search campaigns. Ad Strenght "Good" and "Excellent" are taken into account.
  • % of investment on DSA ad groups
    • In search campaigns
  • % of standard ad groups >= 3k impressions/week (or the threshold of your choice)
    • In search campaigns, over total number of standard ad groups with Impressions > 0
  • Average impressions per standard ad group with < 3k impressions/week (or the threshold of your choice)
    • Average number of impressions among the group of standard ad groups with impressions between 1 and (threshold - 1)

Campaigns analysis

  • # of search campaigns
    • with Impressions > 0
  • # of experiment search campaigns
    • Among search campaigns
  • % of investment on conversion-based smartbidding campaigns
    • % of investement on the following bidding strategies in search campaigns:
      • TARGET_CPA
      • TARGET_ROAS
      • MAXIMIZE_CONVERSIONS
      • MAXIMIZE_CONVERSION_VALUE
  • Bidding strategies
    • Name and % of investement on each bidding strategies in search campaigns
  • # of campaigns >= 10 conversions/week (or the threshold of your choice)
    • Among search campaigns
  • % of campaigns >= 10 conversions/week (or the threshold of your choice)
    • Among search campaigns with Impressions > 0
  • Average conversions on campaigns with < 10 conversions/week (or the threshold of your choice)
    • Average number of conversions among the group of search campaigns with conversions below the threshold
  • # of campaigns with IS lost due to budget (account level)
    • Number of search campaigns with impressions > 0 and impression share lost due to budget > 0%
  • Impression Share lost due to budget (campaign level)
    • Value displayed on campaign level reporting (when the script is executed on a single account)

Keywords analysis

  • # of active keywords
    • Total number of keywords with status “Enabled”
  • % of active keywords with < 10 impressions
    • Among keywords with status “Enabled”

ads-account-structure-script's People

Contributors

kingsleykelly avatar peterlafferty avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ads-account-structure-script's Issues

[ReferenceError: AdsManagerApp is not defined]

Expected Behavior

Actual Behavior

Tried several times to follow your guide but get above referens error.
Any idea on what it could be or of there is something simple that Im missing out on?

Steps to Reproduce the Problem

  1. Copy script
  2. Paste script
  3. Run script

Specifications

  • Version:
  • Platform:

Landing page error

I'm experiencing problems with the reporting of the landing pages in the spreadsheet.
What am I doing wrong?

Failed report

Expected Behavior

script running

Actual Behavior

Creates Accounts structure report tab with formatting and frozen row at row 8
Creates Landing Page tab, but not data

Failed report after 10 sec
Log:
24/11/2021 6:00:24 pm | Exception: You can't freeze all visible rows on the sheet.
at lpreport (Code:845:20)
at main (Code:309:7)
-- | --

Steps to Reproduce the Problem

  1. using default script and settings
  2. adding google sheet
  3. run the script

Specifications

Screen Shot 2021-11-24 at 6 07 08 pm
Screen Shot 2021-11-24 at 6 06 56 pm

  • Version: 7c40209
  • Platform: Google ads

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.