Last night while browsing Facebook’s iPhone app, a little message popped in at the top of my News Feed informing me of a new Facebook iPhone app devoted to managing the pages you are an admin on all from one place. While the number of smartphone users continue to grow daily and as social media [...]]]>While the number of smartphone users continue to grow daily and as social media interaction is developing into a major factor in the credibility of “great content” in Google’s eyes; I decided to head over to App Store and give it a try.
The Application looks virtually the same as the regular Facebook iPhone Application but instead of any type of personal information, it is devoted only to the pages that you are an admin on. By clicking on the menu navigation in the top left corner, you can quickly switch between the different pages you have and see different aspects of those pages.
Features:
After using the App I do think that it is a good idea and with some added functionality in the future I could see myself adopting it for use with our business pages. For now it is still a good resource for quickly checking the statistics or making some quick slight edits to your Facebook Pages from your phone.
Issues I have / Functionality I would Like to see Added:
With The use of mobile phones and the importance of social media, I can only assume that these issues will be quickly updated by Facebook in the coming versions of the Application.
App Store Download Page: Facebook Pages Manager
]]>
Track any client side event with google analytics By: Bob Tantlinger I’ve recently been doing some work integrating social media events, such as facebook likes, with google anayltics and was pleased to find that Google gives you a deep level of control over what you can track. It occurred to me that since a social [...]]]>
By: Bob Tantlinger
I’ve recently been doing some work integrating social media events, such
as facebook likes, with google anayltics and was pleased to find that
Google gives you a deep level of control over what you can track. It
occurred to me that since a social media “event” is not really much
different than any other client side event, why not use google analytics
to keep tabs on any event the visitor might trigger.
With just a few lines of code, you can take your analytics a step
further and get some fine grained details about not only your visitors,
but their interaction with your web site. Using the techniques I show
below you can answer questions such as:
These are just few examples off the top of my head for how this could be
useful, but you get the point. The sky is virtually the limit on what
you can track.
So, let’s dig in with a quick and dirty example that shows how to detect
if a user mouses over a a specific image on your page. To get started,
you’ll need:
When you include google’s tracking code in your html, it brings in a
global variable named _gat
(Google analytics tracker) . Using this variable, we have a handle by
which we can get all trackers that have been included on the page. Using
the tracker objects, we can push arbitrary events onto the _gaq
(google anyltics queue) to be tracked. They can be anything. Their
meaning is entirely up to you.
After an event has been pushed onto the queue as an event, you can
monitor them under the “Events” section in your google analytics
account. (If you’re the pointy hair type, it’s probably neat idea to set
up goals for your events!)
So, the steps thus far are:
In our example, we will present the user with some images of food and
ask which is their favorite. We want to know when a user mouses over an
image, what type of image it was, and which food they select. With this
in mind we might write with some code such as this (Take note of
comments)
<!DOCTYPE html>
<html>
<head>
<title>Track a mouse over image event</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
h1{text-align: center;}
p{text-align: center;}
img{border: 1px solid #333;}
</style>
<!-- include jQuery -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
var _ga = _ga || {}; //ensure that _ga has been initialized
var _gaq = _gaq || [];
/*
* Define a function on the _ga object that will automatically push events to all the registered trackers
* It is possible that there is more than one tracker, hence this function
*/
_ga.getEventTrackers_ = function(category, action, opt_label) {
//we can return this anonnymous function and pass it to the _gaq
return function() {
var trackers = _gat._getTrackers(); //Gets an array of allt he trackers from the _gat object
for (var i = 0, tracker; tracker = trackers[i]; i++) {
//Now we have a handle to a tracker, we can send the event to GA
//The tracker returns a boolean true if the event was successfully tracked, false otherwise
var result = tracker._trackEvent(category, action, opt_label, 1);
//for debugging the event tracking we can check the return value
if(result) {
console.log("Tracked " + category + " event " + action + " " + opt_label + " successfully"); //log the event to the console.
} else {
console.log("Tracking " + category + " event " + action + " " + opt_label + " FAILED"); //log the event to the console.
}
}
};
};
/*
* Wait for the document to be fully loaded, then bind events that we are interested to GA
* In this example, we'll simply track what kind of image the user has moused over
*
*/
$(document).ready(function() {
/*
* Bind mouseenter events to the images on the page
*/
$('img').mouseenter(function(){
//get the image id
var imgType = $(this).attr("id");
var label = $(this).attr("alt");
//push the mouse over event to GA
_gaq.push(_ga.getEventTrackers_("food", "mouseover", label, imgType));
});
/*
* Bind selection events to the radio buttons on the page
*/
$('input[name=food]').change(function(){
var imgType = $(this).attr("class");
var label = $(this).val();
//push the selection event to GA
_gaq.push(_ga.getEventTrackers_("food", "selection", label, imgType));
});
});
</script>
<!-- include your GA code snippet -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1234567-1']); //IMPORTANT - this is a dummy id, replace with YOUR ga id!!!
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<h1>Which is Most Tasty?</h1>
<p>
<input type="radio" name="food" class="hamburger" value="Hamburger" />Hamburger<br />
<img id="hamburger" src="hamburger.jpg" alt="Hamburger" />
</p>
<p>
<input type="radio" name="food" class="hotdog" value="Hot Dog" />Hot Dog<br />
<img id="hotdog" src="hot-dog.jpg" alt="Hot Dog" />
</p>
<p>
<input type="radio" name="food" class="pizza" value="Pizza" />Pizza<br />
<img id="pizza" src="pizza.jpg" alt="Pizza" />
</p>
</body>
</html>
Rolling your mouse over the images or selecting a radio button fires
events, which will then be pushed to Google Analytics, where you can
keep track of them as show below.
You can see a working demo here.
This was just a simple example of the flexibility that Google’s analytic
platform offers. Many more events can be tracked. You’re really only
limited by your imagination.
Tracking Pins With the Pinterest Button By: Bob Tantlinger Recently I was tasked with logging social media interaction on a site utilizing the “buttons” (what do you call those anyway) of Twitter, Facebook, Google+, LinkedIn, and Pinterest. We wanted to be able to record not only when a social media button was clicked, but when [...]]]>
By: Bob Tantlinger
Recently I was tasked with logging social media interaction on a site
utilizing the “buttons” (what do you call those anyway) of Twitter,
Facebook, Google+, LinkedIn, and Pinterest.
We wanted to be able to record not only when a social media button was
clicked, but when an actual share, like, or whatever took place. In
other words, we needed to know that the user actually did the share.
Nothing very difficult. Most of the big players in social media have
handy APIs that let you subscribe to events they fire off when a share
takes place, which makes this fairly straight forward. In a perfect
world it WOULD be easy, but there’s -always- a monkey wrench lurking
around the corner ready to ruin your day. In this case the monkey wrench
was a royal “Pin in the Ass.” I am referring to, of course, Pinterest.
Pinterest is the newest social media fad, so their button is popping up
all over the place at an alarming rate. Everyone is rushing to get their
images pinned to the worlds biggest pin board. But there’s a problem.
While Pinterest’s “Pin it” button works fine, they offer no offical API,
so unlike the other social media services, there’s not much you can do
with the Pin It button. You can stick it on your site, and that’s it.
You cannot track events, such as when a “pin” occurs, or even when
someone simply clicks on the darn thing.
The good news is that Pinterest is working on an API, which should
hopefully be ready soon. Parts of it are apparently in “Read Only” mode http://tijn.bo.lt/pinterest-api
http://articles.businessinsider.com/2012-03-26/tech/31238519_1_mobile-apps-twitterrific-hootsuite
Sadly, until then, the best you can hope for is a hack like the one I
will document below.
When you include the Pinterest button on your page like they want you
to, you include their javascript file:
http://assets.pinterest.com/js/pinit.js
and a simple link where you want the button to show up:
<a href="http://pinterest.com/pin/create/button/" class="pin-it-button"
count-layout="horizontal"><img border="0"
src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /></a>
All well and good… BUT when the pinterest javascript executes, it
takes the simple link, removes it from your DOM, and replaces it with an
IFRAME. (an embedded html document right in your page where the button
goes) So the pin it button is not actually a button. Rather, it’s a
small html file loaded from Pinterest’s CDN embedded in your page. The
transformed code looks like this:
<iframe scrolling="no" frameborder="0"
src="http://pinit-cdn.pinterest.com/pinit.html?url=http%3A%2F%2Fmysite.com&media=http%3A%2F%2Fmysite.com%2Fpic.jpg&description=Neat+Pic&layout=vertical"
style="border: medium none; width: 43px; height: 58px;"></iframe>
Because they put it in an IFRAME, it’s like putting a brick wall around
the button. The IFRAME is pointing to
http://pinit-cdn.pinterest.com/pinit.html, which is obviously different
than your domain… Thus, you run up against the browser’s same origin
policy (A security measure browsers implement which ensures scripts from
two different domains can not interact with each other.). So, I was
stuck. I could not get through the IFRAME brick wall, so I decided to go
around it completely.
Looking at the code contained in the IFRAME, you’ll see it’s just a tiny
html document, which only contains the button. If you examine this code
with Firebug, you can get the css styling, images, etc that give it its
look:
As you can see from the code, the pinterest button is basically just a
couple images and some css styling. Thus with a little bit of jquery
magic, I created my own function to embed the button on my own domain.
First, I stripped out all references to the pinterest button. It’s
important to NOT include the pinterest javascript file.
Next, I created a small javascript file with two functions:
loadPinterest and updatePinterestCount. I chose to create this as an
individual file, so that I could simply include it on any page I wanted
a “pin it” button on.
var updatePinterestCount = function() {
$.ajax({
url: 'http://api.pinterest.com/v1/urls/count.json?callback=?',
data: {
url: document.URL
},
success: function(data) {
$('.PinCountBubble').html(data.count);
},
dataType: 'jsonp'
});
};
var loadPinterest = function(buttonSelector, imageUrl, description, onPinItClickCallback) {
var pinUrl = "http://pinterest.com/pin/create/button/?url=";
pinUrl += encodeURIComponent(document.URL);
pinUrl += "&media=" + encodeURIComponent(imageUrl);
pinUrl += "&description=" + encodeURIComponent(description);
var css = "position: absolute; background: url('http://assets.pinterest.com/images/pinit6.png');";
css += "left:0px;top:40px;font: 11px Arial, sans-serif; text-indent: -9999em; font-size: .01em;";
css += "color: #CD1F1F; height: 20px; width: 43px; background-position: 0 -7px;";
var html = "<div style='position:relative;margin:0;padding:0;width:43px;height:45px;display:block;'>";
html += '<a class="pinner" href="' + pinUrl + '" style="' + css + '" count-layout="vertical">Pin It</a>';
html += '<div style="display:block;">';
css = "background-position: 0 0; height: 7px;top: 31px; width: 41px;";
css += "background: url('http://assets.pinterest.com/images/pinit6.png') repeat scroll 0 0 transparent;";
css += 'color: #FFFFFF;font-size: 0.01em;position: absolute;text-indent: -9999em;z-index: 1;';
html += '<div class="PinCountPointer" style="' + css + '"></div>';
css = "font: 12px/12px Arial,Helvetica,sans-serif; height: 21px;left: 1px;padding: 9px 0 0;text-align: center;width: 39px;";
css += "background-color: #FCF9F9;border: 1px solid #C9C5C5;border-radius: 1px 1px 1px 1px;color: #777777;position: absolute;";
html += '<div class="PinCountBubble" style="' + css + '">0</div>';
html += "</div>";
html += "</div>";
$(buttonSelector).html(html);
$('.pinner').click(function() {
window.open($(this).attr("href"), 'signin', 'height=300,width=665');
if (typeof(onPinItClickCallback) == "function") {
onPinItClickCallback();
}
return false;
});
$('.pinner').mouseenter(function() {
updatePinterestCount(opts);
});
$('.pinner').mouseleave(function() {
updatePinterestCount(opts);
});
updatePinterestCount();
};
The loadPinterest function uses jQuery to insert the button wherever you
specify via a css selector. E.g <div id=”pinit”></div>
You can pass this function:
When the pin it button is clicked the following things happen:
The button’s count is updated when:
So, then, to include the button you simply need to call the pinterest
like so:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="pin-me.js"></script>
<script type="text/javascript">
$(document).ready(function(){
loadPinterest('#pinit', $('#pinImg').attr("src"), $('#desc').html(), doSomethingOnPinClick);
});
function doSomethingOnPinClick() {
//do whatever you want here
alert("You clicked the Pin It button!");
}
</script>
</head>
<body>
<h3 id="desc">My Cool Picture</h3>
<img id="pinImg" src="http://bobtantlinger.com/social/pic.jpg" />
<div id="pinit"></div>
</body>
</html>
And here is the working demo of the above code. The pinterest button is not being loaded from pinterest at all, and you can detect when the user clicks on it.
This is ultimately a kludge until Pinterest releases its API. As
mentioned above, there is still no way to detect if the user actually
completed a pin. Only that he or she clicked on the pin it button.
Until there is an official API from Pinterest, that is probably the best
one can hope for.
In addition, the html + css for the button only does the vertical (count
bubble on top) version of button because that’s what I needed. It
should be straight forward to change if you need other button styles.
What does our future look like?
The CEO of Cisco offered up a motivating entertaining keynote, with a focus on embracing change. We live for change here, you cannot survive in internet marketing without embracing and learning new methods every month, so you’d think his chat would be a snore. Still his presentation got me thinking about the assumptions we make, and how to reach beyond what we know is happening today and anticipate what is going to happen tomorrow. He shared a fantastic interview from 1964 by the author of 2001, Arthur C. Clark, with his predictions for the future. He said maybe the world would not exist (meaning we would live virtually. That we would be able to work from anywhere, even Tahiti or Bali. Imagine that!
So what is our future going to look like in 20 years? Visualize it and fit your business into it . Is video going to be huge? Yes. Is mobile taking over? Yes. Be ready for that.
Social Media takeaway from ITS 2011
The social media panel gave a basic overview, but some productive takeaways are about using Linked In more, especially for a B2B business. People tend to discuss social media as Twitter and Facebook, but Linked In is a tremendous resource for reaching businesses and often overlooked. It’s not as important for all business models, but spend a few minutes evaluating if this is a missed opportunity for you.
However, in today’s dynamic world, standing still and cherishing your achievements will very quickly lead to dethronement, at the very least. That’s why Baidu is looking to expand even further, especially when the number two Chinese website, Tencent, is also gaining ground, entering Alexa’s “world’s top 10″ this month, after surpassing Twitter.
Tencent is largest internet company in China, and, with Facebook being unavailable to users, it is trying to utilize the social networking niche to compete with Baidu. The “satellite” services that are being offered by Tencent are very similar to the stated above Baidu products, making the clash between the two a “hot” battle for dominance. Baidu’s response, according to Robin Li, the CEO of the company, lies within expanding its own network of users and making it more “social”. In addition of fighting Tencent, this should also serve as additional income channel for the Chinese market leader.
]]>Instead, they want to turn Twitter into more profitable website. And the best way to ear money for an internet website is, of course, advertising. Currently, there are three options for advertising on Twitter – Promoted Tweets (that look like normal tweets, but are said to reach not only your followers but a significantly larger crowd), Promoted Trends (advertising at the Twitter home page) and Promoted Accounts (Twitter recommends certain accounts as “worth to follow”).
The problem, however, is that every potential advertiser has to submit an advertising request, which is then reviews by the Twitter staff and is either approved or not approved. The approval process is manual and, as a result very slow. Many small- and medium-sized businesses simply give up, unwilling to wait, and turn to other advertising options – such as Google Adwords and Facebook Ads.
Although Twitter is not going to remodel the advertising scheme completely, it is done the first step, reportedly increasing the “advertising team” to assize of 35 workers (a notable 10% of the company personnel). Their primary task will be to improve response times and also to contact potential advertisers – those who had previously expressed interest in using Twitter in their campaigns.
]]>Moreover, almost no users (less than 1%) use Social Media and do not use search, while the search beats the “search+social media” combination 50 to 49 percent. Only 45 percent, though, use search throughout their research with 26 percent stating that they only use search in the beginning of the process.
The study also shows that customer reviews are something customers are looking for – making the recently reported idea of “SearchReviews.com” pretty viable. 30% of the responders said reviews are the most important thing to them. Social networks were selected by 17% of the users, and video sharing finished third with 14%.
Notably, the study only researched COMPLETED buys. So, maybe social media is simply good at preventing future purchases? After all, reading a page of negative opinions about a product can drive you away from it, and sometimes the whole idea of purchasing a certain accessory can become obsolete…
]]>Notably, according to recent research, only 50% of the tweets are in English. It seems that Twitter decided to carry on its success in the Asian market as Japanese is the second popular tweeting language and Malay is fourth with Portuguese being third due to the tool’s extreme popularity in Brazil. However, instead of addressing the challenging Chinese market, Twitter skippers have picked Korean as the seventh supported language (don’t confuse with the messages language, which can be almost anything, form Tamil to Hebrew and Arabic) in addition to the existing English, German, French, Spanish, Italian, and Japanese.
The decision is based on the amazing growth rate of South Korean Twitter users (almost ten times in 2010) and the country being relatively advanced in technological terms. The relevant iPhone app and Twitter mobile for Android in Korean have also been launched, making tweeting easier for the South Koreans.
]]>Anyway, there are many others that wish to exploit this approach. The Russian “Vkontakte” (connected), Chinese-oriented “QZone”, Orkut (owned by Google and extremely popular in Brazil and India) are just a few of the social networking websites. With local social networks already present, the next step, it seems, is to create a more “targeted” communities for those who have specific common interest.
SolaMaps, launched recently by Australia-based Stewe Edwing and his fellow green energy enthusiasts is one such an example. The idea of the network is to connect solar energy users all over the world, enabling them to share tips, ideas and experience with one another. By attracting more and more users, the site founders also hope to increase the global awareness of environmental issues. “You Don’t Need A Solar System To Join the SolaMaps Action!” the website slogan states. All you need is a passion for renewable energy.
]]>Pope Benedictus XVI praised the prospects offered by the new technology saying that “if used wisely, they can contribute to the satisfaction of the desire for meaning, truth and unity which remain the most profound aspirations of each human being”, and emphasized that digital communication is a form of sharing.
His Holiness also warned about misleading by creating a “fake” personality in quest for “followers” and “friends” and stated that “there is the challenge to be authentic and faithful”. The Pope invited the Christians to join the global network as relationship is the fundamental need of a human being, and concluded his address with Apostolic blessing to all those that “make good use of their presence in the digital world”.
]]>