# Trevor Fox ## Posts - [Deconstructing ChatGPT Shopping Research Part 1: Simple Search](https://trevorfox.com/2025/11/chatgpts-shopping-feature-part-1-simple-search/): If you’ve used ChatGPT for shopping recently, you’ve likely noticed something different.  Just in time for Black Friday, ChatGPT introduced a major commerce feature that is likely to affect the shopping behavior of the nearly one billion people who use the platform. It’s a new, different, and variably opinionated approach to guiding a buyer to a product. Ask it a shopping-related query, and you’ll get more than a list of linked recommendations. You’ll meet a new “Shopping Assistant” agent that, from behind the curtain, walks you through a personalized quiz and curated recommendations, creating a system that seems to understand […] - [Introducing ChatGPT Entities: The Hidden Structured Data Powering AI Search](https://trevorfox.com/2025/11/introducing-chatgpt-entities-the-hidden-structured-data-powering-ai-search/): I first noticed an interesting ChatGPT feature while demoing my ChatGPT Search Insights tool for Jeremy Galante, who leads SEO at ClickUp, during the Ahrefs Evolve conference a few weeks ago. We were looking into a strategy that he was just rolling out, and we saw this. He said, “Can you screenshot that for me?”  This is what I sent him.  Jeremy is the “growth hacker” kind of SEO, like me, so I have to imagine the same thing was going through our minds. What is this thing, and how can I take advantage of it?  That was on October […] - [ChatGPT Hints and Modes: Exploring the Growth Opportunities Behind Them](https://trevorfox.com/2025/11/chatgpt-hints-and-modes-exploring-the-growth-opportunities-behind-them/): One of my favorite ways to identify or scale up growth tactics is to reverse engineer the platforms that direct people’s attention and shape their perception. ChatGPT, like Google, Facebook, and LinkedIn before it presents the biggest opportunity today—both in terms of overall growth expectations and leverage. (It’s early!) ChatGPT has several interesting components that, if you understand how they work, you can leverage to increase visibility and influence. These include the layers of instructions provided to ChatGPT’s models before a chat starts, the use of search and engagement with external content, and the chat UI features that ChatGPT continues […] - [SEO SQL Pattern #3: Grouping and filtering URLs for content analysis](https://trevorfox.com/2025/07/seo-sql-pattern-3-grouping-and-filtering-urls-for-content-analysis/): The final two SQL patterns posts focus on the core components of search: content and keywords. Today we’ll analyze how content (URLs) attracts traffic from search, and we’ll wrap up the series by analyzing how users search for that content. The URL dimension is perhaps the most important dimension in SEO because it represents the only part of search you have complete control over: the content you create and optimize. Analyzing URL performance reveals the patterns behind the kinds of content Google deems to be best suited to search demand, and where opportunities or issues may be hiding. The best […] - [Attio Analytics Tooling: My Search for a Lightweight, Flexible GTM Analytics Stack](https://trevorfox.com/2025/06/attio-analytics-tooling-comparison/): A couple of weeks ago, while building out a scoring and segmentation model for a client, I arrived at a situation that Attio’s built-in reporting was not capable of handling. I explored a few options for analyzing prospect data (People and Companies) with varying degrees of success. I wrote this post to help you think about your options and potentially help you avoid exploring undesirable paths. TL;DR: I wanted a simple, flexible, cloud-based way to analyze and segment CRM data from Attio. After exploring Google Sheets, BigQuery, and some DIY pipelines, I settled on Definite, a data platform that strikes […] - [SEO SQL Pattern #2: Analyzing performance over time](https://trevorfox.com/2025/02/seo-sql-patterns-2-analyzing-performance-over-time/): The time dimension is often overlooked in digital analytics. We take it for granted because the whole point of digital marketing is to grow—traffic, customers, and revenue—over time. Performance is inherently a factor of time! This post follows from the post on Pattern #1, which is all about ranking data and does not take time for granted. In fact, by the end of it, you’ll probably be tired of hearing about it.  I’ll introduce four typical ways of thinking about performance with regard to time, and I’ll share my favorite ways to follow these patterns in BigQuery SQL. I introduce […] - [SEO SQL Pattern #1: Aggregating Position Metrics and CTR Curves](https://trevorfox.com/2025/01/aggregating-position-metrics-and-ctr-curves/): Google Search Console only provides a few metrics: impressions, clicks, CTR, and average position. The first three are easy to understand, but the average position can trip up even the savviest analyst if they’re not careful. That’s why I started this series on SQL Patterns for SEO with a (perhaps overly) thorough explanation of how to aggregate and analyze the position metrics. I’ll describe the sum_top_position (and sum_position) metric, explain how and why it’s stored that way, and how to calculate average position and analyze CTR curves correctly. What is sum_top_position? Google Search Console data includes a metric called sum_top_position, […] - [Using ChatGPT in Google Sheets for Classification (custom function included)](https://trevorfox.com/2024/12/using-chatgpt-in-google-sheets-for-classification-custom-function-included/): Classification is the generative AI-based pattern I use most frequently. Why? Three reasons: It’s perfect for tackling big tasks where 80% accuracy on 100% of cases is better than 100% accuracy on just 20%. This week alone, I’ve used classification to: Since Google Sheets is one of my go-to tools for small/quick data problems, I wanted an easy and extensible method for doing classification that was “built-in.” App Script makes it dead simple to create custom Google Sheets functions, so I made a CLASSIFY function to do the trick. Why Classification? The prompts are deceptively simple. They boil down to […] - [Three Ways to Find the Exact Date of a LinkedIn Post](https://trevorfox.com/2024/11/how-to-find-the-exact-date-of-a-linkedin-post/): I needed to know when a post was posted… I was recently working with a client who had impressive success driving new leads via leadership posts on LinkedIn. We found a reliable relationship between posting and commercial activity, whether in DMs or on their marketing site.  The problem was that I wanted to know exactly which post drove which leads (and how many). In other words, this was the problem as old as marketing: attribution. As you probably know, LinkedIn doesn’t exactly make this easy. It displays posting dates relative to the current date (e.g., 18hr, 4d, or 1w). So, […] - [Google Search Console Monthly Performance Emails in SQL Tutorial](https://trevorfox.com/2024/09/google-search-console-monthly-performance-emails-in-sql-tutorial/): At the beginning of every month, Google Search Console sends out its Monthly Search Performance email to site owners. Each month I receive this email, I’m reminded of two things: 1) My site’s performance doesn’t really change much, and 2) These statistics are a great way to demonstrate how to write SQL for the Google Search Console BigQuery integration. The nice thing about these reports is that the SQL is pretty simple and easy for beginners to grasp. Every one of the statistics is a simple aggregation over the past month’s data. If you’re new to SQL, offer a template […] - [Longtail Query Analysis in BigQuery using Levenshtein Distance](https://trevorfox.com/2024/09/levenstein-distance-in-bigquery-for-longtail-keyword-analysis/): A few days ago, Cyrus Shepard posted an example about using Levenshtein distance to compute the similarity or dissimilarity (aka the edit distance) between two strings. His example showed how to apply Levenshtein distance in Google Sheets in the context of written content, but it inspired me to demonstrate another common application: query similarity.  Since I’m teaching a course on SQL for SEO, this inspired me to demonstrate how you would calculate Levenshtein distance in BigQuery to group similar queries together and aggregate their impressions and clicks. If you want to join the course, use the promo code “CYRUS” to […] - [A Primer on Google Search Console Tables in BigQuery](https://trevorfox.com/2024/07/google-search-console-tables-in-bigquery/): Discover the differences between the searchdata_url_impression and searchdata_site_impression tables, and learn how they can help you analyze your site's performance at different levels of granularity. - [Fostering Collaborative Analytics: A Founder's Guide](https://trevorfox.com/2023/11/fostering-collaborative-analytics-a-founders-guide/): In today’s all-or-nothing startup environment, young businesses need to be near-perfect in every aspect to succeed. As startups grow, analytics is the key to success. And yes, data-driven insights can be a game-changer. However, a widespread challenge persists: most startups struggle to integrate analytics seamlessly into their day-to-day business operations. As a founder, you have a unique opportunity to tackle this problem head-on and foster a culture of collaborative analytics within your organization. In this blog post, we’ll explore how you can address this challenge by promoting collaborative analytics, with a focus on culture, tooling, and a practical example involving […] - [Fix your Vitamix's variable speed control with $35 and a screwdriver](https://trevorfox.com/2023/11/fix-your-vitamix-variable-speed-control/): Finally, I had enough of it. Whenever I turned on my Vitamix, it was all or nothing—high or higher. The variable speed dial stopped working. No matter what speed the Vitamix was set to, I could only choose from high or flip the switch to super turbo. This led to several protein shake explosions (It didn’t help that we lost the center cap to the Vitamix lid.) and a noise that my four-year-old would run from.  The good news is, it was an easy fix: just four screws and a $34.18 replacement part. Before Turning the speed dial does not […] - [Understanding SQLX and Javascript in Dataform](https://trevorfox.com/2023/10/understanding-sqlx-and-javascript-in-dataform/): When you think of “programming languages for data,” Javascript probably doesn’t even make the list. Yet, if you’re using Dataform, it’s almost impossible to avoid. As you’ll learn in this article, Dataform is Javascript all the way down. Even SQLX files that you write are pretty much just Javascript files under the covers. So shed whatever fears you have about the confusingly named language, grab a cup of ☕, and get ready to get intimate with the finer points of how Dataform works. First, the big picture There are three things to know about how Dataform works with Javascript. First […] - [How does Dataform work? A primer on the ref function](https://trevorfox.com/2023/10/how-does-dataform-work-a-primer-on-the-ref-function/): You may have heard about Dataform or even be curious about using it. If so, you’re in the right place. My goal in this post is to introduce the tool and the interesting story and technology behind it. We’ll start with a brief history, then zoom through the context in which it arose, and finally get into the technical details of how it works. Dataform is an analyst-friendly data transformation tool that makes it easy to manage ELT pipelines with just SQL. In other words, it removes much of the complex data engineering work of transforming messy tables into datasets […] - [LG Dryer not heating and stuck in Cooling Mode? Fix it with $10 & a screwdriver.](https://trevorfox.com/2023/10/lg-dryer-stuck-in-cooling-mode-and-wont-heat-fix/): Recently, I had a problem with my LG dryer. I could turn it on, and it would run, but the clothes never dried because the dryer didn’t create any heat. On top of that, the cooling indicator light remained on from the beginning of the cycle until the end. It turned out that it was an easy fix. The hardest part was waiting for the parts to arrive from Amazon. 🙂 In this post, I’ll share my journey to diagnose and fix this common problem and show you how you can fix it for about $10, a couple of hours, […] - [How to check if your LinkedIn Insight Tag Pixel Is Working](https://trevorfox.com/2023/09/how-to-check-if-your-linkedin-insight-tag-pixel-is-working/): You’ve just added your LinkedIn Insight Tag to your website, and you want to see if it’s working. If you read Linkedin’s documentation, they will offer up this advice:  “You can check the status in Campaign Manager by navigating to Account Assets → Insight Tag. Once the Insight Tag is installed on your website and a LinkedIn member visits, your domain will appear “active.” Tag activation may take up to 24 hours, depending on your website traffic.” What if you’re impatient like me, and you want to know if it’s working right now!? There are two easy steps to see […] - [Viral Promotion in B2B • GrowthStudy #1](https://trevorfox.com/2023/05/viral-promotion-in-b2b/): I’ve been asked for case studies, so I figured I’d create a little series of shorts that are a mashup of growth hacks and case studies. I’ve unimaginatively named them GrowthStudies. Here we go! There aren’t many easy ways to get viral promotion in B2B, But I’ve seen one work consistently. Best of all, it reduces campaign CPA and generates highly relevant leads! Here’s how it works… When I was at Census, we ran a webinar with an influencer in the data space to promote their new book. We offered a free copy of the book to anybody that got […] - [Google Search Console to BigQuery: The Complete Guide to GSC Bulk Export](https://trevorfox.com/2023/03/google-search-console-bulk-export-for-bigquery/): You may have heard the hype about integrating Google Search Console and Google BigQuery using the new Bulk Export feature. If you’re like me, you recognize the power of analyzing SEO data with SQL or the BI tool of your choice (you’ve probably heard of Looker and Looker Studio). Or you might be thinking to yourself, “So what? I have a spreadsheet program that works just fine.”  If you want to understand what GSC+BQ means for SEO analytics, keep reading—I will tell you.  If you just want to get into the details of using BigQuery with Google Search Console, skip […] - [SQL for SEO: A step-by-step keyword analytics tutorial](https://trevorfox.com/2023/02/seo-analytics-in-sql-for-beginners-a-step-by-step-tutorial/): I’ve had a few SEO consulting projects lately that have given me a chance to work with many more keywords than anybody should be working within a spreadsheet. When I come across these types of projects, I use the same workflow: bring all the data into a database and run the analyses in SQL. I find it immensely satisfying to work with SQL for a couple of reasons: 1) it gives me a sense of validation for all the time I spent learning SQL, and 2) it’s just a better, more scalable, less error-prone way to do analytics.  Now, with […] - [The Complete LinkedIn Industry List (+ Linked Ads Categories)](https://trevorfox.com/2023/01/complete-linkedin-industry-list/): There are 416 industry labels to choose from to categorize a company page. However, LinkedIn Ads only allows advertisers to target based on 20 industry segments. Each of these 416 industry labels belongs to one of these 20 industry segments. That discrepancy amounts to a big problem for advertisers who want to run highly targeted account-based campaigns for a specific ideal customer profile (ICP).  A poignant example of this is demonstrated by the different labels between two well-known brands: Nike and Adidas. As you can see on their company pages, Nike has chosen a sensible category, “Retail,” which rolls up […] - [A better way to LISTAGG in Google Sheets (with Pivot Tables)](https://trevorfox.com/2023/01/a-better-way-to-listagg-in-google-sheets-with-pivot-tables/): The SQL LISTAGG function in Snowflake or Redshift (or STRING_AGG in BigQuery) are aggregation functions that condense textual data into easy-to-view reports. Similar to other aggregation functions (like SUM or MAX), these functions aggregate data according to the column names in a GROUP BY clause.  This is a common pattern for rolling up a column with a large variety of values into a column with less variety. You might like: From Spreadsheets to SQL: Step one towards a minimum viable data stack How LISTAGG works in SQL Here’s an example of what it would look like in BigQuery.  Let’s say […] - [Linkedin Ads Company Targeting Options and Statistics for 2023](https://trevorfox.com/2023/01/linkedin-ads-company-targeting-options-2023/): Company targeting is one of the most unique advertising features of Linkedin Ads. No other advertising platform has access to such an extensive and up-to-date employer-employee data set. For that reason, no other platform can natively support targeting audiences based on their employer. This makes Linkedin Ads an indispensable platform for B2B marketers and the only platform designed for ABM (Account-Based Marketing). It’s a powerful feature, but you have to be careful! Linkedin Ads Manager allows you to target companies based on company segments that are frequently less granular than you’d like. Additionally, there is no way of knowing precisely […] - [Customer segmentation vs. Personas: When to use and how to choose](https://trevorfox.com/2022/12/customer-segmentation-vs-personas-when-to-use-and-how-to-choose/): Let’s say you want to create a new email campaign to drive sales. Should you use customer segmentation or personas? What if you want to run an A/B test on a website? Which should you use? It’s time to develop a new feature for your SaaS product… you get the idea.  Customer segmentation and personas are two essential concepts in marketing and product development that can help businesses better understand and serve their customers. While they are related, they are not the same thing, and it’s critical to understand the differences between the two to use them in your marketing […] - [Writing Custom Dimension to Google Analytics from Snowflake DB](https://trevorfox.com/2022/04/writing-customer-dimension-to-google-analytics-from-snowflake-db/): Like many data geeks, Google Analytics first sparked my curiosity. Last week, Census released our Google Analytics integration. I could write a long list of game-changing applications for creating custom dimensions in Google Analytics from data in a Snowflake data warehouse, but I’ve been swirling around one that I find particularly interesting. Here’s what I’m thinking. Census, as you’d imagine, has a long sales cycle. It’s a freemium product in the middle of multiple stakeholders and touchpoints. Unsurprisingly, it’s easy for us to lose the connection between early marketing efforts and later sales outcomes. Lead scores based on demographics, activity, content consumption, or product usage […] - [Setting up Airbyte ETL: Minimum Viable Data Stack Part II](https://trevorfox.com/2021/08/setting-up-airbyte-etl-minimum-viable-data-stack/): In the first post in the Minimum Viable Data Stack series, we set up a process to start using SQL to analyze CSV data. We set up a Postgres database instance on a Mac personal computer, uploaded a CSV file, and wrote a query to analyze the data in the CSV file.  That’s a good start! You could follow that pattern to do some interesting analysis on CSV files that wouldn’t fit in Excel or Google Sheets. But that pattern is slow and requires you to continually upload new data as new data becomes available.  This post will demonstrate how […] - [From Spreadsheets to SQL: Step One towards the Minimum Viable Data Stack](https://trevorfox.com/2021/07/from-spreadsheets-to-sql/): “A spreadsheet is just data in single-player mode” Last week I made a mistake. I boldly claimed that “A spreadsheet is just data in single-player mode.” And while I stand by that claim. I didn’t expect to be called to account for it. As it turns out, the post was pretty popular and I think I know why. To me it boils down to five factors.  The hard part? You have to pull yourself away from spreadsheets for a while—go slow to go fast (and big). You’ll thank yourself in the end. Being able to think about data at scale […] - [There's something to learn from black hat SEO tactics for PDF files](https://trevorfox.com/2021/07/theres-something-to-learn-from-black-hat-seo-tactics-for-pdf-files/): Go search Google for “free tiktok followers” and you will see some brilliant, although dirty #blackhat #SEO. Most of the top ten results belong to a spammer who has hacked into dozens of sites and created fake profiles and uploaded .pdf files to public directories with spun content. That scam is surprising, but what’s particularly interesting is why it works. It demonstrates that, in spaces with emerging volumes of low competition, competitors can win by just having one or two solid ranking factors despite featuring absolute garbage content. For example, the City of Neehaw, Wisconsin, runs a WordPress site that […] - [Google Analytics 4 Pageview Custom Dimensions and Content Groupings](https://trevorfox.com/2021/06/google-analytics-4-page-view-customer-dimensions-and-content-groupings/): I decided it’s time I’d learn GA4 so I figured I’d implement it net new and figure it out along the way. A couple of things I rely on heavily on my sites are Content Groupings and Custom Dimensions. Luckily, GA4 handles these a lot better than UA—even if they are still a bit cumbersome. I learned that there is only one Content Group parameter called content_group (instead of 5). It seems at first glance that event-scoped custom dimensions are capable of doing that which content groups used to handle (thanks to the new event-first rather than session-first paradigm). To set customer […] - [(Re) Defining Growth Experiments](https://trevorfox.com/2021/04/re-defining-growth-experiments/): I believe above all else, the role of Growth in an organization is to learn. Of course, the objective is to learn in the service of growth but I believe that the growth role is different than many traditional roles because the role demands that you navigate through a lot of ambiguity to optimize for the fit and volume of transactions between a product and it’s customers. Learning is the best antidote to ambiguity. I’ve been stuck on terminology lately. The more I’ve spoken with people or read on the topic, the more interpretations of the term “growth experiment” I’ve […] - [Read This Before You Run Your First SEO A/B Test](https://trevorfox.com/2021/02/read-this-before-you-run-your-first-seo-a-b-test/): This is a quick post to provide context for the SEO A/B test-curious people out there. I was prompted by a thread in Measure Slack and figured long-form would make more sense. I didn’t want to make this another hideously long SEO-ified post but rather get to the point quickly.  Here’s the post and then I’ll dive into my thoughts about SEO A/B testing. After writing this, I realized I didn’t actually address statistical significance but as you’ll see, if you’re running experiments that are dependent on a fine margin of statistical significance your time is probably better spent elsewhere. […] - [How to Highlight Text On a Page with "Scroll to Text Fragments"](https://trevorfox.com/2020/06/how-to-highlight-text-on-a-page-with-scroll-to-text-fragments/): If you read my blog, you probably know that I am a bit of a geek about URLs. The “Universal Resource Locator” is a fundamental principle of the internet and are responsible for a lot of interesting features of the information superhighway. URLs make it possible to navigate from page to page, to change the contents of a page with query parameters, to anchor to specific locations in a document, and even specify the results of REST API.   Now URLs offer one more cool feature: the ability to highlight text based on the contents of a URL. This new feature […] - [Pulling Reddit Metrics into Google Sheets](https://trevorfox.com/2020/05/pulling-reddit-metrics-into-google-sheets/): Reddit is a legend of the Web 2.0 transitionary time period. In that era, it was common to find rough edges around popular sites and features and Easter Eggs that could be described as “features that don’t exactly have any purpose, but some people might find it cool.” (Consider Google’s “I’m feeling lucky” feature… This post is about one of those cool features. Getting JSON from Reddit the Easy Way My favorite thing about Reddit, by far, is that if you add “.json” to the end of any URL, the website will return a JSON representation of all the data of that URL. […] - [How to Choose a Domain Name for SEO](https://trevorfox.com/2020/05/how-to-choose-a-domain-name-for-seo/): I’ve been thinking about names a lot lately. My wife and I are running through the process of generating and narrowing down a list of names for our oncoming baby. We didn’t do ourselves any favors by not discovering the gender prior to birth. I like to think this is a good way to remove any bias from the experiment. ;p Want help getting started with SEO? I work with businesses to provide an in-house SEO perspective at a fraction of the price. What’s in a (domain) name? Picking a domain name is similar to naming a kid. We, humans, […] - [Does CloudFront impact SEO? Let’s set it up for an S3 static site and test it!](https://trevorfox.com/2020/04/does-cloudfront-impact-seo/): This is the fifth post in my series about static site SEO with AWS. In the last post, we uploaded the static site to Amazon S3 so that it’s publicly accessible on the web. In this post, we’ll move beyond static site basics and start to discuss how Cloudfront CDN impacts load speeds and SEO. Yay! We’re finally going to start talking about SEO! This post will focus on a HUGE factor for SEO: speed. We’ll first take apart a few acronyms and then we’ll talk about how to make your website fast with CloudFront CDN. Luckily it’s all pretty […] - [Hosting your Static Site with Amazon S3](https://trevorfox.com/2020/03/hosting-your-static-site-with-amazon-s3/): If you followed the previous post about getting started with Pelican, you should have a Pelican website up and running on your local machine. This is where a lot of web development tutorials stop and that has always frustrated me. There are a million and one places to learn how to code online but just because you learned how to write a for-loop doesn’t mean you can actually make anything.  This post is meant to help bridge the gap between “starting a web project” and starting a web project on the actual web. The goal of this post is to […] - [Starting an SEO Project with Python, Pelican, and AWS](https://trevorfox.com/2020/03/starting-an-seo-project-with-python-pelican-and-aws/): I’ve been thinking about the best way to put a “course” together to demonstrate the overlap between web development and SEO. There are a lot of directions this could go in but I wanted to strike the right balance between technical depth and feasibility for someone who hasn’t done much in the way of web development.  This is the beginning of this so-called “course,” though it’s more of a guided SEO project. Though this is just the beginning, I hope to teach something about technical SEO and SEO analytics by playing around with website code and hosting infrastructure and different […] - [Beginner's Guide to Content Management Systems and Templating Engines](https://trevorfox.com/2020/03/beginners-guide-to-content-management-systems-and-templating-engines/): If you’re new to web development—especially if you are coming from adjacent territory like marketing or product management, you’ve probably begun to understand the basics of variables and for loops but there’s a big gap between where you are and how things get done in the wild. The goal of this post is to introduce you to the wild world of content management and tame it at the same time. I hope you enjoy! Redefining the Content Management System Category The term “Content Management System” describes an actively expanding category of software that can be used to manage the creation […] - [Defining Technical SEO for Non-Techincal SEO's](https://trevorfox.com/2020/03/defining-technical-seo-for-non-techincal-seos/): Whether you’re just an SEO rookie or you’ve been playing along for years, you probably know that SEO is all about keywords, content, and links. To “do SEO,” all you need is a website, some content, and you need to figure out how to get some links so your site can rank. The more you have of each, the more successful you’ll be (as long as you don’t do anything stupid.) That’s it… Or is it? While keyword sleuthing, golden content, and lots of trustworthy links will lead to some SEO success, that will only take you so far. There […] - [Intro to SQL User-Defined Functions: A Redshift UDF Tutorial](https://trevorfox.com/2020/02/intro-to-sql-udfs-in-redshift/): As a data analyst, your credibility is as valuable as your analytical skills. And to maintain your credibility, it’s important to be able to answer questions correctly and consistently. That’s why you must be careful to integrate reproducibility into your SQL analyses. This tutorial is going to show you how you can use Redshift User Defined Functions (UDFs) to do just that. Reproducibility in SQL Analysis I’ve learned that there are two broad factors to reproducibility. The first is the data—different data for the same analysis is going to produce different results. A good example would be a court case: […] - [Getting Started with SQL for Marketing (with Facebook Ads Example)](https://trevorfox.com/2020/01/getting-started-with-sql-for-marketing-with-facebook-ads-example/): As a digital marketer, I use SQL every single day. And looking back on my career so far, it would be fair (though a bit reductive) to say that I could define my career by two distinct periods: before I learned SQL and after I learned SQL. The two periods are distinct for three main reasons:  If you’re at a crossroads in your career and you find yourself asking, “what coding language should I learn,” here is my case for SQL. What is SQL (for Digital Marketing) When you see SQL you might think it means “Sales Qualified Lead” but […] - [How to Scale Yourself in a Growth Role, Part 1: Your Time](https://trevorfox.com/2019/10/how-to-scale-yourself-in-a-growth-role-part-1-your-time/): A personal note: These are my learnings from consulting, being part of a growth team at Postmates, then leading growth at Panoply, so hopefully, it’s insightful. This post has been idling in a Google Doc for weeks because I couldn’t dedicate the time to complete it. So instead of never completing a single long post, I decided to break it into posts. This way its easier to publish and hopefully easier to read. If you want to catch the next two posts on “Your Work” and “Your Team” sign up here. Growth is simple. It is just a measure size […] - [Drift Chat Event Tracking with Google Tag Manager - Less Code, More Analytics](https://trevorfox.com/2019/01/drift-event-tracking-google-tag-manager/): The market for website chatbots is growing steadily and with it, there have been a lot of entrants since Intercom lead the way. From Hubspot to Whisbi, each has their own take on it. What I found especially impressive is how Drift has opened up the tech side of their platform. This makes it a really fun marketing technology. Building chatbots is a mix of analytical thinking, user experience design, and creativity. On top of that, it is easy to iterate and optimize quickly thanks to the amount of qualitative and quantitative feedback that the chats offer. While I’ve seen the Drift team steadily working on […] - [Metrics and Levers of an SEO Measurement Framework](https://trevorfox.com/2018/10/seo-measurement-framework/): You are probably here because you have more SEO data than you know what to do with and precious little time to make sense of it. A framework is exactly what you need. An SEO measurement framework draws the relationships between all the metrics that you collect and the levers that you can pull to improve them. Frameworks reduce complexity, provide insight, and, best of all, frameworks enable focus. — SEO happens in a dynamic system that spans from technical infrastructure to human relationships and user experience. But SEO outcomes are measured in acquisition, activation, and revenue. I believe (and […] - [Pinging Search Engines with Your Sitemap Works - Here’s How](https://trevorfox.com/2018/09/ping-sitemaps-search-engines/): Freshness matters. It matters to searchers, therefore it matters to search engines, therefore it should matter to you. The best tool to ensure that search engines have your site’s freshest content is your sitemap. This post explains why pinging search engines with your sitemaps is important for SEO and how to optimize the process and stay fresh. Why Sitemaps? Why Ping them? You have probably already submitted your sitemap to Google, Bing and other search engines using their webmaster consoles, if so, you’re in a good spot— rest assured that search engines know that you have a sitemap. And if […] - [Adding a Hubspot Data Layer for Personalization and Profit](https://trevorfox.com/2018/09/hubspot-gtm-data-layer/): As we all know, the data layer (dataLayer if you’re a nerd) is a great way to provide data about an application, it’s users, and, it’s content to analytics and marketing technologies. But one thing that is underappreciated about the data layer is that it provides context for personalization. There are a number of ways to employ the dataLayer for personalization. There are tools like  Optmizely and Google Optimize, and an open source tool that I think is especially interesting called Groucho. (If you are interested in trying it for WordPress you can try my plugin 🙂 )   Another […] - [Dynamic Gantt Charts in Google Sheets + Project Timeline Template](https://trevorfox.com/2018/08/google-spreadsheets-gantt-charts/): Google Docs and Gantt charts are a perfect match. Google Spreadsheets offers the ability to share and update spreadsheets in real-time, which is a major benefit for any project team, especially those who work in different locations or time zones. On top of that, you can’t beat the free price! Many projects are complex enough to demand a formal task planning and management hub but do not justify a full-featured, premium application. This tutorial will show you how to take your ordinary task list and turn it into a dynamic visual timeline—a Google Spreadsheet Gantt chart. View the Sample Chart […] - [What is keyword stemming? Use it ... Wisely](https://trevorfox.com/2018/07/what-is-keyword-stemming-use-it-wisely/):  Keyword stemming is the process of removing all modifiers of a keyword, including prefix, suffix, and pluralization, until only the root of the word remains. For example, “consulting” and “consultant” would be stemmed to the same root, “consult.”  This technique is useful for SEO keyword research because it helps to identify and group similar keywords. Want to see how it works? Try my keyword stemmer tool! In the example above, content advertising an Agile Development Consultant could target searches for both “agile consultant” and “agile consulting.” Understanding how searchers construct their search queries is important so that you can create […] - [SEO with the Google Search Console API and Python](https://trevorfox.com/2018/03/google-search-console-api-python-tutorial/): Pssst… have you heard about Google Search Console’s BigQuery integration?? The thing I enjoy most about SEO is thinking at scale. Working at Postmates was fun because sometimes it’s more appropriate to size opportunities on a logarithmic scale than a linear one. But there is a challenge that comes along with that: opportunities scale logarithmically, but I don’t really scale… at all. That’s where scripting comes in. SQL, Bash, Javascript, and Python regularly come in handy to identify opportunities and solve problems. This example demonstrates how scripting can be used in digital marketing to solve the challenges of having a […] - [Fetch As Google - From Googlebot's Perspective](https://trevorfox.com/2018/03/fetch-as-google-experiment/): The Google Search Console Fetch and Render Tool is like putting on a pair of Googlebot goggles and looking at your own site through those lenses. If you have a simple website, (WordPress for example) that hasn’t been modified too much, you may not appreciate why this is important. But the more complex your site becomes with AJAX Javascript rendering or robots.txt rules, this tool becomes critical to understanding why your site is, or is not, optimized for crawling— and search in general. When you ask Google to Fetch and Render a URL, Google makes a few requests to that […] - [Solving “Script function not found: doGet”](https://trevorfox.com/2018/01/solving-script-function-not-found-doget/): You’ve written some Google Apps Script code and you are ready to Publish your web app. You click “Deploy as web app…” and navigated to the web app URL only to find… This is a simple fix— don’t worry. The problem is that your Google App Script web app code is missing one critical thing: the doGet function. The doGet Function The doGet function, like the doPost function,  is what is called a “request handler.” It is the entry point for your web app. Web apps work by receiving an HTTP GET (or POST) request and executing the code found […] - [Google Sheets Custom Function Tutorial](https://trevorfox.com/2018/01/google-sheets-custom-function-tutorial/): You have probably imagined a Google Spreadsheet function that did exactly what you needed it to without messing around with 17 different functions just to get the desired result. Well, you are in luck! Google Spreadsheets supports custom macros written with Google Apps Script for this very reason. If you are familiar with Excel and VBA, this will come easily to you. If you are new to custom functions altogether, this is the perfect place to start. Google Sheets macros, also known as “custom functions,” can be really simple, (they don’t even need to take a single argument) or they […] - [The three most important things I learned in 2017](https://trevorfox.com/2017/12/three-things-i-learned/): 2017 has been a wild year, to say the least. From waking up wondering if closed-mindedness was becoming mainstream to waking up wondering about the likelihood of nuclear war, to waking up in any one of over a dozen countries, there has been something remarkably unstable about 2017 (even for me). But amidst all the shifting there was also something very grounding about 2017. I married an amazing woman and I finally found satisfaction in a day-to-day office job at Postmates. From starting the year as a remote freelancer in Hong Kong to ending it hanging shelves in our new […] - [Working with URLs in Google Apps Script and Google Sheets](https://trevorfox.com/2017/12/working-with-urls-in-google-apps-script-and-google-sheets/): There is something so fitting about working with URLs in Google Apps Script and Google Spreadsheets. The cloud-based software works in the browser where, indeed, there are a lot of URLs to work with. Google Apps Script’s doPost, doGet, and UrlFetchApp make HTTP requests to URLs easy. Google Spreadsheets has similar functionality with IMPORTXML, IMPORTHTML, IMPORTFEED, and IMPORTDATA. If you work in web analytics, digital marketing, or especially SEO, chances are, you’ve stared at a big spreadsheet of URLs trying to figure out how to parse, check, or call the URLs quickly and easily. Luckily, there is a beautiful Javascript library that makes working with URLs just as quick and easy as you […] - [Analyzing XML Sitemap Files with Bash](https://trevorfox.com/2017/12/sitemap-analysis-with-bash/): I’ve been spending a lot of time working with sitemaps lately. They are a critical component of getting sites indexed by search engines and a great way to learn about your competition’s architecture and search strategy. They literally map out the content that your competition is trying to add to search engine indexes and where they are trying to attract traffic. The problem is that when sitemaps are larger than a few thousand URLs, or when sitemaps are not pretty, or when index files and gzip compression get involved, the task of reading a sitemap becomes either slow or manual […] - [How I became a Technical Marketer](https://trevorfox.com/2017/05/became-technical-marketer/): As you know, I love learning, and I am a huge advocate for self-service education. Recently, I had the honor of being interviewed on the Measureschool Youtube channel, where I got to share my path in learning and employing the technical side of digital marketing. We talked about some of the resources I mentioned in the series on Digital Marketing Technical Skills, and in the extended version, I share my fascination with Github and Push Messaging. I hope the video encourages others to start and/or continue their technical learning journey! Julian Jueneman also just launched a community called techmarketer.io which is […] - [JSON-LD Bulk Editor and File Generator for Google Sheets](https://trevorfox.com/2017/03/json-ld-bulk-generator-google-sheets/): As Schema.org JSON-LD usage spreads across the internet and its utility increases, I find myself creating a lot more JSON-LD templates for non-standard entities… and then I find myself copying them over and over for each of their sibling entities. Finally, I decided I had had enough of this and looked to solve this problem for myself and other SEOs in this same boat. The Schema.org JSON-LD Bulk Editor for Google Sheets is a Google Spreadsheet template and script that takes a “prototype” JSON-LD template and allows to create as many customized template copies of it as you need by filling in a […] - [Using Hosted JSON-LD Files as applications/ld+json Scripts for SEO](https://trevorfox.com/2017/03/json-ld-files-with-javascript/): Sometimes it’s just easier to separate concerns. Just like how stylesheets and .js scripts separate the form and function of the page from the presentation of the page, the same can be done with the JSON-LD schematic markup / structured data of the page. This example shows how you can add structured data for SEO using Javascript which in many cases may prove to be much easier than messing around with your server side code or CMS. The following Javascript script shows how you can load a stored .jsonld file from your server onto your page as an application/ld+json script […] - [Zip Codes to City, Region & Geocode in Google Sheets](https://trevorfox.com/2017/03/zip-codes-to-city-region-geocode-in-google-sheets/): ZIP codes are a very useful and common way to gather location data. But zip codes alone are often less useful than the city, state, latitude and longitude that correspond to the zip code. City and state/region, allow you to group the data with a pivot table while City and state/region, allow you to group and aggregate numerical data with pivot tables, while latitude and longitude offer sensible ways to determine areas and distance. Here is a simple custom function that provides easy access to the zippopotom.us free ZIP code converter API. ZIP Code Custom Function ZIPLOC( zip code [, country abbrv] ) To translate […] - [Copy Multiple Google Sheets with Template Variables](https://trevorfox.com/2017/03/copy-multiple-google-sheets-with-template-variables/): Business and education administration often involves an overwhelming amount of repetitive tasks. We work in cycles of days, weeks, months, and years with multiple students, clients, employees, or team members. This adds up to multiples of multiple tasks. Luckily, automating repetitive and work-intensive tasks is just one of the many things Google Apps Script was made for. In this Google Apps Script example, let’s automate all but the individualized aspects of working with Google Spreadsheets. We will create a template sheet and make multiple copies of that sheet with individualized variables for each sheet. With a click of a button, this script will copy […] - [Google Spreadsheet Button to Run Scripts in 4 Steps](https://trevorfox.com/2017/02/google-spreadsheet-button-to-run-scripts-in-4-steps/): If you come from Excel, you might have seen some fancy spreadsheets with clickable buttons that trigger VBA macros. Luckily, Google Spreadsheets and Google Apps Script offer the same functionality. If you are just starting out with Google Apps Script, check out this Google Apps Script macro tutorial for a beginner’s guide. This tutorial will demonstrate how to add custom buttons to a Google Spreadsheet that run Google Apps Script functions when they are clicked. There are also examples of buttons that sort ranges, add timestamps, send emails, and increment cell values.   Let’s Make a Spreadsheet Button Creating a spreadsheet button […] - [How to Get, Parse, Query, and Return JSON](https://trevorfox.com/2017/02/how-to-get-parse-query-and-return-json/): This post has been moved from a site that I used to run at googleappscripting.com JSON (JavaScript Object Notation) is a great way to pass data around the Web. It is easy for humans to read and it’s easy to work with in most programming languages (including Google Apps Script). This post will show you a number of useful examples of how to work with JSON with Google Apps Script. (re)introducing JSON JSON refers to a syntax for organizing information in text, a MIME type, and a file type. They are all part of one big idea from Douglas Crockford (the guy in the […] - [Google Apps Script Custom Menus](https://trevorfox.com/2017/02/google-apps-script-custom-menus/): It is fitting that my first post on this site is about custom menus with Google Apps Script, because, often, custom menus are your users’ first touch with your custom functionality. Your users will be surprised the first time they see the custom menu on their Google App UI. And they will be delighted when the functionality fulfills their expectations. This post will show how to surprise and delight your users with the Google Apps Script UI menus.  How Custom Menus Work Custom menus allow you to execute the Google Apps Script functions that you have defined. Each menu item, when clicked, triggers the […] - [Google Apps Script doGet and doPost Tutorial + 6 Web App Examples](https://trevorfox.com/2017/01/google-apps-script-doget-and-dopost-tutorial-6-web-app-examples/): If you are new to Google Apps Script or programming in general, Google Apps Script Web Apps may seem daunting. The good news is that it is easy to understand with a little trial and error. This tutorial will give you 12 recipes to help you get started with the doGet and doPost functions and show you how to return HTML, JSON, and plain text. From there, you can go on to customize your Web App to your needs.  But first, let’s get the basics out of the way. What do doGet and doPost do? Since you are starting to build […] - [Slack Slash Commands for Everyone + 10 Free APIs](https://trevorfox.com/2017/01/custom-slack-slash-command-and-10-free-apis/): You might be new to the whole idea of “bots” or acronyms like REST, API, HTTP, and cURL. And you probably don’t know how to code your way out of a wet paper bag. But this doesn’t mean you cannot or should not get your hands dirty and have a little fun making a customized little tool for yourself and your team. This is a quick and easy “Hello World” tutorial for creating your own Slack slash commands that anybody, no matter how technically savvy, can follow. Custom slash commands for Slack allow you to access information from across the internet without […] - [12 Simple Google Sheets Sparkline Examples](https://trevorfox.com/2017/01/google-spreadsheets-sparkline-examples/): I just finished a project where I was using IPython and Pandas a lot more than spreadsheets. I found that after using Pandas, I started to think about data a little differently. When I returned to Google Spreadsheets, I realized it wasn’t capable of displaying the data in the way that I wanted to. So I took another look at the Google Spreadsheet SPARKLINE function and found that, in many cases, they provide a more informative and much quicker visualization than charts. Once I got started, I figured I would exhaust the possibilities of the feature and share them here […] - [Website Launch Checklist for Digital Marketing in 2017](https://trevorfox.com/2016/12/website-launch-checklist-2017/): Website launches are a magical time- full of promise and wonder. They are a stress-free time where every stakeholder rejoices and relaxes, knowing that the hard work is behind them. Now all they have to do is let the smooth breezes of the digital ocean carry them to the land of Internet business success. If you have ever been involved in a website launch you’ll probably recognize that I just lied to you. I’ve seen it from the development agency side, from the digital marketing agency side, and from the business side. And I’ve spent my Friday night putting out […] - [Add a Website Skype Button to Talk With Leads and Customers](https://trevorfox.com/2016/08/add-website-skype-button/): This post demonstrates several ways to add click-to-call and click-to-chat Skype button functionality into your website. Beyond just being a modern way to use a web browser, it enables a modern approach to interacting with leads and customers. There is good reason to do this. Let me tell you why… A New Definition of “Social” Brands The meaning of “Social” in terms of business and e-commerce is changing. There are a couple of trends that are having a big influence of this shift. The first trend is that there are so many social and messaging platforms available, we are allowed to pick […] - [What is an API? And Why Should I Care?](https://trevorfox.com/2016/08/what-is-an-api/): In the same way that user interfaces allow us to interact with an application, Application Programming Interfaces (API) allow applications to interact with applications.   How do API’s work? This is best illustrated by example. If you have ever witnessed a Twitter bot randomly like or retweet your tweet, you have seen an API in action. Twitter offers an API so that other applications (bots included) can send and retrieving information to and from Twitter.     An example of an application that retrieves information from the Twitters API is this sentiment visualizer. The application makes a “call” to Twitter’s API […] - [9 Pro Tips for GTM Auto Event Tracking and the Click Element Variable](https://trevorfox.com/2016/07/gtm-auto-event-tracking-click-element-variable/): This week I did a Google Tag Manager implementation where I had no control over the site’s source code and no access to the site’s developers. It’s an imperfect situation but luckily, GTM Auto Event Tracking affords a solution that is very effective considering these constraints. This post is meant share a few tips on how to implement, customize, and debug Google Tag Manager in a situation where you are using Auto Event Tracking. This is especially helpful when you want  to track events on pages that you do not have any control over. The heart of Auto Event Tracking […] - [Web Addresses Explained: What Every Human Should Know About URLs](https://trevorfox.com/2016/07/web-addresses-explained-by-example/): If you can remember your elementary school English lessons, you might recall learning how to format postal addresses so you could send a letter or navigate yourself to a particular destination. Today, most of us navigate to Web addresses far more often than street addresses and yet we no sense about how web addresses work, what their parts mean, and how they are formatted. Here is the elementary school Internet lesson that you missed. And it is going to make you feel like an Internet Jedi. Here is the elementary school Internet lesson that you missed. And it is going to […] - [8 Tips for Writing a Great Startup Company Description](https://trevorfox.com/2016/06/8-tips-writing-startups-company-description/): I spent some time at Rise Conference here in Hong Kong this week. The conference hosts a few hundred startups from all across Asia and offers each of them a booth, an opportunity to pitch, and the hope of meeting their next, investor, engineer, or growth hacker. It was complete startup sensory overload. The talks are only 20 minutes long and as soon as you sit down at one, you are missing two others. The conference floor looks like a real incubator (in the biological sense) with rows of embryonic business plans. The only difference is that instead of dozens […] - [IFTTT + NFC Tags: a Maker Channel Tutorial](https://trevorfox.com/2016/04/android-nfc-ifttt-maker-channel/): I geeked out recently over the Android task automation app,  Automate. The reason I got so excited was that it provided a very elegant solution for creating a custom NFC sensor for a project I’ve been working on. What I also came to find out was that Automate opened up a lot of possibilities beyond this project. Automate can be easily extended to prototype a ton of IoT projects. This tutorial shows how your Android phone can easily connect your physical world to any cloud service with a mashup of NFC, Automate and IFTTT. Example Use Case: NFC Enabled Sustainable […] - ["Hello World!" with Automate for Android](https://trevorfox.com/2016/04/automate-android-tasks/): I’ll admit, my posts have been lame lately, but don’t worry, I just found something that I’m pretty excited about! (This is not a paid endorsement, but it will get a bit geeky. ) Automate by LamaLab is a clean, simple, fun and free (!) way to turn your IoT imagination into reality. The app puts all your Android’s interfaces at your disposal to create powerful automation and expressive working prototypes. Automate by LamaLab is a clean, simple, and fun way to turn your IoT imagination into reality. I found it yesterday while looking for a good way to hack together a […] - [First, Learn The Language](https://trevorfox.com/2016/03/first-learn-the-language/): The following is an adaptation of the speech I gave at Hong Kong Toastmasters International speech competition. Thought is was interesting so I decided to post it. Do you remember your first day of school? How about your first time away from you parents or your first time out of the country. Do you remember your first day at a new job or the first day of being a parent. Do you remember how anxious you felt about the unfamiliarity? We’ve all been in situations like this and looked out at an uncertain future and not known where to start. […] - [Google Analytics to Google Spreadsheets is Data to Insights](https://trevorfox.com/2016/01/google-analytics-to-google-spreadsheets-from-data-to-insights/): When you reach the limits of Google Analytics custom reports and you still need more, Google Spreadsheets and the Google Analytics Add-On can take you past sampling, data consistency and dimension challenges. This post is all about the Google Analytics + Google Spreadsheets workflow. It is an end-to-end example of how you can extract more value out of your Google Analytics data when you work with it in its raw(ish) form in Google Spreadsheets. The end goal is to look at how blog post traffic grows or decays with time and ultimately Forecast Organic Traffic to Blog Posts (coming soon). […] - [How To Add Multiple Columns to Google Spreadsheets](https://trevorfox.com/2015/11/how-to-add-multiple-columns-to-google-spreadsheets/): I recently ran into this problem when I was looking at someones Adwords account and wanted to get an idea about all the unique keywords that they were using.  I used the following formula to get an array of all unique keywords: =UNIQUE(SPLIT(CONCATENATE('Keyword Report'!B2:B)," ")) But then I encountered a problem: “Error Result was not automatically expanded, please insert more columns ([number-of-columns]).” Soon, I found that the current best option is to highlight and copy a number of columns and insert the copied columns over and over until there are enough columns. It seemed there should be a better way. After all, […] - [QR Code Scan-to-Vote App Using IFTTT and Google Sheets](https://trevorfox.com/2015/09/qr-codes-scan-to-vote-app-ifttt-google-sheets/): In Defence of QR Codes If QR codes aren’t being used effectively, it is more the fault of the publisher than the technology. The technology, despite its looks, is quite elegant and offers a lot of opportunity. However, there are some pretty significant barriers to adoption and use. So the burden is upon the publisher to use QR codes in the right context and provide a compelling reason to scan. Some contexts are better than others. As this discussion illustrates, places where written language is not based on Basic Latin characters, like much of Asia, QR codes can be used […] - [Is Slack Messenger Right for My Team? Analytics and Answers](https://trevorfox.com/2015/09/is-slack-messenger-right-for-my-team-analytics-and-answers/): From AOL Instant Messenger to WeChat stickers, digital communication has always fascinated me. From the beginning, there has always been so much we don’t understand about digital communication. It’s kind of like GMO; we just started using it without considering the implications. We are continually learning how to use the the digital medium to achieve our communication goals. And meanwhile, our digital communication tools are ever evolving to better suit our needs. A prime example of this is the team messaging app, Slack. Slack has adapted well and I would argue that it has dominated its ecosystem. There are a […] - [Top 3 Resources to Learn Digital Marketing Technical Skills | $10k Tech Skills 4/4](https://trevorfox.com/2015/06/digital-marketing-technical-skills-resources/): This is part one of four in the $10k Technical Skills for Digital Marketing series. You’ve gone a long way, Keep it up! Getting Started and the Learning Mindset Being a technical marketer is as much about using technologies as it is about learning and adapting to new ones. The learning mindset may not get its own bullet point on a resume (even though it probably should) but its value increases with the rate of new technology. Lucky for you and me, the learning mindset has nothing to do with education or intelligence – it is solely about determination. Determination is […] - [Dynamically Pre-fill Google Forms with URL Parameters](https://trevorfox.com/2015/06/dynamically-pre-fill-google-forms-with-mailchimp-merge-tags/): Why? Because, connect all the things! Why else? Because the less information people have to fill into your form, the more likely they are to complete it – especially if you are asking them to fill in information that they will have to look up! Dynamically, pre-filling forms are a great conversion optimization hack to show prospective respondents a little love. This love will increase form completion rates and response accuracy. The question originally came from someone who had read my post about Mailchimp Reporting with Google Spreadsheets (same products but different applications) But hey, sometimes you don’t even know where to start your […] - [Track REST APIs with the Google Analytics Measurement Protocol](https://trevorfox.com/2015/06/ga-measurement-protocol-track-service/): Google Analytics got a whole lot more interesting when the Measurement Protocol was introduced. We already knew GA was the industry standard for web analytics but with the Measurement Protocol it has become the analytics platform of anything and everything that can be made digital. With some clever instrumentation, we can now use it to track products through the supply chain or track users interactions in a store. All you need is a way to collect digital data and send HTTP requests to Google Analytics and you can track anything. I had to try it out for myself. While I […] - [Learn the Power of API's for Digital Marketing | $10k Tech Skills 3/4](https://trevorfox.com/2015/05/how-to-use-apis-for-digital-marketing/): This is part 3 of 4 of the $10k Technical Skills for Digital Marketing. You could be so much faster! Right now, you are using your browser to view HTML pages. You go to a page, get some information and move on. Imagine how much more information you could gather if you could tell your browser to look at 10 pages per second, compile it all and give you the executive summary. This is the power that API’s and a little bit of code provide. API’s are your key to the Web at scale. An API (Application Programing Interface) allows you to interact with services like […] - [How to Make a Google Apps Script RESTful API or Service](https://trevorfox.com/2015/03/rest-api-with-google-apps-script/): You know what’s cooler than calling API’s and services with Google Apps Script? Making your own API with Google Apps Script. After playing around with my first REST API with Python and Bottle, I wondered how this could be done even cheaper and quicker; without worrying about the complexities of databases and hosting. When it’s simple and easy you are looking for, the answer is usually Google Apps Script. REST API’s and web services can be written in Google Apps Script in a matter of a few lines. It can then be easily deployed to the public as a web app. […] - [Learn Programming and Databases for Digital Marketing | $10k Tech Skills 2/4](https://trevorfox.com/2015/03/learn-programming-databases-digital-marketing/): This is part t in the $10k Technical Skills for Digital Marketing Series. Part one introduced the importance of learning client-side technologies and offers a plan to learn Javascript, HTML and CSS for digital marketing. This post broadens the picture by introducing server-side programming and databases, which together compose web applications. Understanding how web applications work is a major benefit and should be essential knowledge for digital marketing. Enjoy! Learning How Web Applications Work From Google Bot to the Facebook Social Graph, to this WordPress blog; the web as we know it, is a massive system of interconnected applications. All these […] - [How to Opt-Out of Optimizely (cdn.optimizely.com) in One Click](https://trevorfox.com/2015/02/opt-out-optimizely-one-click/): What does “waiting for ‘cdn.optimizely.com’ mean? In short, ‘cdn’ means Content Distribution Network and Optimizely is a service that provides A/B Testing for websites. Optimizely makes A/B testing possible by swapping images or changing the structure or style of a web page. To do this, it has to load additional instruction on to the web page being tested. The reason you are seeing “waiting for cdn.optimizely.com” as you are trying to load a site is most likely because the network you are using is somewhat slow. It just happens to be Optimizely information (likely an image page content for the A/B test) […] - [Learn JavaScript, HTML and CSS for Digital Marketing | $10k Tech Skills 1/4](https://trevorfox.com/2015/02/10k-technical-skills-part-1-javascript-html-css/): This is part one of four in the $10k Technical Skills for Digital Marketing series. Being able to code JavaScript, HTML and CSS are the technical skills that enable you to design the presentation and experience of your marketing messaging. JavaScript will also take you much further. These skills will really increase your market value if you are interested in conversion rate optimization, web analytics, email marketing, PPC or SEO. See how these skills are useful and how to learn them. Learn JavaScript. Love JavaScript. JavaScript was the first technical skill and first programming language I really learned and it […] - [7 Must-Have Chrome Extensions for Testing and Optimization](https://trevorfox.com/2015/01/7-chrome-extensions-for-testing/): Crafting successful tests is as much about clever ideation as it is about skillful execution. These seven Chrome Extensions should be in every optimization craftsperson’s toolbox.  They help simplify the technical tasks, expedite the mundane tasks and optimize the whole creation process.  Add them to your toolbox and work smarter, not harder! Systematize: UX Check This brand new UX Chrome Extension is so comprehensive, you can literally build the entire ideation phase of your testing strategy around it. Its benefits are three-fold: it provides a framework for UX evaluation,  it records screenshot/annotation combinations for every element that you may foreseeably test and it packages […] - [Solving Google Tag Manager Race Conditions with eventCallback](https://trevorfox.com/2015/01/avoiding-race-conditions-with-gtm-events/): Google Tag Manager is a great solution for implementing Web analytics on AJAX-heavy apps. But at times it may seem like it adds more complexity than it relieves. Synchronizing data and events in the dataLayer is an example of this. Sometimes you will want to fire a tag that aims to send data that will show up in the dataLayer after an AJAX call and because you don’t have any guarantee about the timing of this AJAX call you may run into a bit of a race condition. Fire Events With Data In the world of javascript you might rely on a call back […] - [Product Scope Custom Dimension & Metrics in Google Analytics](https://trevorfox.com/2014/11/enhanced-ecommerce-product-dimensions-metrics/): Google Analytics Enhanced Ecommerce provides insight into Ecommerce performance in detail that was impossible using standard Google Analytics methods. To get the most out of Enhanced Ecommerce, you must understand the breadth of Enhanced Ecommerce data collection capabilities. This tutorial will take you from Ecommerce product page to Enhanced Ecommerce Product Data. Product Data Problem and Solution The new product schema was created to provide insight in a way that answers questions that are specific to products rather than pages or events. Consider event hits; their schema uses a sentence-like structure to describe an action.  This does not map well to a product entity […] - [Scale Optimizely Testing with Google Tag Manager](https://trevorfox.com/2014/11/scale-optimizely-testing-google-tag-manager/): You already know that Google Tag Manager is an incredibly powerful tool but you may not know that it can literally do anything. In fact, Google Tag Manager made me pancakes this morning. Not really, but a man can dream. Google Tag Manager is comprised of three components: Tags (the things that do stuff with data), Triggers (formerly Rules, the things that decide when/if stuff is done), and Variables (formerly Macros, the things that express the data). This post is one post of many that shows that, thanks to the Custom HTML Tag, Google Tag Manager can do virtually anything. […] - [Agile Strategy for Data Collection and Analytics](https://trevorfox.com/2014/10/agile-strategy-data-collection-analytics/): If you are like most people doing business online, it seems like there is always a long list of digital to-dos that are somewhere between “that will happen in Q4” and “that should have happened by Q4 last year.” Aside from the constant stream of daily hiccups that arise due to the asynchronous nature of our medium, if you are like most others managing a website, you face broader development challenges of slow servers, uncooperative CMS’s, or lame mobile experiences impacting your online success. This is not failure that you have to accept! Let me introduce you to a little […] - [Automate Optimizely Reports With the Results API](https://trevorfox.com/2014/10/automate-optimizely-reports-results-api/): “Report automation” is my favorite two-word combo besides “free pizza.” And because of the nature of the testing and optimization game, and the speed it happens (in comparison to something like SEO), reporting can can pile up rather quickly. This is why I was as happy as [see picture below] when Optimizely recently released a test result endpoint from their REST API. To celebrate, I hid in my basement for hours on end and coded an Optimizely + Google Spreadsheet Report Automator that makes it easy to send email reports and import data directly into Google Spreadsheets. A REST API, for […] - [Bulk Hide, Show, Delete & Copy Multiple Sheets in Google Spreadsheets](https://trevorfox.com/2014/09/bulk-hide-show-delete-multiple-sheets-google-spreadsheets/): Update: This script now allows you to copy multiple sheets within one spreadsheet to either the same spreadsheet or a different one. If you want to copy the sheet to the same spreadsheet, just input your current spreadsheet’s ID when prompted. The spreadsheet id can be found in the Spreadsheet’s URL eg: docs.google.com/spreadsheets/d/SPREADSHEETID/edit#gid=0 If you are looking for a way to copy sheets from a template, check out the post on GoogleAppScripting.com Too many sheets! I came across the problem of having a large number of visible or unused sheets in cluttering up my Google Spreadsheets often enough that I decided to solve it. […] - [Data-Driven Marketing Starts With the Data Layer](https://trevorfox.com/2014/07/data-driven-marketing-starts-data-layer/): The term “digital marketing “ should describe the marketing methods as much as it describes the marketing medium.   Too often, marketers are satisfied with their “digital marketing” efforts when they send a tweet, “blast” an email or run a search ad because their message is transmitted over a digital medium.  Unfortunately, this misunderstanding so vastly underestimates the potential power of digital marketing; well…I just had to write a blog post about it. If you take just one idea away from this blog post take this: The  access to data that the digital medium affords, when interpreted correctly and acted upon […] - [Inspecting and Debugging the Google Tag Manager dataLayer](https://trevorfox.com/2014/07/gtm-datalayer-debugger/): The Data Layer Inspector and Debugger This project began as a solution to a problem that I often faced setting up Google Tag Manager and specifically the data layer. The solution that I ended making was dataLayer logger, inspector, and debugger that offered the same features as the Google Analytics Debugger but for the data that was being held in or pushed to the dataLayer. It pretty-logs all the new contents of the dataLayer as it is pushed no matter if the dataLayer.push() happens on the page, in a script or in a custom HTML tag within GTM. Its all […] - [Automate Mobile Preferred Ad Creation with Adwords Scripts](https://trevorfox.com/2014/05/automate-mobile-preferred-ad-creation-with-adwords-scripts/): Scripts Save Lives I love algorithms and you should too. They provide simple consistency to life like no calendar, routine or habit ever could.  They do exactly what you tell them to do and they do it fast, and most beautiful of all, they make life automatic. (sigh of contentment) I also love javascript but sadly, there are not a lot of places where javascript and algorithms intersect. Scripts for Adwords is one of those happy unions and this delicious union of medium and method has a little cherry on top called automation. Ain’t it sweet! Adwords Scripts are great […] - [Automate MailChimp Reporting with Google Spreadsheets](https://trevorfox.com/2014/03/automate-mailchimp-reporting-google-spreadsheets/): I made it! I am finally a nerd. At the top of the MailChimp API there is a clear disclaimer: “Woah, Nerds Only!” Undeterred, I scrolled on to test my nerdy medal. The following is my account of navigating the well-charted waters of the MailChimp API and a tutorial on how to automate a “BARF” report using Google Apps Scripts and Google Spreadsheets. First, let me tell you how this started. Reporting in digital marketing can be a lot of work. Automate it. Ok done explaining. The MailChimp API is a Friendly API MailChimp’s API is nice and clean with great documentation. […] - [Google Result Date Bookmarklet Using "&as_qdr=y15"](https://trevorfox.com/2013/11/google-result-date-bookmarklet-using-as_qdry15/): I have been goofing around a lot with JavaScript lately. It’s fun to explore because every time I find and open a new door of understanding, there are two more doors to open and explore. I am currently in the room of browser functionality and thats where I found my bookmarklet. Making a bookmarklet was an easy way to put a bit of code into action without building anything too big. As it turns out, it’s surprisingly useful. If you have ever wondered when a web page was published, it will tell you, (fairly accurately) just that. A bookmarklet is essentially […] ## Pages - [AI Search & AEO Strategist](https://trevorfox.com/ai-search-aeo-strategist/): Hi, I’m Trevor I’m your AI Search & AEO Strategist With over a decade of experience at the intersection of data, SEO, and growth, I’m now helping businesses win in the new era of generative AI search. I help B2B, SaaS, and marketplace business get found, cited, and recommended by AI engines like ChatGPT and Google SGE through a disciplined approach to Answer Engine Optimization (AEO). As your dedicated AI search consultant, I align your digital presence with how AI models discover and rank information, turning this new technology into a predictable revenue channel. Book a Call Today I help […] - [AI Marketing Consulting](https://trevorfox.com/ai-marketing-consulting/): Hi, I’m Trevor I’m a real person with real AI intelligence I help startups and tech companies build a powerful competitive advantage by building AI into their marketing engine. My goal is to turn your ambitious growth targets into a reality fueled by data-driven strategy and intelligent automation. As a dedicated AI marketing partner, I provide the strategic roadmap and technical expertise to implement AI solutions that drive real-world results—from hyper-personalized customer experiences to predictable revenue-generating funnels. Book a Call Today I help clients explore, implement, and grow AI-Enabled Growth Strategy Successful AI marketing starts with strategy, not tools. We […] - [Fractional GTM Engineering and Consulting](https://trevorfox.com/fractional-gtm-engineering/): Hi, I’m Trevor I’m your GTM Expert With experience spanning the full GTM stack, I have a distinct ability to connect high-level strategy to the technical details of execution—from foundational revenue modeling to building the automated systems that bring it to life. As a GTM strategist and systems architect, I bring the strategic foresight and technical expertise to turn ambitious revenue goals into a repeatable, automated reality. Book a Call Today I help clients across the entire funnel Strategic Analytics & Growth Mapping Precision beats guessing. Great go-to-market execution starts with modeling the outcomes that matter—and building backwards. I work […] - [Data Strategy & Activation Consulting](https://trevorfox.com/data-strategy-activation-consulting/): Hi, I’m Trevor I’m your Growth Data Strategist With over a decade of experience analyzing and activating 1st party data, I have a keen ability to sense for signal in the noise—both in data and tactics. My experience ranges from tagging and tracking global retail sites to creating 1:1 personalized journeys for B2B SaaS customers.  As a data activation consultant, I bring the tactical experience and technical expertise to transform data into revenue. Book a Call Today I help clients across the entire funnel Data Collection Data quality is the foundation of every data application. This starts from the source. I […] - [GSC BigQuery SQL Writer](https://trevorfox.com/learn-sql-for-seo/gsc-bigquery-sql-writer/): This GSC BigQuery SQL Writer generates and explains SQL queries for analyzing Google Search Console data stored in BigQuery. Get The Custom GPT 👉 When you’re diving into your Google Search Console data in BigQuery, you’ve probably wondered what all those columns actually mean. It’s much easier to have that info handy right there, instead of constantly flipping between your analysis and the documentation. I ran into a similar issue recently, pitting Google’s new Gemini AI in BigQuery against my own custom GPT model to see how they’d handle a SQL query challenge. What was interesting was that both AI […] - [SQL for SEO Course Outline](https://trevorfox.com/learn-sql-for-seo/outline/): Learn SQL for SEO Course Outline Course Access Sign up for Free Sign up for email updates when free and premium content is released. Register Get Premium Content Purchase the course on Stripe to access all the premium content. Get Access Access Premium Content Once you’ve checked out on Stripe, sign in to access premium content. Sign In Course Contents Welcome to the course! This course has four sections: an introduction, a brief overview of data warehousing and data integration, the heart of the course—SEO analytics in SQL—and finally, some advanced topics like data visualization and data integration. But first, […] - [Fractional B2B Growth Leadership & Consulting](https://trevorfox.com/fractional-b2b-growth/): Hi, I’m Trevor I’m your B2B growth engine With over 12 years of growth experience, I’ve found my niche helping seed to series B SaaS companies find product market fit and build effective and efficient growth machines. As a fractional growth lead, I ensure success by aligning growth strategy with long-term business goals. Book a Call Today I help clients across the entire funnel Customer Development Time is your most critical resource. The faster you can identify your target customer, the more time you can spend growing your business. I accelerate startups by connecting them with prospective customers, identifying their most […] - [Sign in to SQL for SEO](https://trevorfox.com/learn-sql-for-seo/signin/): Sign in to SQL for SEO Once you log in, you can access the course content page and all the premium content and links.  Logging in for the first time? Click “Lost your password“ above to receive a new password. Then, log in with that password and check out the course content! - [sql](https://trevorfox.com/sql/) - [Google Search Console Performance Report Metrics Deep Dive](https://trevorfox.com/learn-sql-for-seo/google-search-console-performance-report-metrics-deep-dive/): This series of premium videos lays the foundation for understanding and applying the GSC data. The first video introduces the three main topics: Introduction Performance Report Metrics Deep Dive This video explains the basics of Google Search Console metrics: impressions, positions, and clicks. We discuss how different search results, including AI-generated ones, affect these metrics. Then, dive into the details of the searchdata_site_impressions and searchdata_url_impressions tables. 0:00 Introduction to SEO Metrics and Levers 👉 Read the post about SEO Metrics and Levers2:18 Defining Impressions and Positions7:30 Defining search “elements”29:08 Comparing searchdata_site_impressions and searchdata_url_impressions granularity44:05 Conclusion and Next Steps Defining GSC […] - [Adding Column Descriptions to GSC Tables in SQL](https://trevorfox.com/learn-sql-for-seo/adding-column-descriptions-to-bigquery-tables/): As you begin analyzing your GSC data in BigQuery, you might find yourself asking what some of the columns mean and what their data represents. It’s nice to have that information in the BigQuery console, so you don’t have to go back and forth between reference documentation and analysis. Run the two ALTER TABLE commands below to bulk add column descriptions to the  searchdata_url_impression and searchdata_site_impression tables. You can see how to run them in the video below, and you can save them by following these instructions. Edit BigQuery Column Descriptions with SQL Step-by-Step This is what the result will look like: […] - [Affiliate Disclosure](https://trevorfox.com/affiliate-disclosure/) - [Ecommerce Analytics Consulting](https://trevorfox.com/ecommerce-analytics/): Hi, I’m Trevor. I help businesses with Ecommerce Analytics With over 10 years of ecommerce and digital analytics experience across ads, web, CRM, and finance, I’ve helped international marketplaces and ecommerce sellers discover millions in revenue opportunities. Book a Call Today Ecommerce analytics services Web analytics implementation Gain visibility into web performance ecommerce event tracking with Google Tag Manager and Google Analytics 4 (GA4)  Google Analytics 4’s ecommerce event tracking is critical for identifying weaknesses and opportunities in your ecommerce site.  Implementation can be a complex process with lots of variables so measurement strategy and planning crucial. I’ll help you set up your […] - [seo](https://trevorfox.com/seo/) - [Fractional SEO Leadership & Consulting](https://trevorfox.com/fractional-seo/): Hi, I’m Trevor I’m Your Fractional SEO Expert With over 12 years of SEO experience, I’ve helped clients ranging from international marketplaces to B2B SaaS startups to DTC ecommerce sellers and even global social media sites. As a fractional SEO consultant,  I ensure success by aligning SEO strategy with business goals. Book a Call Today I help clients across the entire SEO spectrum SEO Strategy An effective SEO strategy is a faithful extension of a business strategy. It aligns positioning, content development, and web strategy. I love to help businesses understand what SEO should look like for them. It’s never […] - [Learn SQL for SEO: GSC Analytics in BigQuery](https://trevorfox.com/learn-sql-for-seo/): Learn SQL for SEO with Google Search Console Data in BigQuery You can Learn SQL! Level up your analytics career Are you an SEO, digital marketer, or analyst that wants to take your technical skills (and your career) to the next level? This class is for you! This video course will help you:  Get familiar with Google BigQuery Learn how to analyze SEO data at cloud scale Learn common patterns for SQL analytics in SEO Check out the course syllabus.  Course options: Lite Course (Free): Get access to some of the course instruction via email when you sign up.  Full […] - [B2B Growth and Experimentation](https://trevorfox.com/b2b-growth-consulting/): I help clients discover product-market fit, build growth capabilities, and scale with a combination of experimentation, execution, and analytics. With over a decade of startup growth experience from bootstrap SaaS to multinational consumer marketplaces, I’ve found success in a customer-centric approach, relentless experimentation, and purposeful collaboration. Customer Discovery and Development Time is your most critical resource. The faster you can identify your target customer, the more time you can spend growing your business. I accelerate startups by connecting them with prospective customers, identifying their most painful challenges, and testing value propositions and messaging. Each experiment, from 1:1 conversations to email, […] - [Looker Consulting and Support](https://trevorfox.com/looker-consulting-and-support/): Let’s face it. Looker is a beast. To get the most out of Looker, you need expertise and experience in data modeling, dashboard design, and data analysis. This is where I come in. I partner with Spencer Taylor and David Stocker to provide Looker consulting, ensuring your organization utilizes Looker to its fullest potential and obtains the insights necessary to make informed decisions. Whether it’s implementing Looker from scratch, building out new LookML models and views, designing new dashboard experiences, integrating with other tools and platforms, or creating custom solutions, you can rest assured that your Looker instance will be well-designed, […] - [Contact](https://trevorfox.com/contact/): Contact Let’s talk Let’s talk— over a coffee, over a beer, or over Zoom. I am currently somewhere between Portland, Oregon, and San Francisco, California, so there is at least one good option. I look forward to meeting you. 🙂 For consulting or advising inquiries, please connect with me on LinkedIn. To schedule a mentorship session, please see my GrowthMentor profile. Let’s connect Linkedin Twitter What’s up? - [Growth Consulting & Fractional Leadership](https://trevorfox.com/): Growth • Data • Strategy I help startups and fast-moving businesses grow by offering consulting, mentorship, and fractional leadership. My approach is rooted in data, experimentation, integrity, and courage. Find out how Lets work together Consulting Understand, segment, prioritize, and capture your market with analytics, experimentation, and technology. Leadership Augment your organization with on-demand strategic, technical, and analytical leadership and trusted process.  Mentorship Test ideas, talk through problems, get feedback, and explore your career with 1:1 calls by booking on GrowthMentor.  Aboutmy blog I’ve been writing this blog for over 10 years to help others learn from the things I’ve […] - [Digital Marketing and Organic Growth Consulting](https://trevorfox.com/digital-marketing-consultant/): My mission as a digital marketing consultant is to provide strategies, confidence, and data to build audiences, delight customers and sustain businesses. I embrace the constant change of the Web and enjoy the challenge and opportunity that is digital commerce. I have a broad background in digital marketing that I use to inform and enhance three main service offerings. In each service, I offer strategy, implementation, and ongoing support. Search Strategy and Technical SEO Starting from zero or ready for a refresh; strategic and technical SEO are alway indispensable. Let’s create a search experience that solves for customer needs, aligns with brand messaging, […] - [TOS & Privacy Policy](https://trevorfox.com/tos-privacy-policy/) - [Google Analytics Autotrack.js Interactive Demo and Tutorial](https://trevorfox.com/autotrack-demo/): Hello, AutoTrack! This is a short and sweet interactive tutorial and demonstration of a few features of Google Analytics Autotrack.js that I found most interesting. Autotrack standardizes the approach to implementing both simple and complex tracking in Google Analytics. It makes tracking interactions, collecting data and implementing Google Analytics code much easier. This implementation is set to full debug-mode so you can see everything as it is logged to the Javascript console. Open up your developer tools and let’s go! Click Here to Start! The URL just changed to “…/url-change.html” using the browser’s history API. This feature is often used […] - [Google Analytics Consulting and Support](https://trevorfox.com/google-analytics-consulting/): There’s more to life than pageviews. Google Analytics has evolved into a fully customizable system that can provide high fidelity insights into the most complex applications. With customization, Google Analytics can be used to capture and analyze the data that matters most to your business, not just your web server. As a Google Analytics consultant, I bridge the gap between your business, product, and development teams to enable you to collect the data that you need, in the tool that you love. From single page apps, to multi-million dollar e-commerce stores, to custom built software, I have worked with teams […] - [Web Analytics Consulting](https://trevorfox.com/web-analytics-consulting/): As a web analytics consultant, I take great pride in enabling clients to optimize their digital presence and their overall business with accurate and timely data. I work closely with clients through every project phase – from consulting and strategy to development and quality assurance. I take care of the details to ensure that the right data is collected accurately – the first time and every time. Let’s collect the data that your success depends on. Implementation Services Web Analytics Tagging Implementation Good insights require good data, but that’s just the beginning. Making data accessible and easy to work with […] - [Interactive Feedback for Agile Content Development](https://trevorfox.com/understandalytics/): It’s 2017. We should expect better online documentation. We should be able to find answers in online documentation without digging through forums and tutorials. Content creators should be able to understand the challenges of their readers and provide them comprehensive solutions. Customer service representatives should not have to resolve common issues time and time again. Agile software development has demonstrated how to continually meet and exceed user needs. It’s time we take the same approach to content development. Understandalytics is the missing piece in content creation that enables content creators to ensure the satisfaction of their readers. Understandalytics creates a customer feedback loop by […] - [A blog about marketing, analytics, and growth](https://trevorfox.com/blog/) - [About Me](https://trevorfox.com/about-me/): Hi, I’m Trevor. I am a digital native with a curiosity about the implications and applications of new and disruptive technology. I approach problems with a user-focused perspective, an analytical mindset, and team-first attitude. I believe in the power of open source and love to share my passion for learning. I want to solve new problems with new technology by networking people and things. (Let me break that down) Solve new problems I embrace the unknown as an opportunity. As new levels of access, connectedness, and speed change how we live and think, there is more space than ever for […] - [Learn Digital Marketing Technical Skills](https://trevorfox.com/learn-digital-marketing-technical-skills/): Learning the technical aspects of digital marketing has been one of the most gratifying journeys of my career. It has fundamentally changed the way I see the Web and has opened numerous opportunities for creativity and growth. If you have any interest in diving into the technical world, don’t wait, Jump! If you are an opportunity seeker, you’ll find that the demand for technical marketing skills opens up doors that you didn’t even know existed. If you are an ambitious digital marketer ready to take on the digital world, technical skills are essential. If you are even the least bit […] [comment]: # (Generated by Hostinger Tools Plugin)