Three picture cards connect to two groups of shape tokens and a grid.

Your finished report should show three separate groups of supported facts: paid results, organic results and dated public observations. Connect these groups through checked post identities. Combine values only when their definitions support the calculation. Keep missing facts and unresolved differences visible.

The method below is a proposed reporting process. The supplied evidence includes public documentation, not a completed report or a tested collection run.

1. Define the question before you collect numbers

Start with the owner’s reporting question. Does the reader need paid delivery, organic delivery or public response? Paid delivery concerns distribution through advertising. Organic delivery concerns distribution that the owner source labels organic. Public response concerns the counts visible on a public post.

These are separate requested facts. The supplied public question about organic and paid analytics, retrieved August 11, 2026; one question record also names both delivery types. Its excerpt concerns LinkedIn paid tracking. It does not establish a Facebook product limitation or show how common the need is.

Write a short report specification:

  1. Name the business question.
  2. List each requested metric, meaning each quantity you need to measure.
  3. Set the reporting period and time zone.
  4. List the posts and ads included in the report.
  5. Name the source needed for each requested fact.
  6. State whether the result counts actions, records or people.

For example, “paid interactions during the reporting period” and “public likes observed today” are different requests. An interaction is an action under the source’s saved definition. A like is one specific public counter. Neither label gives you a count of distinct people.

Use the source’s exact metric label throughout the report. Do not shorten several different labels to “engagement” and then treat them as equal.

2. Start with the owner’s available reports

Inventory the Ads Manager, Insights and other authorized files that the owner can provide. Use the files that actually exist. This method does not promise a particular export option, menu path or historical record.

For each file, save its name and record what it covers:

  1. Copy the exact metric labels and their available definitions.
  2. Record the selected account, campaign, ad or post filters.
  3. Record the start date, end date and time zone.
  4. Record attribution settings if present. These settings describe how the report assigns results to an ad or reporting period.
  5. Identify the row unit: what one row represents.
  6. Note missing definitions, incomplete coverage and unavailable fields.

The row unit matters. One row might represent an ad, a post or an account total. Adding an account total to the ad rows that contribute to it can count the same result again.

Keep the original files so another reader can check the reported numbers. Do not replace their labels with assumed equivalents.

If the paid report is missing, mark the paid result as missing. If an organic definition is unclear, mark the definition as unresolved. A public collection tool cannot supply an absent owner delivery metric.

A recorded zero has a different meaning. Use zero only when a valid source explicitly records zero for the requested metric and scope. Scope means the content, accounts, dates and filters that a value covers.

3. Build a source register

A source register is a table that connects each reported value to its evidence. Build it before you calculate totals. Keep the source value beside its exact label and scope.

Use these fields as a starting point:

3. Build a source register
FieldWhat to save
`source_record`A reference to the source file and original row or total
`source_metric`The exact metric label from that source
`content_id`The checked post identity, or a missing value if unresolved
`ad_id`The ad identity when available
`period`The measurement start and end dates, when applicable
`scope`Delivery type, account, filters and row unit
`observation_time`When a public reading was taken, or unknown if unavailable
`precision`Whether the number is exact, rounded or of unknown precision
`completeness_note`Missing fields, partial coverage and other limits

Also save the numeric value, source file name, time zone and any attribution settings. Keep source definitions with the register. These are proposed report fields, not a claim that the collection tool produces this table.

Do not use one date field for different purposes. A reporting period tells you which interval an owner result covers. An observation time tells you when you read a public counter. The file download time does not replace either one.

Preserve missing values when you import files. A blank, an unavailable metric and a recorded zero must remain distinct. If a file gives no time zone, record that gap instead of choosing one silently.

Keep rounded values marked as rounded. More decimal places in a spreadsheet do not make the source more precise.

4. Connect ads to posts without copying post totals

A content identity is the identifier for a specific post. An ad identity identifies an advertising record. Keep them as different keys. A key is a value used to find and connect records.

Use three tables:

  1. An ad table, with each retained ad record and its owner-source reference.
  2. A post table, with one checked record for each public post identity.
  3. A mapping table, with the proven connections between ads and posts.

A mapping table lets several ads point to one post without making several copies of that post’s public count.

Connect an ad to a post only when an owner record or a checked source link proves the relation. Similar text, matching pictures or nearby dates alone do not establish the connection. Leave an unproven relation unresolved.

A join is an operation that connects matching records from tables. When two ads connect to one post, a joined view can show the post’s public value twice. This can be useful for inspection, but it is unsafe as a source for a public total.

Calculate public totals from the distinct post records at the selected observation time. Distinct means each checked post identity appears once. Calculate ad results from the compatible owner records. Do not remove a valid ad record merely because it shares a post with another ad.

Also check whether an owner file already includes summary rows. Keep a summary separate from the detail rows used to produce it.

5. Add a public snapshot only when it helps

A snapshot is a reading taken at a specific time. Public snapshots can add context to the owner report, but they do not replace it.

The Facebook Metrics Scraper contract, checked October 25, 2026; documented fields, no runtime test documents public counters and content identities. It does not supply an owner paid and organic delivery split, reach or spend. Reach is a measure of the audience reached under a source’s definition. Public action counts do not establish that audience.

For a proposed check of one known public post, use this small input:

json
{"maxItems":1,"mode":"knownUrls","startUrls":["https://www.facebook.com/reel/2645452435840671"]}
5. Add a public snapshot only when it helps

Replace the sample Facebook URL with the public content URL you have checked. The sample is not evidence about your campaign. `knownUrls` selects direct content URLs through `startUrls`. `maxItems` limits the number of metric rows. The supplied input has a valid documented shape; no run was made for this guide. Facebook Stories URLs are not supported by the checked contract.

For each collected public reading, retain:

  1. `contentId` and `contentUrl` to identify the content.
  2. The available counters, with their original names.
  3. `contentMetricStatus`, which records each counter’s status, precision and source details.
  4. `status` and `statusReason`, which describe the row’s collection result.
  5. `scrapedAt`, which records the observation time.

A number alone is insufficient. Read its status and precision before you use it. Keep an unavailable counter missing. Do not turn it into zero.

The input schema says `includeFailedRows` defaults to false. Under that setting, failed, invalid and no-public-metric rows are counted in the run summary but are not added to the dataset. Compare your requested content list with the available results. An absent dataset row does not prove a post had no activity.

The tool collects public data. You must build the mapping, source register and reconciliation report separately. Reconciliation means checking whether source results can be compared or combined.

6. Check compatibility before you do arithmetic

Two numbers can look related and still answer different questions. Check compatibility before you compare, add or subtract them.

6. Check compatibility before you do arithmetic
CheckQuestion to answer
IdentityDo the values refer to the same checked content?
MetricDo their exact labels and definitions match?
UnitDo they count the same kind of action or audience?
WindowDo they cover compatible dates and time zones?
ScopeDo their accounts, delivery labels and filters match the question?
PrecisionAre they exact, rounded or unknown?
CoverageAre all required records present?
OverlapCan the same action or person occur in both values?

An owner period metric covers a defined interval. A cumulative public counter is the total shown at the observation time. The public total can include activity outside the owner reporting period. Checking both on the same day does not make their windows equal.

Keep reach separate from action counts. Even if you have paid reach and organic reach, the audiences can overlap. Do not add them and call the result unique people. Do not subtract one from a public action counter to invent the other.

A public count also does not establish whether a post received paid support. Use owner evidence for that question.

If you need a public response rate, use the separate guide to Facebook engagement rate without admin access. It covers a different calculation. Keep that calculation outside this delivery reconciliation.

If you need changes between public readings, use the guide to Facebook post metric history. A current snapshot cannot supply a missed past reading or a paid and organic split.

7. Work through one careful example

Original fiction; no actual campaign results. This example shows record handling and source limits. It does not describe a collection run.

Two ad rows, AD1 and AD2, map to one public post, P1. The available sources support three facts:

7. Work through one careful example
SourceSupported valueUnit and scope
Owner paid report40Paid period interactions under its saved definition
Owner organic report70Organic period interactions under its saved definition
Current public P1 snapshot100Public cumulative likes at the observation time

Keep two ad records, one post record and two mapping links. The paid source supports a reported value of 40. The example does not supply a split of those interactions between AD1 and AD2. Do not invent that split or copy 40 into both ad rows as their individual result.

Now consider the public count. A joined display might show P1 beside AD1 and again beside AD2. Summing that display would give:

100 likes + 100 likes = 200 likes.

That arithmetic repeats the same post observation. The public section must show 100 likes once for P1.

The paid and organic interaction labels also differ from the public-like label. Subtracting the numbers gives:

100 − 40 = 60 numerically.

It does not give 60 organic likes. The calculation mixes cumulative public likes with paid period interactions.

Likewise, 40 + 70 = 110 numerically, but the supplied definitions do not establish a valid combined interaction result. Nor does 110 need to equal P1’s 100 public likes. They are different source facts.

The supported decision is to report 40 paid period interactions, 70 organic period interactions and 100 public cumulative likes separately. Request compatible definitions and windows before you attempt a combined result.

8. Present separate results and an unresolved-items log

Build the report around the facts each source supports. Each section should state its source, metric, period or observation time, scope and completeness.

The paid section contains compatible owner paid results. The organic section contains compatible owner organic results. The public section contains each selected post observation once. Label public values as public counts, not organic results.

Show unresolved differences in a reconciliation log:

8. Present separate results and an unresolved-items log
IssueCurrent decisionNext evidence needed
Paid source is absentMark paid result missingAn authorized owner report for the requested scope
Ad-to-post relation is unprovenLeave the relation unresolvedAn owner record or checked source link
Interaction definitions differKeep values separateExact definitions for both metrics
Owner period and public window differShow separate resultsEvidence for a compatible comparison
Public counter is unavailableKeep the value missingA valid reading with its status
Public value is roundedKeep the precision noteA more precise source if the decision requires it

A difference alone does not prove a delay, error or missing activity. Record what differs and what evidence would resolve it. If the required evidence remains unavailable, keep the limitation in the report.

Do not force the three sections to agree through an adjustment row. An unexplained adjustment hides the evidence gap.

9. Check the complete report before release

Accept the report only after these checks pass:

  1. Every displayed value traces to an original source record.
  2. Every combined total uses compatible units, periods and scope.
  3. Every ad-to-post link has evidence.
  4. Each public post observation contributes once to its public total.
  5. Ad detail rows and owner summary rows do not duplicate results.
  6. Missing values remain distinct from recorded zeros.
  7. Rounded values retain their precision limits.
  8. Counts of actions are not described as counts of people.
  9. Missing paid or organic facts remain visible.
  10. Each unresolved issue states the next evidence needed.

These checks support a report whose values can be checked against their sources. They do not establish sales attribution, advertising return or a universal performance benchmark.

The next decision depends on the unresolved item. Request owner evidence for a missing delivery fact. Check a source link for an uncertain identity. Keep separate results when definitions remain incompatible.

Sources & further reading

By Chronometrica · Updated

Back to top ↑