Skip to main content
Facebook Pages is Meta’s platform for businesses, brands, and public figures to create a presence on Facebook. It enables organizations to share updates, engage with followers, receive reviews, and track page performance through comprehensive insights and analytics.

Configuring Facebook Pages as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Facebook Pages option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

You’ll need to authorize Nekt to access your Facebook Pages data. Click on the Facebook Authorization button and log in with your Facebook account. Grant the necessary permissions for the pages you want to extract data from. After authentication, select the specific Page for this source and define a start date for data retrieval.
The user authorizing the connection must have admin or editor access to the Page to successfully exchange the user token for a page access token.
The following configurations are available:
  • Page ID: The Facebook Page ID to sync data from. This field is automatically populated with the Page ID you select in the dropdown menu.
  • Start Date: The earliest date from which records will be synced.
  • Lookback Window: (Default: 30 days) The number of days to look back for incremental sync. Since post engagement metrics can change over time, this ensures recent data is re-fetched to capture updates.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select a name for each table (which will contain the fetched data) and the type of sync.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix and make this process faster!
  • Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
    • Incremental: every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
    • Full table: every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
Once you are done configuring, click Next.

4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can determine when to execute a full sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while. Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Below you’ll find all available data streams from Facebook Pages and their corresponding fields:
Stream containing general information about your Facebook Page, including profile details, settings, and metadata.
FieldTypeDescription
idStringThe Facebook page ID
page_idStringThe Facebook page ID (duplicated for consistency)
aboutStringAbout information of the page
affiliationStringThe page affiliation
artists_we_likeStringArtists that the page likes
attireStringThe attire information for the page
awardsStringAwards received by the page
band_interestsStringBand interests of the page
band_membersStringBand members of the page
bioStringBiography of the page
birthdayStringBirthday of the page
booking_agentStringBooking agent information
builtStringBuilt date or information
can_checkinBooleanWhether users can check in at this page
can_postBooleanWhether users can post to this page
categoryStringThe category of the page
checkinsIntegerNumber of check-ins at the page
company_overviewStringCompany overview information
country_page_likesIntegerNumber of likes from each country
culinary_teamStringCulinary team information
current_locationStringCurrent location of the page
descriptionStringDescription of the page
directed_byStringDirector information
display_subtextStringDisplay subtext of the page
featuresStringFeatures of the page
followers_countIntegerNumber of followers
foundedStringFounded date or information
general_infoStringGeneral information about the page
general_managerStringGeneral manager information
genreStringGenre of the page
global_brand_page_nameStringGlobal brand page name
global_brand_root_idStringGlobal brand root ID
has_added_appBooleanWhether the page has added an app
has_whatsapp_business_numberBooleanWhether the page has a WhatsApp business number
has_whatsapp_numberBooleanWhether the page has a WhatsApp number
hometownStringHometown of the page
influencesStringInfluences of the page
is_chainBooleanWhether this is a chain page
is_community_pageBooleanWhether this is a community page
is_eligible_for_branded_contentBooleanWhether the page is eligible for branded content
is_messenger_bot_get_started_enabledBooleanWhether messenger bot get started is enabled
is_messenger_platform_botBooleanWhether this is a messenger platform bot
is_ownedBooleanWhether the page is owned
is_permanently_closedBooleanWhether the page is permanently closed
is_publishedBooleanWhether the page is published
is_unclaimedBooleanWhether the page is unclaimed
linkStringLink to the page
membersStringMembers of the page
merchant_review_statusStringMerchant review status
missionStringMission of the page
mpgStringMPG information
nameStringName of the page
networkStringNetwork information
personal_infoStringPersonal information
personal_interestsStringPersonal interests
phoneStringPhone number of the page
Stream containing published posts from your Facebook Page, including post content, metadata, and engagement indicators.
FieldTypeDescription
idStringThe post ID
page_idStringThe Facebook page ID
allowed_advertising_objectsStringAllowed advertising objects for the post
created_timeDateTimeThe creation time of the post
full_pictureStringThe full picture URL of the post
iconStringThe icon URL of the post
messageStringThe message text of the post
is_eligible_for_promotionBooleanWhether the post is eligible for promotion
is_expiredBooleanWhether the post has expired
is_hiddenBooleanWhether the post is hidden
is_instagram_eligibleBooleanWhether the post is eligible for Instagram
is_popularBooleanWhether the post is popular
is_publishedBooleanWhether the post is published
is_sphericalBooleanWhether the post contains spherical media
parent_idStringThe parent post ID if this is a comment
permalink_urlStringThe permanent URL of the post
storyStringThe story text of the post
sharesObjectShare information
shares.countIntegerThe number of shares
subscribedBooleanWhether the user is subscribed to the post
status_typeStringThe status type of the post
updated_timeDateTimeThe last update time of the post
Stream containing lifetime performance metrics for each post, including engagement, reactions, and video view statistics.
Note: This stream provides lifetime metrics for posts. Video-related metrics will only have values for video posts.
FieldTypeDescription
page_idStringThe Facebook page ID
post_idStringThe post ID
post_created_timeDateTimeThe post creation time
post_clicksIntegerTotal post clicks
post_reactions_like_totalIntegerTotal like reactions
post_reactions_love_totalIntegerTotal love reactions
post_reactions_wow_totalIntegerTotal wow reactions
post_reactions_haha_totalIntegerTotal haha reactions
post_reactions_sorry_totalIntegerTotal sorry reactions
post_reactions_anger_totalIntegerTotal anger reactions
post_video_viewsIntegerTotal video views
post_video_views_uniqueIntegerUnique video views
post_video_views_organicIntegerOrganic video views
post_video_views_organic_uniqueIntegerUnique organic video views
post_video_views_paidIntegerPaid video views
post_video_views_paid_uniqueIntegerUnique paid video views
post_video_views_autoplayedIntegerAutoplayed video views
post_video_views_clicked_to_playIntegerClicked-to-play video views
post_video_views_sound_onIntegerVideo views with sound on
post_video_view_timeIntegerTotal video view time (ms)
post_video_views_15sInteger15-second video views
post_video_views_60s_excludes_shorterInteger60-second video views (excludes shorter videos)
post_video_complete_views_organicIntegerOrganic complete video views
post_video_complete_views_organic_uniqueIntegerUnique organic complete video views
post_video_complete_views_paidIntegerPaid complete video views
post_video_complete_views_paid_uniqueIntegerUnique paid complete video views
post_video_avg_time_watchedIntegerAverage time watched (ms)
post_video_lengthIntegerVideo length (ms)
Stream containing comments on your Facebook Page posts, including commenter information and engagement metrics.
FieldTypeDescription
idStringThe comment ID
post_idStringThe parent post ID
post_created_timeDateTimeThe parent post creation time
page_idStringThe Facebook page ID
messageStringThe comment message text
created_timeDateTimeThe comment creation time
fromObjectThe user who made the comment
from.idStringThe commenter’s user ID
from.nameStringThe commenter’s name
like_countIntegerNumber of likes on the comment
comment_countIntegerNumber of replies to the comment
is_hiddenBooleanWhether the comment is hidden
attachmentObjectAttachment on the comment (if any)
attachment.typeStringThe attachment type
attachment.urlStringThe attachment URL
attachment.mediaObjectMedia object for the attachment
attachment.media.imageObjectImage details
attachment.media.image.srcStringThe image source URL
Stream containing daily page-level performance metrics, including views, engagement, impressions, reactions, and video statistics.
Note: This stream provides daily aggregated metrics for your entire page. Data is fetched in 3-month batches for efficient API usage.
FieldTypeDescription
page_idStringThe Facebook page ID
end_timeDateTimeThe end time for the metric period
page_views_totalIntegerTotal page views
page_post_engagementsIntegerTotal post engagements
page_posts_impressionsIntegerTotal post impressions
page_posts_impressions_uniqueIntegerUnique post impressions
page_posts_impressions_paidIntegerPaid post impressions
page_posts_impressions_paid_uniqueIntegerUnique paid post impressions
page_posts_impressions_organicIntegerOrganic post impressions
page_posts_impressions_organic_uniqueIntegerUnique organic post impressions
page_posts_served_impressions_organic_uniqueIntegerUnique organic impressions served
page_posts_impressions_viralIntegerViral post impressions
page_posts_impressions_viral_uniqueIntegerUnique viral post impressions
page_posts_impressions_nonviralIntegerNon-viral post impressions
page_posts_impressions_nonviral_uniqueIntegerUnique non-viral post impressions
page_actions_post_reactions_like_totalIntegerTotal like reactions
page_actions_post_reactions_love_totalIntegerTotal love reactions
page_actions_post_reactions_wow_totalIntegerTotal wow reactions
page_actions_post_reactions_haha_totalIntegerTotal haha reactions
page_actions_post_reactions_sorry_totalIntegerTotal sorry reactions
page_actions_post_reactions_anger_totalIntegerTotal anger reactions
page_actions_post_reactions_totalObjectTotal reactions breakdown
page_actions_post_reactions_total.likeIntegerTotal like reactions
page_actions_post_reactions_total.loveIntegerTotal love reactions
page_actions_post_reactions_total.wowIntegerTotal wow reactions
page_actions_post_reactions_total.hahaIntegerTotal haha reactions
page_actions_post_reactions_total.sorryIntegerTotal sorry reactions
page_actions_post_reactions_total.angerIntegerTotal anger reactions
page_total_actionsIntegerTotal page actions
page_video_viewsIntegerTotal video views
page_video_views_paidIntegerPaid video views
page_video_views_organicIntegerOrganic video views
page_video_views_autoplayedIntegerAutoplayed video views
page_video_views_click_to_playIntegerClick-to-play video views
page_video_views_uniqueIntegerUnique video views
page_video_repeat_viewsIntegerRepeat video views
page_video_view_timeIntegerTotal video view time (ms)
page_video_complete_views_30sInteger30s complete video views
page_video_complete_views_30s_paidIntegerPaid 30s complete video views
page_video_complete_views_30s_organicIntegerOrganic 30s complete video views
page_video_complete_views_30s_autoplayedIntegerAutoplayed 30s complete video views
page_video_complete_views_30s_click_to_playIntegerClick-to-play 30s complete video views
page_video_complete_views_30s_uniqueIntegerUnique 30s complete video views
page_video_complete_views_30s_repeat_viewsIntegerRepeat 30s complete video views
Stream containing page ratings and recommendations from users.
FieldTypeDescription
idStringThe review ID
page_idStringThe Facebook page ID
created_timeDateTimeThe time the review was created
recommendation_typeStringThe recommendation type (positive or negative)
review_textStringThe content of the review
reviewerObjectThe reviewer information
reviewer.idStringThe Page-scoped ID of the reviewer
reviewer.nameStringThe name of the reviewer

Stream to Endpoint Mapping

StreamEndpointSync TypeReplication Key
Page/{page_id}Full Table-
Posts/{page_id}/published_postsIncrementalcreated_time
Post Insights/{page_id}/published_posts (with insights)Incrementalpost_created_time
Post Comments/{page_id}/published_posts (with comments)Incrementalpost_created_time
Daily Page Insights/{page_id}/insightsIncrementalend_time
Reviews/{page_id}/ratingsIncrementalcreated_time

Data Model

The following diagram illustrates the relationships between the core data streams in Facebook Pages. The arrows indicate the join keys that link the different entities.

Use Cases for Data Analysis

This guide outlines valuable business intelligence use cases when consolidating Facebook Pages data, along with ready-to-use SQL queries that you can run on Explorer.

Page Performance Analysis

1. Daily Page Engagement Overview

Track your page’s daily engagement metrics to understand audience interaction patterns. Business Value:
  • Monitor daily engagement trends
  • Identify high-performing days for content strategy
  • Track the balance between organic and paid reach

SQL query

SELECT
    DATE(end_time) AS date,
    page_views_total,
    page_post_engagements,
    page_posts_impressions_organic,
    page_posts_impressions_paid,
    page_actions_post_reactions_total,
    page_video_views
FROM
    nekt_raw.facebook_pages_daily_page_insights
WHERE
    end_time >= CURRENT_DATE - INTERVAL '30' DAY
ORDER BY
    date DESC
datepage_views_totalpage_post_engagementspage_posts_impressions_organicpage_posts_impressions_paidpage_actions_post_reactions_totalpage_video_views
2024-11-271,2344568,9202,340189567
2024-11-261,1563987,8451,890167423
2024-11-259873126,2301,560134289

2. Post Performance Analysis

Analyze individual post performance to understand what content resonates with your audience. Business Value:
  • Identify top-performing content
  • Understand reaction distribution across posts
  • Optimize content strategy based on engagement data

SQL query

SELECT
    p.id AS post_id,
    SUBSTRING(p.message, 1, 100) AS post_preview,
    p.created_time,
    p.shares.count AS share_count,
    pi.post_clicks,
    pi.post_reactions_like_total,
    pi.post_reactions_love_total,
    pi.post_reactions_wow_total,
    (COALESCE(pi.post_reactions_like_total, 0) + 
     COALESCE(pi.post_reactions_love_total, 0) + 
     COALESCE(pi.post_reactions_wow_total, 0) +
     COALESCE(pi.post_reactions_haha_total, 0) +
     COALESCE(pi.post_reactions_sorry_total, 0) +
     COALESCE(pi.post_reactions_anger_total, 0)) AS total_reactions
FROM
    nekt_raw.facebook_pages_posts p
    LEFT JOIN nekt_raw.facebook_pages_post_insights pi ON p.id = pi.post_id
WHERE
    p.created_time >= CURRENT_DATE - INTERVAL '30' DAY
ORDER BY
    total_reactions DESC
LIMIT 20
post_idpost_previewcreated_timeshare_countpost_clickspost_reactions_like_totalpost_reactions_love_totalpost_reactions_wow_totaltotal_reactions
123456_789🎉 Exciting news! We’re launching our new…2024-11-25T14:30:00Z452341568923278
123456_790Thank you all for your amazing support…2024-11-23T10:00:00Z321891346712219

3. Comment Engagement Analysis

Analyze comment activity to understand audience engagement and sentiment. Business Value:
  • Monitor community engagement
  • Identify posts that spark conversation
  • Track response patterns and community health

SQL query

WITH comment_stats AS (
    SELECT
        post_id,
        COUNT(*) AS total_comments,
        SUM(like_count) AS total_comment_likes,
        SUM(comment_count) AS total_replies,
        COUNT(CASE WHEN is_hidden = false THEN 1 END) AS visible_comments
    FROM
        nekt_raw.facebook_pages_post_comments
    WHERE
        post_created_time >= CURRENT_DATE - INTERVAL '30' DAY
    GROUP BY
        post_id
)
SELECT
    p.id AS post_id,
    SUBSTRING(p.message, 1, 80) AS post_preview,
    p.created_time,
    cs.total_comments,
    cs.total_comment_likes,
    cs.total_replies,
    cs.visible_comments
FROM
    nekt_raw.facebook_pages_posts p
    JOIN comment_stats cs ON p.id = cs.post_id
ORDER BY
    cs.total_comments DESC
LIMIT 15
post_idpost_previewcreated_timetotal_commentstotal_comment_likestotal_repliesvisible_comments
123456_789🎉 Exciting news! We’re launching our new product line…2024-11-25T14:30:00Z892344587
123456_791What’s your favorite feature of our service? Let us know…2024-11-24T09:00:00Z671562365

4. Review Sentiment Analysis

Analyze page reviews to understand customer satisfaction and feedback trends. Business Value:
  • Track overall customer satisfaction
  • Monitor review volume and sentiment over time
  • Identify areas for improvement

SQL query

SELECT
    DATE_TRUNC('week', created_time) AS week,
    COUNT(*) AS total_reviews,
    COUNT(CASE WHEN recommendation_type = 'positive' THEN 1 END) AS positive_reviews,
    COUNT(CASE WHEN recommendation_type = 'negative' THEN 1 END) AS negative_reviews,
    ROUND(
        COUNT(CASE WHEN recommendation_type = 'positive' THEN 1 END) * 100.0 / COUNT(*),
        2
    ) AS positive_percentage
FROM
    nekt_raw.facebook_pages_reviews
WHERE
    created_time >= CURRENT_DATE - INTERVAL '90' DAY
GROUP BY
    DATE_TRUNC('week', created_time)
ORDER BY
    week DESC
weektotal_reviewspositive_reviewsnegative_reviewspositive_percentage
2024-11-251210283.33
2024-11-1887187.50
2024-11-111512380.00

Implementation Notes

Data Quality Considerations

  • The lookback window is important for post engagement metrics, as reactions and comments can be added to posts days or weeks after publication.
  • Daily Page Insights data is fetched in 3-month batches to optimize API usage and avoid rate limits.
  • Post Insights metrics provide lifetime values that accumulate over time, while Daily Page Insights provide daily snapshots.

API Limits & Performance

  • Facebook’s Graph API has rate limits. The connector handles pagination automatically and respects these limits.
  • For pages with high post volumes, consider selecting only the streams you need to optimize extraction times.
  • The page_id field is included in all streams to enable easy joins and filtering when you have multiple pages.