Advanced PDF Tracking

Though this solution won me "Best Tip" at MeasureCamp yesterday, I really have to give proper credit to Monica and the rest of the team at twentysix, whose recent discussion around the problem got me thinking about possible solutions.

Overview of the problem

Many websites, especially in B2B or long purchase cycle scenarios, rely heavily on PDFs as part of their conversion process, reassurance/validation content, and SEO strategy (generally containing white papers, case studies, etc). Typically, the effectiveness of these resources is measured in two ways - from an SEO/rankings perspective, and from measuring how frequently links to the PDFs are clicked (by, e.g., firing some on-click JavaScript).

Unfortunately, this approach is critically flawed - the more effectively your PDFs are promoted, exposed, shared and consumed, the less you know about it. Consider any of the following scenarios:

  • Your PDF ranks well in search engines
  • It's linked to from a third party website, or socially shared
  • It gets bookmarked, and subsequently visited directly
  • A campaign promotes the PDF directly (e.g., as a destination from an email campaign)

In each of these scenarios, if you're using a client-side, JavaScript tracking solution like Google Analytics, your tracking solution is completely bypassed, as your PDFs don't (and generally can't, without security headaches) contain your tracking code. The better your SEO campaign promotes your white papers, the more you're going to under-report their success, and risk making poor decisions or having your work misrepresented... Eek!

I'm going to outline a general approach which will help to fill in some of the gaps in your data. It assumes the use of PHP, and Google Analytics - however the approach should be portable (depending on the capabilities of your solution of choice). It can also be extended to apply to other file types which aren't typically tracked (e.g., images[!], flash, docs). I'd love to hear about creative uses.

Intercept your PDF requests, and fire server-side tracking

Did you know that, as well as just making things 'pretty', URL rewriting via htaccess allows you to do some clever stuff with intercepting and altering requests? The core of the solution is as simple and elegant as adding the following code to your htaccess file:

RewriteRule ^(.+).pdf$  /analytics-pdf.php?file=$1.pdf [L,NC,QSA]

This simple rule intercepts any request ending in .pdf, and, invisibly to the user (and to search engines), actually fires analytics-pdf.php instead.

The next part is a little more complex; we need to set up analytics-pdf.php to grab the filename of the PDF, tell Google Analytics to fire a pageview, and then redirect the user to the PDF.

PHP-GA

You'll need grab and upload a copy of PHP-GA. This is a PHP framework which makes it easy to construct calls to GA in much the same way as the normal JavaScript approach, but using server-side logic. We'll use this framework to construct the request to Google Analytics.

The following PHP is a quick hack of the example solution on the PHP-GA site, adapted to grab the PDF filename from the $_GET array and pass it to a pageview as a virtual path, and then display the requested file. Save it as 'analytics-pdf.php' in your root folder.

 // Include the PHP GA script(s)
 require_once('php-ga/autoload.php');
 use UnitedPrototype\GoogleAnalytics;

// Change these values to your UA code and domain
DEFINE('UA_CODE','UA-XXXXXXXX-Y');
DEFINE('HOSTNAME','example.com');

// Grab the PDF and sanitize the filename
$filePath = $_GET['file'];
$filePath = filter_var($filePath, FILTER_SANITIZE_URL);
$file = end(explode("/", $filePath));

if($filePath) :

 $tracker = new GoogleAnalytics\Tracker(UA_CODE,HOSTNAME);
 $visitor = new GoogleAnalytics\Visitor();
 $visitor->setIpAddress($_SERVER['REMOTE_ADDR']);
 $visitor->setUserAgent($_SERVER['HTTP_USER_AGENT']);
 $visitor->setScreenResolution('1024x768');
 $session = new GoogleAnalytics\Session();
 $page = new GoogleAnalytics\Page('/'.$filePath);
 $page->setTitle($file);
 $tracker->trackPageview($page, $session, $visitor);

 $filename = $file;
 header('Content-type: application/pdf');
 header('Content-Disposition: inline; filename="' . $file . '"');
 header('Content-Transfer-Encoding: binary');
 header('Content-Length: ' . filesize($filePath));
 header('Accept-Ranges: bytes');
 @readfile($filePath);

endif;

Believe it or not, that's all there is to it. You're now intercepting all PDF requests, and triggering a pageview before serving up the PDF. Magic!

I'd caution reading on, however, as there are some implications and unknowns around this approach.

A note on sessions and Universal Analytics

PHP-GA is creating a distinct session when it fires, which won't tie together with existing visit behaviour. If I arrive on a PDF and browse into the site, there'll be attribution issues and some inflation of visit counts. Similarly, on-site visitors who click through to a PDF will also create disconnected data.

In the mid- to long-term, this will be easily manageable with the release of Universal Analytics, which will replace the PHP-GA component of the solution, and allow us to use server-side Analytics to carry across a distinct session ID between requests.

In the meantime, I'd appreciate anybody's thoughts on how we might overcome this - it's potentially feasible to do some clever things with including conditional logic in the tags, and/or artificially constructing/maintaining channel data by, e.g., manipulating UTM tags.  I started considering solutions, but was keen to get something out of the door, at least, and to revisit and refine as usage demands.

Early thoughts include:

  • Only firing if we detect that the visitor originated from an external location (e.g., not an internal link), as it's assumed that existing event tracking will account for internal links
  • Modifying the code to construct events, rather than pageviews, so as to create a consolidated view count when added to the existing internal link click counts
  • Considering using passive events so as to avoid visit count inflation, but at the expense of understanding that a pageview-like action has occurred (which may artificially skew interpretation in the wrong/other direction than the present problem presents).
  • Attempting to collect, and then carry channel data through to the PDF - e.g., appending UTM parameters to the destination URL, which can then be carried on into subsequent pageviews on the site

Further considerations and challenges

Please bear the following in mind when using:

  • This isn't rigorously tested. I'm proving the framework of a conceptual solution here, which you'll need to adapt to your own requirements. Don't expect it to work 100% correctly out of the box.
  • I've not paid much attention to sanitisation, filtering, and validation. It's possible, likely even, that there are security holes in the recording and usage of the PDF filename/filepath which could do with closing.
  • I've not played much with PHP-GA, as the solution is only intended to bridge the gap between now and the arrival of Universal Analytics. There may be more things which it could do, or better ways to do what it's doing
  • It's hard to completely predict how this will effect your data, given the caveats around sessions.
  • Does this open up opportunities for commercially accountable re-targeting campaigns which use white papers, etc. as destinations? What are the implications?
  • How useful is this for consolidating data on disperate/seperate instances of a single resource? E.g., a video in multiple formats, or in multiple locations?

Updates

17/02/2013 20:46 - From a conversation with @danbarker, we've explored the idea of, rather than sending the user to the 'vanilla' PDF, presenting the PDF in a 'wrap' on request (e.g., an iframe, embed, or similar).

The PDF would be framed in a viewing portal, but enhanced with share/print options, internal links, etc. See Dan's hastily mocked up screenshot. This would have the added advantage of allowing for the native embedding of normal GA code (which, given that it'd just fire and record the URL, would give you a completely integrated session/data-set) but comes with some disadvantages. Some native functionality is broken, such as right clicking a link to a PDF to save it, and interferes with any other native behaviour which expects a link to a PDF to act like a PDF, rather than a web page. It's worth pointing out that there are obviously solutions out there which do things like this, but our expectations are that the analytics angle probably doesn't get the love that it deserved.

I think that this has some definite potential as, e.g., a WordPress plugin as a fork of the solution, but may not be appropriate for everybody.

http://www.measurecamp.org/

Posted in Conjecture | Leave a comment

My New Year’s Resolutions

This is obviously a little late for a resolutions post.

I've already made, and have been sticking for the most part to my resolutions - but I wanted to make sure that I wasn't over-committing, and that the goals I've set myself are sensible, achievable, and most importantly personally rewarding before sharing them with the world (in direct opposition to all commonly held beliefs on motivation and commitment). It's working so far.

To make up for my more than tentative 'foot in the water' approach, I'm going to make a commitment to set measurable success metrics against each of my resolutions, and to aim to have hit these by December 31st, 2013. Failing to meet any single one will result in me considering the year to have been a failure, and next year I'll consider whether I was too lofty in my ambitions, or whether I need to get better at motivating myself. If I hit my targets, it's a champagne moment.

All of my resolutions are, I suspect, quite conservative. They require some moderate motivation, for me to step outside of my comfort zone a little in places, and to be willing to become more transparent and public in many elements of my life.

Without further ado, my goals for 2013 are:

Professional:

  • Speak at 6 significant events (i.e., more than 30 people in a room)
  • Progress my automated reporting suite system to a client-facing alpha state
  • Formally templatize (including flow-charts, supporting documentation, etc.  all of twentysix's core SEO & Analytics audit documentation and processes
  • Progress Days Of The Year to the point where it makes £200+ per month after costs (content, hosting, tax, etc.)
  • Get to 300 mozpoints
  • 'Upgrade' this website to my new (but still unannounced) domain and branding

Personal:

  • Lose 10 kilograms
  • Write at least one significant blog post per month (on/for any site)
  • Have at least one conversation per month with an industry thought leader (in any industry)
  • Spend 25% of my time on public transport productively (reading blogs, writing, working)
Posted in Conjecture | Leave a comment

Leeds Digital Conference presentation – Digital Marketing by Numbers

Yesterday, I gave a talk at Leeds Digital Conference which explored processes for taking an organisation from a position where they struggle to utilise their data ecosystem as part of their decision-making processes to a point where all of their digital activity is informed, driven and fed by the performance of defined KPIs, segments and targets.

The presentation and processes are for the most part a mash-up of best practice examples and approaches that I've collected over the years, and the deck contains links to many of these resources for further reading. I hope it's useful!



Posted in Events | Leave a comment

In the run-up to Leeds Digital Festival…

On Friday 12th October, I'll be speaking at the LDF conference during the morning in the 'Data and Content' section, with a brief talk entitled 'Digital Marketing by Numbers'. With the conference looming, I've been asked to provide a bit of background about my role, my perception of Leeds and the wider digital industry in the region, and what I'll be bringing to the conference.

Leeds Digital Conference

1. Who are you? E.g., what's your job, and how many years have you been in Leeds?

I'm the SEO and Data Insight Manager at twentysix. We're based just around the corner from Leeds train station, and I guess we're about as archetypally 'Leeds-ish' as it gets.

I have a hybrid role managing and evolving the agency's SEO and data (CRO, reporting, analysis, testing) services, which provides some pretty hefty challenges... as part of a big agency with 'big agency' mentality, trying to weave 'modern' SEO (which we're increasingly finding looks and sounds more like business consultancy than what's typically perceived to be SEO) into a traditional production environment and delivery process is challenging work; it's an interesting balance of challenging ways of working and thinking without alienating and scaring people too much!

I've been in Leeds with twentysix for nearly four years now, and I've seen some interesting changes in the industry and the way the digital landscape has changed in the region. When I started working with twentysix, our London offices and staff were the cream of the crop, with all the prestigious, big clients and exciting projects - with the changes to the economy over the last few years, coupled with the (ostensibly) hard-working, production-orientated 'real world' mentality from the notherners in the Leeds office, we've seen a huge shift in the balance with the lion's share of business now falling in the Leeds office (yet still competing with London agencies). That's a pretty big change, and it's about much more than just the price of a Leeds agency being less than that of a London equivalent; people are increasingly raising their expectations about what digital can and should deliver, and the whole Leeds digital industry just seems to be a bit more 'grounded' and about actual performance, success, sales etc. than about fluffy branding and wooly success metrics.

2. What is it about Leeds that makes it unique from the rest of the country in terms of Digital?

(E.g. what is it that we traditionally do better than the rest of the country?)

I think Leeds feels like it's almost 'accidentally' a digital hot spot. We talk a lot about Manchester being the next-best-thing to London in terms of Digital, but we're definitely seeing a trend where Manchester is becoming the new-old London, where it's gone beyond saturation to the point where there's a multi-million agency or provider on every street corner but nobody who can actually deliver a cost-effective campaign unless you're a high-street brand with a fortune to burn. Leeds is the underdog, and the digital economy and industry here is on the cusp of real maturity - it's just on that tipping point on going from being a default go-to location for anybody in the industry outside / north of Manchester to a real contender in the landscape, but one whose underdog status is an asset, and 'keeping it real', for want of a better phrase, becomes a USP.

3. Why should a potential client pick an agency from Leeds?

All of the above - all of the real talent north of Manchester flocks to or is sucked into Leeds, for better or worse, and we're at the arc of the curve where we've really incredible work being done for a fraction of the price you'd pay elsewhere - I worry, though, that the rate of growth and expansion that we're seeing risks bursting the bubble... I'd get in there and take advantage while the market's ripe.

4. What will you be speaking about at this years Leeds Digital Conference?

My talk is loosely titled 'Digital Marketing by Numbers', and it's really about understanding and demonstrating some hands-on processes that any organisation can use to start to understand how their digital presence, assets or website is performing in real business terms. It's about banning terms like 'bounce rates' and 'pageviews' and other buzzwords that businesses think that they should be reporting on, and installing a process that ties real business objectives (e.g., make money, sell products, dominate the market) back to measurable, targeted metrics. Too many organisations are in a crazy position where their C-level execs and board members use completely different languages and performance metrics to those typically encountered in digital, and we need to put bridges in place to translate and talk across that divide. We should all be looking at website reports that talk about cost per sale, customer lifetime value and satisfaction, rather than top exit pages or time on site. No highstreet store produces and circulates daily reports about how long people spend walking around their shops in leui of reporting on the sales performance - in digital we've got access to vastly more and more useful data, but we're stuck in a loop looking in the wrong places.

5. Predictions for the Digital Industry in 2013? What should be top of the agenda at the conference?

I think we've finally entered the age of the entrepeneur. The ingredients and threshold for success are getting lower and lower - if you can identify a niche, design a business model which is driven by user satisfaction, engagement and content creation with an element of gamification and reach a critical threshold of engagement, you can take on pretty much any entrenched vertical, industry or market. Of course, established businesses aren't that agile, and a thousand start-ups try and achieve this every day but fail and fall by the way-side. However, that threshold for disrupting entire ecosystems is definitely getting lower, and the directions we're seeing the likes of Facebook, Google and the giants move is all about recognising and empowering value, and connecting the consumer to it. Check out the likes of LovefilmLast.fmGrouponNetflixGrazeNaked Wines, etc. and get under the skin of how their content models and social models work - that kind of power is impressive and more than a little scary, but it takes a lot of work to get it in place. The road to success is clearer and more definite than ever, but the work to achieve it doesn't become any less. The next year or two should be really interesting!

Wrapping up

That's it for my responses, but I'm sure there's much more ground to cover! If you'd like to chat, I'll be around during the conference, and I'm sure I'd love to discuss the industry, SEO, or anything else with you over a glass of wine at the evening event.

There are, I'm told, still tickets available, and you can pick them up from Eventbrite. See you there!

Posted in Events | Leave a comment

Change 7: Moving to a parent/child theme relationship

WordPress's 'front end' (if such a concept can be considered to exist, given the following...) is all about Themes. Individual templates (including page types, indexes, archives, etc.), even down to individual pages, and the functionality that they contain (including the entire presentation layer) is managed through and is a part of an individual theme, which in its totally manages the entire functionality, look and feel of the website (whilst that theme is active).

The CMS and database layer sit beneath this layer, but even these areas can be, and are, affected by your choice of theme. Beyond simply changing the layout and styling, the functionality of a theme allows for, e.g., custom administrative functionality, back-end post processing management and behaviour, and much more. The active theme can control anything from the website layout through to 'deep' WP functionality (e.g., archive processing, query modification, admin behaviour) by simply hooking into existing actions and make system-level changes - generally through the use of the functions.php file.

As such, modifying themes gives you an enormous amount of power, flexibility, and access to change the core and fundamental behaviours of the website.

Managing changing/evolving themes and updates

This is fairly straightforward when developing or working with a bespoke, built-for-purpose theme that you're 100% in control of. However, if you're using something off the shelf, or adapting a template for example, you can start to encounter problems when modifying themes which subsequently have version changes or updates (where the author/provider has made modifications to the source files) - where applying these (presumably valuable) updates 'wipes out' your customisations, as the changes you've made the to theme are lost when you install the new version.

In order to manage this conflict, WordPress allows for the concept of 'parent' and 'child' themes. Rather than simply having to have one theme active, you can establish a relationship between multiple themes (in flexible, prioritised hierarchies) to inherit, allowing a child theme to not be confined by, 'templated' theme elements. In essence, it's very easy to select a theme which acts as your base template, and to apply layers of customisation to a 'child' theme which overrides anything where there's conflict with the parent.

Making the change

I've already made some changes to this theme, so I'm going to need to strip those back and integrate them into a child so as to future-proof the work I've done. Given that (for the purposes of this project) I'm constraining myself to 'working back' an existing theme, it's important that I allow for the possibility that the theme author might update it, and thus 'reset' all of the changes I've made. If I make all of my changes in a child theme that sits 'below' this theme, then I can gradually make changes to the point where the child eventually becomes fully-featured enough to completely replace the parent. That's a reasonable end goal, I think, for this project (or at least, the first stage of it)!

Creating the child theme

Strictly speaking, all that a child theme needs is a style.css file which references the parent theme. Any additional theme files which 'overlap' with the parent's will be used in place, allowing you to progressively build out modifications.

I've created a folder named jonoalderson in my wp-content/themes folder. In that folder, I've created a style.css file with the following content:

/*
Theme Name:     JonoAlderson
Theme URI:      http://www.jonoalderson.com/
Description:    Child theme for JonoAlderson.com
Author:         Jono Alderson
Author URI:     http://www.jonoalderson.com/
Template:       skeleton
Version:        0.1.0
*/

@import url('../skeleton/style.css');

I've activated the theme, and nothing's broken! Note the use of @import to force the child theme to pull in the parent CSS.

The child theme, alive and well!

I've also un-picked the modifications I've made to the Skeleton theme, and re-done the changes to a copy of the files in question (specifically sidebar.php and header.php) in my new child theme - and it's working perfectly. Now I can start to rework some of the infrastructure, change the way things work, and add my own touches without risking losing it all to an update.

Posted in Blog Updates | Leave a comment

Change 6: Explaining what I’m doing

If I'm successful in generating some interest in and engagement with this project, individual pages should start to gain traffic and visibility. Given that visitors who arrive directly on these pages haven't read previous posts, come via the (eventually to-be-published) informative hubs which explain the principles behind this blog and what I'm trying to achieve, I figured it might be useful to show people a little message if they're reading a post in the 'Blog Updates' category.

As such, I've edited single.php and added a bit of logic to check if the user is viewing a post in the Blog Updates category (which has an ID of 3), and if so, to output a little message and a link back to the first post in the category. At some point, I plan to add a bit of descriptive gumph and the post can link there. However, this'll do as a short-term measure.

The code looks something like this:

if (in_category(3)) {

echo '<div style="margin: 0 0 20px; background: #EEE; border: 1px #DDD solid; color: #666; font-size: 80%; padding: 20px 20px 0;">';

echo '<p>You\'re reading a blog post from the <a href="'.get_category_link(3).'">Blog Updates</a> project - this post forms part of a series where I\'m progressively improving the infrastructure and functionality this blog, one step at a time, and documenting the rationale and approach behind each step as I go.</p>';

echo '<p>I\'m working backwards from an existing, stock WordPress theme, gradually gutting it and tailoring it to be fit for purpose. If you\'d like to start from the beginning, you can find the first post <a href="'.get_permalink(20).'">here</a>.</p>';

echo '</div>';

}

I'm aware that using inline CSS is dirty; however, I'm working with an existing theme and reverse-engineering it a piece at a time, making on-the-fly edits to the theme's stylesheet potentially cumbersome. As I progress, I'll eventually go back over my tracks and tidy up sections of hacky solutions, etc., but for now I apologise!

I'm also aware that there's no logic in here to check, e.g., that the user hasn't seen the notification before, is viewing the first post in the series (and thus probably doesn't need the notification), or for accommodating for other fringe scenarios. However, it's late, and that'll probably sort things for now - I'll revisit and refine later!

Posted in Blog Updates | Leave a comment

Leeds Digital Conference

I'll be making an appearance on a panel at Leeds Digital Conference to talk about post-Penguin SEO. See you there on Friday 12th October!

Tickets are a mere £30, which give full access to the day's topic streams and networking party, and bags you front row seats in amongst the most happenin' digital folk in the fine city of Leeds.

Book early to avoid disappointment!

Posted in Events | Leave a comment

Change 5: Authorship Tagging

Authorship is one of the most powerful (and still underutilised) SEO and general blogging tactics in terms of building long-term value, having a future-proof strategy, and reaping the rewards of increased exposure, engagement and readership.

Authorship is fairly easy to set up from a technical perspective, but given that this WordPress theme didn't come with support built-in, I'm going to need to do some template hacking if I want a slice of the pie. There are, of course, lots of plugins out there that'll help set you up - however, this is an area where I'd like some really granular control, and the technical side explores some really key concepts that are worth bringing to the forefront.

Before I jump in, however, let's explore the concept of authorship in a little more depth, and consider the various options for implementation.

What is Authorship?

One of the things that differentiates a blog post (or an entire blog) from a piece of general content (say, a Wikipedia page), a press release, an announcement or otherwise 'generic' piece of web content is that a blog post must be explicitly authored. In the case of authored content, a real person with a name, a face, and an identity (and presumably subject expertise, experience and/or opinion) wrote and is therefore explicitly associated with the post, and in a sense is as important a component of the post as the title, date, taxonomies and the content itself.

This relationship is the essence of the content of authorship - and whilst this is generally fairly easily inferred as a human reader (e.g., a post need simply say 'written by', or sign off with an author's signature), if we want to gain the SEO, social and integration advantages available from having Google and other networks be able to understand authorship, then we need to do a bit of work under the hood.

Authorship & Google

I won't dig too deep into the SEO implications of authorship, as there are some fantastic resources which explore exactly how much of a game changer authorship is (spoiler: it's huge) as well as the scale of the opportunity at hand. However, it's worth explaining why this is new, and summarising the key concepts.

The Authored Link Graph

Search engines have always attempted to extrapolate concepts like 'value', 'authority' and 'trustworthiness' from the closest approximation they have/had available, such as those surrounding the quality and quantity of links and/or citations (i.e., the link graph).

The relatively recent introduction (alongside Schema, Google+, and a raft of other changes) of a standardised and supported approach to the markup and tagging of authorship status on individual web pages or entire sites/blogs allows Google etc. to get their hands on data that arguably has a much higher rate of correlation to 'value' than, say, the number of a links a web page has (and this data much harder to cheat/fake).

The 'links' that are created by real people who have real subject expertise, real social connections and real authority in the form of authored content (potentially across a network of pages, sites and social hubs), in the form of signals around those relationships, and in the very relationships themselves are strong signals of trustworthiness. Fusing that kind of analysis with Google's existing and wider data sets allows for the creation and use of  an authored link graph, where they should be able to easily identify when a piece of content is the real deal, and worth promoting to the top of Google. Websites, blogs and pages which are written by somebody who demonstrably knows what they're talking about, where the author (or authors) has a wide following, and where the author's opinion can be trusted should gain a huge advantage (and conversely, content without an author, written by an author with little demonstrable knowledge or 'dodgy' connections is liable to perform less well).

Google+

One of the changes to the Internet that made the introduction of this level of integration authorship possible was the birth of Google+. The concept of authorship is by no means a new one, however, in order to be able to definitely identify a single author (so as to, e.g., be able to avoid people claiming to be somebody they're not), the system requires a central, definitive representation of a single author which is 'owned' (or at least claimed) by that author with a verification process. Google+ provides that facility, allowing authors to secure their identity, document where they contribute, or have their contributions automatically associated back to them through the use of some clever tagging on/around their blog posts and content accross the Internet. All Google+ really provides, though is a definitive 'home' for the identify of individual authors as part of a verification process - this is by no means a 'Google thing', nor necessarily tied to them as a provider for verification/identity.

In fact, there's nothing special about Google+ in this context at all, other than that they have a uniquely wide reach and other properties which naturally align and integrate authorship. However, the same could easily be said for Facebook, and it's not inconceivable that might have implemented a similar system (and still might) had Google not got there first.

Implementation

Google offers two method for verification of authorship (both in general, and against a specific piece of content). The most sensible approach will vary by scenario, with the most significant deciding factor being whether the blog is (and likely always will be) a single-author environment, or a site where multiple authors might contribute. Regardless, both approaches are viable, and the only difference really consideration for the overhead of manually verifying individual authors (or for them to verify themselves).

The mechanics of verification require a two-way relationship with the piece of content (or the site where it resides), and the Google+ profile of the author. Having a Google+ profile, therefore, one of the very few 'extra' requirements of authorship; feel free to insert conjecture here about whether this is Google's beachhead against Facebook's continual shark-like circling of the search space, or simply a convenient ploy for the adoption of their platform by content producers.

Beyond simply having a profile, authorship requires that you either:

  1. Associate an author with a domain by validating an email address at that domain (e.g., if John Smith is an/the author of www.example.com, demonstrate that John Smith owns/uses john.smith@example.com), ensure that articles by the author clearly state as much, and validate the email address with Google.
  2. Tag content associated with you by including markup on the page(s) in question, generally through 'rel author' markup, though this can be implemented in a multitude of flavours.
Once you've got one of those approaches in place, you need to add (or have Google add) the websites/pages/domains where you have authored content to your Google+ profile (as well as having the profile set to public). Both approaches also require (though there's some argument about just how strictly necessary this is) that the authored page contain a photo, or a marked-up link to an author bio page which contains a photo.

Step-by-step

This is really straightforward - because this is a single author blog, I've just added a link tag to my header. Specifically, this line of code, which references my Google+ profile:

<link rel="author" href="https://plus.google.com/100522257535214924466/posts" />

I've also specified in my Google+ account that I'm a contributor to www.jonoalderson.com, and validated that I have an email address on this domain. Because I don't have a link to my Google+ profile as part of the template (yet), I'm missing a potential stage/approach to mark that link up with some authorship syntax (so the Rich Snippet Testing Tool initially informed me that my blog posts/pages didn't have authorship markup embedded) - this is something that I can add in the future to be doubly-sure I'm all tagged up and verified. An extra layer of faff and verification via the tool explicitly associated my G+ profile with my domain, and now it's all playing very nicely.

Finally, I'd like to add a photo to the sidebar to make sure that I'm ticking all the boxes. Frustratingly, my sidebar is currently largely driven by the CMS and widgets, so if I want to do something bespoke I'll need to muddle it up a bit. As such, I've edited my 'widgets' to remove the search box, and gone on to edit my sidebar.php file to re-introduce this functionality in a way which allows me to slot in some author bits in-between. At some point I'll strip this all out, and build it from scratch in a way which doesn't rely so heavily on the database (i.e., the whole dynamic sidebar / widgets thing approach).

There's a neat function, get_search_form(), which just outputs the default search form markup. Given that my stylesheet already handles the legwork on making it look pretty, it's a pretty minimal effort to reintroduce this outside of the dynamic widget sidebar, and create a space where I can add a big photo of myself. Sorted - I am now a validated author (though Google is complaining that I've not quite aligned my profile between jonoalderson.com and www.jonoalderson.com... Guess I'd better sort that out at some point)!

Google's Rich Snippet Tester validating my authorship status

Posted in Blog Updates | Leave a comment

ionSearch Videos Available

The videos from the ionSearch conference are now freely available; I was honoured to be invited to deliver a main auditorium presentation on semantic mark-up, and to lead an expert panel on eCommerce SEO, and I've gone so far as to include those particular videos below. Enjoy!

What's The Big Deal About Semantic HTML? [& Roland Dunn - What Do Searchbots Actually Do?]

SEO for Ecommerce Panel

Posted in Events | Leave a comment

Speaking at “Darwin Insight: Future of Retail Marketing” (29th May, London)

I'll be presenting some ideas about where Google are going based past and recent history, and what it means for brands and retailers in a presentation entitled "Google’s ‘Age of the Entrepreneur’, …and what this means for retailers".

The event is free, and there are still a few tickets lets - details over at EventBrite!

From the EventBrite listing:

Darwin Insight has the pleasure of hosting the ‘Future of Retail Marketing’ seminar on Tuesday 29 May 2012, at The Soho Hotel, London. With an agenda inspired by UK retailers, this free, bespoke event will provide a fantastic opportunity to tap into some of the latest thinking around the challenges for the retail community, with a particular bias on the implications of ‘digital’.
Our guest speakers, thought-leaders within their industries, will each approach the subject from a unique perspective, drawing on their retail marketing expertise, in-depth research, and experience with existing and past clients, to share with you their insights on the ‘Future of Retail Marketing’.

I'll share the presentation here post-event.

Update 29/05/2012: Due to unforeseen personal circumstances, I was unable to attend and speak at this event. I'm hoping that the nice folks at Darwin will be comfortable with me recycling and publishing the presentation here... watch this space!

Posted in Events | Leave a comment