5D plan · Revenue · In build
LinkedIn and Facebook Analytics Import
Most teams publish to LinkedIn and Facebook every week and never see those numbers next to their web traffic and email. This plan brings them into the marketing dashboard in two stages: an upload that works for any account today, then the same numbers pulled automatically through each platform's API.
Definition of the Problem
The marketing dashboard shows website traffic, email delivery and opens, and the content calendar. It shows nothing from LinkedIn or Facebook, where most of the week's posts actually go. So nobody can answer the questions that matter: which posts earned reach, which earned clicks, and which pillars are worth writing more of.
Both platforms let a page admin download analytics, but the files land in a downloads folder and stop there. Two details make them awkward to use by hand:
- Post numbers keep growing after the export. A post's impressions on Tuesday are higher than on Monday. Adding exports together double counts; the latest figure has to replace the earlier one.
- The export does not know which of your planned posts it is. The platform gives its own post id and link. Unless the published link was saved on the calendar entry, matching has to use the publish date and the post text.
Datasources Needed
| Source | What it holds | How to get it |
|---|---|---|
| LinkedIn Content export (.xls) | A Metrics sheet with one row per day (impressions, unique impressions, clicks, reactions, comments, reposts, organic and sponsored) and an All posts sheet with one row per post. | Company page admin view > Analytics > Content > Export, pick the date range. |
| Meta Business Suite post export (.csv) | One row per post: post id, permalink, publish time, and the metric columns you tick (views, reach, reactions, comments, shares, clicks). | Meta Business Suite > Insights > Content > Export data, choose post level and tick the metric columns. |
| The content calendar | Each planned post's channel, publish date and copy. | Already in the company OS (marketing_content). |
Two new tables hold the imported figures: one row per channel per day for page totals, and one row per platform post for post figures, each optionally linked to the calendar entry it matched. A re-import updates rows in place and never deletes.
Diagram and Documented Workflow
- PersonExports from LinkedIn or Meta Business Suite and opens the Marketing page.
- ImportUploads the file with Import social analytics. The importer works out which export it is from its sheets and header.
- RefusedNot a recognised export, a file with no rows, or a Facebook file with no metric columns: nothing is saved and the message says what to do.
- Preview, then confirmShows the days, posts and date range the file covers, and how many posts matched the calendar. Nothing is written until the person confirms.
- SaveDaily rows update by channel and day. Post rows update by channel and post id, and only from an export at least as recent as the one already stored, so an old file can never wind the numbers back.
- MatchEach post is matched to a calendar entry by channel, publish date within a day, and text overlap. Job posts the platform publishes from a listing are marked as jobs and never matched. Misses are listed with a picker.
- ReadThe dashboard shows impressions, clicks and engagement per channel beside web traffic and email, plus the top posts. The monthly recap includes social.
Doing it automatically instead
Uploading works for anyone, on any account, today, with no approvals. It still depends on someone remembering to export. Both platforms offer an API that returns the same numbers, so the second stage is a scheduled job that writes into the same two tables. The dashboard does not change; only the way the rows arrive does.
Facebook: Meta Graph API (do this first)
- Setup: a Meta app owned by the same Business portfolio as the Page, and a system user in Business settings with the Page assigned to it. A system user token for your own business does not expire with a person's login.
- Permissions:
pages_show_list,pages_read_engagementandread_insights. For a Page your own business owns and an app used only by people with roles on it, App Review is usually not needed. Confirm this when you set it up. - Calls: list the Page's posts (
/{page-id}/postswith id, message, created time and permalink), then read each post's insights (/{post-id}/insights) and the Page's daily insights (/{page-id}/insights). - Watch for: Meta has been renaming and retiring Page metrics (impressions are moving to "views"), so the metric names are read from the current Graph API version when the job is built, not copied from an old guide.
LinkedIn: Community Management API (apply now, build when approved)
- Setup: a LinkedIn developer app, verified by your Company Page, with access to the Community Management API product. LinkedIn reviews that request, and it starts at a development tier before a standard one, so apply early.
- Permissions: a Page admin signs in once and grants the organization scopes (
r_organization_socialandrw_organization_admin). - Calls:
organizationalEntityShareStatisticsreturns per-post and day-by-day share figures (impressions, clicks, reactions, comments, shares), andorganizationPageStatisticsand follower counts fill in the page view. - Watch for: access tokens last about 60 days and the refresh token about a year, so a Page admin has to sign in again once a year. The job warns before that happens rather than going quiet.
Either platform: a connector service
Services such as Supermetrics, Windsor.ai or Metricool already hold approved access to both APIs and can deliver the numbers on a schedule. It is the quickest route when LinkedIn approval is slow, at the cost of a subscription and another vendor holding your page access.
Feedback wanted: if you have set up either API for a company page, or run one of the connector services, tell us what tripped you up. That is the part of this plan we most want to get right before we build it.
ROI Determined
- The content engine finally learns which posts and pillars earn attention, which is the feedback a writing agent and a campaign plan need to improve.
- The monthly marketing recap stops being email only.
- Social numbers sit next to web traffic, email and pipeline, so a campaign can be read end to end on one page instead of across three admin consoles.
Definition of Done
Done means
- A LinkedIn Content export imports from the Marketing page, and its daily totals on the dashboard match the LinkedIn admin for the same range.
- Importing the same file a second time changes nothing.
- Every post in the export is either matched to its calendar entry, marked as a job post, or listed as unmatched with a picker.
- A Facebook post-level export imports the same way, and a Facebook file with no metric columns is refused with the re-export instructions.
- The page owner has opened the live dashboard and confirmed the numbers against both platforms.
Deployment plan
- The importer. The two tables, the file reader for both exports, and the Import button with its preview and post matching on the Marketing page.
- The Social section. Impressions, clicks and engagement per channel, a daily line and the top posts on the Marketing page, and a social block in the monthly recap.
- Then the automatic pull, Facebook first and LinkedIn once approved, writing into the same tables.