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

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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Recently uploaded (20)

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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

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