How did I get into scripting?
I’ve been working in digital marketing, and more specifically in Pay-per-click, for eight months now. Something that has grabbed my attention throughout this time has been the power of automation; I’ve been amazed at how many tasks I’ve been able to automate for myself and my team, despite my limited coding abilities. Having built many macros and scripts, I’ve begun to realise that I’ve only touched the surface of what automation can achieve within my day to day job. I now realise the vast potential it holds for allowing us to save time, inevitably allowing us to focus this time on other aspects of our roles.
There’s one task that no one in digital marketing can escape; reporting. Understandably, clients want to know, with varying degrees of frequency and customisation, how their accounts are performing, and reporting equals opportunities to optimise and improve on performance.
A pivotal focus for ROAST is to automate this process using APIs and reporting software, such as Google Data Studio and Datorama. This, however, is not an easy or short process. These reporting migrations take development resource to create, and cannot be done for every client simultaneously. However, as daily, weekly and monthly reporting is so vital, automation is a necessity.
Why are scripts useful?
My initial motivation to start coding was to save myself time. I didn’t want to repeat the same monotonous clicks and processes over and over again.
Like many others, the main software I use is excel, and fortunately for me, it has its own inbuilt coding language that allows you to automate pretty much anything within a spreadsheet. I’ve learnt the basics of this language (VBA), and started testing simple macros of my own.
Excel has an inbuilt functionality that allows you to record actions, plus it gives you the code for the action you just completed. Using this tool, I was able to splice generated code with my own, to create macros that had some great time saving uses.
As an example, metrics we frequently report on include cost-per-click, cost-per-goal, impressions, clicks, impression share, etc. This data is normally represented in a pivot table, however when you generate a pivot table, all of the fields have the same number format settings and also all the titles include “sum of”. This default formatting can look messy and unprofessional when presenting to a client. It takes only two minutes to format these fields and titles, however with a macro it can be done with the click of a button. Two minutes may not seem like a lot of time to save however, if this is used every working day by 50 people in a company, the time saving over a year suddenly adds up to 392 hours!
I don’t want to give all my time saving tricks away, but it’s safe to say that there are limitless possibilities with what you can do when you start delving into automation.
As a New Year’s resolution, I decided to increase my coding knowledge, in this case, in AdWords scripts, for two reasons. The first being, that I saw potential opportunities for optimisations and account management procedures, and secondly because I already had a problem that needed solving.
On 4th October 2017, Google changed how budget capping works and increased how much a campaign could spend to double the campaign budget. This allows for varying levels of search demand to be captured, but also, leads to potential overspending. With this update, Google also implemented ‘over deliver credits’. If your campaign spends over 30.4 times the daily budget in a calendar month, you are given an over delivery credit for the difference (however you are not eligible for these if you pause campaigns or change their budgets). With this in mind, we wanted to be able to mitigate any overspend without having to manually check campaign budgets.
We started by testing a free script that paused campaigns that were x% overbudget, however after a few weeks of testing we realised that this script was not fit for purpose. Taking learnings from this, I created a script that adds in an extra level of control. Instead of pausing campaigns that overspent, it pulls them into a Google document sheet with the campaign name, budget and amount spent. This allows for a quick spot check to see if any campaigns are overspending that we don’t want to be. A nice added functionality is that this is an MCC script, meaning we can check all the campaigns in larger accounts. With Googles functionality to run scripts every hour, this means that we can keep an easy eye on budgets throughout the day.
This first iteration adds in an extra layer of protection against overspending, however with some small tweaks, its functionality could be increased and improved. For example, it could be expanded to pull in campaigns that are consistently overspending and not just overspending on one day.
As part of our Analytics offering, we launched an R&D team to break, examine and rebuild (but better) anything and everything we think will be interesting in the digital space. A great example is our recently released voice search reporting capability, where we found an emerging area of the industry, that just didn’t have the backend infrastructure to give us and our clients the information they needed.
ROAST Labs uses data in new and innovative ways and we’re constantly looking for new sources to feed into our analysis and projects. Using open source data, APIs and scripts, data can be used to drive deeper insights that can be used for advanced strategies across digital media. This can include automated bid adjustments for PPC based on live data, complex interactions between different channels and dashboarding with advanced data visualisations. As you can imagine, there has been ample opportunity for me to use my growing coding skills!
With increased functionality being added to platforms every day, the opportunities presented by automation will only continue to grow. As with anything, automation and scripting come with problems and challenges, but the power it provides is undoubtedly worth it. For this reason, ROAST will be continuously expanding our capabilities within automation in order to provide clients with the most seamless service possible.