Editor's Note: We wrote a more up-to-date article about creating custom Facebook tabs here.
Facebook recently announced that they would be discontinuing their support of the Static FBML app in favor of iframes.
From a marketing perceptive this is actually some great news as FBML was pretty restrictive on what was and wasn't allowed within Facebook.
I decided to investigate how much of pain is involved in setting up a custom tab on Facebook using an iframe. As it turns out, it's actually not to difficult.
Below is a video with setup instructions step-by-step and a screenshot guide if you don't want to watch the video.
The end result of this effort is this iframed application tab (for a contest that ends this Wednesday)!
In order for this to work you must update your Facebook Fan Page to the newest settings.
Set Up Your iFrame Page on Your Own Server

For this to work you will need a webpage on your server that you will be iframing into your new custom tab. That means you must have the HTML living outside of Facebook on your own server. Try and make this content 540px wide. Anything wider will not show up well in your custom tab.
Head to http://facebook.com/developers

Allow the developer application if you have not already done so.
Click on Set Up New App

Name the App (This is Not What The Custom Tab Will be Named)

Add Description and Your Custom Icon
1. Grab a 16x 16 icon from iconfinder upload the icon and save your changes.
Set Up Your Canvas URL in the Facebook Integration Page

1. Your canvas URL will be the main domain your HTML content is living on. Make sure you include the trailing slash in your url.
2. Make sure that Canvas type is selected iFrame.
Setting Tab URL (Still in Facebook Intregration Page)

1. Name your Tab. Note: 16 character limit!
2. Specify the tab URL. In this case the piece of content I am iframing in is "http://inboundnow.tv/fbtest2.html" so I added in the "fbtest2.html" in the Tab URL.
Save the Changes and Click on Back to My Apps

Select Your App and Go to the Application Profile Page

On the Applications Profile, Click on "Add to My Page"

Select the page you want to add the custom iframe tab to and you are done!

Go into edit page > Manage Permissions to change this to the default landing page.
That wasn't so bad was it?
Ron Arden 8:06 AM on February 22, 2011
Thanks for this excellent tutorial. At first it looks intimidating, but when I go through it a second time, it's not too bad. What's your opinion of taking an existing landing page and making that your FB tab?
Jason Rosoff 8:48 AM on February 22, 2011
Awesome article and very informative. My question is, What if your facebook fan page is your main website? Once fbml is dissolved is there any way to edit and add your own code to create a new tab and/or landing page?
Robyn Bradley 8:55 AM on February 22, 2011
Excellent tutorial. I just followed the whole thing and successfully added a custom welcome tab to my page. Question: do we know yet if FB will continue to support existing FBML tabs?
Jens Murer 9:00 AM on February 22, 2011
Thanks for that. I hope you would do something like this :)
Could you provide additional information how to send those Facebook-queries to get the "fan-status" of a visitor?
Robyn Bradley 9:05 AM on February 22, 2011
Oh, another question. I use HubSpot for a bunch of clients' sites. How do we get a completely blank page within HubSpot in which to create the content for a custom tab? Meaning, if I create a page in HubSpot, even a landing page, there will still be the branding from the logo/header graphic, right? How do I start with a completely blank page in which to enter the content for the custom tab? (Hope this makes sense, and I realize it might be a stupid question!)
Pete Griffith 9:28 AM on February 22, 2011
Great Tutorial, thanks! I wonder what restrictions Facebook will have on this new iFrame capability... FBML was restrictive (for a reason), and they might not be able to go to a wide open policy in one step, I wouldn't think.
Bob 10:47 AM on February 22, 2011
I agree, totally cool tutorial.
Have one problem. I add the app I created to my page. it shows up. But, I can't make it my landing page and it disappears. See at the end of your video at the 4:30 mark, I don't have the "Edit Page" link at the top of my page.
Thanx
Paul 11:27 AM on February 22, 2011
Can you do the same thing by building a custom Wordpress (or any CMS) website and using it in your iframe?
Peter Caputa 12:11 PM on February 22, 2011
@Robyn Bradley. In order to have a blank page on our and CMS, go to the page and click Page properties. Under layout, choose "blank_iframe".
David Wells 12:15 PM on February 22, 2011
@Ron - With existing tabs I would copy and paste the FBML code into a txt file just in case you needed to recreate the page later as an iframe.
@Jason - Not sure on that one. I would 100% recommend not using facebook as your main websites page and have a domain and site of your own that you have complete control over.
@Robyn - I will give Mark Zuckerberg a ring and ask (a.k.a. not sure how FBML will be supported in the future) =). As for the Iframe content page in hubspot you would have to make a new page and add an html module at the top and create the html content within it. That should work.
@Jens - Not sure what you mena by your question "Could you provide additional information how to send those Facebook-queries to get the "fan-status" of a visitor?" could you elaborate on this? thanks!
@Pete - Thanks for the commment. I believe you are right, there are soo many things you can do with an iframe that I wouldn't be surprised if they limited it somehow.
@Bob- There is an edit page and edit info button any way to get to any of the setup menus of the page will lead you to the right manage permissions page.
@Paul - You could indeed iframe in a custom build wordpress theme. I don't see why that wouldn't work and is actually a good idea! Need to make it 540px wide though.
Amy 12:17 PM on February 22, 2011
How do you edit an App (tab) once you have created it?
franklin 1:36 PM on February 22, 2011
great tutorial, I'm new to this site...what a great way to be introduced with an excellent tutorial on facebook and iframes...
awesome...you just took the fear of mr. mean iframes away...thanks
David Wells 1:55 PM on February 22, 2011
@Amy - Go to http://www.facebook.com/developers/ and click on the app you want to edit and then click edit setting! =)
@franklin - I'm glad I helped take your fear of Mr. Mean Iframe away! =) Welcome to the blog.
Genevieve Lachance 3:31 PM on February 22, 2011
Thanks for this tutorial! It seems pretty simple. I think I'm ok to setup of the app on Facebook. I'm really not tech savvy when it comes to coding outside basic stuff and can't figure out how to create the iframe page on my server assuming that I can create it on my own Wordpress site?? A basic tutorial or explanation on that might be helpful.
Melissa Conn 4:15 PM on February 22, 2011
Thorough tutorial - thanks you. I actually understand it now. Also, in response to a comment from a user that asked, "What if Facebook is your main website?". If that is the case, it would be good practice to develop your own site. That way you will have total control over it.
Bruce 5:19 PM on February 22, 2011
I can't believe that Facebook would prefer to have thousands upon thousands custom apps created over the FBML app. I can see them switching to an "iframe" app in favor of the FBML app that would allow you to enter a URL for the tab instead or registering a completely new app every time I need another page. There has got to be another (better) way to accomplish this.
Robyn Bradley 5:20 PM on February 22, 2011
Thanks @Peter. Of course, what would an FB update be without a bug? Have you heard about the fact the iFrame custom page doesn't load properly if you're logged out of FB? See more here: http://bugs.developers.facebook.net/show_bug.cgi?id=15166
Ah, well.
Fred Sweet 6:08 PM on February 22, 2011
Everything went fine until the end when I tried to access the new tab and got this: HTTP Error 405 - The HTTP verb used to access this page is not allowed.
Steve Quezada 12:55 AM on February 23, 2011
Excellent How-To. I just hope FB has safeguards to prevent another round of clickjacking of the kind the BBC recently experienced with malicious iFrame injection. http://community.websense.com/blogs/securitylabs/archive/2011/02/15/bbc6-website-injected-with-malicious-code.aspx
Jens Murer 1:38 AM on February 23, 2011
Hi,
I meant: How can i determine if a user is already a fan of the page? This was quite simple in FBML but I think I read about a way to send some AJAX-query or getting a snippet of XML, in which even witout any authorization the fan-status of the visitor is included.
regard
Jens
Kapil 6:50 AM on February 23, 2011
Very nice idea for branding...
Kim 6:53 AM on February 23, 2011
The image seemed to cut off a bit at 540px, other websites I've seen recommend 520px?
mindxstudio 8:59 AM on February 23, 2011
I applicate your idea for branding... Thanks
Shannon 11:45 AM on February 23, 2011
How do you remove the custom app from your Page (or add it back again if you've already deleted it)? I've checked under the "manage apps" section of my Page, and the new, custom app is not there. Any help appreciated!
Krystal 1:01 PM on February 23, 2011
Maybe it's just me, but when I click the video it says "An error occurred, please try again later".
Jorge 1:04 PM on February 23, 2011
Need help, when I click on permissions to set as default page and changes are saved, it still does not make my custom tab the default landing page, any suggestions? Thank you!
Mark 5:38 PM on February 23, 2011
I am trying to set this up now and having problems. We are a Country B&B Inn, and I'm trying to set up a custom tab to take visitors to our online availability calendar. We use Resnexus, a web-based reservations system. When I put our direct link to Resnexus in the canvass URL field, what shows up on the fb page is Resnexus' HOME page, not our availability calendar. I tried putting a redirect page on our own web site & server that would send them to the availability screen, but now I just get an error message when I click on the tab. :(
Genevieve 7:14 PM on February 23, 2011
@Mark That's what I'm getting too. There must be something that I'm missing which has to do with setting up the iFrame and html file on my server?? Hubspot...help please!!
Thorsten 2:30 AM on February 24, 2011
Thanks for a great tutorial. I am getting the following error, though. Anyone that can help on that?
App temporarily unavailable
Parse errors:
CSS Error (line 13 char 8): Unrecognized at-rule or error parsing at-rule.
FBML Error (line 20): illegal tag "body" under "fb:tab-position"
Runtime errors:
HTML error while rendering tag "link": There is a hard limit of 2 css link tags on profile tabs in order to remain under the IE 31 tag limit.
HTML error while rendering tag "link": There is a hard limit of 2 css link tags on profile tabs in order to remain under the IE 31 tag limit.
Cannot allow external script
Mark 10:42 AM on February 24, 2011
@Genevieve, I got mine fixed (see facebook.com/RittenhouseInn. What I had to do was convert the html page on my server to a php page. Good luck, Mark
angie 10:47 AM on February 24, 2011
Great tutorial, however, neither my html or php file will show up on my facebook page.
All data is correct on formatting, my html and php file displays perfectly on "go to my app" but website error message on specific facebook page.
help! thank you!
Greg Ingalls 11:56 AM on February 24, 2011
The tutorial is great and straight forward BUT I am also getting the "SERVER ERROR: 405 - HTTP verb used to access this page is not allowed."
Can someone help, please?
Thank you,
~Greg
Jason 12:58 AM on February 25, 2011
Shannon, I am having the same issues. Does anyone have an answer? Thanks!
Angie 10:26 AM on February 25, 2011
No resolution posted to FB error messages.
Could it be that HUBSPOT only posted a partial tutorial and there's a step missing?
If so, Hubspot - could you repost the tutorial so we can make it work/? Thanks
Robert Williams 11:35 AM on February 25, 2011
Great work. I appreciate your effort. I use a CMS for my website. Apparently, Facebook doesn't recognize the tokens in the cms code. Any ideas on how to get around this?
Tim Ware 11:41 AM on February 25, 2011
There's some erroneous info in this post. It's 520px wide for page tab, NOT 540px!
Facebook is NOT shutting down FBML on March 14 (and the date for the changeover is March 10, NOT March 14!).
Rather, Facebook is not allowing the Static FBML app to be added to Pages, if they haven't yet added it, after March 10.
However, Facebook has said it will continue to support existing installations of Static FBML and allow users to add and edit custom tabs.
FBML is NOT shutting down. Facebook says it is "deprecating" FBML and, as Web folks know, deprecation means gradual diminishing support, not termination. The process can take years. HTML tags that were deprecated 12 years ago still work.
I'm not saying the supported FBML tags will be supported for 12 years, but they certainly won't be terminated in months.
Otherwise, a very information post :).
Folks are welcome to read our tutorials on creating an iFrame Page tab app, and adding the Reveal/fan-gating feature to an iFrame tab.
Greg Ingalls 1:27 PM on February 25, 2011
Really appreciate the tutorial and comments. So far, here's what I've seen:
width is not a big deal. I used an existing page at first and it just cut off at the 520 / 540 mark.
David Wells did mention that FBML wasn't just going to disappear.
I'm not the only one with the "SERVER ERROR: 405 - HTTP verb used to access this page is not allowed." But, so far, no body has an answer (not even Tim).
Right now I'm trying to find out why my first page (which was actually 800px wide) worked but the one I really want to work did not! Any help would be welcomed.
Thank you,
~Greg
Greg Ingalls 1:53 PM on February 25, 2011
OK - I've got it working, but I need someone to explain why (please).
I opened the file that I want displayed in FB (myfile.html) with DreamWeaver (or any editor, I assume). I saved the file as an asp file (myfile.asp) in the same location. I then changed the extension in the "Facebook Integration, Tab URL" section from html to asp. Et Voila, it worked!
I'm sure part of this is that I have a Windows server, but I still don't get why the html file didn't work.
Anyone have an explanation (that we all can understand).
Again, thanks,
~Greg
Tim Ware 2:57 PM on February 25, 2011
Just to salvage my reputation :-)
I believe David went in and modified his post after my comment. The issues I called out in my comment are no longer in the post.
I appreciate that David did this. Heck, I've certainly had to jump in to one of my posts and fix an error or misstatement someone points out in the comments. I'm just trying to make sure we all have the best and latest info!
Tim Ware 3:00 PM on February 25, 2011
OK. Actually, that 540 error is still in the post!
"Try and make this content 540px wide."
This is NOT OK. Sure, you can make your iframed page 540px wide BUT that will pop a horizontal scrollbar and that's not a good thing.
I hope David checks the comments on his post and modifies them to reflect accurate info.
But I no longer see the "Facebook is shutting down FBML" and I'm glad about that!
Christian 3:03 AM on February 27, 2011
I can't make it work. When I've added the app to my page and tries to see it, it just shows a blank page in the iframe. Eny ideas??
Cheryl 11:14 AM on February 27, 2011
i press SET UP NEW APP button and it takes me a to page that states "Your account must be verified before you can take this action. Please verify your account by adding your mobile phone or credit card." what in the world is this?
kik 10:27 AM on February 28, 2011
I found a solution to create an iframe application without being a facebook developer . It's very powerful:
http://www.facebook.com/iframe.apps
Dave Bates 7:23 PM on February 28, 2011
Facebook has a bug right now that causes the blank white page when you are using https. iframes are currently broken. Please vote for the bug so they get in gear! http://bugs.developers.facebook.net/show_bug.cgi?id=15200
golf market 2:41 PM on March 03, 2011
Awesome tutorial. It cleared up some questions I had. I appreciate the help.
Drifter 10:33 AM on March 04, 2011
Ya i have a question about the first screen setup "my basic information" who I'm I sending all that to! And why! What does this mean to all of my friend list etc... ???? Is this the only way to do this send all my info out?
Thanks
Drifter
Pedro Beltrao 12:24 PM on March 05, 2011
I also get the 405 - HTTP verb used to access this page is not allowed. Any ideas?
Rafa Casado 7:07 AM on March 06, 2011
I think I have the solution to 405 - HTTP verb problem.
I am using IIS. I was setting up my canvas as http://www.myserver.com/Content.
The default page there was an html page (index.html).
Facebook calls the canvas with a POST verb, not with GET.
An static html page is not registered in IIS as a script and therefore can not be called with a POST. Therefore it returns a 405 error.
Try setting your canvas to a directory where a script (aspx, asp, ashx, etc, etc, etc) can get the POST
Greg Ingalls 10:20 AM on March 06, 2011
I thought for sure that I posted this solution earlier. My server is a Windows server and I was getting the "SERVER ERROR: 405 - HTTP verb used to access this page is not allowed." Anyway... here it is. Just save your .html file and change the .html to .asp instead. When I (thought I) posted this before I was asking why this works. I don't know for sure, but it does. Anyone know why?
Tim Ware 11:28 AM on March 06, 2011
@Greg: From our iFrames 2011 Tutorial:
If your server returns an error when Facebook tries to load the HTML page into the iFrame, you may need to change the file extension from .html to .php or .aspx (depending on the server platform you are using). When Facebook loads the iFrame, they do a POST to the index page in order to pass some data to your application and it looks like some servers are set up to not allow a POST to a file with the .html extension. We will be taking a look at how to access the data that Facebook passes in the next tutorial, but I wanted to mention this now since it caused issues for some people.
Cher Lugossi 8:16 AM on March 07, 2011
nice work.. it's so easy to follow, I did it but my website width is so big.. how can I change it?
Victoria 11:13 PM on March 09, 2011
One part of this post saved me - thank you!!
Agustin Quinones 2:44 PM on March 13, 2011
Thanks Very helpful info.I'll try out to st my new page now.
Renske de Bruine 7:13 AM on March 16, 2011
Hi,
Thank you for the great video. Unfortunately when I click on Create a new app, I get an error notification. My account needs to be verified before I can use this app. But how does this work? Does it matter that i'm situated in the Netherlands?
Hope to hear from you
Best,
Renske de Bruine
rdebruine@virtual-affairs.com
Alicia 1:15 PM on March 24, 2011
When I click SET UP NEW APP button, it takes me a to page that states "Your account must be verified before you can take this action. Please verify your account by adding your mobile phone or credit card." Is this right?