At our recent Searchlove conferences, Mat Clayton from Mixcloud gave a tip I really liked. He pointed out that because his company competes with Spotify and others who have installable desktop applications, they need to do extra legwork to stay front-of-mind with their users. One of the ways they thought to do this was by creating a Chrome app (you can get the Mixcloud app here):
By placing their brand right on the new tab screen of Chrome, they get a little bit of mind-share every time a user opens a new tab. They advertise their app throughout the site using remnant ad inventory any time you visit the site using Chrome - and Mat told us it's had a big take-up.
Great. I thought. Smart. Sounds hard.
Not so.
Mat made an off-hand comment that the entire app was "11 lines of code or something."
"I can do that" I thought
...and with that, Mat won the prize for having the first Searchlove tip I implemented when I got back to the office. I built a DistilledU app to put my brand right there next to Mixcloud:
[Side note: you might look at that logo and think it looks a little different to the one you've seen on our website and you'd be right. Call this a sneak preview of some brand revitalization work we are doing - I'd love to hear your feedback!]
What's the point? Isn't this just a bookmark?
Essentially, yes. But it's a bookmark that comes with great branding benefits for early movers. Most people don't have that many Chrome apps installed, if you have a great product that people use frequently, users on Chrome seem to be responsive to suggestions that they should install an app for "rapid access to <brandname>."
You can see this in action in the reviews of Mixcloud's app - notice how they are all reviews of the Mixcloud service rather than of the Chrome "bookmark".
I'll talk a bit more below about the ways you can take this further, but for now, let's learn...
How you can do the same for your brand
I like to learn new things, so I didn't bug Mat for his code. Now, I want to show you how you could have the same thing for your brand in literally the next 10 minutes regardless of your coding skills. You'll need $5 on a credit card, a Google account, your logo, coffee, and a stopwatch? Ready? Go!
I'm going to demo the process using SEOmoz as an example.
Here's how Rand could ship an SEOmoz PRO chrome app:
Step 1:
Grab my basic outline code from github.
Step 2:
Unzip it.
Step 3:
Drop the SEOmoz logo into the unzipped folder (you can deleted "distilled-small.png") and remember what you called it:
(You want a square logo of size 128x128).
Step 4:
Open the file "manifest.json" in notepad and carefully change just the sections marked in angle brackets such as <Your app name goes here> so the file changes from:
to:
[Pro-tip: you can add Google Analytics tracking parameters on the end of the URL if you want to track how much people use your app to find your site - I used ?utm_medium=chrome&utm_source=app]
Step 5:
Give it a quick test by:
- Opening your extensions panel
- Enabling developer mode with the checkbox at the top of the page:
- Loading an "unpacked extension"
- Choosing the folder where you unzipped the code above
If all has gone to plan, you should see something like this:
And when you open a new tab, your new app should be right there:
Step 6:
Zip up the folder:
Step 7:
Publish it!
- Head over to the Chrome Developer Dashboard (log in with your Google Account)
- Upload your zip file
- Fill out the information
- [Optional: if you want to publish your app outside your Google apps domain, you need to pay $5]
- Hit publish:
I can't publish an official SEOmoz one because my Google account isn't authenticated against the SEOmoz domain (I'll save Rand the 10 minutes of work and just send him the zip file) but here's the DistilledU one if you want to try it out for yourself.
Was that too easy?
If you want to level up a bit further, you start getting into real app functionality, extensions, etc. Google has clearly invested a lot of effort in the documentation, so you'll want to start here:
- Chrome developer resources
- Web store guide
- Guide to packaged apps (the app we built above is a "hosted web app" which means it's essentially the same as a regular web app that can get access to some additional Chrome APIs for things like local storage, notifications etc. Packaged apps use the Chrome environment to build full-on apps like those you find on the Chromebook)
- Guide to extensions
I thought I would end with a little story about where I went next after I'd shipped the simple DistilledU app above. Warning: I'm not a developer yet I'm about to show you some code snippets. Don't trust my code - take all of this as a starting point for doing your own research into what works for your business.
We are building notifications into our site
After I built the app above, I got thinking about how I'd love to expose those notifications in the browser. Thinking about it a bit more, I thought I could go further than that and build an extension through which we could curate industry news alerts (a combination of things we've written and stuff we rate from around the rest of the web). So I built one (you can get it from the Chrome store here):
...and get curated cool stuff from Distilled:
This is a few more lines of code and is a little more technically complicated than the app above. You'll need some HTML / JS experience to follow along, and I'm not going to walk through every mouse-click, but here's the high-level view:
Let's build a browser action
There are two kinds of Chrome extension
- Page extensions that apply on a per-page basis and appear in the URL bar
- Browser extensions that sit next to the URL bar (like the SEOmoz extension)
I want my notifier to appear all the time, so we're building a browser action. This leads to a manifest.json that looks like this:
The popup box is basic HTML and JavaScript
The security restrictions of building extensions means that there are some slight bits of weirdness, but we start by essentially just writing some HTML and JS.
Let's start by looking at background.js - which runs permanently in the background fetching updates so that we can (a) display an alert when there are new notifications and (b) we don't have to wait for the notifications to load when we click on the icon. Background.js looks like this (click for larger version):
When you click on the icon, it displays popup.html in a little drop-down window. Popup.html looks like this:
The observant among you will notice that there is essentially no content in here - it's added by jQuery in popup.js (click for full size version):
I found that building a notification took (unsurprisingly) a lot more debugging than building the simple app. There are two debugging tips if you plan to try this at home:
1. You can access the console for the background page via the extensions page:
2. You can debug the popup with "inspect element":
This gives you access to all the regular debugging tools like the JavaScript console and the ability to force refresh of assets like the .js files (I found that some of these were cached aggressively which made debugging tricky).
I hope you've found something useful in all my learning efforts. At the very least, you can make a simple app to link to your site. I'd love to hear about anyone who takes the extension side of things further. To make all this effort worthwhile, I'd love it if you would check out:
- Distilled curated industry notifications, and
- DistilledU web app (needs at least a free DistilledU account)
Very nice.. you could even go a step further and pull in your tweets... wait..just had an idea......brb
I was surprised how super-easy creating the chrome extensions were, totally not as scary as it looks! With a small amount of javascript i've even managed to semi-automate some of my daily SEO tasks - no more looking for contact details on a web page for me!
https://chrome.google.com/webstore/detail/contact-finder/cdbemnbkmdjdhokghpncoajchenolcia
Hey Will,
Great blog, didn't know it would be so 'easy' to build a chrome extension/app.
Bookmarked your blog, so i can return to it later when my to-do-list hits the line "build a chrome app"
And Hi dana, how are you today
Well
It's later now and tried to create one but got stuck at step 5. I keep getting the following error when trying to extension in chrome (with web developer setting). 'invalid value for 'app.launch.web_url' '
Is anybody familiar with this error? Am i doing something really dumb here to cause this error?
P.S. Google is damn fast today. It has already indexed my comment mentioning ' invalid value for 'app.launch.web_url' ' and now im here again , going in circles hahaha
I'm not 100% sure what's causing this - can you paste the manifest file here (or send it to me - will.critchlow at distilled.net)?
Are you creating an app for a website registered to you in Google? I built mine for distilled.net which I'm a validated admin of...
Ok great,
I'll mail you my manifest file
Fixed - per email conversation - you need to remove the angle brackets (< and >) to leave your URL surrounded just by quote marks ("").
Hey Will,
Thanks a bunch for helping me out. That was a really silly mistake of me to make, but atleast and easy one to solve haha.
Hi Lawrence! I'm great. Having fun building this app. I am stuck too, just in a different spot. I can't upload my file because Chrome store keeps saying "An error occurred: The 128x128 icon file is missing" - Anybody else have this problem? Help? Thanks!
Hey good to see you and Will figured out what was causing your error. Isnt Will a helpfull guy ;)
Wow! Great ) Its amazing and easy to create your own browser extensions ;)
Nice tip, I will surely jump in and ask developer to build an app but wait why only for chrome! we can build some for Firefox as well.
Thumbs up for you
Great post, Will.
So why not go a step further and create this "App" for other relevant companies/websites for free in exchange for a link? Like you said...no need to "publish" it, just send over the 10-20 lines of code to the web developer and let them publish it themselves. By the law of reciprocity, maybe you'll get a "thank you" link on their blog :)
Very nice article Will. I wonder if any other fellow SEOmozzers have done this?
Hi Will,
This is awesome. I got as far as uploading it to the app store and I kept getting this error message when I try to upload my file: "An error occurred: The 128x128 icon file is missing." I have double and triple checked to make sure my image is indeed in the zipped file, named correctly and the right size. Can you help? It appears fine all the way up to the "upload" part and I can't seem to get it to go. Thanks in advance!
Dana
If you want to email me your zip file, I'll take a look - will.critchlow at distilled.net (can't promise anything).
Success! Thanks so much. Would have never guessed that .PNG versus .png would make the difference.
I successfully created, uploaded and published my app. For those of you who are interested, you can check it out here: https://chrome.google.com/webstore/detail/cci-solutions/lgopgjmpaepobcbpmjfdjhfjjcokbilf
It was a little difficult to find a good "category" since it's really just functioning as a bookmark right now.
One note: Don't copy Will's Google Analytics tracking "appendage" to your URL. the App Store will tell you you need to verify the URL in GWT (and of course you can't because it's a URL with tracking code appended). Just scroll down to the bottom of the screen as you are filling out your app's information and you'll be given the opportunity to enter your Google Analytics Account number.
Thanks Will. This was awesome!
Dana
I found that you can add it in the file, but you need a "/" in the url
https://www.site.com?utm_stuff - Failed
https://www.site.com/?utm_stuff = Successfuly Validated
Though I did add the website link in the box further down the page as well, so some combo of these allows for it.
Wow! this is awesome! great post :)
Although an old post really helpful, thanks Will
I've just built my first Chrome app and then will tackle extension next
Thanks for the share :)
Nice tactic Will . What an excellent way to increase your recognition and reinforce your brand name.
Nice write up!!Thanx for the addition to my knowledge i wanted to know about chrome extensions and the description you showed was more than enough to simply done it your way
Simple yet effective idea. I look forward to trying this out.
So thats how it works, I have installed some apps which shows icons but just does nothing like how an app works, it simply opens a website.
Can you name the software you are using to edit the screenshots and place arrows?
Skitch. Great piece of software - integrates with evernote and works on mac and windows.
This definitely has my wheels turning. Can't wait to do something like this for our Crossfuse brand.
Found it :) By googling and finding this page and finding the same problem above by the guy who found it and got into the same loop :)
Read this this morning while booting up softwere, by lunch our company has an app.
Starting simple for now, will be really intresting to see what we can do with it. We've already got a few extra ideas.
Thanks for the quickstart :)
Well done Will, your tips is really helpful for me, I read your articles and installed these extensions on chrome and very easy to use. Thanks for great tips.
I can't make it work :( I get invalid value for app.launch.web_url
I tried my basic URL and then the /blog but neither work :(
Really awesome post. Cheers for the information dude :)
Have made a few extensions recently which are in testing this week. Very timely and useful!
Chrome extensions are very easy to set up; this is a great idea for building brand awareness.
I think it took a total of 30 minutes to read through the "Hello World!" guide and get a simple Google Search app written to provide a quick and easy way to search for promo codes (Danny Sullivan tweeted he would like something like this so I built it just to see if I could do it). I installed it myself (though I'm the only person who's installed it so far though heh...) and use it when I need to renew domain names (Registrars have promo codes pretty much all of the time).
Great idea Will, thanks for sharing :)
Thanks a LOT :) Just sent this post to my developer. Going to use some idea to create something useful to our nice.
This is really useful. I've forwarded it to our dev guys to think about.
Its very easy to implement. I've already created the app and extension for my previous client. @Asif- You can do it on your own no developer assistance is needed. Have fun :)
Why we do ditto copy! We have to give stuff which our community needs; every site has its own audience and required different things. I will not create this same add-on but pick this idea and use it my own way.
This idea is so amazing so why not we use this to build relationship. Create some add-on for your prospect and share it to them.
I love learning new things too! Fortunately, SEOMoz is constantly awash in new things for me to learn and try...just like this. Thanks Will. How fun, easy and totally awesome. I bet there's going to be a boatload of new apps in the Chrome pipeline tomorrow, lol! They'll wonder "What the hell happened?" Then they'll realize it was your fault, lol.
Seriously, I love this stuff. Can't wait to roll up my sleeves in the AM and try it out. BTW...who on earth gives great posts like this one "thumbs down?" I just can't figure that out!
Thanks again Will,Dana
Great post. As a former developer myself, this was a good quick read. The downside is that it's not useful for small businesses, unless we have a solid tool to back it up.
Time to work hard now. +
Great Stuff - I just need some help.
I tried this and when I tried to "unpacked extension", I got the following message - Invalid value for 'app.launch.web_url'.
I edited the code in Dreamweaver and made sure the file was save properly. Any ideas as to what went wrong.
Not quite sure what's happening here. Someone else has had the same issue - see my reply here.
I had the same problem at this step. It was because I took the code too literally and didn't remove the < > . Try that and see if it works.
Yeah - that's what we found for someone else in the thread. Thanks.
Can you do this with a website. Is this just a bookmark that will show on the new tab page? I dont have an app but I do have a website.
Yes, you can do this with a website. That is essentially what Will did with their first rendition. Start with your website (essentially a bookmark like Will described) and then build from there if you want to add more functionality.
Wow, never knew it was so easy! Will definitely be exploring this - really useful post.
Very good, very easy to do! Will try it out. Thanks!
This was ridiculously easy. Thank you!
Wow - terrific post Will, thank you!
Yes, and a great idea too! :)
I too had to go through this a couple of weeks ago when I built the Share on Inbound chrome extension. Which BTW has almost 200 users already. It was fun, I can tell you that!
The only problem is that when you want to go beyond the basics, you find yourself face to face with JavaScript, which is not that simple, especially if you're not a programmer or have an inclination for it.
Thanks for the post Will! Hope more people are going to experiment with this and come up with some great ideas.