August 22nd, 2009
This week SEMPO held a webcast that focused on The Economics of Local Search Advertising. The primary subject matter of the event was a new research report from Borrell Associates that examines the “challenges and opportunities around the $5.3 billion local search advertising industry.” Gordon Borrell led the webcast and gave his personal insights on his firm’s findings.
Below, I’ve included important PowerPoint slides along with some observations from the webcast.
Key Findings:

Interactive media advertising cannot and will not grow forever.
A regular problem with small business is that they don’t want to spend much, have high demands and unfortunately are not very good about paying their bills.

There is currently massive churn in Local Search Advertising. Based off of Borrell’s findings the average situations is that if a Local Search Firm sold 12,000 accounts in a given year they would likely finish the year with 247 total active accounts! Key factors of the high churn rate include: Local Search is oversold. On top of that not enough of the client’s money is going to buying PPC. Finally, dealing with small businesses is proportionately far too time-consuming—they need a lot of hand holding, even on small buys. (See Slide 14)

Typically, the lower the spend the less money is spent on actual keywords buys—a lot of the money goes towards commissions and overhead. (Slide 15)

Firms that use Search Engine Marketing Management Software see lower churn rate. Sophisticated software helps make management of PPC much easier and more consistent. (Slide 16)

There is a direct correlation between the amount spent on ad buys and the amount of churn—the more money spent on ad buys the lower the churn, the more spent on commissions and overhead the higher the churn. (Slide 17)



Studies have shown that actually increasing percentage of spend on ad buys not only delivers better results for the client, but it also delivers higher profits over time for the Local Search Marketing Firm.
Most small advertisers have the nagging feeling that half the advertising they are doing is working and half of it is not, the only trouble is that they’re not sure which half is the one that is working (Borell calls that the John Wannamaker Syndrome). That means that they are vulnerable to being persuaded either towards or away from different types of advertising. At the end of the day, Local Advertising is based off of trust; if you can convince them to trust you they will buy, but your service damn well better perform.
Many local advertisers have not yet tried Local Search Marketing, however many of them are constantly getting contacted by local search advertisers (some times as much as once per week!). That means that perhaps Local Search Advertising Businesses have NOT yet found the right pitch. There is an opportunity for search businesses if they can find a simple pitch that hits the right nerve.
Local Search Advertisers need to understand the sorts of questions their small business clients will have—they’ll want to know how much money will be spent on what, they will want guaranteed results and they will want a monthly report that they can understand (not just a Google Analytics report with a different logo).
A lot of PPC people out there don’t know what they’re doing, so the caveat here is that increasing ad buy spend may not get performance as high as it needs to be. Spending more money inefficiently won’t get you any further. You have to have both—high percentage of overall money going to ad buys and talented people managing the campaigns. Also, talent may not be enough; they need to use sophisticated tools.
This means that the perfect situation is one where you have a high percentage of client spend dedicated to ad buys (60% minimum, and 65% is better!), along with experienced and talented analysts managing these accounts with the help of sophisticated Search Engine Marketing Management Software.
A regular question Borrell gets, given the tremendous amount of churn he talks about, is:
How many times will small businesses fail the first time around, but retry local search at a later date?
His answer: The fact is that there is currently no strongly conclusive data here, but based off of some recent research the belief is that many of them will come back. One of the reasons is that not all churn is due to people being unsatisfied—some people only pursue seasonable campaigns; others have like to run tests and then evaluate the results over a period of time before deciding whether to re-engage.
One last thought from Borrell: Local Advertising is Sold, not Bought—SMBs need to be pursued, and the right pitch along with a tight system that produces results will win them and keep them happy.
Remember: BlitzLocal devotes 70% of the client’s spend towards Ad Buys and we have talented PPC professionals running the campaigns! Use BlitzLocal for a competitive advantage!
Tags: economics of local search, local search marketing, PPC
Posted in BlitzLocal, SEO and Marketing | No Comments »
July 17th, 2009
CitySearch Overview
Citysearch is a major local directory player owned by IAC–the same company that runs Ticketmaster, ask.com, and match.com. They’ve been steadily losing market share– from 19MM monthly visitors 2 years ago to 7MM visitors last month. When I checked a year ago, their sales team was selling flat rate clicks across all categories for about a dollar, then using second tier search engines to buy cheap clicks, thereby creating an arb play.
A fixed price per click would seem to insulate the local client from fluctuations in bid prices. However, what actually happens is that it creates an incentive for the agency to buy the cheapest clicks possible, since that enhances their profit. With no call tracking, nobody is the wiser.
Recently, CitySearch partnered with MySpace to offer MySpace Local, where CitySearch licenses part of their 18 million directory listings and does a revshare. MySpace is taking only restaurants, bars, and clubs– so this is not a listing opportunity for BlitzLocal, which is more focused on doctors and lawyers. But MySpace does offer self-serve PPC, a weaker version of Facebook’s tool.
Listings Page Comparisons
Back to CitySearch–here’s what their actual listing page looks like. Note that the ads are somewhat hidden and the navigational elements are very heavy.
Here’s MerchantCircle’s sample listings page, ad supported, but not too bad.
Here’s blitzlocal’s sample analyst page, compare to merchantcircle.com’s example analyst page, called a Marketing Advisor. We’ll be cleaning up our pages even more when we transition to the new system.
Posted in Uncategorized | No Comments »
July 16th, 2009
By Thomas Davidson
Last updated 6/30/2009
Purpose:
Smarty is a convenient way to divide the work of creating a website into two separate roles: the visuals and the back-end. One person specializing in HTML and CSS can code templates with no knowledge of PHP, while another person can focus entirely on the PHP code driving the site and not worry about layout or the styling of elements on the page.
Your role:
As a template writer, you will mostly be writing normal HTML, CSS and Javascript. In fact, any plain HTML page is already a valid Smarty template; it just won’t have anything dynamic. Wherever there’s a title, number, image, or any other feature that can change you’ll need to insert special Smarty tags.
Think about what can change on the page. Does a login form disappear once the user logs in? Do new things appear? Do you have a list of recent items, or next/previous links that will depend on what page you’re currently on?
There are essentially three types of dynamic information that you might have to act on: Directly-inserted variables, variables used for decisions about what to show, and lists. Please read these in order, since each builds off the one before.
Directly-inserted variables
Firstly, there is information that can be directly inserted – for example, a user’s name. You might want the page to say “Welcome, Linda!” or “Welcome, Bob!”, or whatever the user’s first name is. You can’t think of all the possible names in advance, so you’ll need the name to be provided to you. This is passed into your template through a variable. If we call that variable $first_name, you can insert it into your HTML code with the following tag:
{$first_name}
The PHP coder will deal with how to get that name and how to send it to your template, but all you need to do is insert that simple tag. Please note that ALL variable names must start with a dollar sign, and can only contain letters, numbers, and underscores (no spaces).
You may have many pieces of information like this you need to insert, and you should come up with meaningful names for each of them. You may want to discuss them with the PHP coder and come to an agreement on what to call each variable.
Variables used for decisions about what to show
Let’s say you want to show a menu only to logged-in users. It doesn’t make sense to pass in all the HTML code for that menu through a variable, nor does it make sense to create two versions of every page. Smarty also allows you have pieces of HTML code that appear only under certain conditions.
Let’s say you have a variable called logged_in, which is set to true if the user is logged in and false otherwise. Now, you can surround your menu with smarty tags to make it only show when logged_in is true.
{if $logged_in == true}
This is where the HTML for the logged-in menu would go.
{/if}
If you inserted this variable in your html code with {$logged_in} you would see the word “true” or “false”.
There is a great deal of flexibility here, and in order to take full advantage of its power you will need to understand a little about operators and data types.
Data Types:
In Smarty, your variables can hold 4 basic types of information:
Booleans – These are either true or false, as seen in the example above.
Numbers – Sometimes there are more than 2 possibilities, or you might want to show something in a different color depending on how high or low a number is. You can make conditions from numeric variables as well.
Strings – This is any text, such as a name, title, profile text, or even HTML code. Unlike booleans and numbers, if you want to base your condition on a specific String value, you’ll need to put it in quotes.
Arrays – This is a grouping of one or more variables into one variable name. We’ll go into how this works later.
So, here are some variants on the example above:
{if $age == 21}
This code will show only if $age is 21.
{/if}
{if $name == “Adam”}
This code will show only if $name is Adam. Note the double quotes.
{/if}
Operators:
In addition to checking for a specific number like 21, you can check if your variable is great or less than a specific value, and even do some math.
Comparison operators: ==, >, >=, <, <=, !=
{if $age > 18} Code for only people over the age of 18. {/if}
{if $age >= 18} Code for only people at or over the age of 18. {/if}
{if $age != 21} Code for only people who are not exactly 21. {/if}
Please note that when testing if a Boolean is true, you can leave off the “== true”. These comparisons are all evaluated to be either true or false.
{$logged_in} and {$logged_in == true} will always yield the same true or false value.
Math: +, -, *, /
{if $starting_pay + $bonus > 20000} Addition {/if}
{if $revenue > $material_costs + $labor_costs} Addition again {/if}
{if $area > $length * width} Multiplication {/if}
Logical operators: &&, ||
These operators represent “and” and “or”, and can be used to combine more than one condition.
{if $logged_in && $premium} Only show if user is logged in and a premium user {/if}
{if $premium || $admin} Only show if user is premium or an admin {/if}
{if ($cost > 1000) && ($revenue < 500)} Only show if cost is more than 1000 and revenue is less than 500 {/if}
Just like in math, you can use parentheses to group things together that need to be evaluated first. There is virtually no limit to the complexity of the conditions you can build.
There are more operators available, so you may also want to search the web for a complete list.
As a final note on these conditional blocks of code, you can also save some time by adding “else” or “else if” sections. If and only if your first condition turns out false, Smarty will check these additional sections. For example:
{if $age >= 21}
You are over 21. Have a beer.
{elseif $age >= 18}
You’re not 21 yet, but at least you can vote.
{else}
Wow, you’re neither over 21 nor over 18. Bummer.
{/if}
You can have as many elseif blocks as you want, or none at all.
Lists
This is where arrays come in. Imagine you’re displaying a list of the 20 most recent users to join your site. Creating 20 different variables and repeating code for each one would be a major pain. Fortunately, you don’t have to. When working with lists, you’ll primarily use the foreach tag. Let’s say $names is an array containing a list of the names of the 20 most recent users.
{foreach from=$names item=”name”}
{$name}
{/foreach}
The code above goes through every name in the list, puts it into a new variable called $name, and then inserts $name into the HTML code with a line break after each one. Everything in the foreach block is repeated for every value in the list. Whatever you specify as “item” will become the name of a new variable to hold a value from the list each time through.
Again, there is a great deal of flexibility allowed here. Arrays can contain other arrays, so that for each item in the list you can hold more than one piece of information. To better understand this, we need to look at how arrays are structured.
Arrays:
Each item in an array has both a key and a value. By default, these keys are numbers; giving you a numbered list. We usually write this as [key] => “value”. So, for example, the $names array above look something like this:
[0] => “Alex”,
[1] => “Linda”,
[2] => “Bob”,
[3] => “Jessica”
With arrays, numbering generally starts at zero. However, it’s possible to store additional information by specifying your own keys. For example, a user_id or an e-mail address.
["alex@somewhere.com"] => “Alex”,
["linda@somewhere.else.com"]] => “Linda”
You can then use that key in your foreach block (also called a foreach loop) to, for example, display a list of e-mail links.
{foreach from=$names key=”email” item=”name”}
{$name}’s e-mail address is {$email}
{/foreach}
However, most of the time you’re displaying lists on a website you will want more than 2 pieces of information. That’s where we use arrays inside of arrays.
Let’s say for each user we want to list their first name, last name, and age. For each person we’ll have an array, and then we’ll group all those arrays together in one big array called $people. It might look something like this:
[0] => Array(['fname'] => “Alex”, ['lname'] => “Johnson”, ['age'] => 32),
[1] => Array(['fname'] => “Linda”, ['lname'] => “Jackson”, ['age'] => 29),
[2] => Array(['fname'] => “Jessica”, ['lname'] => “Thornton”, ['age'] => 43)
I didn’t need to store anything in the key of the outer array, so I just left it as numbers. By using a descriptive key for each piece of information in the inner arrays, I’m making it easier to use this information in my foreach loop. You can access specific items in an array by using the array name followed by a period followed by the key name:
{foreach from=$people item=’person’}
Name: {$person.fname} {$person.lname}, Age: {$person.age}
{/foreach}
Each time through the foreach loop above, $person takes on the value of one of the arrays inside of $people. Then, I’m able to access information from each person’s array by specifying the name of the key.
It is possible to create much more complicated structures with arrays inside of arrays inside of arrays, and it is even possible to have a foreach loop inside another foreach loop. However, for most purposes the example above is as about as complex as you will need.
Coordination:
Although it is possible to hand off templates to a PHP coder with minimal explanation and allow him or her to “figure it out,” it’s best if you discuss all the variables you will need. Especially with arrays, you’ll need to agree on how the information will be organized. The sooner you both know what dynamic data will be involved, the more time you can work concurrently to get the overall task done faster.
Testing:
As you’ve undoubtedly experienced in learning HTML and CSS, there will be some trial and error before you get your Smarty templates working exactly how you want and you feel confident in applying it to more complex projects.
Unfortunately, you cannot test your templates without the PHP component. You should discuss plans for testing with the PHP coder, and he or she can hopefully set up pages that pass in dummy data if the back-end code isn’t finished.
Once PHP pages are in place to send all the right variables to your templates, you can make updates to the HTML/CSS or fix any bugs in your template independently of the PHP code. Ideally the PHP coder can set up with server access to upload template changes and see the results fairly immediately.
Wrap-up:
Smarty is incredibly flexible, and can do a lot more things than I’ve described here. Additionally, everything can be combined to make your pages do complex things. You can have “if” blocks inside of foreach loops and vice versa, “if”s inside of “if”s, and as many layers deep as you would like to go.
You may also want to look into modifiers; they allow formatting of numbers, changing case of text, and more inside of your template.
You can also create tables with rows of alternating colors by naming a foreach loop and getting a count of how many times through the loop you are each time (and checking if it’s even or odd.)
There’s much more possible than can be covered in one guide, but hopefully now you have enough understanding of the basics to get started, and to better understand other examples you may see out there.
Good luck!
Posted in Learning Center | No Comments »
June 5th, 2009
One of the best sessions held at SMX was the Facebook session; about an hour and a half tutorial on how to use Facebook ads, and some new changes made to the platform (you can also read about it here). If you’ve been advertising on Facebook recently at all, most of it wasn’t breaking news, save for these three things:
- Users can now create ads for fan pages. Not only does the ad send the user to the respective fan page, the ad even has the feature of a “become a fan” button on the ad. This means users are only 1 click away from subscribing to your fan page’s updates. This is particularly helpful for clients like MyEstateManager, where lots of traffic is driven through the Facebook fan page. You’re probably thinking– “Well what about groups?” Sorry to burst your bubble, but Facebook is no longer giving support to groups. Also note that once fan pages reach more than 5,000 fans you can’t email all of them at once.
Ads for events are now available as well. This is especially helpful for people holding events that require paid registration, which allows the user to determine a cost per conversion, and properly manage their bids. Note that users subscribed to events can receive event messages, while users subscribed to fan pages can receive “fan page updates.”
-
Facebook reporting is awesome. By going to the “reports” section of the self serve platform, anyone can generate a report that includes very helpful demographic data. This includes location, gender, and age breakdown, with respective click through rates.
By far the most helpful tip was to use the Facebook reporting, as one can now easily break down demographic data, while before users were just subject to estimated guesses in which demos to target. We’ve already begun using these features on enterprise clients such as California Pizza Kitchen and AmazingMail. These features are also perfect for our local clients, including a Boulder Massage Therapist, the Colorado Center for Photomedicine, and many others.

The Facebook Engineering Team Hard At Work
Tags: facebook advertising
Posted in Company Blog | No Comments »
March 24th, 2009
What is local?
Local is all about those businesses where there are thousands that do that same thing across the United States, and they differ just by geography. So, it could be the local plumber, the massage therapist, the dentist. Think of all the services that you have. Think of the people that you see day-to-day. Obviously, you’re not going to be able to drop-ship the fact that you need your cavities replaced.
How do blogs contribute to local search?
When you’re blogging locally you can talk about what’s going on at the local shopping mall. You can talk about the new store that opened up in town. You can talk about all those others. But at the same time, why not allow students to blog about their class subjects; to blog about their hobbies?
So, you actually have a matrix organization, and this is where larger-scale SEO techniques will be put into play, because you’re ranking on geo-terms. At the same time you’re trying to rank on category terms. So, you rank in multiple dimensions and when you have a blog-like system, you can tag, right? You can tag this as maybe, you know, you post this video to your student and you tag it as, “Santa Clara,” “SMX,” “local,” “Internet marketing,” and then that goes into a tag cloud and that’s when someone, that might help you rank.
Let’s say you have enough of these videos to talk about local online marketing, and all those will come together and you’ll start to rank when someone types in “local online tutorial” or “university local social networking.” Some of those long-tail, four or five keyphrase terms, right?
OK, so now that I have a blog, how do I get traffic to my blog? SEO = Search Engine Optimization. SMO = Social Media Optimization. Is there a difference?
Here’s how I think about it: People talk about SEO as a hot topic, and rather than the word SEO, which means—you and I will both say “SEO” but another will say SEO, and somebody else will say SEO—but we think we’re talking about the same thing but we’re not.
I would say SEO in its current state will be dead in two years, maybe a little longer. Because it’s not about trickery with how you do your page titles or your meta tags. There’s a lot of people who make a lot of money doing that sort of thing, because you can trick people who have big budgets into doing these sorts of things.
I would say, instead of the word SEO, anytime you say the word “SEO,” say, “traffic.” Because traffic is what counts. And if you break down SEO into legit SEO-it’s traffic, and the rankings come from content and links. You’ve got to have real content. If it’s not real content but it’s scraped content and you’re doing black hat, combining scraped feeds and all that sort of thing, And it’s links: having links from trusted sites. Those are the two that count.
So content … How does content leverage Social Media Platforms, and why are we talking about Social Media?
How does “social” work into the fact that getting ranking or traffic is really about links or content? Well, content is about writing about everything that is going on. You could think of Twitter as like this micro SEO kind of tool because you’re writing about what’s going on: “Oh, I’m in Santa Clara right now having In-n-Out,” or whatever, right? You could write about anything. So that’s … content. What social media does is it explodes the amount of content. Now, unfortunately, that’s a lot of people talking about, “Oh, I didn’t feel good today and now I’m at the shopping mall and I’m taking my dog for a walk.” Well, that’s sort of irrelevant content. When you multiply content, you multiply noise.
So, that’s content. You can think of social as just multiplying content. You can think of links as relationships between, not just Web pages but between people. So, lots of content, lots of people, lots of connections.
Posted in SEO and Marketing | No Comments »
Page 5 of 7« First...«34567»