Tuesday, February 22, 2022

How Brands Can Optimize Owned and Retail Channels

Ever have those ads on Facebook or Instagram that just keep coming back? Do these advertisers think they can just wear you down? Maybe they do. I had one that I’m thankful hounded me for weeks, maybe months, because I eventually needed the products offered by the brand. After a trip to the salon, I realized I needed some help repairing my hair and reducing breakage. A heatless curler ad that I’d seen what seemed like dozens of times suddenly became relevant, and not long after that I was a Kitsch customer.

Some recent Slack chats with coworkers joked about the ads following us around on social media. I admitted actually converting on the Kitsch ad, and a colleague told me that they had seen the brand at Ulta. In that moment, I regretted that I had got roped into the social ad and lost out on some Ultamate rewards points. However, I had a promo code and got 30% off my order and free shipping.

Did I end up ahead as a consumer? Did Kitsch end up ahead? Let’s look at my customer journey, how it could have gone differently with Kitsch’s omnichannel presence, and what Kitsch can do to optimize across channels.

My Customer Journey

As you know, my hair repair need aligned with a brand I’d been seeing on social media ads. Truthfully, I didn’t remember the brand name but, sure enough, was shown another ad. From the ad, I went to mykitsch.com. The website is on the Shopify platform and was using the discount code options to offer a 30% discount at the time. The discount code was displayed across the top of the site on the announcement banner. I selected the heatless curling set that I had seen in the advertisement and added to cart. The cart indicated I would be eligible for free shipping if I spent a certain amount more. This free shipping notification is another Shopify feature. Because of that option, I started to look around at other haircare items to help with my damaged hair. After finding different shampoo and conditioner sets, I went to Google Search to look up what the different types meant.

I searched for “shampoo for fine damaged hair,” which brought up several ads for products. Meanwhile the organic links were mostly for articles (Figure 1). I clicked into one article, and it was filled with affiliate links. Instead of clicking any of the affiliate links, I used the information to determine which hair bundle I should get, a shampoo and conditioner set for hair strengthening and growth.

Figure 1

Google search results for “shampoo for fine damaged hair” (Google, n.d.)



After completing my purchase, I was immediately sent a “message from the founder” email that showed gratitude for my purchase and explained how it supports a “small, self-financed, woman-owned business.” I wouldn’t receive a confirmation email for almost exactly 24 hours from the time that thank you email was sent. In between that time, I received an email promoting the discount code I had already used and some of the best sellers it could be applied to. Having not received a true order confirmation, only the thank you email, this promotional email was off-putting. I suggested via Twitter that maybe ecommerce brands should consider filtering out first-time purchasers who may not be certain of the brand yet from promotional emails until their order has shipped. This would be possible by segmenting the audience by order date, accounting for your typical order processing time.

The Omnichannel Paradox

In my journey, Kitsch had an opportunity to lose me as a customer. I could have found a similar product in the affiliate links of the articles I was using for commercial research. Had I gone back to Google to refine my search to learn more about “rice water shampoo bars” (the option I had decided on from Kitsch’s catalog), I might have been directed to the top-ranking result, Viori, or found that I could purchase Kitsch’s product from Ulta. I’m a rewards member at Ulta and the free shipping threshold was $5 less than Kitsch’s (Figure 2).

Figure 2

Google search results for “rice water shampoo bar”



As you can see in Figure 2, mykitsch.com just barely outranks its product on Ulta.com. In search engine optimization, SEOs talk about cannibalization a lot as it pertains to having links on your website, but what about a brand’s product cannibalization across marketplaces? I searched all of the Kitsch products on Ulta.com and set up a keyword list. When I applied that keyword list to ulta.com, Semrush offered “mykitsch.com” as a competitor. Although the Ulta links don’t include the brand name, most of the top ranked links for the keywords were for Kitsch products. Of those links, about half were outranking mykitsch.com for the same keyword.

Kitsch is making money whether they sell the product on Ulta, Amazon, or their website, right? But these customers might not be created equally. A customer purchasing off a marketplace will likely have no communication solely branded and may not even associate with the brand at all. Kitsch wouldn’t have had an opportunity to explain its values in a message from the CEO following my purchase off another site and probably not many opportunities to continue reaching me with promotional emails.

So, should brands avoid selling on marketplaces? Not exactly. Marketplaces give brands an opportunity to reach people that may not have heard about the brand otherwise. Think back to my colleague that recognized Kitsch from Ulta shopping. By offering its products on Amazon, Kitsch is able to reach the 51% of customers that start their shopping there. Semrush shows more than 60% of traffic to mykitsch.com is from direct traffic and nearly 70% of organic traffic is branded, so the brand appears to be pulling back in customers from these other channels.

How to Optimize Across Sites

To help bring traffic to the brand site, offer exclusives that are not offered on retailers, as recommended by Digiday. Kitsch does this by offering bundles that are not available on Ulta. However, Kitsch could stand to offer a discount for the bundle to help entice customers to buy it on the site versus buying the items separately (if bundled products are available individually elsewhere).

To fight cannibalization across sites, tailor your product descriptions and images for each site. Google offers a competitive analysis of retailers that can give companies insights into where audiences converge. Using that and data from Semrush’s Market Explorer can help brands understand the demographics and interests of the audience for each site. And don’t forget about the site search for each of those sites. Consider how these different audiences might search for the product within the site to use that to differentiate your product pages.

Monday, February 14, 2022

Semrush Tools I Wish I’d Known About as an SEO Team of One

I’ll admit that with more of a focus on data and technical SEO in my current role, I don’t do much keyword research anymore. In past in-house roles, I used Moz. When I had access to both Moz and Semrush, I leaned more heavily on Moz because I was more familiar with it. So, although I’ve had access to Semrush for at least 4 years now, I don’t have much experience with it outside of the Keyword Magic Tool and Position Tracking. Playing around in Semrush beyond my daily work for my Web Metrics and SEO grad school class has forced me to explore into unfamiliar territory. Had I known about these other tools and features (some of them didn’t exist at the time, though) when I was an in-house team of one, I would have definitely gone with Semrush over Moz.

Link Building Tools

Although I’ve been in digital marketing for more than a decade, I’ve done very little link building. I only really focused on broken link reclamation. As an in-house team of one managing all content marketing, I often checked for broken links in Google Analytics (that didn’t require me to pay for a tool) from referral traffic. With access to Moz at the time, I did get a little bit of information from its Link Explorer tool, which I would use to add to a disavow list. (Before you disavow though, I’d recommend reading this article!) With the Indexed Pages report within Semrush’s Backlink Analytics, I could have more easily seen where backlinks were 404ing (Figure 1). By connecting with Google Search Console (GSC), the Backlink Audit allows you to manage a disavow list and import in your existing one to automatically parse out duplicates.

Figure 1

Screenshot showing how to filter the Indexed Pages report to broken links only (Semrush, n.d.)



As for link building campaigns, I’ve never really done those. When I was in-house, I’d get brand mentions or links by building relationships and partnering with other big players in the industry. These mentions and links were found with social listening tools, which gave me more information than most SEO link tools. (The Brand Monitoring tool inside Semrush looks promising, though). However, I had to keep the backlinks in a spreadsheet since social listening tools didn’t show if/when you’d lost the link. If I had been looking to do link building campaigns, the Link Building Tool would have been extremely helpful. It shows opportunities for keywords you’d like to target on sites that complement you or your competitors. From my experience, a way for Semrush to improve that tool is to highlight where a broken link already exists on a recommendation and encourage the broken link outreach type. Also, it would be great to allow users to add/update contact info in the monitoring section, so you have it in one place who you specifically worked with to earn or update the link. A built-in contact update would have saved me from managing separate spreadsheets of contacts and brand mentions/links.

Listings Management

For only an additional $40 a month, you can have listings managed for 70+ directories, respond to reviews across sites in one portal, and get local map pack heat maps. When I was working with a regional hospital system, I remember using ReviewTrackers for managing responses across review sites. A portal to see reviews across sites and respond from one interface makes it so easy for a customer service team that will likely be managing the responses. Unfortunately, ReviewTrackers doesn’t list the pricing, which probably means it is going to cost way more than $40 a month. Additionally, that tool didn’t also give me listings management and the local heat map. The listings management is handled through Yext, which some people don’t care for. The local heat map allows you to see how well your business performs for up to 5 different keywords around your region. I’ve been seeing these types of graphs shared by local SEO folks on Twitter (I’m not sure if these were from Semrush’s tool, though) and thought it was a very cool visualization.

Even if you don’t want to pay the money the listings information is available in Semrush to show you where you have missing, incorrect, or incomplete information (Figure 2). That information alone will help make manually updating your listings a bit more manageable.

Figure 2

A screenshot showing missing, present, and not present data from a free Semrush listing analysis (Semrush, n.d.)



EyeOn

Poking around in the Trends portion of Semrush, I spotted a tool that is still in beta, EyeOn. Semrush says it “automatically tracks your rivals’ moves: from new content to promo shifts.” This one caught my attention because I just recently set up a script to allow team members to drop in RSS feed links and get a formatted spreadsheet to monitor industry news and competitors. EyeOn not only shows recent updates about your competitors’ websites but also monitors their search advertising. I regularly meet with our search marketing team to share insights and plan forecasts and will definitely start sharing this report with them! One thing that Semrush could do to improve this report is to add in data from the Facebook/Meta Ads Library.

Log file Analysis

As the lone SEO, I remember being excited to get log files from my IT department. However, I could only get 7 days’ worth of data in one file. Additionally, I didn’t have the best way of filtering the data other than using Excel filters. Semrush’s Log File Analysis tool would have allowed me to filter down the logs to those just from known Googlebots and sort by desktop and mobile. Additionally, it seems as though you can import multiple logs (as long as, it is for the same website), which would have made it easier for me to add and combine my 7-day exports.

As I mentioned, having the opportunity to explore the tool beyond what I need done in the moment for work has opened up a whole world of possibilities. This post barely scratches the surface of all the tools available, and I plan to play around even more to discover them all! Thanks to the Semrush team for giving students free access!

Monday, February 7, 2022

Anti-Social Brands' Lessons in Social Media Strategy

Trying to build your social media strategy? Looking at all the available platforms and how you should approach them from marketing, sales, and a customer service perspective can be overwhelming. If you have the resources to monitor and respond on all platforms at scale then more power to you. However, that’s unlikely for most businesses. As Vatuone says, “an empty profile is worse than no profile at all.” RH, formerly Restoration Hardware, is a great example of Vatuone’s theory in action.

A lesson in not investing in social media

RH’s CEO Gary Friedman doesn’t believe in investing in digital, and as such the company has no official or active social media profiles. What looks to have been an old Twitter account stopped sending tweets in 2011.The Facebook profile that was linked to and posting automatically to Twitter (not a recommended practice) in the past no longer exists. No Instagram. No Pinterest. However, there is a YouTube channel with a few videos posted each year for the past seven years, although nothing in the past year. Friedman believes that the web is “the most democratic channel” by allowing the smallest retailers to look as big as the largest. “You would have to click 10,000 times to know how large our assortment is,” he says. Freidman reduces social media down to “posting online about ourselves.” So, does this strategy work?

In 2014, the latest RH source book shipped out, weighing in at 17 pounds and with 3,300 pages. From the Business Home profile, Friedman claims source books are “the only physical manifestation of our brand” in some markets. The brand faced a lot of backlash on social media as those receiving the catalog felt it was wasteful. Rather, the brand ignored backlash on social media because it did nothing to respond to concerns since it isn’t active on any channels. The company didn’t even provide a statement to the press, instead pointing the media back to the latest earnings call where Friedman rehashed the stance on needing the catalogs to truly show the company’s assortment (Finney, 2014).

Friedman’s take on social media falls short in that social media isn’t just posting about yourself. That strategy doesn’t consider the need for addressing consumer’s issues where the customer is. His strategy is “doing great work and letting the world talk about us.” Is it truly a great customer service if your team isn’t picking up on sentiment or issues from people’s concerns across the web and adjusting? Instead, RH is forcing the user to come the company’s service funnels on the company’s time.

What about building a community? Brand advocates want to see their renovations shared by the brands they love (believe me I worked in the industry and grew the Instagram following that was already in the thousands more than 400% in a year by tapping into the community). RH is missing out on creating relationships with brand ambassadors, like one home renovator whose renovation Reels had 100s of thousands of views. She was “almost heartbroken that they don't want to see what she’s done.” RH fails to understand the conversation over content aspect of social media since it has a leader that is too concerned about showing off its assortment to talk about it with excited customers.

Rather than completely abandoning social media, consider Lush Cosmetic’s approach. In November 2021, Lush went dark on Facebook, Instagram, Snapchat, and Tik Tok with a clever post to its channels (Figure 1). The brand put out a statement explaining that these channels are bad for your mental health which is antithetical to self-care and relaxation that their products embody. However, the brand is still using Twitter, where it is actively responding to customer comments and complaints. Lush proves you don’t have to be every where to make it work for your brand and your customers. But how do you decide where to focus those efforts?

Figure 1

Lush Cosmetic’s Instagram Profile encouraging users to “be somewhere else” (Lush Cosmetics, [@lushcosmetics], n.d.)



How to pick your social media platforms

Lead with your values

First and foremost, stand by your company values. Lush realized certain platforms didn’t support its values and are avoiding those. Maybe some of the shadier side to Reddit means you’d rather not dive into that platform.

Find where your audience is

In addition to thinking about your values, consider those of your target audience. On what social media platforms might you find your consumers? Research the different social channel demographics and see which align to your best customers or most promising new customers. Check your website analytics and see where your most active website users are being referred. Even non-social referral channels can give you an idea of the type of websites and its demographics that could align with a certain social channel.

Consider the type of content to be shared

Depending on the type of content your business is more adept at creating can also lead your business to focus on a certain platform. HubSpot focuses on 5 types of social media:

  • social networking, including Facebook, Twitter, and LinkedIn
  • photo sharing, including Instagram and Pinterest
  • video sharing, including YouTube and Vimeo
  • interactive media, including Snapchat and TikTok
  • and blogging, including Reddit and Tumblr.

A SaaS company using mostly stock photography for its website is not best suited for a photo sharing platform. However, video tutorials of the SaaS product could do well on a video sharing platform or even on interactive media. Who would have thought Excel could be such a cool thing on TikTok?

RH is perfectly suited for Instagram. #restorationhardware has 350k+ images tagged. However, the hashtag is losing the plot to those doing their own restoration of vintage items. Meanwhile, by at least having an Instagram profile, Lush is still able to have the conversation directed at them by consumers advocating for them on that platform.

No matter which platforms you decide on remember that they all should be used to engage with your customers. I’ve been harping on the need to see social media as a customer service tool for a decade now! If your brand hasn’t established a strategy around social customer service yet, Business News Daily offers several best practices for approaching social media as a relationship building opportunity through customer service.

Tuesday, February 1, 2022

A Marketer's Guide to Google Tag Manager

When thinking about web analytics it would be remiss to not mention a tag management solution. Tag managers have been around for about 15 years. Google launched Google Tag Manager (GTM) in 2012. GTM integrates nicely with Google Analytics and other Google tools.

What is Google Tag Manager?

All tag managers create a container that allows website owners or marketers, even non-technical ones, to place and manage all their third-party scripts, or code snippets. As Google explains, these snippets of code are called tags. Tags are fired when a certain event happens. These events are called triggers. Common third-party scripts used in tag management tools are web analytics, A/B testing tools, and advertising partners. Google Tag Manager also introduces the dataLayer which allows for custom events and variables.

What’s the dataLayer?

Think about the data available on an analytics request when a user views a product page. The data could include a unique user ID (if the user is signed in), information about how the user was acquired within that visit, and, of course, product details. As a marketer, you want to share this product view data with your customer relationship management (CRM) tool, your website tracking, and advertising tools. Instead of having to push the different data from this event that each tool uses, you can push that information to the dataLayer one time. Then all those tools can access what data it needs from the dataLayer with separate tags.

Pros of GTM

Reuse variables and triggers

As mentioned before, multiple third-party tools can get the same information from the data made available in the dataLayer. However, Google Tag Manager also allows you to create triggers, or events, which are used to fire the different tags. These triggers can be used to fire multiple tags. So the product view event can be used as a trigger in a “ViewContent” Facebook Pixel Tag and an e-commerce Google Analytics tag. Having established triggers and variables also makes it easier to migrate tools, like switching over to GA4, or integrating new tools, such as adding a privacy control tool.

Integrate cookie control

With CCPA and GDPR, cookie control management is a necessary part of website tag management. Tracking and advertising scripts should not be fired until a user opts into them. When using a tag manager, the cookie acceptance (or rejection) can be passed as a GTM variable. The trigger for the tags can require that the cookie type was accepted, which could be indicated by a “TRUE” value in the dataLayer. Cookiebot and Google Tag Manager have teamed up for a more seamless integration for cookie preferences.

Update without a developer

Although one of the most heavily marketed pros to tag managers is the ability to add advertising tags to the website without the need for a developer, this pro comes with a large caveat. A snippet of code must be added to every page of the site that will need to use the tag manager, which is likely every page on the website. Additionally, if your tag management strategy hopes to use custom variables and events, information needs to be pushed to the dataLayer from the website. Alexander (2013) explains how this can be done a few ways, either on the back end or the front end.

If the developers haven’t already created a dataLayer push call on the page’s source code, then data will need to be pulled from the rendered page, or front end code. If the data needs to be pulled from the front end, then someone on the marketing team needs to be comfortable with HTML to find and declare appropriate DOM elements. For example, if a typical onSubmit JavaScript event doesn’t fire on a form, you might need to use a click event that targets the form button. You can use the Chrome Developer Tools to inspect an element and determine the CSS selector for it. If you aren’t sure about CSS selectors, a Chrome extension, like Copy CSS Selector, can help with that.

Testing

In 2020, Google Tag Manager released a new Tag Assistant tool that makes previewing and testing your tags so easy. Once you’ve updated your container, simply click the Preview button. This opens a new tab that prompts you to type the domain on which you will be testing. (If you don’t have the GTM snippet on your site, you can use a Chrome Extension to add it in). Once connected, the Tag Assistant tab updates to reveal all the events firing on your website, which loads in a popup window. As you click around on your site, the events appear in the left-hand menu. When an event is selected, you can click in to preview what tags are fired from it (if any), the dataLayer, and variables. Figure 1 shows what a preview of the variables available on a built-in link click event. Learn more about testing with this guide from Ahava (2020).

Figure 1

GTM variables from a link clink in preview mode



Cons of GTM

Extra code

Because we are using another third-party resource to load all the other ones, we have more code to worry about. GTM must load its JavaScript file, which then calls each of the JavaScript files used for the tags within GTM.

For my website analytics, I use GTM. My GTM container has 4 tags, 3 triggers, 11 variables (2 of which are user-defined). The JavaScript file is ~38kb. Meanwhile, I’ve helped clients implement extensive custom event tracking in GTM sending to multiple tags. Those implementations can cause the initial GTM script file to be 5x the size of my basic GTM setup’s file. Google offers some advice on how to keep your container from getting too large.

If you were thinking of using GTM just to “add scripts without a developer,” I hope you will consider these more advanced options and approach it with a more strategic view. What data might you be sending to different scripts separately that you can consolidate into the tool? How might you capture that information and share it back to GTM? Happy tagging!

Monday, January 24, 2022

The Channel Manager’s Best Google Analytics Report

If you manage an acquisition channel—like organic search, paid social, email, etc.—then the Landing Pages Report in Google Analytics should be your best friend if it isn’t already.

What is a landing page

You might call any priority page where you are sending a campaign a “landing page.” However, in Google Analytics, a Landing Page is specifically the dimension that indicates which page a user entered the site. Other tools, like Adobe Analytics, call this an “entry page.” This dimension tells us on what page the user started their session. Thus, this dimension is scoped at a session level, which I’ll explain more about.

What are entrances then?

If you are playing around in Google Analytics, you might also come across the option for “Entrances,” which is a metric that counts the number of times a page served as the first page of the session. Learn more about dimensions and metrics in this guide from Google.

Scope

So, what is a session-level scope? Stecklein from Seer Interactive details the scopes used in Universal Analytics. Those four different scopes for reports are:

  • user
  • session
  • hit
  • product.

Although most of the information within the “Behavior” section of Universal Analytics is hit-based, such as pageviews and events, the Landing Pages report, which is under Site Content, is a session-level scope. This can be confusing because dimensions and metrics can only be paired if they have the correct scope. Google offers a reference guide for these pairings. A good way to determine the scope of your report is to see what metrics are available on it by default.

A pageview is a specific hit that sends one request to the server. Page-level reports show metrics like pageviews and time on page. Meanwhile, sessions look at all hits from the beginning of a session starting to its end, when the user exits the site or the session times out. Thus, session-level metrics include sessions, pages per session, and average session duration. Refer to Figure 1 to see the different metrics used in the Landing Page report vs. the All Pages Report. You’ll see in the image the Entrances dimension on the All Pages report, which indicates how many times a session began on that page.

Figure 1

Universal Analytics Landing Page Report vs. All Pages Report (Google Analytics, n.d.)


What about Landing Pages in GA4?

I hope I’ve made it clear that these scopes and the Landing Page report are tied to Universal Analytics. The largest difference with GA4 vs. Universal Analytics is that GA4’s data model doesn’t focus on sessions as Universal does. As such, “landing page” doesn’t exist in GA4. Learn more about the differences with session-level data in GA4 from Bounteous.

So how can you review landing pages? GA4 has a built-in event/hit of “session_start.” When paired with a page dimension, “session_start” shows which pages users are entering the site. Instead of looking at this as a “page,” you must consider “session_start” as an event. Thus, you can find entrance pages by going to Reports > Lifecycle > Engagement > Events within the GA4 menu. The main Events report shows all the available events. Once you click into the “session_start” event specifically then you can scroll to review the top pages for this event (Figure 2).

Figure 2

“session_start” event report in GA4 (Google Analytics, n.d.)

If you’d like to look more at the page level, then you can use the event metrics to create an “entrances” metric. The reports in GA4 are very lackluster compared to the options available in Universal Analytics, so creating custom dashboards seems to be the better route. Omi Sido explains how to add the session_start event to GA4 page reports and how to create a custom report in the Analysis Hub.

Tips and Tricks

The Landing Page Report can get a little overwhelming if you have a lot of content. If your site doesn’t use Content Grouping (refer to the red line in Figure 3), then you can use Advanced Filtering to filter down to a specific page or group of pages. Basic and Advanced Filtering is pictured in a blue box in Figure 3. Be careful filtering to exact page matches though because query string parameters and inconsistent trailing slashes on pages can cause an extra row for the same page, as seen in Figure 3.

Figure 3

Filtering options within the Landing Page report (Google Analytics, n.d.)

If you are looking to narrow down the report by your acquisition channel, then you can use segments or advanced filtering for that too. Segments are useful when you have a channel or source/medium on which you regularly report. Meanwhile, if you are digging into a more specific referring domain or source/medium, you can also filter by adding a Secondary Dimension, which is highlighted in yellow in Figure 3. Use the Advanced Filter options to select the Secondary Dimension for your filter or the filter will stick to the Primary Dimension as the default.

Thursday, January 20, 2022

Why Bounce Rate is a Terrible Benchmark

Are you measuring how your site or site section’s bounce rate compares to other sites? Don’t! Bounce rate is incredibly hard to standardize, not only across websites but also across your website, and acquisition channels. One of the major reasons for this issue is a poor understanding of bounce rate.

What is a bounce

The bounce and bounce rate definitions may be different depending on where you get your information. The Web Analytics Association defines a bounce as “a visit with one pageview.” Despite that being under a “Google Analytics Glossary” page, that definition is not aligned with how Google Analytics determines a bounce. Forget what anyone else, even your boss, says; go to your analytics provider to understand how it determines a bounce.

Google explains that in Google Analytics a bounce is calculated as a session that triggers only a single request to the Analytics server. When the page loads, a pageview request is sent to the server but requests other than pageviews, called interaction hits, can be sent from the same page, too. Imagine a user that visits a page that begins playing a video once the user has scrolled it into the frame. The user enters the site on that page, scrolls far enough for the video to start playing, scrolls past the video without watching, and exits the page. Is that a bounce? Depending on how your site is tracking the video event or any other on-page events, it may or may not be considered a bounce.

Events in Google Analytics default as “interaction hits.” When an interaction hit occurs in addition to the initial pageview, then the visit, or session, is not a bounce. If you are using events to track the video play, that event is likely kept to the default interaction hit, which means the user scrolling past it without watching and immediately leaving would NOT be a bounce. However, events can be set as “non-interaction hits” by setting the “non-interaction hit” parameter to “true.” Learn how to set the parameter to true in Google Tag Manager or with a hard-coded analytics.js or ga.js script.

How to properly benchmark bounce rate

Would you or your organization consider auto-played videos an interaction? What if competitors do and you don’t or vice versa? How might other pages on your website appear from an engagement standpoint if they don’t have automatic video plays bringing down the bounce count? Because sites and even pages within the same site can serve such different purposes, we shouldn’t be comparing bounces and bounce rate to other pages. CXL explains how two different sites (or sections on the same site)—a blog and an informational page—will have very different bounce rates because of how they serve the user’s intent. So what is bounce rate good for? You can use bounce rate as a metric to help improve the specific page.

Even when benchmarking the same page there are some caveats. Be sure events that aren’t triggered by a user interaction are not set to the default “interaction hit” to unnaturally set the bounce rate low. Some examples are auto-played videos, scroll tracking, and banner ad views. Toggling content, like an accordion or tab, is another one to set clear expectations for interaction hit, or not, and make sure that is consistent across the site. Another caveat to setting a standard or bounce rate goal for a single page is to consider how the acquisition channels might be affecting those bounces. From the CXL article again, a poor bounce rate from one acquisition channel might signal that the message is not providing the right context or is being presented to the wrong audience. A bad ad or ad targeting could raise the bounce rate making it seem as though the page is subpar.

In case you couldn’t tell, I don’t care much for bounces and bounce rate, and don’t include those in reporting. Happily, with GA4 we won’t even have to worry about it! Bounces and bounce rate do not exist in GA4 and instead are replaced with engaged sessions and engagement rate. I love Krista Seiden’s definition of engagement rate as an “inversion” of bounce rate, “measuring active interaction rather than the lack of it.” If you aren’t ready or just don’t like GA4 (yet), consider taking its engagement measurement as a way to better define engagement with the data available in Universal Analytics. Engaged sessions are those when the session

  • has lasted more than 10 seconds
  • resulted in a conversion event
  • had two or more page/screen views.

Some ways to analyze those in Universal Analytics are to look at the other engagement metrics, like average time on page when looking at page-level data or average session duration and goal completion/conversions when reviewing session-level data, like the Landing Pages report (which I’ll be talking about in my next post).

Friday, August 9, 2019

Create a Sheet of All The Instagram Posts You Are Tagged In

Don't worry I've automated scraping your tagged Instagram posts for you!

If you do any work around Instagram, you know that the "Tagged" photos on your profile is a gold mine of insights! These are your brand advocates speaking about your products. Understanding the frequency and timing of their sharing, what they are saying about your brand, what hashtags they are using is SO useful to helping you craft your brand messaging and approach on Instagram. But aside from clicking through every single image, how can you digest all of that information? By scraping their JSON of course!

Figure Out How Instagram Generates Your Tagged Feed

When on your Tagged page, instagram.com/[yourhandlehere]/tagged, right click in your browser to Inspect or open your dev tools. Select the "Network" tab, filter to the XHR. Once you start scrolling to populate new images from the initial 12 that loaded you should see a call with the name "?query_hash=..." Select that network call to get the full REQUEST URL.

So What Is All This?

Go ahead and copy and paste that REQUEST URL into a browser bar to see what is returned. You'll see something like below which is the JSON that populates the tagged images on lazy load.

In the picture above, the "endCursor" variable is highlighted. This will come into play later. Then just beyond that is the "edges" array (array values are wrapped in []). This is the meat of your info. You can copy and paste that entire array. It ends with the closing bracket followed by three curly braces and then the "status" variable.

Make the JSON human readable

I know you are thinking, "but Danielle, how are we supposed to pull any insights from this?" It looks like a lot. But as long as data maintains the expected structure you can map values pretty easily. When I was pulling this manually, I used this awesome JSON to CSV converter. However, I built a Google Sheet that using Apps Scripts will GET the data from Instagram and map it into a Sheet for you. I have my last fiscal year IG tags data in Sheets to analyze using Data Studio (and will share in a forthcoming blog post about some of the data analysis I'm doing from all this!)

How To Set Up To Pull This Data in Google Sheets

USE THIS SHEET TO AUTOMATE THE PROCESS!
In order to start the Sheet, you will need information from that REQUEST URL you pulled from the Dev Tools network tab. Copy everything up through "variables" on that and paste it into A5 of the Sheet. Then in A8 set how many posts you'd like to pull at a time. It seems to cap at 50 and the default is 12 (which is what initially pulled on your REQUEST URL provided there are at least 12 posts to pull). NOTE: if an account goes private after the initial post, it seems to make the "50" less than. Some pulls only generated ~48 posts.

From some digging on Stack Overflow, the variables that IG needs passed to pull the correct data have changed quite a bit. For now, they are passed as a JSON that has been URI encoded. You will need to DECODE it get your account ID. I used this simple encode/decode tool, which you can see it in use below. Get the value with the "id" variable and paste it into A11 on the sheet.

In the image above of the response data in the browser tab, I mentioned we'd come back to the piece that I had highlighted. That's the endCursor which indicates where the next data pull/page should begin. On the sheet, just leave A14 blank and IF there is more data to pull, the endCursor will populate there for you to run the script again starting with where your last pull left off. Pretty sweet huh? While I would have loved to have not made you have to go in and hit "run" again for each pull, the event triggers in Apps Scripts are a little finnicky. Anyone who has a fix for me, I'd appreciate it! But this is still quite simple and fast. I pulled ~2250 posts (which was about 42 clicks) all while writing this blog post and watching a single episode of Handmaid's Tale. Believe me, it was a hell of a lot faster than doing the manual process of copying and pasting into the JSON to CSV, pulling the endCursor, encoding it, pasting the new encoded variables into the browser bar and repeating the process over again. I did that for about ~2400 posts before I finalized the script. So you are welcome!