The Only Two Metrics That Actually Matter In Advertising

There are only two metrics that actually matter in advertising: cost and revenue. Cost is readily available in all ad platforms, but revenue can be difficult and costly to obtain. Because of this, many agencies and marketing departments fail to track this crucial metric, leaving them to spend client dollars blindly.

Advertising’s Sole Purpose Is to Drive Sales

It’s easy to lose focus on the ultimate goal of sales with the staggering amount of data relating to bounces, traffic, impressions, view counts, likes, comments, shares, and heart reactions. But, bounce rates become irrelevant when your content doesn’t sell. Traffic doesn’t matter when your website doesn’t convert. Facebook page likes are completely meaningless when people don’t click your posts.

It’s not that marketing VPs, account executives, and creative directors don’t agree with the sentiment that advertising should drive sales, it’s that they fall into the trap of trying to derive value from sources where there is none. 

This phenomenon goes back a lot further than just the digital age, as made evident by this David Ogilvy clip from several decades ago:

Ogilvy praises direct advertisers for their ability to measure results “to a dollar.” While the entire 7-minute speech is worth a listen, the relevant sentiment is best summed up here:

You direct response people know what kind of advertising works and what doesn’t work, you know to a dollar…The general advertisers and their agencies know almost nothing for sure because they cannot measure the results of their advertising.

We recently worked with a client who had been sold (and burned) by another agency that Ogilvy might call general. The client had entrusted the agency with a 6-figure ad buy promoting a single event, and they were rightfully furious that the agency was unable to tell them how much revenue had been generated after the campaign was done (though, I’m sure the agency’s accountant had no problem telling the client how much money they’d spent). That client contracted Flint Analytics to fix and automate their revenue attribution, making tracking a non-issue for future campaigns.

Learn how Flint Analytics may be able to help you solve your company’s revenue attribution problems.

We believe there is a certain amount of negligence and irresponsibility in spending client dollars without having the slightest idea how much value that client received in return. For ecommerce, you can and should know, down to the dollar, your earnings from each individual advertising source. For clients with longer sales cycles involving multiple consultations and touchpoints, you can and should know, at a minimum, the source of every single lead generated. If you cannot report on the true business impact of your spend, you are doing your client a disservice.

If you’re the type who can sell a ketchup popsicle to a woman in white gloves, and you use that ability to convince clients to spend money on the idea that weak metrics like social follows or heart emojis on posts are absolutely good for business, you’re sitting somewhere between misguided and dishonest.

The Narrative Fallacy

To be fair, a lot of marketing professionals seem to honestly and wholeheartedly believe that increased pageviews, lower bounce rates, higher domain authority, and more social engagement definitively (key word) lead to more sales. This is innocent enough. When agencies and marketing departments are technically incapable of tracking actual sales results, they tend to justify their strategies, actions, and budgets by taking any stats they can — no matter their relevance — and creating causal links where they might not actually exist. In his book The Black Swan, Nassim Taleb writes extensively on this practice, referring to it as the narrative fallacy. He writes:

The narrative fallacy addresses our limited ability to look at sequences of facts without weaving an explanation into them, or, equivalently, forcing a logical link, an arrow of relationship, upon them. Explanations bind facts together. They make them all the more easily remembered; they help them make more sense. Where this propensity can go wrong is when it increases our impression of understanding.

Think about that in the context of digital marketing: sometimes all we have are sequences of facts in the form of sessions, bounce rates, engagement, view counts, impressions, and more. It’s information overload, and our job security is partially dependent on convincing clients and superiors that we can make sense of it all.

Any marketer with a basic Google Analytics setup — but no way to tie revenue back to its source — is probably guilty of committing a narrative fallacy. If quarterly sales increased, they might tell their CEO that increased web traffic from clicks on a Facebook campaign were the root cause of the increase in sales. If this marketer was an agency pitching a potential client whose sales had been dropping, they may point to a lack of advertising budget as the root cause. The same goes for anyone pitching or justifying SEO work, a creative strategy, or social media management: these are all things that can help business, but they do not definitively do so.

This is why revenue tracking is so important: it eliminates the human tendency to rely on biases and allows you to focus on identifying marketing practices that have real, valuable business impact. It is only through knowing how much money your efforts made that you can accurately analyze if the money you spent was worth it.

Need Help with Revenue Tracking?

The technical process of tracking revenue is extensive and worthy of volumes, which is why we’ve limited this article mostly to the importance of this data point. If your company or your client is struggling with revenue attribution, contact us to schedule a free consultation.

Integrating Ecommerce and Facebook

Integrating Google Enhanced Ecommerce and the Facebook Pixel

This article is for those who:

  • use Google Tag Manager and the data layer to implement enhanced ecommerce (see our handy guide),
  • use Google Tag Manager to manage their Facebook Pixel, and
  • are interested in running dynamic retargeting ads for a Facebook Catalog.h

In order to send existing enhanced ecommerce data into Facebook, you will have to fulfill the requirements needed to run your dynamic retargeting ads. At a minimum, you need to send the associated parameters for the ViewContent, AddToCart, and Purchase Facebook events. Each variable can be extracted from an existing enhanced ecommerce setup.

Let’s Begin With Some User Defined Variables

For starters, you’ll need to create a few user-defined variables in Google Tag Manager that will extract data from the enhanced ecommerce code and translate it into a format readable by Facebook.

Variable 1: FB – Product Detail ID

This first variable will pull the Product ID from a product detail impression. This will be used in both your ViewContent and AddToCart tags. The configuration for this is fairly simple, just create a data layer variable type named FB – Product Detail ID with the following settings:

Variable 2: FB – Revenue

Then, you will need to send a value along with the Purchase event so you can properly track and optimize for revenue within Facebook. This can be extracted directly from the enhanced ecommerce purchase array that you should get every time a transaction occurs.

To do this, create a data layer variable type with the name FB – Revenue using the following settings:

Variable 3: FB – ecommerce.purchase.products / FB – Purchase ID Array

Additionally, you will need to send an array of product IDs to track which products were purchased by Facebook users. But to get to the end variable, we will actually need to create another variable first.

Therefore, create a data layer variable called FB – ecommerce.purchase.products with the following configuration:

This will pull the individual product IDs from your purchase array.

Next, create a custom JavaScript variable in Google Tag Manager called FB – Purchase ID Array using the following script:

function() {
 var products = {{FB – ecommerce.purchase.products}};
 return products.reduce(function(arr, prod) { return arr.concat(; }, []);

This will create an array of product IDs for all products that are purchased that can be passed into Facebook.

Now You Can Configure Some Tags

Using these variables, you can now configure tags for the Facebook events ViewContent, AddToCart, and Purchase.

REMEMBER: Use advanced settings to make sure that your base Facebook Pixel fires before any of these tags, otherwise you risk losing data.

Tag 1: ViewContent

You can now create a custom HTML tag for sending a ViewContent event into Facebook. Use the following code:

 fbq(‘track’, ‘ViewContent’, {
 content_ids: {{FB – Product Detail ID}},
 content_type: ‘product’

<img height=”1″ width=”1″ alt=”” style=”display:none”
src=”<INSERT_FB_ID>&ev=ViewContent&cd[content_ids]={{FB – Product Detail ID}}&cd[content_type]=product/>

As far as triggering goes, that is up to you. We typically set this as a pageview to a product page only so that we can limit tracking to meaningful content views only.

Tag 2: AddToCart

Your AddToCart tag should be triggered by your existing enhanced ecommerce addToCart trigger. Use the following code for this tag:

 fbq(‘track’, ‘AddToCart’, {
 content_ids: {{FB – Product Detail ID}},
 content_type: ‘product’

<img height=”1″ width=”1″ alt=”” style=”display:none”
src=”<INSERT_FB_ID>&ev=AddToCart&cd[content_ids]={{FB – Product Detail ID}}&cd[content_type]=product/>

Tag 3: Purchase

Your Purchase tag will use the following code:

 fbq(‘track’, ‘Purchase’, {
 content_ids: [{{FB – Purchase ID Array}}],
 content_type: ‘product’,
 value: {{FB – Revenue}},
 currency: ‘USD’

<img height=”1″ width=”1″ alt=”” style=”display:none”
src=”<INSERT_FB_ID>&ev=Purchase&cd[content_ids]=[{{FB – Purchase ID Array}}]&cd[content_type]=product&cd[value]={{FB – Revenue}}&cd[currency]=USD/>

In enhanced ecommerce, transactions are not events. Instead, they are actions defined in an array (as explained here). For triggering, just use whatever identifier that confirms a transaction has occurred (ex. Confirmation Page viewed, button click event, etc).


These methods will not only save you time in setting up your Facebook Pixel for dynamic retargeting, they will also allow you to more easily integrate your Google and Facebook advertising strategies (which is also the subject of our next analytics article!).

Need Help with Your Analytics Integration?

Flint Analytics can help your company execute tough analytics setups like this. If you want help, contact us for a free consultation today!

Content is Hard, Time Consuming, And Invaluable

With the rise of social media influencers, some companies have decided to get out of the content game. Sure, they have a website, and perhaps a Facebook, Twitter, or Instagram account, but they’re rarely updated. They may even have a corporate blog section, even though it hasn’t been touched since Obama’s first term. It just seems easier to pay an outside blogger to write articles on their own site, especially since some writers will push out articles simply for free samples. Isn’t that enough?

Using an outside voice can be a meaningful part of your marketing portfolio, but don’t expect their articles to help you generate a lot of web traffic. Bloggers have one, primary goal — increase readers for their blog. They may have an affiliate link or two that can help you make sales, but it’s kind of a crap shoot if those links convert. And those backlinks won’t necessarily help you, especially if the writing is poor or their domain authority is low.

What will help get you ahead of your competition, however, is for you to generate original blogs, white papers, or e-books for your own site. But why is content creation so important?

Content Plays Into The Science Of Searching

While it may not seem like it, SEO has a great deal of humanity in it. That’s because search engines like Google and Bing try to be as intuitive as possible. They need to ensure that you get exactly what you want every time you search. In response, our search queries have evolved from disjointed words to full sentences.

In the Olden Days, if you wanted to search for dairy-free ice cream, then you would be instructed to type in something like, “Dairy Free” + “Ice cream”. As searching became more intuitive, you could just type in dairy-free ice cream without any extraneous punctuation marks and still get the same results. Basically, Google wants us to search like we talk, and let them do all the heavy lifting.

We’ve now taken this directive to the next level. We may still search for Dairy-Free Ice Cream, and get a slew of product homepages, but we also will type in the best dairy-free desserts or What dairy-free ice cream can I serve at a kids birthday party?  In these cases, the search engine pulls up pages that attempt to answer these questions, and a lot of times that isn’t a product’s homepage.

If you rely on contributors to answer these search queries, then you have little control over how these questions are answered. Some may represent your product well, many won’t. They may not even rank in search results. And even if they do, it’s the blogger’s site that will rank, not yours. Every click will go to their playground. To get to your site, the user will have to perform additional actions.

However, if you write your own articles on your own site, then searches will go directly to you. Having a blog that addresses different topics allow you to possibly rank in numerous search queries. By ranking for many different queries, your web traffic will start to climb exponentially. Of course, your content has to be pertinent, well-written, and properly formatted for SEO — and that’s not always easy to do.

Content Reinforces Your Brand

While it’s great to rank high in a Google search, that’s not the only reason to produce content. After all, you can be found in other ways, like Pay Per Click, Facebook remarketing, and traditional advertising. With the right targeting, these avenues may actually be more effective at driving people to your site. Although, they are usually limited-time campaigns that cost money.

Content is eternal and can be one of the best ways to establish your brand. With the glut of online and offline marketing, consumers have become inundated with noise. The old Mad-Men salesy shtick with a slick slogan and attractive logo doesn’t work much anymore, as most people will just filter that junk out. This is especially true in more niche markets, where customers are more discerning in what they buy or who they get services from.

A static website can establish a brand, but it won’t develop it. Even your heartwarming story about how your dairy-free desserts were developed from recipes handed down from your lactose-intolerant Nana-Booboo doesn’t mean much when it’s parked on your About Us page. These sections are important, but they may not mean very much to a consumer who can see hundreds of About Us pages talking about their own Nana-Booboo recipes.

When you develop content through a blog, white paper, or e-book, you give people a look at your company beyond the gimmick. Instead of yelling “LOOK AT ME” with the rest of the crowd, you develop your brand by talking about what’s most important to the customer. So while your website can talk about how much kids love your dairy-free ice cream, you show how much your product fits a child’s dairy-free lifestyle through blog articles on dairy-free birthday parties. This strategy goes beyond “becoming an expert in your field,” and connects you to your audience on topics that they actually care about.

The Caveat — Your Content Has To Be Good

There’s a big catch on creating content — it needs to be good. Google and other search engines try to filter out junk that is poorly written, spammy, and/or unhelpful. A search engine’s reputation is based on good experiences and quality results, and that means it needs to lead people to pages that help fulfill their query. If your content is vague and meaningless, or repeats content that’s already is out there, Google will pass you over and all that hard work and time would be for naught.

If you have the time and talent to write engrossing web pages and blog articles, great. Just make sure you post new content consistently (more than one blog post a quarter). One article can help one query. A hundred articles can cast a much larger fishing net. And while content should be brand-building and customer-focused, is also needs to be structurally sound SEO-wise. Each article should use interlinks, keywords, and a strong call to action.

Flint Analytics Can Help With Engaging Content Creation

Let Flint Analytics help you make content an integral part of your marketing portfolio. With strategic planning, SEO audits, and creative service, we can create engaging content that connects you to potential customers. Just contact us at 317-576-2855 and we can help you fulfill your goals.

5 Ways To Increase Local SEO For Franchisees

If you’re a local franchisee with a small budget, it can seem overwhelming to know how to increase your local SEO and compete against national companies. Luckily for you, it’s possible for your local website to rank higher than national brands online when you take a local strategy.

Taking a local strategy is key because it’s easier to rank for local terms like “bike shop in Pittsburg” instead of “bike shop.” Google and other search engines want to give customers what they’re searching for. So if customers are looking for local businesses, that’s what Google shows them.

So how do you start building a local marketing and web strategy as a franchisee? It depends on how you’re set up as a franchisee.

If your franchise shows up as a page under your national franchise brand’s website, then you may not have as much control over your local SEO. So you should focus on the first two methods that aren’t on your website: local listings and reviews. Then you can try to persuade your corporate office to put more resources into local SEO by using the suggestions in the rest of the article.

Get listed on Google My Business and other listing services

When you search for a business category on Google — either by mobile or desktop — a map with some local listings is what first appears. These listings show the essential stats for a local business including their website, reviews, address, and phone. These stats come from Google My Business (GMB). It’s one of the main ways your local customers find you online.

For example, when you search for a local service like “Pet grooming Dayton Ohio” in Google, chances are one of the first results may be a map.

Google My Business map of pet grooming studio

Your potential customer can then click on one of these listings or go directly to a provider’s website or reviews. If the customer clicks on a listing, they’ll see this screen which shows them the business’ contact information, a link to the company’s website, reviews, photos, and questions and answers.

By building out your GMB listing you can increase your chances of being seen by your local customers and also give them relevant information like your hours, website link, reviews, etc.

Google My Business isn’t the only listing you should create. We recommend adding your business to other listings that your customers search for. These might include Yelp, TripAdvisor, Bing, Manta, etc. Find out which ones your customers search on and then add your business to those listings. You can also use local listing services to manage all of your listings.

Solicit reviews from customers

What’s one of the first steps customers take when researching local companies? Finding reviews of them online.

So if reviews are so important, how do you build up positive customer reviews from your customers?

Decide which avenue(s) is most important and send customers there

Some businesses may have customers looking them up on Facebook, while other franchisees’ customers look them up on Google or TripAdvisor. Find out which venue most of your customers look for and post reviews on and then focus your energy on those one or two platforms.

Build a strategy for how you’ll get reviews

If you want to build up your reviews, you need to be proactive and ask your customers for reviews. First, decide when you’ll ask your customer for a review. Is it in person? Through a follow-up text or email? The best time to ask for a review is when your customer has had some time using your product or service, but the experience is still fresh. Make it easy for them by including a link that sends them directly to where you want them to review.

Optimize Your Site for SEO

If, for example, you’re a franchisee of a pet boarding studio in Dayton, Ohio, you want to show up when people search for “pet boarding Dayton.” You can pay for Facebook ads or Google ads which cost money, or you can optimize your site for local SEO. Here are some basic steps to take to increase your local SEO by optimizing your site.

Decide which local keywords you want to rank for

Local keywords like “pet boarding Dayton” instead of just “pet boarding” are at the heart of your SEO strategy. By targeting local keywords, you have a higher chance of ranking higher in the search results, even against larger brands. Google knows that when a customer is searching for a local service like pet boarding, they want local results to show up.

So think of the product or services you offer and build a keyword list around them. If you want to get more advanced, you can do keyword research using tools like Google Keyword Planner, Moz Keyword Explorer, or Ubersuggest.

For example, if you offer pet boarding for both cats and dogs as well as additional services like grooming you could try to rank for the terms:

  • Pet boarding studio Dayton
  • Dog boarding Dayton
  • Cat boarding Dayton
  • Pet grooming Dayton
  • Overnight pet boarding Dayton
  • Doggie daycare Dayton

Match those keywords to pages on your site

Once you have your list of core local keywords, match them to pages on your site. If you have a page that currently has information on both overnight boarding and daytime boarding, consider splitting it into two pages so that you can rank for both terms.

You may need to build new pages or add new content to existing pages so that each of your core pages has a keyword that you want to rank for.

Add those keywords to key parts of your pages

You want to tell Google and other search engines exactly what each page is about, using your keyword strategy. So add your keyword phrase to your page’s title, headline, and 3-5 times in the text. Try to make your keywords as natural as possible, because it’s important that your customer has a good reading experience with your page.  Also, avoid keyword stuffing where you’re putting a lot of keywords in your page so that you rank better because Google will penalize you for keyword stuffing.

Explore more advanced SEO techniques

Once you’ve built your keyword strategy, explore other ways to improve your site’s ranking. This can include your site’s organization and schema, increasing your site speed, etc.  

Create local content

Local content such as articles or blog posts that focus on helping your local customers is a great local SEO strategy. That’s because:

  1. Your customers search for local content
  2. Writing content establishes you as a local authority for your customers
  3. Google gives priority to local content and local content can rank higher than national content

So maybe you write a blog post about how Dayton residents can prepare their pets for an overnight stay at your local boarding studio. You could focus on how Dayton’s weather and seasons might affect their pet, or benefits of your particular studio.

By taking a local focus, you’re more likely to rank when your customers search for “preparing my pet for overnight stay Dayton” compared to a broader article where you’re competing with other boarding studios all over the nation.  

Get relevant backlinks

Another way to increase your SEO rankings is by getting relevant backlinks. What are backlinks and why are they important?

Backlinks are when other websites link to your website. These websites could include publications like your local newspaper, industry listings such as Yelp, etc. When your site has backlinks from reputable websites that have a strong domain authority, then Google considers your site to be more trustworthy since these sites linked to you.

So think about ways to get backlinks to your site. Maybe you can be featured in a local newspaper story that’s posted online and linked to your site. Or you could join an industry publication or directory that includes a link to your site.

Take the First Step to Increase Your SEO

Now you know a few ways to increase your SEO on your website. Choose one strategy to start with and build from there. If you want some more help with local listings, writing localized content, or building a franchise listing contact us at 317-576-2855.  

Let us solve your SEO problem.

JC Hart Website Photo

Property Management Company Gets 20 Localized Websites

J.C. Hart’s Website Challenge

The J.C. Hart Company, an Indiana property management company with over 20 multi-family apartment communities, was spending too much time managing their websites and needed a better website solution so they could focus on other, more lucrative marketing initiatives. Their solution criteria included:

A central interface so they could make changes across 20 websites at once and reduce time spent on maintenance.

Unique, individualized content for each community’s website.

Fresh design that was fast and mobile responsive.

Tight integration with their current scheduling software, LeaseHawk, as well as their resident management software, ResMan.

The Integrated Website Solution

Having worked with Flint Analytics before on analytics projects, and knowing they had a multi-location website capability, J.C. Hart turned to them for help on their website redesign and relaunch.

“There are plenty of companies that know what they’re talking about. The big differentiator with Flint Analytics is that they know what they’re talking about and execute in a timely manner.” -Mark Juleen, J.C. Hart V.P. of Marketing

Together they worked on a website solution and design that would give J.C. Hart the ability to manage websites through a central interface and still have the flexibility to make changes at the property level. They could create a new page once and have it populated across all sites with each property’s unique information, name, and copy instead of having to do each page one at a time.

Branding was important, and J.C. Hart retained brand control over the sites while still having unique logos, photos, and copy for each property. Ryan Cox, J.C. Hart Digital Marketing Manager said, “One of the challenges was that a job this big (20 individual websites) is really 20 different brands, while carrying through one brand identity.”

Other website features included:

●      The ability to quickly add new websites for properties that J.C. Hart had built or acquired

●      Prospects could schedule tours directly on the website with custom LeaseHawk API integration

●      Resman custom API integrations including floor plans, pricing, and resident services

●      Strong call to actions on mobile and desktop

●      Photo galleries, floor plan, amenities, testimonials, and more

●      Automated social media integration with Instagram

Website Results

More Scheduled Tours and Better User Experience

The ability to easily schedule tours on their website was important, as J.C. Hart has learned that prospects who schedule tours are more likely to lease. Within the first couple of months they’ve had an uptick in scheduled tours, due to the strong CTAs on the website as well as the LeaseHawk integration. This was especially true for their apartments that cater to students and young professionals who are more likely to schedule online rather than call.

The J.C. Hart team has been pleased with the user experience on their sites.

“I think on mobile they are ten times better than previous mobile sites. The way that they render on mobile is just so much better, and the way that people can navigate and calls to action on mobile are better.”

-Mark Juleen

Reduced Maintenance

J.C. Hart reported reduced maintenance on their sites.

“A centralized hub for mass-changes, and a decentralized exact-hub for individual properties is an excellent feature. Additionally, better websites (speed, content, layout, usability, UX, functionality) mean I’m having to make changes less, and the maintenance is definitely, significantly reduced.”

– Ryan Cox

With their new websites, J.C. Hart has been able to begin focusing on other marketing initiatives while increasing their scheduled tours, reducing their time spent maintaining websites, and creating a better user experience, especially on mobile.

Let us solve your apartment marketing problem.

Math for Marketers: Quadratic Trendlines

Math for Marketers: Quadratic Trendlines

Disclaimer: We’re going to be using some calculus and linear regression here. The math can be a bit boring, so bear with me. We’ll get to the fun applied part after getting through some of the need-to-knows. If you’d like to skip the theory and go straight to the application, click here.


At Flint Analytics, we specialize in hyper-local marketing strategies for multi-location businesses. What that means is that we utilize geographic siloing to a large degree: every city we’re marketing to kind of exists in its own little strategy bubble.

While this detailed level of attention yields fantastic results for our clients, it can make my job as an analyst very difficult. Things may look great for the client as a whole, but how do we sift through the data quickly and efficiently to know when things might be going wrong in, say,  just the Oklahoma City market?

There are several different methods for accomplishing this goal. Today we’re going to discuss how to use quadratic trendlines and their mathematical properties to quickly and efficiently identify potential problems in your multi-location data.


What is a Quadratic Trendline?

Generally, a quadratic trendline is a second-order polynomial which attempts to best fit a set of data. The equation will look something like this:

In our application, the x-value will be a measure of time like {1, 2, …, n}, and the y-value will be our KPI (sessions, leads, organic traffic, etc). The most important part of this equation is or the quadratic term within the equation, as it allows us to do some interesting analysis with regards to current trends and changes over time.

Let’s say you’re analysing traffic trends over a period of 60 days and your best fit quadratic trendline is:

In your data, the x-values are days {1, 2, …, n}, and your y-values are the actual session counts for each day. Graphing this equation alongside the actual data looks like this:


The blue line is the actual day-to-day data, and the red line is the quadratic trendline. You can easily notice two things:

  1. The day-to-day data fluctuates periodically every 7 or so days, suggesting some weekly trends.
  2. The trend line hits a low point somewhere in the late 20s or early 30s.

With the periodicity of the day-to-day data, it’s very difficult to visualize whether things are trending in a good direction over time. One thing we could do is find the slope of the best fit line without a quadratic term. In this case, our equation would be:

The slope tells us that things are technically trending positively over 60 days, but the coefficient .00286 is practically 0, which doesn’t really give us a lot to work with. This basically says “things are going up…barely.” The reason the quadratic equation gives us so much more to work with is that it has a critical point.

Warning: Calculus Ahead Let’s bring back the quadratic equation and take its first and second derivatives:

From the first derivative, we can find that there is a critical point somewhere around day 30:

From the second derivative, we know that the equation is convex. Recall these basic rules:

If y’’ > 0, y is convex

If y’’ < 0, y is concave

A concave function looks like a sweet Peyton Manning touchdown pass (it goes up then comes down), while a convex function is like a skater dropping into a halfpipe (you get it). Or, more precisely:


So we know that our trendline is convex and that it has a critical point around day 30. What that means from an analytics standpoint is that during the 60 day period of analysis, things had started off trending in a negative direction before they began trending positively around day 30. Maybe we started a new ad campaign on day 30? Maybe our luck turned around? The answer is irrelevant to the issue at hand: what’s important is that we now have a mathematical way of breaking out trends into two date ranges separated by a critical point.


Interpreting Trends with Convex and Concave Curves

At any specific point in time, a quadratic trend can exist in 1 of 6 states, visualized below.



If a trend is in the Negative, Decreasing state, it is losing value over time but at a decreasing rate. This is important, because it tells us that each successive day is losing less value than it lost the day before and the trend is approaching a critical point. When the trend passes the critical point, it will generally move into the Positive, Increasing state, which is commonly referred to as hockey stick growth.

If a trend is in the Positive, Decreasing state, it is experiencing diminishing returns. A value in this state should be monitored for future changes, as passing the critical point will take it into the Negative, Increasing state. In the latter state, value is diminishing at an increasing rate overtime, resembling a nosedive.

If your trend is in the Minima state of a convex curve, it is expected to begin hockey stick growth the next day. If your trend is in the Maxima state of a concave curve, it will begin its nosedive the next day.


Translating the Math to Google Sheets or Excel

Let’s take our data and create a report like this in Excel or Google Sheets:


This report allows us to quickly visualize the trends of our target cities. Each individual location will require the same analysis that I outline below, so as you’re reading, keep in mind that you will have to replicate this process multiple times.

Recall that we will need the actual day-to-day data, a set of days relative to 1, and the squared days. So, our data may look like this, where the grey-shaded cells correspond to the cell column and row references:

data_tableData Table

In another table, we will estimate the quadratic trendline using the linest() function, as well as perform the calculations necessary to find the critical point and the trend. Let’s say that we’re placing our data manipulations on the same sheet as the data table, starting at row 5. Our output for, say Oklahoma City, will look like this:

data_manipulationsData Manipulations

Before getting into the calculations, let me explain the data contained in each column.

  • x2 – the coefficient on the quadratic term in the linear regression
  • x – the coefficient on the x term in the linear regression
  • CP – the critical point calculated from the linear regression
  • Shape – whether the curve created by the linear regression is convex or concave
  • Trend State – whether we are currently seeing the metric of interest increase or decrease and the acceleration of the change

Now, let’s look at how to generate these calculations.

The Linear Regression (Columns B and C)

Here we use the linest() function to generate a regression equation in which Total Traffic is the dependent variable and Day and Day2 are the independent variables. The linest() function spreads each coefficient across several cells, so in order to contain our output to the first two coefficients, we use the index() function as such:

Cell B6


Cell C6


The Critical Point (Column D)

Return to the general form of our quadratic equation:

In order to find the critical point for this equation, you need to take the derivative, set the derivative equal to 0, and solve for x. Generally, this will always look like this with any second order polynomial:

In our application, this general form translates to:


In order to simplify analysis down the line, I like to add the round() function to this equation:

Cell D6


Curve Shape (Column E)

Curve shape is determined entirely by the sign of the quadratic term, and can be calculated very simply with a nested IF statement:

Cell E6


Note that we have added the condition Linear as well. It’s very rare that trend data will be absolutely flat, but this would occur if the coefficient on the quadratic term was 0. This is a catchall for that extremely rare case only, and in practice, you will most likely never see any truly linear trends with this method.

Trend State (Column F)

Finally, we get to the point of this entire debacle: estimating the trend state of our data. Recall the 6 states we can be in, depending on the shape of the curve:

  1. Negative, Decreasing
  2. Positive, Increasing
  3. Minima
  4. Positive, Decreasing
  5. Negative, Increasing
  6. Maxima

These states are based entirely on the current time relative to the critical point and the sign of the coefficient on the quadratic term. We have calculated all of this data, so now we can simply use a sequence of if statements to determine the state.

Cell F6 =if(and(E6=“Convex”,60<D6),“Negative, Decreasing”,

if(and(E6=“Convex”,60>D6),“Positive, Increasing”,


if(and(E6=“Concave”,60<D6),“Positive, Decreasing”,

if(and(E6=“Concave”,60>D6),“Negative, Increasing”,


Note that I’m using the number 60 as a placeholder for the current date, since we are using rolling 60-day data for this example. This can be replaced with any variable that suits your analysis.

I spend the majority of my days staring at spreadsheets trying to figure out better ways of organizing and visualizing complex marketing data. If you have an analysis problem you’d like more help on, feel free to email me at or call (317) 993-3411.

Let us solve your analytics problem.

How Local Content Marketing Helps Franchises Succeed

To understand the importance of local content marketing, let’s take a pop quiz.

Homeowner A needs a new roof on his house.  So does Homeowner B.

You, being the business owner that wants to sell each of them a new roof, can broadcast your company’s well-researched, broad-based marketing campaign at both of them, and hopefully land both sales.


Not really.

Because Homeowner A lives in Pasadena, California and Homeowner B lives in Newark, New Jersey. Homeowner A needs to make sure his shingles won’t melt and he’ll still have room for solar panels. Homeowner B just wants to know his roof won’t collapse under two feet of snow come January.

Since your well-researched, broad-based marketing campaign focuses on your lifetime warranty, proven craftsmanship, and decades of professional service as a company, you might miss out on BOTH sales.

See, as meaningful as your umbrella message is, it doesn’t mean something specific to the unique local needs of Homeowner A or Homeowner B.

So how does a franchisee – or a franchisor – avoid this pitfall?

For Multi-location Businesses Serving A Wide Geography, Your Company’s Message May Not Be Enough

So what can multi-location businesses do to secure those sales in both Pasadena and Newark? The onus is on both the franchisee and the franchisor to deploy local content marketing strategies that serve individual locations equally well, so both can capture sales.

The Local Franchisee Challenge – Own Your Space, Focus On Local Content

Some new business franchise owners come into the job believing that all of their marketing will be taken care of “by corporate.” And while it’s true that franchisees do get some help in that area, at least compared to independent small businesses, the most successful marketing campaigns have work put in by both sides.

Own Your Own Space

The first responsibility franchisees have in digital marketing is in owning their own space. A business’s physical brick and mortar location is unique unto itself; it has specific needs to maintain its curb appeal, interior design and product layout – all ways in which it attracts and retains local customers. Why should their online presence be any different? A franchise website has its own needs for local prominence that may be neglected.

“But corporate set us up with a website and it looks fine,” a local franchisee say.

Looking presentable and being effective in leading customers through a sales funnel are two completely separate things. All too often, franchisors roll out a suite of websites for each of their locations, only for every one to give mediocre performances when it comes to driving organic web traffic or conversions. Though made with the best of intentions, these sites serve up duplicate content, recycled images, and vaguely audience-targeted messaging. In trying to capture every customer, they usually capture none.

When a single location in a multi-location business is able to own their online space, however, the benefits are undeniable. Any unique content, be it in copy, photos or beyond, is proven to be incredibly helpful to SEO performance. That unique content is also able to target the unique local needs of their specific customer base, something that might not be feasible for a nationwide cookie-cutter marketing campaign.

Let’s take a deeper dive into the need to focus on the local when it comes to local content marketing.

Focus on Local Content

With that owned space comes the next responsibility: focus on local content. Even if all the marketing efforts thought to be handled on the corporate end came through, they still might not be doing much for local franchisees.

Like with the roofing example discussed at the beginning, all the great features of a product or service pales in comparison to customers’ unique needs – those are the things your customers are going to be looking for when they open up their search engine. The search engines know this as well, and tend to reward local content with higher rankings on results pages.

Luckily, franchisees have something that corporate doesn’t in their corner: knowledge of your local customer base. They know who their prototypical customer is, what products they’re interested in, why they choose that particular company, and a slew of other useful information.

When forming a marketing strategy, multi-location businesses are able to use that knowledge to tailor their content in multiple ways:

  • Geographic targeting – Use geomodifiers often to appeal both to search engines and individuals. A geomodifier is a location-specific keyword, such as a city, state, or region that you want to target. Knowing how one’s customers talk about where they live can help better capture potential leads–for example targeting customers interested in a “Brooklyn plumber” versus a “New York City plumber.”
  • Address specific issues – What are the customers’ primary needs? Are they unique in any way, especially to their location? Going back again to our first roofing example, a headline of “What Newark Homeowners Can Do To Protect Their Home From Winter Storms” is typically more effective (and pleasing to search engines) than “Stansbury Roofs Can Stand Up To Anything.” Not only does it stress a product benefit over a feature, but it targets a benefit unique to a local service area.

These are some of the more straightforward and salient methods of doing so, but are by no means the only ones.

Franchises, Start Working Towards Digital Marketing Success

If you’re ready to leave cookie-cutter design, duplicated content and vague marketing messages in your rear-view mirror, Flint Analytics can help you get started. As is our philosophy, to make the right decisions you need the right data, so let’s start talking about putting the numbers together to find a solution that will start you on the path to local content marketing success.

Photo Credit:

Let us solve your franchise marketing problem.

13 Fans Will Be Arrested If The Steelers Win This Weekend

13 Fans Will Be Arrested If The Steelers Win This Weekend

We can’t tell you which teams will win this weekend’s AFC and NFC championship games, but we can tell you how many people we think will be arrested at each. In Atlanta, if the Falcons win, 1 fan will be arrested. If Green Bay wins, 3 fans will be arrested. In Foxborough, if the Patriots win, 11 fans will be arrested. And if the Steelers win, 13 fans will be arrested.

How We Made These Predictions

In a grad level econometrics class at Purdue, my classmates and I were tasked with presenting statistical findings from socioeconomic data. While most economists are busy figuring out how to predict the next financial crisis, solve poverty, or predict how many people will buy their company’s next product, I was more interested in what I might be able to learn about my favorite rowdy NFL fans from the Washington Post’s NFL arrests dataset.

Kent Babb and Steven Rich of the Washington Post organized public record requests from police departments that oversaw NFL stadium security between 2011 and 2015, and they provided the total number of arrests made at each game along with other game-specific stats like the time of day that the game was played, the final scores of the home and away team, and whether or not it was a division game or went into overtime. Of the 31 jurisdictions in which there is an NFL stadium (note that the Giants and the Jets reside in the same jurisdiction), Cleveland and New Orleans were the only precincts that did not submit any data at all. Buffalo, Miami, and Oakland provided only partial records and had to be omitted from the data set, which honestly kind of sucks, because we know Oakland would have the GOAT arrest totals. Precincts in Detroit, Minneapolis, and Atlanta also excluded parking lot arrests, which means we might be missing a few booze-fueled tailgating arrests from this study.

I wanted to create a model to predict the chances of getting arrested at an NFL game. The Washington Post data set gave me a few of the pieces of the puzzle in knowing whether or not the home team won and the time of the game, but I had a few other questions.

  1. Did higher attendance relative to stadium capacity lead to rowdier fans, and, more arrests?
  2. Did people tend to drink more on a hot day and find themselves in the tank more often than cold days?
  3. Did controlling for local crime rates change the probability of being arrested?

In order to answer these questions, I merged data from Pro-Football on game attendance, NFL stadium seating capacity from Wikipedia, game time weather from, and the FBI’s Uniform Crime Report with the Washington Post dataset to come up with the best overall look at local conditions during an NFL game that I could.

The Model

The model I generated from this data tells us that the probability of being arrested at an NFL game is higher if:

  1. The home team loses
  2. The game starts later
  3. Attendance is low relative to stadium capacity
  4. The weather is hot
  5. The local violent crime rate is high
  6. The local property crime rate is low 

If the model relied on factors 1, 3, and 4 alone, Jacksonville would have this one in the bag!


I’ll explain the math used with broad strokes here, but if you really want the details, here’s the original term paper I submitted to Purdue. It should be noted that I received a 98% on the paper, which is enough of a confidence boost for me to publicly reveal this model. It should also be noted that my mom has yet to hang this term paper on the fridge.

The model was estimated using linear regression, and here is the primary equation:

arrest2attend = .0023167 – .000024hometeamwin + .0001295gametime – .000265attend2capac + .0000514ltemp + .0000508lhomeviocrmrt – .0003217lhomepropcrmrt

Let’s also take a second to explain each variable in the model:

  1. arrest2attend = total arrests at an NFL game divided by the total attendance for that game
  2. hometeamwin = 1 if the home team won, 0 if they lost
  3. gametime = the local time that the game was played expressed as a fraction of 1 (i.e. if the game had started at noon, it would be represented as .50 because noon is half way through the day)
  4. attend2capac = total game attendance divided by the stadium’s capacity
  5. ltemp = the natural log of the temperature (in Fahrenheit) during game play
  6. lhomeviocrmrt = the natural log of the local violent crime rate
  7. lhomepropcrmrt = the natural log of the local property crime rate

For the stats nerds out there, this model had an R-Squared of .2885, and the heteroskedastic robust standard errors for each independent variable implied statistical significance to at least the 10% level. For those who hated stats, this model was, scientifically speaking, not bad.


The implications of the model actually make sense. If the home team loses, and we assume the majority of the crowd at any game is there to support the home team, we can expect a few upset fans to act irrationally, or, criminally. If the game starts later, there’s more time for tailgating and all the fun that comes with that.

The fact that lower relative attendance implied a higher probability of arrests may not reveal anything about social conditions at a game, but more about the nature of statistics. Let’s say 5 people each are arrested at 2 different games attended by 40,000 and 50,000 people, respectively. The chance of being arrested (arrests divided by attendance) at the game with lower attendance is 25% higher than that at the higher attended game, even though the total number of arrests was the same.

The weather is another interesting factor. Anecdotally, sun and heat lead to day drinking (naturally, Green Bay residents may be the exception). Heat can lead to higher instances of dehydration, which may lead to higher cases of public intoxication. But, this could also be a testament to regional cultures. Perhaps police forces in the south, where it’s warmer, are more likely to make arrests than in the north. Or maybe fans in warmer regions really are just rowdier than the north (though, back to our data omissions, we’d really like to officially verify this against Oakland and Buffalo).

With crime rates, one might attribute the difference in violent crime rates and property crime rates to police force allocation. In a region with high relative violent crime rates, precincts may be more likely to send officers into stadiums in an attempt to curb violence (our model thanks Philadelphia for not making the playoffs this year). In an area with higher relative property crime rates, precincts may be more likely to keep officers on the streets to deter theft and vandalism while the city is otherwise preoccupied with the game.

It should be noted that while the Washington Post’s data set included data from 2011-2015, I was only able to retrieve weather data from 2011-2013. So, this model is based on game data that is several years old, and should be taken with a grain of salt. That said, we used this model to predict the number of arrests that might occur this weekend at each conference championship game.

Predicting the Number of Arrests at This Weekend’s AFC and NFC Championship Games

We had to look at two outcomes for each game: one where the home team won, and one where they lost. From there, we just filled in the blanks on the model provided above. Green Bay at Atlanta is set to start at 3:05pm local (.628 in our time units), and Pittsburgh at New England is set to start at 6:40pm local (.778). Being conference championship games, we expect sellout crowds, so we set the attendance-to-capacity parameter to 1. The current game time forecast (as of the morning of January 19th, 2017) for Atlanta is 68 degrees Fahrenheit, and the same for Foxborough is 47. In Atlanta, the average violent crime rate for the last 4 years has been 399.3 for every 100,000 residents, and the property crime rate has been 3,374.4 out of 100,000. In Boston, the violent crime rate has been 507.3 out of 100,000, and the property crime rate has been 2,208 out of 100,000.

Plugging all of these numbers into the model above, and multiplying the expected probability of being arrested at each game by the expected attendance, we arrived at the predictions stated in the intro.

The results table looks something like this:



More than likely, the arrest figures we predicted here will not hold since we’re using regular season data obtained from 2011-2013 to predict events at postseason games played in 2017. In actuality, arrests may be higher due to the playoff atmosphere and likely larger security and police presence. Further, linear regression is not a perfect science, and this model cannot account for unexpected events like fan rioting, or some goofball in a hat and a red shirt showing up. Regardless, since the variables in the model make sense from a socioeconomic standpoint, it will be interesting to see how our predictions for this weekend’s game time arrests hold up in practice!

Let us solve your analytics problem.