SlideShare a Scribd company logo
1 of 28
Download to read offline
AdWords API Workshops 2013


Account Performance &
Optimization
Finding the needle in your haystack




                             Google Confidential and Proprietary
Overview
1. How to Optimize
    ○   The Optimization Cycle

2. Developing a solid reporting backend
    ○   Reporting Workflow
    ○   Strategies for scaling, processing and storage
    ○   Introduction to sample applications

3. Keyword Optimizations
    ○   What are TIS and TES
    ○   Discovering good ideas with TIS and TES
    ○   Automated keyword optimizations strategy

4. Discovering optimization opportunities with Kratu
    ○   Introduction to Kratu
    ○   AdWords Optimization Report in Kratu
    ○   Kratu backend example



                                                         Google Confidential and Proprietary
How to Optimize?




      Google Confidential and Proprietary
Measure                Profile
      Optimization Cycle




       Optimize

                            Google Confidential and Proprietary
Measure                       Profile
     Performance data
     Structural data
             AdHoc
      AWQL             Services
             Reports




       Optimize

                                   Google Confidential and Proprietary
Measure                     Profile
     Kratu
     Custom (eg. Epsilon)

     Predictive Analysis




       Optimize

                                 Google Confidential and Proprietary
Measure               Profile
     Automatic
     Manual
     Semi Automatic



       Optimize

                           Google Confidential and Proprietary
Developing a solid reporting backend

                            Google Confidential and Proprietary
Reporting Workflow                      MCC Info




                                        Managed
     List<ManagedCustomer>              Customer
                                         Service




Report Definition

  ReportType

                                                    Report                  Data Storage
  DateRange         Report Downloader              Processor                    MySql
                                                                               MongoDB
                                                                                  ...
     Fields
                         n-Threads



                                                               Google Confidential and Proprietary
Report                 Data Storage
 Report Downloader              Processor                  MySql
                                                          MongoDB
                                                             ...


      n-Threads

                        Process local temp files
                                                   Keys must guarantee
Based on                Parses rows using a        Uniqueness per
MultipleClient          CSVReader                  ReportRow
ReportDownloader                                   (Date/Day, Segments)
example                 Write calls to Storage
                        must be in batches         Rows Updates are
Each Thread runs a                                 frequent
ReportDownloder with:   Batch size depends on
                        technology/memory          Create indexes for:
 ●   AdWordsSession
 ●   ClientCustomerId   Shard data based on         ●    AccountId
 ●   ReportDefinition   account, subMCCs, dates     ●    Date/Day
 ●   CSV & GZip         or common attributes        ●    CampaignId
                                                    ●    Segments...



                                                        Google Confidential and Proprietary
Implementing a MySql ReportProcessor
connection.setAutoCommit( false);
statement.execute(" SET UNIQUE_CHECKS=0; ALTER TABLE ... DISABLE KEYS;");
for (File file : localFiles) {
  preparedStatement = "INSERT INTO .. (.) VALUES (.) ON DUPLICATE KEY UPDATE
(.)";

    CSVReader csvReader = new CSVReader(new InputStreamReader (new FileInputStream
(
          file.getAbsolutePath() + ".gunzip"), " UTF-8"), ',', '"', 1);

    reportRows = new ModifiedCsvToBean <Report>(). parseReport(mapping, csvReader);

  for (Report reportItem : reportRows) {
     addInsertToBatch(reportItem, preparedStatement);
    // Executing the Batch every 500 inserts to reduce memory usage
    if (batchSize++ >= 500) {
       preparedStatement.executeBatch();
       connection.commit();
       batchSize = 0;
    }
  }...
}...
statement.execute(" SET UNIQUE_CHECKS=1; ALTER TABLE ... ENABLE KEYS;");
                                                               Google Confidential and Proprietary
Implementing a MongoDB ReportProcessor

for (File file : localFiles) {

    CSVReader csvReader = new CSVReader(new InputStreamReader(
          new FileInputStream(file),"UTF-8"), ',', '"', 1);

    List<Report> reportObjectList =
      ModifiedCsvToBean<Report>().parseReport(mapping, csvReader);

    csvReader.close();


    // Save in MongoDB (there is also an AppEngine implementation)
    // Iterates using Google Gson: gsonBuilder.create().toJson(Object)
    // and DBObject: com.mongodb.util.JSON.parse(jsonObject)
    noSqlStorage.save(reportObjectList);
}



                                                       Google Confidential and Proprietary
Keyword
Optimizations




     Google Confidential and Proprietary
TIS                                 SearchParameter[ ]

                                   Keyword / Placement
      TargetingIdeaSelector
                                         Ideas / Stats

                                   AttributeType[ ] (fields)


       Targeting Idea
          Service


         TargetingIdea[ ]
       Type_AttributeMapEntry[ ]
              (field,value)


                                   Google Confidential and Proprietary
TIS - Search Parameters & Fields

  SearchParameter[ ]                AttributeType[ ] (fields)


  ●   AdSpecList                    ●   Average Cpc
  ●   CategoryProductsAndServices   ●   Average Targeted Monthly Searches
  ●   Competition                   ●   Category Products and Services
  ●   ExcludedKeyword               ●   Competition
  ●   IdeaTextFilter                ●   Criterion
  ●   IncludeAdultContent           ●   Extracted from Webpage
  ●   Language                      ●   Global Monthly Searches
  ●   Location                      ●   Idea Type
  ●   Network NEW                   ●   Keyword Category
  ●   PlacementType                 ●   Keyword Text
  ●   RelatedToQuery                ●   Negative Keywords
  ●   RelatedToUrl                  ●   Search Share
  ●   SearchVolume                  ●   Search Volume
  ●   SeedAdGroupId                 ●   Targeted Monthly Searches
                                         ...


                                                                Google Confidential and Proprietary
TIS EXAMPLE
LanguageSearchParameter        = english
RelatedToUrlSearchParameter    = http://www.someplumbers.com/
LocationSearchParameter        = uk
RequestType. IDEAS, IdeaType. KEYWORD
{AttributeType. KEYWORD_TEXT, AttributeType. SEARCH_VOLUME,
AttributeType. AVERAGE_CPC ,AttributeType. COMPETITION}




                   Targeting Idea
                      Service

 KEYWORD_TEXT                 searchVol   avgCPC   Competition
 'london plumbing service'    16          5.13         0.858
 'london plumbing services'   46          9.41         0.765
 'emergency plumbing service' 28          6.71         0.912
    ...                                   new




                                                        Google Confidential and Proprietary
TES
                       TrafficEstimatorSelector
                           CampaignEstimateRequest[ ]      Criterion[ ], campaignId

                           AdGroupEstimateRequest[ ]     adGroupId, maxCPC

                           KeywordEstimateRequest[ ]     keyword, maxCpc, isNegative




                   Traffic Estimator Service

                          CampaignEstimate[ ]               campaignId

                               AdGroupEstimate[ ]        adGroupId

                               KeywordEstimate[ ]      criterionId, Min & Max StatsEstimates

averageCpc, averagePosition, clicksPerDay, impressionsPerDay, clickThroughRate, totalCost

                                                                      Google Confidential and Proprietary
campaignEstimateRequest.setCriteria(new Criterion[] { uk, english });

 adGroupEstimateRequest.setMaxCpc(new Money(null, 1000000)); // 1€

 adGroupEstimateRequest.setKeywordEstimateRequests( ...
        'london plumbing service'
        'emergency plumbing service london'
        'emergency plumbing services london'... )...




                 Traffic Estimator Service

    Keyword               avgCPC avgPosition dayClicks totalCost CTR
dayImpressions

'london plumbing service', 0.87, 2.00, 0.02, 0.02,          0.04, 0.58
'plumbing services london', 0.71, 8.56, 0.54, 0.39,         0.01, 49.33
                                                              new   new
  ...


                                                            Google Confidential and Proprietary
Example Optimization - Epsilon Greedy Inspired
http://en.wikipedia.org/wiki/Multi-armed_bandit


Automatic                                         auto glass repair
● Regular                                         car glass replacement
● Set and forget
● Needs close monitoring                          windshield repair

                                                  vehicle glass repair
Semi-automatic                                                                            KW Research
● Manual lookup                                   car window repair                        Using TIS+TES

● Suggest KWs for exchange                        fix car glass
● KW Research can be
      manual                                      car glass

                                                  glass window

                                                  glasses repair

                        KW                        window repair


                                                                          Google Confidential and Proprietary
Discovering optimization opportunities with Kratu




                                        Google Confidential and Proprietary
Kratu - Open Source Issue and Opportunity Discovery




                                         Google Confidential and Proprietary
Kratu - Open Source Issue and Opportunity Discovery
●   Open Source, Google driven
     ○   http://google.github.com/kratu/
●   Client-side, runs in the browser. Implemented in JavaScript
●   Includes prebuilt working example for AdWords
     ○   Starting point created by experienced Google Account Managers
     ○   Used internally at Google to display data for millions of accounts
     ○   Provided as-is. Use with caution. Google accepts no liabilities.
●   BYOD - Bring Your Own Data
     ○   Anything that can be converted to a JS Array with key/value objects
     ○   Includes simple JSON and CSV loaders

●   We offer a Google built sample backend
●   Easily integratable with other, non-AdWords data


                                                               Google Confidential and Proprietary
Demo Time
http://google.github.com/kratu/examples/adwordshealthcheck/




                                                  Google Confidential and Proprietary
Kratu - Implementation - Overview


                       Reporting
    Data Storage       backend
      MySql              Fetch
     MongoDB            Process
        ...              Store




     Web server

     /kratu/

     /rest/accounts/




                                    Google Confidential and Proprietary
Kratu - Implementation
●   Easy to add other signals
     ○   Add any key/value pair to your data, define a weight and a threshold
●   Flexible model
     ○   Custom and built-in calculation of opportunity/issue
     ○   Compose new signals from multiple data points
     ○   Custom and built-in event handlers (integrate with other systems)
     ○   Custom and built-in formatting
●   Paginations for larger number of accounts
●   Re-use data and signals to produce new reports
     ○   Targeted reports, eg. upselling opportunities, mobile adoption
     ○   Personalized reports, eg. individual for Account managers
●   End-to-end tutorial available here:
     ○   http://google.github.com/kratu/tutorial/


                                                              Google Confidential and Proprietary
Kratu - backend example
Quick example using Restlet and Gson:
router.attach("/accountreports/{accountId}", ReportRest.class);
String accountId = (String) getRequestAttributes().get("
                                                       accountId");
@Get
public JsonRepresentation getAccountPerformanceReportHandler() {
    // Gets Reports from MongoDB or MySql as Java Objects
    List<Report> listAccountReports = Report.getReportByAccountIdMonth(
        accountId, date, "AccountReport");
    String resultJsonList = gson.toJson(listAccountReports);
    JsonRepresentation jsonRepresentation = new
        JsonRepresentation(resultJsonList);
    jsonRepresentation.setMediaType(MediaType.APPLICATION_JSON);
    return jsonRepresentation;
}



                                                       Google Confidential and Proprietary
Kratu - backend example
Json response example:
[{
     "lostISBudget": 0,
     "lostISRank": 90,
     "key": "7767761884-Search Network" ,
     "mccId": 2742928629,
     "timestamp": "Mar 6, 2013 8:51:08 AM" ,
     "accountId": 7767761884,
     "accountDescriptiveName": "Julian 1$-day" ,
     "cost": 0,
     "clicks": 0,
     "impressions": 0,
     "conversions": 0,
     "ctr": 0,
     "avgCpm": 0,
     "avgCpc": 0,
     "avgPosition": 0,
     "currencyCode": "USD",
     "adNetwork": "Search Network"
}]


                                                   Google Confidential and Proprietary
Q&A

More Related Content

Similar to Account Performance and Optimization

Opportunity Analysis with Kratu
Opportunity Analysis with KratuOpportunity Analysis with Kratu
Opportunity Analysis with Kratumarcwan
 
Large scale data capture and experimentation platform at Grab
Large scale data capture and experimentation platform at GrabLarge scale data capture and experimentation platform at Grab
Large scale data capture and experimentation platform at GrabRoman
 
About The Event-Driven Data Layer & Adobe Analytics
About The Event-Driven Data Layer & Adobe AnalyticsAbout The Event-Driven Data Layer & Adobe Analytics
About The Event-Driven Data Layer & Adobe AnalyticsKevin Haag
 
[WSO2Con Asia 2018] Patterns for Building Streaming Apps
[WSO2Con Asia 2018] Patterns for Building Streaming Apps[WSO2Con Asia 2018] Patterns for Building Streaming Apps
[WSO2Con Asia 2018] Patterns for Building Streaming AppsWSO2
 
Building Data Products with BigQuery for PPC and SEO (SMX 2022)
Building Data Products with BigQuery for PPC and SEO (SMX 2022)Building Data Products with BigQuery for PPC and SEO (SMX 2022)
Building Data Products with BigQuery for PPC and SEO (SMX 2022)Christopher Gutknecht
 
A federated information infrastructure that works
A federated information infrastructure that works A federated information infrastructure that works
A federated information infrastructure that works Stratebi
 
Alexandria ACM Student Chapter | Specification & Verification of Data-Centric...
Alexandria ACM Student Chapter | Specification & Verification of Data-Centric...Alexandria ACM Student Chapter | Specification & Verification of Data-Centric...
Alexandria ACM Student Chapter | Specification & Verification of Data-Centric...AlexACMSC
 
Optimizing a React application for Core Web Vitals
Optimizing a React application for Core Web VitalsOptimizing a React application for Core Web Vitals
Optimizing a React application for Core Web VitalsJuan Picado
 
Applying BigQuery ML on e-commerce data analytics
Applying BigQuery ML on e-commerce data analyticsApplying BigQuery ML on e-commerce data analytics
Applying BigQuery ML on e-commerce data analyticsMárton Kodok
 
Deep Visibility: Logging From Distributed Microservices
Deep Visibility: Logging From Distributed MicroservicesDeep Visibility: Logging From Distributed Microservices
Deep Visibility: Logging From Distributed MicroservicesAaronLieberman5
 
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely
 
AwReporting Update
AwReporting UpdateAwReporting Update
AwReporting Updatemarcwan
 
Big Query - Women Techmarkers (Ukraine - March 2014)
Big Query - Women Techmarkers (Ukraine - March 2014)Big Query - Women Techmarkers (Ukraine - March 2014)
Big Query - Women Techmarkers (Ukraine - March 2014)Ido Green
 
James Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 PatternsJames Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 Patternsakqaanoraks
 
Real-Time Personalized Customer Experiences at Bonobos (RET203) - AWS re:Inve...
Real-Time Personalized Customer Experiences at Bonobos (RET203) - AWS re:Inve...Real-Time Personalized Customer Experiences at Bonobos (RET203) - AWS re:Inve...
Real-Time Personalized Customer Experiences at Bonobos (RET203) - AWS re:Inve...Amazon Web Services
 
Design for Scale - Building Real Time, High Performing Marketing Technology p...
Design for Scale - Building Real Time, High Performing Marketing Technology p...Design for Scale - Building Real Time, High Performing Marketing Technology p...
Design for Scale - Building Real Time, High Performing Marketing Technology p...Amazon Web Services
 
Sprint 45 review
Sprint 45 reviewSprint 45 review
Sprint 45 reviewManageIQ
 

Similar to Account Performance and Optimization (20)

Opportunity Analysis with Kratu
Opportunity Analysis with KratuOpportunity Analysis with Kratu
Opportunity Analysis with Kratu
 
MongodB Internals
MongodB InternalsMongodB Internals
MongodB Internals
 
Siddhi - cloud-native stream processor
Siddhi - cloud-native stream processorSiddhi - cloud-native stream processor
Siddhi - cloud-native stream processor
 
Large scale data capture and experimentation platform at Grab
Large scale data capture and experimentation platform at GrabLarge scale data capture and experimentation platform at Grab
Large scale data capture and experimentation platform at Grab
 
About The Event-Driven Data Layer & Adobe Analytics
About The Event-Driven Data Layer & Adobe AnalyticsAbout The Event-Driven Data Layer & Adobe Analytics
About The Event-Driven Data Layer & Adobe Analytics
 
[WSO2Con Asia 2018] Patterns for Building Streaming Apps
[WSO2Con Asia 2018] Patterns for Building Streaming Apps[WSO2Con Asia 2018] Patterns for Building Streaming Apps
[WSO2Con Asia 2018] Patterns for Building Streaming Apps
 
Building Data Products with BigQuery for PPC and SEO (SMX 2022)
Building Data Products with BigQuery for PPC and SEO (SMX 2022)Building Data Products with BigQuery for PPC and SEO (SMX 2022)
Building Data Products with BigQuery for PPC and SEO (SMX 2022)
 
A federated information infrastructure that works
A federated information infrastructure that works A federated information infrastructure that works
A federated information infrastructure that works
 
Modern Thinking área digital MSKM 21/09/2017
Modern Thinking área digital MSKM 21/09/2017Modern Thinking área digital MSKM 21/09/2017
Modern Thinking área digital MSKM 21/09/2017
 
Alexandria ACM Student Chapter | Specification & Verification of Data-Centric...
Alexandria ACM Student Chapter | Specification & Verification of Data-Centric...Alexandria ACM Student Chapter | Specification & Verification of Data-Centric...
Alexandria ACM Student Chapter | Specification & Verification of Data-Centric...
 
Optimizing a React application for Core Web Vitals
Optimizing a React application for Core Web VitalsOptimizing a React application for Core Web Vitals
Optimizing a React application for Core Web Vitals
 
Applying BigQuery ML on e-commerce data analytics
Applying BigQuery ML on e-commerce data analyticsApplying BigQuery ML on e-commerce data analytics
Applying BigQuery ML on e-commerce data analytics
 
Deep Visibility: Logging From Distributed Microservices
Deep Visibility: Logging From Distributed MicroservicesDeep Visibility: Logging From Distributed Microservices
Deep Visibility: Logging From Distributed Microservices
 
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature Delivery
 
AwReporting Update
AwReporting UpdateAwReporting Update
AwReporting Update
 
Big Query - Women Techmarkers (Ukraine - March 2014)
Big Query - Women Techmarkers (Ukraine - March 2014)Big Query - Women Techmarkers (Ukraine - March 2014)
Big Query - Women Techmarkers (Ukraine - March 2014)
 
James Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 PatternsJames Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 Patterns
 
Real-Time Personalized Customer Experiences at Bonobos (RET203) - AWS re:Inve...
Real-Time Personalized Customer Experiences at Bonobos (RET203) - AWS re:Inve...Real-Time Personalized Customer Experiences at Bonobos (RET203) - AWS re:Inve...
Real-Time Personalized Customer Experiences at Bonobos (RET203) - AWS re:Inve...
 
Design for Scale - Building Real Time, High Performing Marketing Technology p...
Design for Scale - Building Real Time, High Performing Marketing Technology p...Design for Scale - Building Real Time, High Performing Marketing Technology p...
Design for Scale - Building Real Time, High Performing Marketing Technology p...
 
Sprint 45 review
Sprint 45 reviewSprint 45 review
Sprint 45 review
 

More from marcwan

Mcc scripts deck (日本語)
Mcc scripts deck (日本語)Mcc scripts deck (日本語)
Mcc scripts deck (日本語)marcwan
 
Opportunity Analysis with Kratu (v2)
Opportunity Analysis with Kratu (v2)Opportunity Analysis with Kratu (v2)
Opportunity Analysis with Kratu (v2)marcwan
 
07. feeds update
07. feeds update07. feeds update
07. feeds updatemarcwan
 
AdWords API & OAuth 2.0, Advanced
AdWords API & OAuth 2.0, Advanced AdWords API & OAuth 2.0, Advanced
AdWords API & OAuth 2.0, Advanced marcwan
 
AdWords Scripts and MCC Scripting
AdWords Scripts and MCC ScriptingAdWords Scripts and MCC Scripting
AdWords Scripts and MCC Scriptingmarcwan
 
Getting Started with AdWords API and Google Analytics
Getting Started with AdWords API and Google AnalyticsGetting Started with AdWords API and Google Analytics
Getting Started with AdWords API and Google Analyticsmarcwan
 
Shopping Campaigns and AdWords API
Shopping Campaigns and AdWords APIShopping Campaigns and AdWords API
Shopping Campaigns and AdWords APImarcwan
 
API Updates for v201402
API Updates for v201402API Updates for v201402
API Updates for v201402marcwan
 
AdWords API Targeting Options
AdWords API Targeting OptionsAdWords API Targeting Options
AdWords API Targeting Optionsmarcwan
 
Reporting Tips and Tricks (Spanish)
Reporting Tips and Tricks (Spanish)Reporting Tips and Tricks (Spanish)
Reporting Tips and Tricks (Spanish)marcwan
 
Rate limits and performance (Spanish)
Rate limits and performance (Spanish)Rate limits and performance (Spanish)
Rate limits and performance (Spanish)marcwan
 
OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)marcwan
 
End to-end how to build a platform (Spanish)
End to-end how to build a platform (Spanish)End to-end how to build a platform (Spanish)
End to-end how to build a platform (Spanish)marcwan
 
AwReporting tool introduction (Spanish)
AwReporting tool introduction (Spanish)AwReporting tool introduction (Spanish)
AwReporting tool introduction (Spanish)marcwan
 
Api update rundown (Spanish)
Api update rundown (Spanish)Api update rundown (Spanish)
Api update rundown (Spanish)marcwan
 
AdWords Scripts (Spanish)
AdWords Scripts (Spanish)AdWords Scripts (Spanish)
AdWords Scripts (Spanish)marcwan
 
Mobile landing pages (Spanish)
Mobile landing pages (Spanish)Mobile landing pages (Spanish)
Mobile landing pages (Spanish)marcwan
 
Rate limits and performance
Rate limits and performanceRate limits and performance
Rate limits and performancemarcwan
 
OAuth 2.0 refresher
OAuth 2.0 refresherOAuth 2.0 refresher
OAuth 2.0 refreshermarcwan
 
Mobile landing pages
Mobile landing pagesMobile landing pages
Mobile landing pagesmarcwan
 

More from marcwan (20)

Mcc scripts deck (日本語)
Mcc scripts deck (日本語)Mcc scripts deck (日本語)
Mcc scripts deck (日本語)
 
Opportunity Analysis with Kratu (v2)
Opportunity Analysis with Kratu (v2)Opportunity Analysis with Kratu (v2)
Opportunity Analysis with Kratu (v2)
 
07. feeds update
07. feeds update07. feeds update
07. feeds update
 
AdWords API & OAuth 2.0, Advanced
AdWords API & OAuth 2.0, Advanced AdWords API & OAuth 2.0, Advanced
AdWords API & OAuth 2.0, Advanced
 
AdWords Scripts and MCC Scripting
AdWords Scripts and MCC ScriptingAdWords Scripts and MCC Scripting
AdWords Scripts and MCC Scripting
 
Getting Started with AdWords API and Google Analytics
Getting Started with AdWords API and Google AnalyticsGetting Started with AdWords API and Google Analytics
Getting Started with AdWords API and Google Analytics
 
Shopping Campaigns and AdWords API
Shopping Campaigns and AdWords APIShopping Campaigns and AdWords API
Shopping Campaigns and AdWords API
 
API Updates for v201402
API Updates for v201402API Updates for v201402
API Updates for v201402
 
AdWords API Targeting Options
AdWords API Targeting OptionsAdWords API Targeting Options
AdWords API Targeting Options
 
Reporting Tips and Tricks (Spanish)
Reporting Tips and Tricks (Spanish)Reporting Tips and Tricks (Spanish)
Reporting Tips and Tricks (Spanish)
 
Rate limits and performance (Spanish)
Rate limits and performance (Spanish)Rate limits and performance (Spanish)
Rate limits and performance (Spanish)
 
OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)
 
End to-end how to build a platform (Spanish)
End to-end how to build a platform (Spanish)End to-end how to build a platform (Spanish)
End to-end how to build a platform (Spanish)
 
AwReporting tool introduction (Spanish)
AwReporting tool introduction (Spanish)AwReporting tool introduction (Spanish)
AwReporting tool introduction (Spanish)
 
Api update rundown (Spanish)
Api update rundown (Spanish)Api update rundown (Spanish)
Api update rundown (Spanish)
 
AdWords Scripts (Spanish)
AdWords Scripts (Spanish)AdWords Scripts (Spanish)
AdWords Scripts (Spanish)
 
Mobile landing pages (Spanish)
Mobile landing pages (Spanish)Mobile landing pages (Spanish)
Mobile landing pages (Spanish)
 
Rate limits and performance
Rate limits and performanceRate limits and performance
Rate limits and performance
 
OAuth 2.0 refresher
OAuth 2.0 refresherOAuth 2.0 refresher
OAuth 2.0 refresher
 
Mobile landing pages
Mobile landing pagesMobile landing pages
Mobile landing pages
 

Recently uploaded

Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 

Account Performance and Optimization

  • 1. AdWords API Workshops 2013 Account Performance & Optimization Finding the needle in your haystack Google Confidential and Proprietary
  • 2. Overview 1. How to Optimize ○ The Optimization Cycle 2. Developing a solid reporting backend ○ Reporting Workflow ○ Strategies for scaling, processing and storage ○ Introduction to sample applications 3. Keyword Optimizations ○ What are TIS and TES ○ Discovering good ideas with TIS and TES ○ Automated keyword optimizations strategy 4. Discovering optimization opportunities with Kratu ○ Introduction to Kratu ○ AdWords Optimization Report in Kratu ○ Kratu backend example Google Confidential and Proprietary
  • 3. How to Optimize? Google Confidential and Proprietary
  • 4. Measure Profile Optimization Cycle Optimize Google Confidential and Proprietary
  • 5. Measure Profile Performance data Structural data AdHoc AWQL Services Reports Optimize Google Confidential and Proprietary
  • 6. Measure Profile Kratu Custom (eg. Epsilon) Predictive Analysis Optimize Google Confidential and Proprietary
  • 7. Measure Profile Automatic Manual Semi Automatic Optimize Google Confidential and Proprietary
  • 8. Developing a solid reporting backend Google Confidential and Proprietary
  • 9. Reporting Workflow MCC Info Managed List<ManagedCustomer> Customer Service Report Definition ReportType Report Data Storage DateRange Report Downloader Processor MySql MongoDB ... Fields n-Threads Google Confidential and Proprietary
  • 10. Report Data Storage Report Downloader Processor MySql MongoDB ... n-Threads Process local temp files Keys must guarantee Based on Parses rows using a Uniqueness per MultipleClient CSVReader ReportRow ReportDownloader (Date/Day, Segments) example Write calls to Storage must be in batches Rows Updates are Each Thread runs a frequent ReportDownloder with: Batch size depends on technology/memory Create indexes for: ● AdWordsSession ● ClientCustomerId Shard data based on ● AccountId ● ReportDefinition account, subMCCs, dates ● Date/Day ● CSV & GZip or common attributes ● CampaignId ● Segments... Google Confidential and Proprietary
  • 11. Implementing a MySql ReportProcessor connection.setAutoCommit( false); statement.execute(" SET UNIQUE_CHECKS=0; ALTER TABLE ... DISABLE KEYS;"); for (File file : localFiles) { preparedStatement = "INSERT INTO .. (.) VALUES (.) ON DUPLICATE KEY UPDATE (.)"; CSVReader csvReader = new CSVReader(new InputStreamReader (new FileInputStream ( file.getAbsolutePath() + ".gunzip"), " UTF-8"), ',', '"', 1); reportRows = new ModifiedCsvToBean <Report>(). parseReport(mapping, csvReader); for (Report reportItem : reportRows) { addInsertToBatch(reportItem, preparedStatement); // Executing the Batch every 500 inserts to reduce memory usage if (batchSize++ >= 500) { preparedStatement.executeBatch(); connection.commit(); batchSize = 0; } }... }... statement.execute(" SET UNIQUE_CHECKS=1; ALTER TABLE ... ENABLE KEYS;"); Google Confidential and Proprietary
  • 12. Implementing a MongoDB ReportProcessor for (File file : localFiles) { CSVReader csvReader = new CSVReader(new InputStreamReader( new FileInputStream(file),"UTF-8"), ',', '"', 1); List<Report> reportObjectList = ModifiedCsvToBean<Report>().parseReport(mapping, csvReader); csvReader.close(); // Save in MongoDB (there is also an AppEngine implementation) // Iterates using Google Gson: gsonBuilder.create().toJson(Object) // and DBObject: com.mongodb.util.JSON.parse(jsonObject) noSqlStorage.save(reportObjectList); } Google Confidential and Proprietary
  • 13. Keyword Optimizations Google Confidential and Proprietary
  • 14. TIS SearchParameter[ ] Keyword / Placement TargetingIdeaSelector Ideas / Stats AttributeType[ ] (fields) Targeting Idea Service TargetingIdea[ ] Type_AttributeMapEntry[ ] (field,value) Google Confidential and Proprietary
  • 15. TIS - Search Parameters & Fields SearchParameter[ ] AttributeType[ ] (fields) ● AdSpecList ● Average Cpc ● CategoryProductsAndServices ● Average Targeted Monthly Searches ● Competition ● Category Products and Services ● ExcludedKeyword ● Competition ● IdeaTextFilter ● Criterion ● IncludeAdultContent ● Extracted from Webpage ● Language ● Global Monthly Searches ● Location ● Idea Type ● Network NEW ● Keyword Category ● PlacementType ● Keyword Text ● RelatedToQuery ● Negative Keywords ● RelatedToUrl ● Search Share ● SearchVolume ● Search Volume ● SeedAdGroupId ● Targeted Monthly Searches ... Google Confidential and Proprietary
  • 16. TIS EXAMPLE LanguageSearchParameter = english RelatedToUrlSearchParameter = http://www.someplumbers.com/ LocationSearchParameter = uk RequestType. IDEAS, IdeaType. KEYWORD {AttributeType. KEYWORD_TEXT, AttributeType. SEARCH_VOLUME, AttributeType. AVERAGE_CPC ,AttributeType. COMPETITION} Targeting Idea Service KEYWORD_TEXT searchVol avgCPC Competition 'london plumbing service' 16 5.13 0.858 'london plumbing services' 46 9.41 0.765 'emergency plumbing service' 28 6.71 0.912 ... new Google Confidential and Proprietary
  • 17. TES TrafficEstimatorSelector CampaignEstimateRequest[ ] Criterion[ ], campaignId AdGroupEstimateRequest[ ] adGroupId, maxCPC KeywordEstimateRequest[ ] keyword, maxCpc, isNegative Traffic Estimator Service CampaignEstimate[ ] campaignId AdGroupEstimate[ ] adGroupId KeywordEstimate[ ] criterionId, Min & Max StatsEstimates averageCpc, averagePosition, clicksPerDay, impressionsPerDay, clickThroughRate, totalCost Google Confidential and Proprietary
  • 18. campaignEstimateRequest.setCriteria(new Criterion[] { uk, english }); adGroupEstimateRequest.setMaxCpc(new Money(null, 1000000)); // 1€ adGroupEstimateRequest.setKeywordEstimateRequests( ... 'london plumbing service' 'emergency plumbing service london' 'emergency plumbing services london'... )... Traffic Estimator Service Keyword avgCPC avgPosition dayClicks totalCost CTR dayImpressions 'london plumbing service', 0.87, 2.00, 0.02, 0.02, 0.04, 0.58 'plumbing services london', 0.71, 8.56, 0.54, 0.39, 0.01, 49.33 new new ... Google Confidential and Proprietary
  • 19. Example Optimization - Epsilon Greedy Inspired http://en.wikipedia.org/wiki/Multi-armed_bandit Automatic auto glass repair ● Regular car glass replacement ● Set and forget ● Needs close monitoring windshield repair vehicle glass repair Semi-automatic KW Research ● Manual lookup car window repair Using TIS+TES ● Suggest KWs for exchange fix car glass ● KW Research can be manual car glass glass window glasses repair KW window repair Google Confidential and Proprietary
  • 20. Discovering optimization opportunities with Kratu Google Confidential and Proprietary
  • 21. Kratu - Open Source Issue and Opportunity Discovery Google Confidential and Proprietary
  • 22. Kratu - Open Source Issue and Opportunity Discovery ● Open Source, Google driven ○ http://google.github.com/kratu/ ● Client-side, runs in the browser. Implemented in JavaScript ● Includes prebuilt working example for AdWords ○ Starting point created by experienced Google Account Managers ○ Used internally at Google to display data for millions of accounts ○ Provided as-is. Use with caution. Google accepts no liabilities. ● BYOD - Bring Your Own Data ○ Anything that can be converted to a JS Array with key/value objects ○ Includes simple JSON and CSV loaders ● We offer a Google built sample backend ● Easily integratable with other, non-AdWords data Google Confidential and Proprietary
  • 24. Kratu - Implementation - Overview Reporting Data Storage backend MySql Fetch MongoDB Process ... Store Web server /kratu/ /rest/accounts/ Google Confidential and Proprietary
  • 25. Kratu - Implementation ● Easy to add other signals ○ Add any key/value pair to your data, define a weight and a threshold ● Flexible model ○ Custom and built-in calculation of opportunity/issue ○ Compose new signals from multiple data points ○ Custom and built-in event handlers (integrate with other systems) ○ Custom and built-in formatting ● Paginations for larger number of accounts ● Re-use data and signals to produce new reports ○ Targeted reports, eg. upselling opportunities, mobile adoption ○ Personalized reports, eg. individual for Account managers ● End-to-end tutorial available here: ○ http://google.github.com/kratu/tutorial/ Google Confidential and Proprietary
  • 26. Kratu - backend example Quick example using Restlet and Gson: router.attach("/accountreports/{accountId}", ReportRest.class); String accountId = (String) getRequestAttributes().get(" accountId"); @Get public JsonRepresentation getAccountPerformanceReportHandler() { // Gets Reports from MongoDB or MySql as Java Objects List<Report> listAccountReports = Report.getReportByAccountIdMonth( accountId, date, "AccountReport"); String resultJsonList = gson.toJson(listAccountReports); JsonRepresentation jsonRepresentation = new JsonRepresentation(resultJsonList); jsonRepresentation.setMediaType(MediaType.APPLICATION_JSON); return jsonRepresentation; } Google Confidential and Proprietary
  • 27. Kratu - backend example Json response example: [{ "lostISBudget": 0, "lostISRank": 90, "key": "7767761884-Search Network" , "mccId": 2742928629, "timestamp": "Mar 6, 2013 8:51:08 AM" , "accountId": 7767761884, "accountDescriptiveName": "Julian 1$-day" , "cost": 0, "clicks": 0, "impressions": 0, "conversions": 0, "ctr": 0, "avgCpm": 0, "avgCpc": 0, "avgPosition": 0, "currencyCode": "USD", "adNetwork": "Search Network" }] Google Confidential and Proprietary
  • 28. Q&A