Facebook Page to Website in 60 Seconds: How We Built It
The Insight That Changed Our Roadmap
We noticed something interesting in our analytics: a significant percentage of small business owners who tried WebZum had one thing in common—their only online presence was a Facebook Business Page.
These weren’t tech-averse people. They’d figured out Facebook’s business tools. They posted updates, uploaded photos, collected reviews. They just never made the leap to a “real” website because it felt like starting over.
Why would anyone re-upload 50 photos and rewrite their business description when it already exists on Facebook?
That’s when we realized: we were asking people to do duplicate work. And that’s bad product design.
From OAuth to Website: The 60-Second Flow
Here’s what we built:
- User clicks “Import from Facebook”
- OAuth flow authenticates and requests permissions for page data
- We pull everything: business name, description, category, location, phone, website, hours, photos, cover photo, profile picture, reviews, and recent posts
- Our AI analyzes the content and generates a complete website strategy
- Website starts building immediately with real business photos, not stock images
The total time from click to website-in-progress? Under 60 seconds.
The Technical Challenge: Facebook’s Permission Labyrinth
Facebook’s Graph API is powerful but permission-scoped to a fault. We needed to carefully select which scopes to request:
// Scopes for importing user's Facebook Page data
// - pages_show_list: List pages the user directly manages
// - pages_read_engagement: Read page content (posts, photos, info)
// Note: business_management omitted - most small businesses don't use Business Manager
const scope =
process.env.FACEBOOK_OAUTH_SCOPES ||
'public_profile,email,pages_show_list,pages_read_engagement';
We intentionally didn’t request business_management because our target users—local service businesses—rarely use Facebook Business Manager. Requesting unnecessary permissions tanks OAuth completion rates.
Handling Multiple Pages
Many users manage multiple Facebook pages (personal brand, business, side hustle). We built a selector that shows all their pages and lets them choose:
export async function fetchManagedPages(accessToken: string): Promise<FacebookPage[]> {
// Strategy 1: Direct /me/accounts (standard pages)
const pages = await fetchDirectAccounts(accessToken);
// Strategy 2: Check Business Manager accounts
const bizPages = await fetchBusinessManagerPages(accessToken);
// Deduplicate and sort by completeness
const allPages = [...pages, ...bizPages];
return sortByContactInfo(allPages);
}
We sort pages by “completeness”—pages with phone numbers, addresses, and websites bubble to the top because they’ll produce better websites.
The Magic: Profile Picture → Logo, Cover Photo → Hero
The most delightful part of this feature? Your Facebook profile picture becomes your logo, and your cover photo becomes your hero image.
async function fetchProfileAndCoverPhotos(pageId: string, accessToken: string) {
// Request large profile picture (720px) and cover photo
const url = `${GRAPH_BASE}/${pageId}?fields=picture.type(large).width(720).height(720),cover&access_token=${accessToken}`;
const data = await fetch(url).then(r => r.json());
return {
profilePicture: {
url: data.picture?.data?.url,
imageType: 'profile' // Signals to AI: consider this for logo
},
coverPhoto: {
url: data.cover?.source,
imageType: 'cover' // Signals to AI: consider this for hero
}
};
}
This isn’t just asset copying—our AI evaluates whether the profile picture works as a logo and the cover photo works as a hero image. If they don’t meet quality thresholds, we fall back to generating alternatives.
Reviews Flow Directly to Testimonials
Facebook reviews become website testimonials automatically:
async function fetchFacebookReviews(pageId: string, accessToken: string) {
const url = `${GRAPH_BASE}/${pageId}/ratings?fields=review_text,rating,created_time,reviewer{name}&limit=10`;
const data = await fetch(url).then(r => r.json());
return data.data?.map(r => ({
review_text: r.review_text,
rating: r.rating,
reviewer_name: r.reviewer?.name
}));
}
A business that’s spent years building up 5-star reviews on Facebook now gets instant social proof on their website.
The Business Case: Why Facebook Users Are Our Best Customers
Here’s what we learned after launching this feature:
-
Higher completion rates: Facebook users already trust OAuth flows. They complete website builds at 40% higher rates than cold traffic.
-
Better websites: Real photos + real reviews + accurate business info = websites that actually convert.
-
Lower support burden: We don’t need to explain what information to enter—it’s already on Facebook.
-
Natural upgrade path: A Facebook Page is a stepping stone. These users understand the value of online presence; they just needed a bridge to the next level.
The Landing Page That Converts
We built a dedicated landing page at /facebook-to-website that speaks directly to Facebook-first business owners:
- Hero: “Turn Your Facebook Page into a Real Website”
- Value Prop: “You already have photos, reviews, and customers. Why start from scratch?”
- Comparison Table: Facebook Page vs. WebZum website (SEO, ownership, credibility)
- Social Proof: Testimonials from businesses who made the switch
The messaging acknowledges that their Facebook page is valuable—we’re not dismissing it, we’re upgrading it.
Results After One Week
- 3.2x higher conversion rate compared to our standard homepage
- Average build time: 4 minutes (vs. 7 minutes for manual entry)
- Photo import success rate: 94%
- User satisfaction: “I didn’t know it could be this easy”
What We’d Do Differently
-
Instagram Integration: Many businesses are more active on Instagram than Facebook. We’re building this next.
-
Google Business Profile Import: Similar concept, different API. On the roadmap.
-
Two-Way Sync: Currently one-directional. Future versions could push website updates back to Facebook.
The Bigger Picture
This feature embodies our core belief: the best website builder is one you don’t have to use.
If your business already exists somewhere online—Facebook, Google, Yelp, Instagram—why should you have to re-enter everything manually? The data is already there. We should just pull it in.
Facebook-to-Website is the first step toward a future where creating a website is just connecting the dots between your existing online presence.
Building WebZum in public. This feature shipped December 8, 2025.