[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"cms-page:\u002Fblog\u002Fbuild-google-data-studio-community-connector":3},{"date":4,"date_gmt":4,"content":5,"sticky":7,"format":8,"categories":9,"collections":13,"coauthors":14,"class_list":16,"acf":26,"head_links":553,"breadcrumbs":554,"reading_minutes":181,"category":562,"head":566},"2017-10-22T17:03:32",{"rendered":6},"\u003Cdiv class=\"table-of-contents\">\u003Cul>\u003Cli class=\"heading-h2\">\u003Ca href=\"#what-is-google-data-studio\">What is Google Data Studio?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#google-data-studio-history\">Google Data Studio history\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#about-connectors-and-google-apps-scripts\">About Connectors and Google Apps Scripts\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#example-use-pulling-live-keyword-ranking-data-into-google-data-studio\">Example use: pulling live keyword ranking data into Google Data Studio\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#how-to-create-a-google-data-studio-community-connector\">How to create a Google Data Studio Community Connector\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#setting-up-a-new-google-apps-script-for-the-connector\">Setting up a new Google Apps Script for the Connector\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#default-file-layouts-and-function-calls\">Default file layouts and function calls\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#connector-application-design\">Connector application design\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#testing\">Testing\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#deploying-a-custom-data-studio-connector\">Deploying a custom Data Studio Connector\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#questions\">Questions?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#full-code-example\">Full code example\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fdiv>\n\u003Ch2 id=\"what-is-google-data-studio\">What is Google Data Studio?\u003C\u002Fh2>\n\u003Cp>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdatastudio.google.com\u002F\">Google Data Studio\u003C\u002Fa> is a data dashboard and reporting tool which provides easy-to-read, shareable and customisable reports from a variety of data sources.\u003C\u002Fp>\n\u003Cp>Data Studio is now free to use and can produce reports from almost any online data source; including digital marketing analytics, CRM pipelines, YouTube stats, etc.\u003C\u002Fp>\n\u003Cp>You can browse a \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdatastudio.google.com\u002Foverview\">gallery on Google&#8217;s site here\u003C\u002Fa>, or read on to skip to the good stuff!\u003C\u002Fp>\n\u003Ch2 id=\"google-data-studio-history\">Google Data Studio history\u003C\u002Fh2>\n\u003Cp>In May 2016, \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fanalytics.googleblog.com\u002F2016\u002F05\u002Fannouncing-data-studio-our-free-new.html\">Google announced\u003C\u002Fa> Data Studio would be accessible for users who are not subscribed to the Google Analytics 360 Suite. The product initially launched with a limited number of reports per account and a limited number of data connectors. But, since February 2017&#8217;s \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fanalytics.googleblog.com\u002F2017\u002F02\u002Fmaking-google-data-studio-free-for.html\">announcement\u003C\u002Fa>, the tool has been unlimited and free for all users. \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fanalytics.googleblog.com\u002F2017\u002F03\u002Fdata-studio-now-globally-available.html\">In March\u003C\u002Fa>, Google finally launched it worldwide and the product has been improving ever since (\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fsupport.google.com\u002Fdatastudio\u002Fanswer\u002F6311467\">see changelog\u003C\u002Fa>).\u003C\u002Fp>\n\u003Cp>Initially, Google Data Studio launched with connectors for Google-only services (including Google Cloud), as well as a few more general purpose Data Sources, such as File Upload and MySQL. Then, in September 2017, the \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdevelopers.google.com\u002Fdatastudio\u002Fconnector\u002Fdeveloper-launch\u002F\">Data Studio &#8220;Community Connectors&#8221; developer programme\u003C\u002Fa> launched with around 200 community-driven connectors from around 10 providers.\u003C\u002Fp>\n\u003Cfigure style=\"width: 2534px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3397\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002FTHcXbYCD-Supermetrics-community-data-studio.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"2534\" height=\"1028\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">Popular providers like Supermetrics have launched Data Studio Community Connectors under the developer program\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>Not only did this make the platform infinitely more useful for cross-channel marketers (popular providers like \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fsupermetrics.com\u002Fblog\u002Fdata-studio-connectors\u002F\">Supermetrics got in there\u003C\u002Fa>; below) but this has also opened up the opportunities for in-house and in-agency developers to build and deploy their own connectors. And that&#8217;s exactly what we did here at Impression:\u003C\u002Fp>\n\u003Cblockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n\u003Cp lang=\"en\" dir=\"ltr\">Has anyone seen live \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Ftwitter.com\u002FgetSTAT?ref_src=twsrc%5Etfw\">@getSTAT\u003C\u002Fa> data in Google \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Ftwitter.com\u002Fhashtag\u002FDataStudio?src=hash&amp;ref_src=twsrc%5Etfw\">#DataStudio\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>We have ? \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Ftwitter.com\u002Fimpressiontalk?ref_src=twsrc%5Etfw\">@impressiontalk\u003C\u002Fa> \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Ft.co\u002FCVtV41RN6T\">pic.twitter.com\u002FCVtV41RN6T\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>&mdash; Aaron Dicks (@aarondicks) \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Ftwitter.com\u002Faarondicks\u002Fstatus\u002F922921754820976641?ref_src=twsrc%5Etfw\">October 24, 2017\u003C\u002Fa>\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>\u003Cscript async src=\"https:\u002F\u002Fplatform.twitter.com\u002Fwidgets.js\" charset=\"utf-8\">\u003C\u002Fscript>\u003C\u002Fp>\n\u003Ch2 id=\"about-connectors-and-google-apps-scripts\">About Connectors and Google Apps Scripts\u003C\u002Fh2>\n\u003Cp>Community Connectors can be built by almost anyone with experience in JavaScript and using Google Apps Script. The documentation is reasonably thorough despite the program being in its early days; you can certainly get up and running with the existing docs.\u003C\u002Fp>\n\u003Cp>To become a Google Data Studio Community Connector developer, you need to request to be whitelisted to see extra features in your Google Scripts account. You can send this request \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fgoo.gl\u002Fforms\u002FMfxSU71PqP3P0RoM2\">here\u003C\u002Fa>. You&#8217;ll know you have access as you also get an invite into a Google Group for developers and your Scripts &#8216;Publish&#8217; menu will now have this option:\u003C\u002Fp>\n\u003Cfigure style=\"width: 699px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\" wp-image-3398\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002FnrSDDa4r-Deploy-from-manifest.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"699\" height=\"252\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">Google Apps Script: Deploy from manifest\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>For those familiar with the Google Apps Script IDE, you&#8217;re in luck as all the usual Apps Scripts are available for use here.\u003C\u002Fp>\n\u003Cp>Beware that whitelisting your account can take &#8220;2-4&#8221; working days. In reality, I was whitelisted in a little over a day.\u003C\u002Fp>\n\u003Ch2 id=\"example-use-pulling-live-keyword-ranking-data-into-google-data-studio\">Example use: pulling live keyword ranking data into Google Data Studio\u003C\u002Fh2>\n\u003Cp>Our demo below is far from complete, but it&#8217;s enough to give a good demonstration of what&#8217;s possible with Data Studio connectors. It actually only took a few hours to set up and it&#8217;s safe to say we&#8217;ll be working on this a lot more in the coming weeks.\u003C\u002Fp>\n\u003Cp>There are a number of elements that this tutorial will not cover, including date ranges, OAuth authentication\u002Fconnectivity and data caching. These topics will be covered in a future follow up post, or in the comments below.\u003C\u002Fp>\n\u003Cp>Our enterprise search engine rank tracking data provider, \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fgetstat.com\u002Ftake-the-tour\u002F\">STAT\u003C\u002Fa>, provides a really open API that allows us to pull all keywords that we&#8217;re tracking for a specific site. Currently, among all Community Connectors, there are only a few entry-level packages that do the same, so we were keen to plug in the enterprise level data for our clients.\u003C\u002Fp>\n\u003Cp>It doesn&#8217;t allow for date-specific searching, hence this tutorial not covering that requirement, but we know of a couple other agencies circumventing this by caching the data in SQL databases and then using the SQL connector to get the data that way.\u003C\u002Fp>\n\u003Ch2 id=\"how-to-create-a-google-data-studio-community-connector\">How to create a Google Data Studio Community Connector\u003C\u002Fh2>\n\u003Cp>As Google&#8217;s documentation simply puts it, there are three steps to creating a community connector;\u003C\u002Fp>\n\u003Col>\n\u003Cli>Create a new Apps Script project.\u003C\u002Fli>\n\u003Cli>Write the connector code.\u003C\u002Fli>\n\u003Cli>Complete the project manifest.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>I don&#8217;t disagree with this sentiment, but it&#8217;s not entirely that simple&#8230;\u003C\u002Fp>\n\u003Ch3 id=\"setting-up-a-new-google-apps-script-for-the-connector\">Setting up a new Google Apps Script for the Connector\u003C\u002Fh3>\n\u003Cp>No special settings are required in order to start scripting. However, you will need a whitelisted developer account to test deploy your work. In the interim, you can use the standard debugging tools and spoof requests to your getData() function to check that the data is properly formed. I&#8217;ve covered how we tackled this in the Testing and Deployment section below.\u003C\u002Fp>\n\u003Cp>If you can already create a manifest document, do so now, otherwise refer back to this once you&#8217;re whitelisted. This is required to deploy the Script later on. You can view your Scripts manifest by clicking:\u003C\u002Fp>\n\u003Cfigure style=\"width: 474px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\" wp-image-3399\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002F35IfA4YJ-view-manifest-file.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"474\" height=\"400\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">To edit your manifest file to include the required content, click View &gt; Show manifest file, once whitelisted.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>The full manifest file specification can \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdevelopers.google.com\u002Fdatastudio\u002Fconnector\u002Fmanifest\">be found here\u003C\u002Fa>; otherwise please feel free to repurpose the example in my code below.\u003C\u002Fp>\n\u003Ch3 id=\"default-file-layouts-and-function-calls\">Default file layouts and function calls\u003C\u002Fh3>\n\u003Cp>The Community Connector developer program documentation gives a good amount of information on this. From \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdevelopers.google.com\u002Fdatastudio\u002Fconnector\u002Fbuild\">this page\u003C\u002Fa>, copy across the shell functions and the schema variable that I&#8217;ve listed below or dive straight into the sample project we&#8217;ve developed at the bottom of this post.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Functions\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>getConfig (request) {}\u003C\u002Fli>\n\u003Cli>getSchema (request)  {}\u003C\u002Fli>\n\u003Cli>getData (request) {}\u003C\u002Fli>\n\u003Cli>getAuthType () {}\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Variables\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Schema or &#8220;fixedSchema&#8221; in the documentation\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Assuming that you aren&#8217;t yet using OAuth and you&#8217;re comfortable reading code samples (Google&#8217;s or mine below) then I will focus on the getData() function here.\u003C\u002Fp>\n\u003Cp>This function, if not implemented properly, can result in errors for a number of reasons. I was tripped up by the header field order not matching my rows and the varying row length (different queries can result in a different number of metrics being required).\u003C\u002Fp>\n\u003Cp>The most important part of this function is to return a properly formed object:\u003C\u002Fp>\n\u003Cp>\u003Ccode>var return_data = {\u003Cbr \u002F>\nschema: headers,\u003Cbr \u002F>\nrows: rows,\u003Cbr \u002F>\n};\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>The schema argument expects an array of \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdevelopers.google.com\u002Fdatastudio\u002Fconnector\u002Freference#field\">Field\u003C\u002Fa> objects. If in the request, the fields array appears in a different order to your defined schema (for example metrics can be reordered), then you must refer to this array and reorder it. If any metric is not requested in the request.fields array, then it should be excluded from the reordered return array.\u003C\u002Fp>\n\u003Cp>Similarly, the rows must be formatted correctly to prevent errors. The required format is an array of objects; one per row. Within this object, the values parameter is an array of the requested field values. A properly formatted example of this is below, along with an error page example.\u003C\u002Fp>\n\u003Cp>\u003Ccode>rows=[{values=[ab split testing, 50, 101.0]}, {values=[ab testing, 1900, 101.0]}, {values=[bing ads management, 30, 8]}];\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cfigure style=\"width: 1020px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\" wp-image-3400\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002FHe6yjE56-data-studio-connector-error.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"1020\" height=\"598\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">This is what a Data Studio Connector error looks like. Often it will be due to a poorly formatted response to getData().\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Ch3 id=\"connector-application-design\">Connector application design\u003C\u002Fh3>\n\u003Cp>When you&#8217;re designing your own Community Connector you&#8217;ll need to be mindful of the dimensions and metrics you&#8217;re looking to present. This will fit into your schema and will then be presented like so on the controls sidebar.\u003C\u002Fp>\n\u003Cfigure style=\"width: 466px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\" wp-image-3401\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002FdghHUXlK-dimensions-metrics-data-studio.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"466\" height=\"425\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">This is how Dimensions and Metrics are presented in Data Studio\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>I always like to think of dimensions not as metrics, but ways to segment your data (location, city name, keyword, colour, etc). Metrics are the facts which you are tying to your dimensions and these can usually be filtered. This principle of metrics and dimensions is exactly the same as within Google Analytics.\u003C\u002Fp>\n\u003Cp>If your connector allows multiple dimensions and multiple metrics, for use across a number of the graph and chart types on offer in Data Studio, then you should be more wary of error handling within your application. Google provides more information on error handling \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdevelopers.google.com\u002Fdatastudio\u002Fconnector\u002Ferror-handling\">here\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3 id=\"testing\">Testing\u003C\u002Fh3>\n\u003Cp>To test our getData(request) function in advance, we constructed a sample request object from the documentation and later refined this when we had access. If you consider this is based on your configuration, you can take the below to represent a sample query for yourself. The configParams object contains the data your user enters when they install the Data Connector. The fields array includes a named reference to your Schema object &#8212; the fields here (dimensions and metrics) are \u003Cspan style=\"text-decoration: underline;\">in order\u003C\u002Fspan> as per your user&#8217;s selection.\u003C\u002Fp>\n\u003Cp>\u003Ccode>var request = {\u003Cbr \u002F>\nconfigParams:{\u003Cbr \u002F>\napiKey:'12345',\u003Cbr \u002F>\nsiteName:'impression',\u003Cbr \u002F>\nsiteId:'666'\u003Cbr \u002F>\n},\u003Cbr \u002F>\nfields:[\u003Cbr \u002F>\n{name:'keyword'},\u003Cbr \u002F>\n{name:'regionalSearchVolume'},\u003Cbr \u002F>\n{name:'googleRank'}\u003Cbr \u002F>\n]\u003Cbr \u002F>\n};\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>Once you&#8217;ve got access to deploying your connector to Data Studio, I found the StackDriver logging invaluable. In the place of the \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdevelopers.google.com\u002Fapps-script\u002Freference\u002Fbase\u002Flogger\">Logger\u003C\u002Fa> class, you&#8217;ll want to use the \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdevelopers.google.com\u002Fapps-script\u002Freference\u002Fbase\u002Fconsole\">Console\u003C\u002Fa> class so that the debug content is passed to StackDriver.\u003C\u002Fp>\n\u003Cfigure style=\"width: 2444px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3402\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002Fr9JIAKHA-stackdriver-logs.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"2444\" height=\"790\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">With Google Cloud&#8217;s StackDriver logging you can debug your connector whilst it&#8217;s in use\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>You can actually expand out each line item here, to view the JSON payload and dig a little deeper. Errors are also shown in here, too, and they look like so;\u003C\u002Fp>\n\u003Cp>\u003Cimg loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3403\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002Fhgvpo0LP-stackdriver-error-line-item.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"703\" height=\"31\" \u002F>\u003C\u002Fp>\n\u003Ch3 id=\"deploying-a-custom-data-studio-connector\">Deploying a custom Data Studio Connector\u003C\u002Fh3>\n\u003Cp>The process of deploying the connector is straightforward. Click Publish &gt; Deploy and then find and click on the Data Studio URL.\u003C\u002Fp>\n\u003Cfigure style=\"width: 948px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\"wp-image-3404\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002FbTNTJqiX-scripts-data-connector-deployments.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"948\" height=\"516\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">When you can deploy from Apps Scripts, click on Publish &gt; Deploy from manifest to get this option. Expand the top option and select the Data Studio URL to start adding your Data Source to a report\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>This will open a new window and add the data source to your Data Studio account. Here, you can enter any required information and add it to a report. You can also take this opportunity to share the Data Source with colleagues.\u003C\u002Fp>\n\u003Cfigure style=\"width: 1065px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\"wp-image-3405\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002F3rrRZUfF-new-data-studio-connector.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"1065\" height=\"628\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">Much like other connectors &#8211; all settings will be visible on the Data Source setup screen. After entering these details, you add the configured Data Source to your report.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>Once you&#8217;ve added the data source, you have an opportunity to confirm you&#8217;re happy with the settings for your fields. You can use this to trial the impact of any schema changes, such as the aggregation settings.\u003C\u002Fp>\n\u003Cfigure style=\"width: 1106px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\" wp-image-3406\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002Fm5FP1xOO-alter-fields-data-studio-connector.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"1106\" height=\"417\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">Although you define your fields in your Apps Script code, you can also make amends to the data on this screen.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>Finally, once on your report canvas, you&#8217;ll be asked one final time to confirm that you&#8217;re happy to add the new Data Source to your report. Following this, you&#8217;re free to select a graph\u002Fchart and begin using the data.\u003C\u002Fp>\n\u003Cfigure style=\"width: 749px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\" wp-image-3407\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002FBzKPrveI-add-connector-to-report.png?auto=compress%2Cformat&q=90\" alt=\"\" width=\"749\" height=\"376\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">When adding a newly installed Data Source, you&#8217;ll be presented with this modal window\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>A table is the most appropriate display of the data my example is showing. You can see here that I&#8217;ve selected two metrics, Google Rank and Regional Search Volume, and that they&#8217;re being shown in this order in the table. As the data is now read into Data Studio, the Sort and Filter settings work as expected without additional API calls.\u003C\u002Fp>\n\u003Cfigure style=\"width: 1024px\" class=\"wp-caption aligncenter\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\"wp-image-3408 size-large\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F05\u002FLJtGVraY-configuration-metrics-dimensions.png?auto=compress%2Cformat&fit=crop&h=1000&q=90&w=1892\" alt=\"\" width=\"1024\" height=\"630\" \u002F>\u003Cfigcaption class=\"wp-caption-text\">A successful deployment and test of a new Data Source in Data Studio\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Ch2 id=\"questions\">Questions?\u003C\u002Fh2>\n\u003Cp>I&#8217;d be more than happy to take a look at them in the comments below! Please feel free to post code snippets or links to hosted code gists or similar. We&#8217;re interested to see what you&#8217;re achieving with Data Studio Connectors. Good luck!\u003C\u002Fp>\n\u003Ch2 id=\"full-code-example\">Full code example\u003C\u002Fh2>\n\u003Cp>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Faarondicks\u002Fcba3dfefca68139a2ce38676109dc2fb.js\">\u003C\u002Fscript>\u003C\u002Fp>\n",false,"standard",[10,11,12],39,41,37,[],[15],108,[17,18,19,20,21,22,23,24,25],"post-3396","post","type-post","status-publish","format-standard","hentry","category-digital-marketing","category-measurement","category-web",{"page_content_modules":27,"hero":200},[28,157],{"acf_fc_layout":29,"reduced":30,"top_overlap":-1,"bottom_underlap":-1,"disable_observer":30,"title":31,"content":6,"authors":32},"blog_post_content",true,"How to Build a Google Data Studio Community Connector — Tutorial",[33],{"id":34,"path":35,"display_name":36,"job_title":37,"description":38,"avatar_url":39,"acf":40},1,"\u002Fabout\u002Four-team\u002Faaron-dicks\u002F","Aaron Dicks","Chief Technology Officer","Chief Technology Officer of Impression. Previously a developer and SEO, I now oversee our technology- and data-driven services, as well as some of our innovation and software development. Technical problem solver.","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress&fit=crop&fm=jpg&h=150&q=80&w=150&bg=CFE6F9",{"job_title":37,"full_bio":41,"specialist_service_links":42,"photo":101},"\u003Cp>Chief Technology Officer. Co-founded Impression in 2012.\u003C\u002Fp>\n\u003Cp>I’m a self-taught web developer who stumbled into digital marketing through a part time job at University. I went on to work with a number of digital agencies when I was in an in-house marketing manager role which led me to identify an opportunity to start Impression to offer a better service and product.\u003C\u002Fp>\n\u003Cp>Having been here from day one, I’ve held many roles at Impression, but have since settled back into a technology role. I lead our technology and data service design and delivery and also look after some of our internal media software development.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Something that I’m proud of:\u003C\u002Fstrong>\u003Cbr \u002F>\nBuilding a business that can have so many positive impacts across our team, clients and &#8211; in time &#8211; a more positive impact on the community and environment.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Outside of work:\u003C\u002Fstrong>\u003Cbr \u002F>\nYou’ll find me walking my Giant Schnoodle, Otto.\u003C\u002Fp>\n",[43,60,72,82,92],{"page":44,"link_text":48},{"ID":15,"post_author":45,"post_date":46,"post_date_gmt":46,"post_content":47,"post_title":48,"post_excerpt":47,"post_status":49,"comment_status":50,"ping_status":50,"post_password":47,"post_name":51,"to_ping":47,"pinged":47,"post_modified":52,"post_modified_gmt":52,"post_content_filtered":47,"post_parent":53,"guid":54,"menu_order":55,"post_type":56,"post_mime_type":47,"comment_count":57,"filter":58,"url_path":59},"98","2020-12-16 14:36:55","","Digital Marketing Strategy","publish","closed","strategy","2025-10-29 17:34:16",33,"\u002F?page_id=108",0,"page","0","raw","\u002Fdigital-marketing\u002Fstrategy\u002F",{"page":61,"link_text":71},{"ID":62,"post_author":63,"post_date":64,"post_date_gmt":64,"post_content":47,"post_title":65,"post_excerpt":47,"post_status":49,"comment_status":50,"ping_status":50,"post_password":47,"post_name":66,"to_ping":47,"pinged":47,"post_modified":67,"post_modified_gmt":67,"post_content_filtered":47,"post_parent":68,"guid":69,"menu_order":55,"post_type":56,"post_mime_type":47,"comment_count":57,"filter":58,"url_path":70},24830,"1","2023-09-09 12:14:08","Media Measurement","measurement","2026-09-25 10:45:33",17552,"\u002F?page_id=24830","\u002Fmedia-solutions\u002Fmeasurement\u002F","Media Effectiveness & MMM",{"page":73,"link_text":76},{"ID":74,"post_author":45,"post_date":75,"post_date_gmt":75,"post_content":47,"post_title":76,"post_excerpt":47,"post_status":49,"comment_status":50,"ping_status":50,"post_password":47,"post_name":77,"to_ping":47,"pinged":47,"post_modified":78,"post_modified_gmt":78,"post_content_filtered":47,"post_parent":79,"guid":80,"menu_order":55,"post_type":56,"post_mime_type":47,"comment_count":57,"filter":58,"url_path":81},244,"2020-12-21 14:32:54","CRO","cro","2026-04-13 10:27:20",24873,"\u002F?page_id=244","\u002Fdigital-experience\u002Fcro\u002F",{"page":83,"link_text":91},{"ID":84,"post_author":45,"post_date":85,"post_date_gmt":85,"post_content":47,"post_title":86,"post_excerpt":47,"post_status":49,"comment_status":50,"ping_status":50,"post_password":47,"post_name":87,"to_ping":47,"pinged":47,"post_modified":88,"post_modified_gmt":88,"post_content_filtered":47,"post_parent":55,"guid":89,"menu_order":55,"post_type":56,"post_mime_type":47,"comment_count":57,"filter":58,"url_path":90},374,"2021-01-11 16:25:32","Analytics","analytics","2026-09-28 11:36:16","\u002F?page_id=374","\u002Fanalytics\u002F","Enterprise Analytics",{"page":93,"link_text":96},{"ID":94,"post_author":45,"post_date":95,"post_date_gmt":95,"post_content":47,"post_title":96,"post_excerpt":47,"post_status":49,"comment_status":50,"ping_status":50,"post_password":47,"post_name":97,"to_ping":47,"pinged":47,"post_modified":98,"post_modified_gmt":98,"post_content_filtered":47,"post_parent":55,"guid":99,"menu_order":55,"post_type":56,"post_mime_type":47,"comment_count":57,"filter":58,"url_path":100},20655,"2023-01-04 14:22:27","CRM","crm","2025-03-13 14:52:45","\u002F?page_id=20655","\u002Fcrm\u002F",{"ID":102,"id":102,"title":103,"filename":104,"filesize":105,"url":106,"link":107,"alt":47,"author":108,"description":47,"caption":47,"name":109,"status":110,"uploaded_to":55,"date":111,"modified":111,"menu_order":55,"mime_type":112,"type":113,"subtype":114,"icon":115,"width":116,"height":117,"sizes":118},25129,"Aaron-Dicks2","Aaron-Dicks2.png",305948,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&q=90","\u002Faaron-dicks2\u002F","12","aaron-dicks2","inherit","2023-10-03 15:58:10","image\u002Fpng","image","png","\u002Fwp\u002Fwp-includes\u002Fimages\u002Fmedia\u002Fdefault.png",696,600,{"thumbnail":119,"thumbnail-width":120,"thumbnail-height":120,"medium":121,"medium-width":122,"medium-height":123,"medium_large":124,"medium_large-width":125,"medium_large-height":126,"large":127,"large-width":128,"large-height":129,"1536x1536":130,"1536x1536-width":131,"1536x1536-height":132,"2048x2048":133,"2048x2048-width":134,"2048x2048-height":135,"post-thumbnail":136,"post-thumbnail-width":137,"post-thumbnail-height":138,"12_col":139,"12_col-width":140,"12_col-height":141,"default_landscape":142,"default_landscape-width":143,"default_landscape-height":117,"default_portrait":144,"default_portrait-width":117,"default_portrait-height":143,"6_col_and_margin_short":145,"6_col_and_margin_short-width":137,"6_col_and_margin_short-height":141,"11_col_and_margin":146,"11_col_and_margin-width":147,"11_col_and_margin-height":141,"9_col_rectangle":148,"9_col_rectangle-width":149,"9_col_rectangle-height":150,"11_col":151,"11_col-width":152,"11_col-height":141,"staff_image_696_600":153,"staff_image_696_600-width":116,"staff_image_696_600-height":117,"rectangular_thumbnail":154,"rectangular_thumbnail-width":155,"rectangular_thumbnail-height":156},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640","640","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=scale&h=172&q=90&w=200",200,172,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=scale&h=662&q=90&w=768",768,662,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=1000&q=90&w=1892","1892","1000","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=scale&h=1324&q=90&w=1536",1536,1324,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=scale&h=1766&q=90&w=2048",2048,1766,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=1180&q=90&w=1860",1860,1180,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2880",2880,870,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=600&q=90&w=800",800,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=800&q=90&w=600","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=1860","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=3080",3080,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=1400&q=90&w=2150",2150,1400,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2640",2640,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=600&q=90&w=696","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress%2Cformat&fit=crop&h=300&q=90&w=750",750,300,{"acf_fc_layout":158,"reduced":30,"top_overlap":159,"bottom_underlap":159,"disable_observer":-1,"heading":160,"cta_text":161,"cta_link":162,"items":163},"related_module","small","See more posts","See all articles","\u002Fblog\u002F",[164,176,186],{"type_key":18,"title":165,"excerpt":166,"to":167,"postedAt":168,"readingTime":169,"image":170,"authors":171,"category":173},"A guide to WebMCP for marketing leaders","\u003Cp>The structure of web traffic is undergoing a fundamental structural transition. We’re certainly seeing the impacts of these changes en masse. Whilst SEO visibility is driving, in part, Generative Engine Optimisation (&#8220;GEO&#8221;) visibility, clicks in traditional SEO rankings are harder to come by, and customer behaviour is fragmented as users are using new places to [&hellip;]\u003C\u002Fp>\n","\u002Fblog\u002Fa-guide-to-webmcp-for-marketing-leaders\u002F","2026-08-27T13:51:35",13,"https:\u002F\u002Fimages.impression.co.uk\u002F2026\u002F08\u002Fyasa-design-studio-Ot2wQ8jF43s-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640",[172],{"name":36,"image":39},{"to":174,"name":175},"\u002Fblog\u002Fcategory\u002Fdigital-marketing\u002F","Digital Marketing",{"type_key":18,"title":177,"excerpt":178,"to":179,"postedAt":180,"readingTime":181,"image":182,"authors":183,"category":185},"Navigating Agentic Commerce with Universal Commerce Protocol","\u003Cp>As artificial intelligence transitions from information retrieval to autonomous task execution, the underlying infrastructure supporting ecommerce is undergoing a fundamental architectural shift.&nbsp; The Universal Commerce Protocol (&#8220;UCP&#8221;) provides the unified communication layer required for AI agents to browse, negotiate, and execute transactions directly across merchant back-ends such as payment gateways. It’s an open-source standard co-developed [&hellip;]\u003C\u002Fp>\n","\u002Fblog\u002Fnavigating-agentic-commerce-with-universal-commerce-protocol\u002F","2026-08-27T13:51:17",9,"https:\u002F\u002Fimages.impression.co.uk\u002F2026\u002F08\u002Fa-c-dqg4QeDNUi8-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640",[184],{"name":36,"image":39},{"to":174,"name":175},{"type_key":18,"title":187,"excerpt":188,"to":189,"postedAt":190,"readingTime":191,"image":192,"authors":193,"category":197},"Beyond ad-level data: Unlocking granular product insights for Meta","\u003Cp>Standard Meta Ads reporting traditionally stops at the ad level, leaving e-commerce brands in the dark about which specific products are actually driving traffic on social platforms. While Dynamic Product Ads (DPAs) are incredibly powerful, they aggregate performance across multiple items, making it difficult to isolate individual product success.&nbsp; To bridge this data gap, the [&hellip;]\u003C\u002Fp>\n","\u002Fblog\u002Funlocking-granular-product-insights-for-meta\u002F","2026-06-24T14:13:48",4,"https:\u002F\u002Fimages.impression.co.uk\u002F2026\u002F06\u002Fallison-saeng-B7VlWt3pRM0-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640",[194],{"name":195,"image":196},"Zoe Le","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F08\u002FZoe-Le-NEW.png?auto=compress&fit=crop&fm=jpg&h=150&q=80&w=150&bg=CFE6F9",{"to":198,"name":199},"\u002Fblog\u002Fcategory\u002Fmeasurement\u002F","Measurement",{"type":201,"style":202,"heading":31,"date":4,"updatedAt":203,"reading_minutes":181,"image":47,"imageAlt":31,"categories":204,"collections":552},"blog-post","light","2022-02-07T16:48:34",[205,385,468],{"id":10,"count":206,"description":207,"link":174,"name":175,"slug":208,"taxonomy":209,"parent":55,"meta":210,"acf":211,"head_links":212,"resource_count":213,"yoast_title":214,"yoast_meta":215,"yoast_json_ld":260,"_links":357,"path":174},282,"\u003Cp class=\"p1\">Keeping up to date with the latest digital trends, strategies, and announcements can be difficult. Our experts regularly blog about the digital marketing news that’s stirring up the industry, so check back regularly or \u003Ca href=\"\u002Fnewsletter\u002F\">sign up to our newsletter\u003C\u002Fa> to stay informed!\u003C\u002Fp>\r\n\u003Cp class=\"p1\">\u003Cspan style=\"font-weight: 400\">Impression is a multi-award-winning \u003C\u002Fspan>\u003Ca href=\"\u002Fdigital-marketing\u002F\">\u003Cspan style=\"font-weight: 400\">digital marketing agency\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"font-weight: 400\"> that provides services\u003C\u002Fspan> that provides services including \u003Ca href=\"\u002Fdigital-marketing\u002Fstrategy\u002F\">Strategy\u003C\u002Fa>, \u003Ca href=\"\u002Fseo\u002F\">SEO\u003C\u002Fa>, \u003Ca href=\"\u002Fpaid-media\u002Fppc\u002F\">PPC\u003C\u002Fa>, \u003Ca href=\"\u002Fdigital-experience\u002Fcro\u002F\">CRO\u003C\u002Fa>, \u003Ca href=\"\u002Fpr-social\u002Fdigital-pr\u002F\">PR\u003C\u002Fa>, \u003Ca href=\"\u002Fanalytics\u002F\">Analytics\u003C\u002Fa> and \u003Ca href=\"\u002Fmedia-solutions\u002Fmedia-effectiveness\u002F\">Media Effectiveness\u003C\u002Fa> to its wide range of clients. Browse our latest thinking around digital marketing below, or \u003Ca href=\"\u002Fget-in-touch\u002F\">get in touch\u003C\u002Fa> to discuss how we can help you.\u003C\u002Fp>","digital-marketing","category",[],{"sub_title_override":47,"title_override":47,"hidden":7},[],96,"Digital Marketing Blog | Tips, Advice & Guides | Impression",[216,218,221,224,227,230,233,235,237,239,242,245,248,251,254,257],{"property":217,"content":214},"title",{"property":219,"content":220},"description","Keeping up to date with the latest digital marketing trends, strategies, and announcements can be difficult. Browse our tips and advice in our latest blogs!",{"name":222,"content":223},"robots","index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1",{"property":225,"content":226},"canonical","https:\u002F\u002Fadmin.impressiondigital.com\u002Fblog\u002Fcategory\u002Fdigital-marketing\u002F",{"name":228,"content":229},"og:locale","en-GB",{"property":231,"content":232},"og:type","article",{"property":234,"content":214},"og:title",{"property":236,"content":220},"og:description",{"property":238,"content":226},"og:url",{"property":240,"content":241},"og:site_name","Impression",{"property":243,"content":244},"og:image","https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F06\u002FABFPXguH-Opengraph-BLUE.jpg?auto=compress%2Cformat&q=90",{"property":246,"content":247},"og:image:width",1200,{"property":249,"content":250},"og:image:height",630,{"property":252,"content":253},"og:image:type","image\u002Fjpeg",{"property":255,"content":256},"twitter:card","summary_large_image",{"property":258,"content":259},"twitter:site","@impressiontalk",{"@context":261,"@graph":262},"https:\u002F\u002Fschema.org",[263,271,280,290],{"@type":264,"@id":265,"url":265,"name":214,"isPartOf":266,"description":220,"breadcrumb":268,"inLanguage":270},"CollectionPage","https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fdigital-marketing\u002F",{"@id":267},"https:\u002F\u002Fwww.impressiondigital.com\u002F#website",{"@id":269},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fdigital-marketing\u002F#breadcrumb","en",{"@type":272,"@id":269,"itemListElement":273},"BreadcrumbList",[274,278],{"@type":275,"position":34,"name":276,"item":277},"ListItem","Home","https:\u002F\u002Fwww.impressiondigital.com\u002F",{"@type":275,"position":279,"name":175},2,{"@type":281,"@id":267,"url":277,"name":241,"description":47,"publisher":282,"inLanguage":229,"potentialAction":284},"WebSite",{"@id":283},"https:\u002F\u002Fwww.impressiondigital.com\u002F#organization",{"@type":285,"target":286,"query-input":289},"SearchAction",{"@type":287,"urlTemplate":288},"EntryPoint","https:\u002F\u002Fwww.impressiondigital.com\u002Fsearch?q={search_term_string}","required name=search_term_string",{"@type":291,"@id":283,"name":241,"url":277,"logo":292,"image":298,"sameAs":299,"@context":303,"email":304,"foundingDate":305,"legalName":306,"vatID":307,"description":308,"telephone":309,"address":310,"location":317,"areaServed":350},"Organization",{"@type":293,"inLanguage":229,"@id":294,"url":295,"contentUrl":295,"width":296,"height":297,"caption":241},"ImageObject","https:\u002F\u002Fwww.impressiondigital.com\u002F#\u002Fschema\u002Flogo\u002Fimage\u002F","https:\u002F\u002Fcdn.impression.co.uk\u002F2021\u002F06\u002FA5LuTDrq-Impression_Wordmark.png",920,176,"https:\u002F\u002Fcdn.impression.co.uk\u002F2021\u002F04\u002FFAVxDeOS-Nottingham.jpg",[300,301,302],"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fimpression-digital-limited","https:\u002F\u002Fwww.facebook.com\u002Fimpression\u002F","https:\u002F\u002Fwww.instagram.com\u002Fimpressiontalk\u002F","https:\u002F\u002Fwww.schema.org\u002F","hello@impressiondigital.com","2012-11-07","Impression Digital Limited","GB186363774","Impression is an award-winning digital marketing agency based in the UK and USA. We offer SEO agency, PPC agency, Digital PR agency and Analytics services to companies of all sizes across the UK, North America, Europe and beyond. Get in touch with us if you think we can work together.","01158 242 212",{"@type":311,"streetAddress":312,"addressLocality":313,"addressRegion":314,"postalCode":315,"addressCountry":316},"PostalAddress","Fothergill House, 16 King Street","Nottingham","Nottinghamshire","NG1 2AS","United Kingdom",[318,327,339],{"@type":319,"name":320,"geo":321,"address":325,"photo":298,"telephone":326},"Place","Impression Digital - Nottingham",{"@type":322,"latitude":323,"longitude":324},"GeoCoordinates","52.95501401025914","-1.1494887460285232",{"@type":311,"streetAddress":312,"addressLocality":313,"addressRegion":314,"postalCode":315,"addressCountry":316},"+44 01158 242 212",{"@type":319,"name":328,"geo":329,"address":332,"photo":337,"telephone":338},"Impression Digital - London",{"@type":322,"latitude":330,"longitude":331},"51.50237208377361","-0.09229841534284115",{"@type":311,"streetAddress":333,"addressLocality":334,"addressRegion":335,"postalCode":336,"addressCountry":316},"201 Borough High St","Southwark","London","SE1 1JA","https:\u002F\u002Fcdn.impression.co.uk\u002F2021\u002F04\u002FwD0pPVWz-London.jpg","+44 020 7112 8148",{"@type":319,"name":340,"geo":341,"address":344},"Impression Digital - New York",{"@type":322,"latitude":342,"longitude":343},"40.726722746949","-74.00527778220652",{"@type":311,"streetAddress":345,"addressLocality":346,"addressRegion":347,"postalCode":348,"addressCountry":349},"160 Varick St","New York","NY","10013","USA",[351,354,356],{"@type":352,"name":353},"Country","Worldwide",{"@type":352,"name":355},"GBR",{"@type":352,"name":349},{"self":358,"collection":364,"about":367,"wp:post_type":370,"curies":381},[359],{"href":360,"targetHints":361},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcategories\u002F39",{"allow":362},[363],"GET",[365],{"href":366},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcategories",[368],{"href":369},"\u002Fwp-json\u002Fwp\u002Fv2\u002Ftaxonomies\u002Fcategory",[371,373,375,377,379],{"href":372},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts?categories=39",{"href":374},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fwhite_papers?categories=39",{"href":376},"\u002Fwp-json\u002Fwp\u002Fv2\u002Ftools?categories=39",{"href":378},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fwebinars?categories=39",{"href":380},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fevents?categories=39",[382],{"name":383,"href":384,"templated":30},"wp","https:\u002F\u002Fapi.w.org\u002F{rel}",{"id":11,"count":386,"description":387,"link":198,"name":199,"slug":66,"taxonomy":209,"parent":55,"meta":388,"acf":389,"head_links":390,"resource_count":391,"yoast_title":392,"yoast_meta":393,"yoast_json_ld":412,"_links":445,"path":198},129,"Here at Impression, ongoing research and training is a huge part of how we keep our \u003Ca href=\"\u002Fmedia-solutions\u002F\">Media Solutions\u003C\u002Fa> team up-to-date with the latest happenings in the world of web &amp; app analytics, martech, \u003Ca href=\"\u002Fmedia-solutions\u002Fdata-science\u002F\">data science\u003C\u002Fa> and \u003Ca href=\"\u002Fmedia-solutions\u002Fmedia-effectiveness\u002F\">media effectiveness\u003C\u002Fa>. We regularly share our thoughts on the latest digital news right here on our blog, so you can keep up to date too.\r\n\r\nFind out more about our \u003Ca href=\"\u002Fanalytics\u002F\">Analytics Agency\u003C\u002Fa> services, or browse our latest tips, advice and opinions below.",[],{"sub_title_override":47,"title_override":47},[],21,"Online Measurement, Analytics & Effectiveness Blog | Impression",[394,395,397,398,400,401,402,403,404,405,406,407,408,409,410,411],{"property":217,"content":392},{"property":219,"content":396},"Keeping up to date with the latest measurement and analytics trends and strategies can be difficult. Browse our tips and advice in our latest blogs!",{"name":222,"content":223},{"property":225,"content":399},"https:\u002F\u002Fadmin.impressiondigital.com\u002Fblog\u002Fcategory\u002Fmeasurement\u002F",{"name":228,"content":229},{"property":231,"content":232},{"property":234,"content":392},{"property":236,"content":396},{"property":238,"content":399},{"property":240,"content":241},{"property":243,"content":244},{"property":246,"content":247},{"property":249,"content":250},{"property":252,"content":253},{"property":255,"content":256},{"property":258,"content":259},{"@context":261,"@graph":413},[414,419,423,427],{"@type":264,"@id":415,"url":415,"name":392,"isPartOf":416,"description":396,"breadcrumb":417,"inLanguage":270},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fmeasurement\u002F",{"@id":267},{"@id":418},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fmeasurement\u002F#breadcrumb",{"@type":272,"@id":418,"itemListElement":420},[421,422],{"@type":275,"position":34,"name":276,"item":277},{"@type":275,"position":279,"name":199},{"@type":281,"@id":267,"url":277,"name":241,"description":47,"publisher":424,"inLanguage":229,"potentialAction":425},{"@id":283},{"@type":285,"target":426,"query-input":289},{"@type":287,"urlTemplate":288},{"@type":291,"@id":283,"name":241,"url":277,"logo":428,"image":298,"sameAs":429,"@context":303,"email":304,"foundingDate":305,"legalName":306,"vatID":307,"description":308,"telephone":309,"address":430,"location":431,"areaServed":441},{"@type":293,"inLanguage":229,"@id":294,"url":295,"contentUrl":295,"width":296,"height":297,"caption":241},[300,301,302],{"@type":311,"streetAddress":312,"addressLocality":313,"addressRegion":314,"postalCode":315,"addressCountry":316},[432,435,438],{"@type":319,"name":320,"geo":433,"address":434,"photo":298,"telephone":326},{"@type":322,"latitude":323,"longitude":324},{"@type":311,"streetAddress":312,"addressLocality":313,"addressRegion":314,"postalCode":315,"addressCountry":316},{"@type":319,"name":328,"geo":436,"address":437,"photo":337,"telephone":338},{"@type":322,"latitude":330,"longitude":331},{"@type":311,"streetAddress":333,"addressLocality":334,"addressRegion":335,"postalCode":336,"addressCountry":316},{"@type":319,"name":340,"geo":439,"address":440},{"@type":322,"latitude":342,"longitude":343},{"@type":311,"streetAddress":345,"addressLocality":346,"addressRegion":347,"postalCode":348,"addressCountry":349},[442,443,444],{"@type":352,"name":353},{"@type":352,"name":355},{"@type":352,"name":349},{"self":446,"collection":451,"about":453,"wp:post_type":455,"curies":466},[447],{"href":448,"targetHints":449},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcategories\u002F41",{"allow":450},[363],[452],{"href":366},[454],{"href":369},[456,458,460,462,464],{"href":457},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts?categories=41",{"href":459},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fwhite_papers?categories=41",{"href":461},"\u002Fwp-json\u002Fwp\u002Fv2\u002Ftools?categories=41",{"href":463},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fwebinars?categories=41",{"href":465},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fevents?categories=41",[467],{"name":383,"href":384,"templated":30},{"id":12,"count":10,"description":469,"link":470,"name":471,"slug":472,"taxonomy":209,"parent":55,"meta":473,"acf":474,"head_links":475,"resource_count":55,"yoast_title":476,"yoast_meta":477,"yoast_json_ld":496,"_links":529,"path":470},"The way your website is designed and developed has a huge effect on the user experience and likelihood of conversion.\r\n\r\nImpression is an award winning digital agency which delivers results-focused, data driven web projects for a wide range of clients. Our in-house team of designers and web developers works closely with our marketing team to produce \u003Cem>performance websites\u003C\u002Fem> which don't just look great, they perform well across all channels, including search, too.\r\n\r\nCheck out our latest tips, advice, guides and insights into the world of web development now.","\u002Fblog\u002Fcategory\u002Fweb\u002F","Web","web",[],{"hidden":30,"sub_title_override":47,"title_override":47},[],"Web Development Blog | Tips, Advice & Guides | Impression",[478,479,481,482,484,485,486,487,488,489,490,491,492,493,494,495],{"property":217,"content":476},{"property":219,"content":480},"Keeping up to date with the latest web design & dev trends, strategies, and industry movements can be difficult. Browse our latest web development blogs!",{"name":222,"content":223},{"property":225,"content":483},"https:\u002F\u002Fadmin.impressiondigital.com\u002Fblog\u002Fcategory\u002Fweb\u002F",{"name":228,"content":229},{"property":231,"content":232},{"property":234,"content":476},{"property":236,"content":480},{"property":238,"content":483},{"property":240,"content":241},{"property":243,"content":244},{"property":246,"content":247},{"property":249,"content":250},{"property":252,"content":253},{"property":255,"content":256},{"property":258,"content":259},{"@context":261,"@graph":497},[498,503,507,511],{"@type":264,"@id":499,"url":499,"name":476,"isPartOf":500,"description":480,"breadcrumb":501,"inLanguage":270},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fweb\u002F",{"@id":267},{"@id":502},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fweb\u002F#breadcrumb",{"@type":272,"@id":502,"itemListElement":504},[505,506],{"@type":275,"position":34,"name":276,"item":277},{"@type":275,"position":279,"name":471},{"@type":281,"@id":267,"url":277,"name":241,"description":47,"publisher":508,"inLanguage":229,"potentialAction":509},{"@id":283},{"@type":285,"target":510,"query-input":289},{"@type":287,"urlTemplate":288},{"@type":291,"@id":283,"name":241,"url":277,"logo":512,"image":298,"sameAs":513,"@context":303,"email":304,"foundingDate":305,"legalName":306,"vatID":307,"description":308,"telephone":309,"address":514,"location":515,"areaServed":525},{"@type":293,"inLanguage":229,"@id":294,"url":295,"contentUrl":295,"width":296,"height":297,"caption":241},[300,301,302],{"@type":311,"streetAddress":312,"addressLocality":313,"addressRegion":314,"postalCode":315,"addressCountry":316},[516,519,522],{"@type":319,"name":320,"geo":517,"address":518,"photo":298,"telephone":326},{"@type":322,"latitude":323,"longitude":324},{"@type":311,"streetAddress":312,"addressLocality":313,"addressRegion":314,"postalCode":315,"addressCountry":316},{"@type":319,"name":328,"geo":520,"address":521,"photo":337,"telephone":338},{"@type":322,"latitude":330,"longitude":331},{"@type":311,"streetAddress":333,"addressLocality":334,"addressRegion":335,"postalCode":336,"addressCountry":316},{"@type":319,"name":340,"geo":523,"address":524},{"@type":322,"latitude":342,"longitude":343},{"@type":311,"streetAddress":345,"addressLocality":346,"addressRegion":347,"postalCode":348,"addressCountry":349},[526,527,528],{"@type":352,"name":353},{"@type":352,"name":355},{"@type":352,"name":349},{"self":530,"collection":535,"about":537,"wp:post_type":539,"curies":550},[531],{"href":532,"targetHints":533},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcategories\u002F37",{"allow":534},[363],[536],{"href":366},[538],{"href":369},[540,542,544,546,548],{"href":541},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts?categories=37",{"href":543},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fwhite_papers?categories=37",{"href":545},"\u002Fwp-json\u002Fwp\u002Fv2\u002Ftools?categories=37",{"href":547},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fwebinars?categories=37",{"href":549},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fevents?categories=37",[551],{"name":383,"href":384,"templated":30},[],[],[555,557,559,560],{"path":556,"name":276},"\u002F",{"path":162,"name":558},"Blog",{"path":174,"name":175},{"path":561,"name":31},null,[563,564,565],{"id":10,"name":175,"path":174},{"id":11,"name":199,"path":198},{"id":12,"name":471,"path":470},{"title":567,"script":568,"meta":646,"link":671},"How to Build a Google Data Studio Community Connector",[569],{"type":570,"key":571,"innerHTML":572},"application\u002Fld+json","yoast-json-ld",{"@context":261,"@graph":573},[574,597,605,606,614,618,636],{"@type":575,"@id":576,"isPartOf":577,"author":579,"headline":31,"datePublished":581,"dateModified":582,"mainEntityOfPage":583,"wordCount":584,"commentCount":55,"publisher":585,"image":587,"thumbnailUrl":589,"articleSection":590,"inLanguage":229,"potentialAction":591},"Article","https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fbuild-google-data-studio-community-connector\u002F#article",{"@id":578},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fbuild-google-data-studio-community-connector\u002F",{"name":36,"@id":580},"https:\u002F\u002Fadmin.impressiondigital.com\u002F#\u002Fschema\u002Fperson\u002F30905680af47e405c37b9921abb28d99","2017-10-22T17:03:32+00:00","2022-02-07T16:48:34+00:00",{"@id":578},1892,{"@id":586},"https:\u002F\u002Fadmin.impressiondigital.com\u002F#organization",{"@id":588},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fbuild-google-data-studio-community-connector\u002F#primaryimage","https:\u002F\u002Fcdn.impression.co.uk\u002F2021\u002F05\u002FSupermetrics-community-data-studio.png",[175,199,471],[592],{"@type":593,"name":594,"target":595},"CommentAction","Comment",[596],"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fbuild-google-data-studio-community-connector\u002F#respond",{"@type":598,"@id":578,"url":578,"name":567,"isPartOf":599,"primaryImageOfPage":600,"image":601,"thumbnailUrl":589,"datePublished":581,"dateModified":582,"description":602,"breadcrumb":603,"inLanguage":270},"WebPage",{"@id":267},{"@id":588},{"@id":588},"A comprehensive tutorial walking you through the process of setting up a Community Connector to expose and report on custom data.",{"@id":604},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fbuild-google-data-studio-community-connector\u002F#breadcrumb",{"@type":293,"inLanguage":229,"@id":588,"url":589,"contentUrl":589},{"@type":272,"@id":604,"itemListElement":607},[608,609,611,613],{"@type":275,"position":34,"name":276,"item":277},{"@type":275,"position":279,"name":558,"item":610},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002F",{"@type":275,"position":612,"name":175,"item":265},3,{"@type":275,"position":191,"name":31},{"@type":281,"@id":267,"url":277,"name":241,"description":47,"publisher":615,"inLanguage":229,"potentialAction":616},{"@id":283},{"@type":285,"target":617,"query-input":289},{"@type":287,"urlTemplate":288},{"@type":291,"@id":283,"name":241,"url":277,"logo":619,"image":298,"sameAs":620,"@context":303,"email":304,"foundingDate":305,"legalName":306,"vatID":307,"description":308,"telephone":309,"address":621,"location":622,"areaServed":632},{"@type":293,"inLanguage":229,"@id":294,"url":295,"contentUrl":295,"width":296,"height":297,"caption":241},[300,301,302],{"@type":311,"streetAddress":312,"addressLocality":313,"addressRegion":314,"postalCode":315,"addressCountry":316},[623,626,629],{"@type":319,"name":320,"geo":624,"address":625,"photo":298,"telephone":326},{"@type":322,"latitude":323,"longitude":324},{"@type":311,"streetAddress":312,"addressLocality":313,"addressRegion":314,"postalCode":315,"addressCountry":316},{"@type":319,"name":328,"geo":627,"address":628,"photo":337,"telephone":338},{"@type":322,"latitude":330,"longitude":331},{"@type":311,"streetAddress":333,"addressLocality":334,"addressRegion":335,"postalCode":336,"addressCountry":316},{"@type":319,"name":340,"geo":630,"address":631},{"@type":322,"latitude":342,"longitude":343},{"@type":311,"streetAddress":345,"addressLocality":346,"addressRegion":347,"postalCode":348,"addressCountry":349},[633,634,635],{"@type":352,"name":353},{"@type":352,"name":355},{"@type":352,"name":349},{"@type":637,"@id":638,"name":36,"image":639,"description":38,"sameAs":642,"url":645},"Person","https:\u002F\u002Fwww.impressiondigital.com\u002F#\u002Fschema\u002Fperson\u002F30905680af47e405c37b9921abb28d99",{"@type":293,"inLanguage":229,"@id":640,"url":641,"contentUrl":641,"caption":36},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress&fit=fit&fm=jpg&h=96&q=90&w=96069d6f196ce202c9674a411bef4b07a3","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FAaron-Dicks2.png?auto=compress&fit=fit&fm=jpg&h=96&q=90&w=96",[643,644],"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Faarondicks\u002F","https:\u002F\u002Fx.com\u002Fhttps:\u002F\u002Ftwitter.com\u002Faarondicks","https:\u002F\u002Fwww.impressiondigital.com\u002Fabout\u002Four-team\u002Faaron-dicks\u002F",[647,648,649,651,652,653,654,655,656,659,661,663,664,666,667,670],{"name":219,"content":602},{"name":222,"content":223},{"property":228,"content":650},"en_GB",{"property":231,"content":232},{"property":234,"content":567},{"property":236,"content":602},{"property":238,"content":578},{"property":240,"content":241},{"property":657,"content":658},"article:publisher","https:\u002F\u002Fwww.facebook.com\u002Fimpression",{"property":660,"content":581},"article:published_time",{"property":662,"content":582},"article:modified_time",{"property":243,"content":589},{"name":665,"content":36},"author",{"name":255,"content":256},{"name":668,"content":669},"twitter:creator","@https:\u002F\u002Ftwitter.com\u002Faarondicks",{"name":258,"content":259},[]]