Internal agency operations console
Meta operations proof console
This public reviewer console shows how The Contractors Marketing API helps the agency manage authorized client business portfolios, Facebook Pages, ad accounts, reporting, and operator-authorized campaign creation. Redacted live TCM readbacks load from the review endpoint, while the review campaign action stays private-code gated and server-forced to PAUSED.
Requested access
Permission coverage map
System-user authorization context
Authorization and asset grant path
The Contractors Marketing API is an internal agency operations app. It does not use a public consumer Facebook Login flow in this demo. Access is granted through Meta Business Manager by installing the app for the business, assigning assets to a system user, and issuing The Contractors Marketing API-scoped system-user tokens.
| Workflow step | What Meta should see | Why no public login appears |
|---|---|---|
| Business Manager grant | System user is installed for the verified TCM business portfolio. | System-user flow is server-to-server based. |
| Asset assignment | Assigned Pages and ad accounts are read back from the API. | Client assets are granted in Business Manager, not selected by a public user. |
| Permission proof | Each requested permission will be shown in the live evidence log after endpoint wiring. | The demo uses app-scoped system-user tokens, never browser-exposed tokens. |
Permission proof: business_management
Business portfolio and asset access
Loading redacted live Meta readbacks from the review endpoint.
| Asset | Type | Access check | Workflow use |
|---|---|---|---|
| The Contractors Marketing | Business portfolio | Pending live readback | Client identity, permissions, asset ownership |
| The Contractors Marketing | Facebook Page | ADVERTISE task | Ad identity, Page posts, engagement context |
| TCM Demo Ad Account | Ad account | Read and manage | Campaigns, ad groups, ads, reporting |
| Instagram placement inventory | Instagram account | Placement check | Feed, Stories, Reels, Explore placement planning |
Permission proof: pages_show_list
Business Manager assigned Page list
This pages_show_list proof uses the Pages assigned to the TCM system user in Meta Business Manager. The selected Page is then bound to ad identity, placement planning, and Page engagement checks before campaign setup.
The Contractors Marketing
Primary client Page used to validate Page access before campaign setup.
| Content source | Signal | How the app uses it |
|---|---|---|
| Facebook Page profile | Page name, masked Page ID, category, Business Manager assignment | Confirm the Business Manager-assigned client Page before ad setup. |
| Page engagement metrics | Followers, fans, talking-about count | Validate the Page health signal before campaign setup. |
| Recent Page posts (optional) | Recent post rows, if available | Optional content context when the Page token returns post rows. |
| Instagram business account | Account connection and placement eligibility | Show whether Instagram placements can be used for ads. |
Permission proof: ads_read
Campaign reporting and object readback
Permission proof: ads_read
Loading campaign-level ads_read insight metrics from the authorized reporting proof account.
| Campaign insight row | Spend | Impressions | Clicks / reach |
|---|---|---|---|
| TCM Reporting Proof | $0.00 | Pending live row | Pending live row |
| Campaign object | Status | Object readback | Relationship |
|---|---|---|---|
| TCM Reporting Proof | Paused | Campaign object | Related to campaign-level insight rows above |
Permission proof: ads_management
The action below creates one new campaign in the connected, allowlisted TCM review account. The browser cannot choose a Meta account, objective, budget-sharing mode, name prefix, delivery status, budget, targeting, creative, URL, or placement.
Campaign creation receipt
- Review run
- Pending
- Idempotency key
- Pending
- Campaign
- Pending
- Returned Meta ID (masked)
- Pending
- Created
- Pending
- Exact-ID readback
- Pending
Created by this app — last 1 hour
Loading sanitized receipts from the last one-hour reviewer display window. Underlying audit records remain durable.
| Created | Campaign | Returned Meta ID (masked) | Readback state | Review run |
|---|---|---|---|---|
| Loading Created by this app receipts | ||||
Marketing API Access Tier + audit trail
Operations evidence log
| Step | Permission | Operations evidence | Safety control |
|---|---|---|---|
| 1. Validate app token | public_profile | The Contractors Marketing API app ID, operator identity, granted scopes | Secrets are never exposed in the UI |
| 2. Select business | business_management | Business portfolio and assigned assets read back | Only authorized client assets are displayed |
| 3. Select Page | pages_show_list | Business Manager-assigned Pages listed for the connected business | Wrong Page selection blocks ad setup |
| 4. Read Page engagement | pages_read_engagement | Page and content engagement is shown for planning | Data is retained only for authorized workflow needs |
| 5. Read campaigns | ads_read | Spend, impressions, clicks, reach, campaigns, ad sets, ads, and creatives read back | Reporting views do not mutate delivery assets |
| 6. Create review campaign | ads_management | Private-code-gated API action creates one campaign and returns a sanitized receipt | Account, objective, name prefix, rate cap, idempotency key, and status=PAUSED are server enforced |
| 7. Verify created campaign | ads_management | The server reads the exact returned campaign ID back, persists it privately, and shows only a masked ID in Created by this app | Successful proof requires status=PAUSED and effective_status=PAUSED; retries reuse the original receipt |