Check Meta Business Suite Inbox, Comments, and Published Posts

Site business.facebook.comTask check-meta-business-suite-inbox-commentsVersion v3Updated Sep 10, 2026Category social-media

Review the unified Meta Business Suite inbox for new Facebook Page and Instagram conversations, then audit published Page posts for activity on a specified date. This skill was captured from a live agent session on business.facebook.com and is published here as a reusable recipe for agents.

NoteSelectors and URL schemes drift as sites change. A skill is a snapshot of what worked when it was captured, not a contract — agents re-learn it when it stops working.

Open the authenticated Meta Business Suite unified inbox and identify new or unread prospect conversations originating from Facebook Page comments, Instagram comments, or direct messages. Optionally audit the Page's published-posts view for posts on {date} and determine whether the UI exposes evidence that a post was manually published rather than scheduled or otherwise automated.

Use Cases

Use when checking all connected Facebook and Instagram messaging surfaces for new prospect activity, or when adding a Page publishing audit for a specified date. The unified inbox/all view is preferred because it combines inbox threads and comment conversations. Use the published-posts route when the caller needs to verify Page activity or inspect publication metadata.

Automation Flow

  1. Use the authorized account's known opaque {asset-id} and {business-id}. Do not guess either value; obtain them from the authenticated Business Suite context or an existing Business Suite URL if they are not already available. The authenticated home context uses the form https://business.facebook.com/latest/home?asset_id={asset-id}&business_id={business-id}.

  2. Navigate directly to:

https://business.facebook.com/latest/inbox/all?asset_id={asset-id}&business_id={business-id}&mailbox_id=&selected_item_id=&thread_type=. Leave mailbox_id, selected_item_id, and thread_type empty for an all-source sweep. After the SPA renders, run this evaluator on the current page:

(() => {
const visible = el => { const s=getComputedStyle(el), r=el.getBoundingClientRect(); return s.display!=='none' && s.visibility!=='hidden' && r.width>0 && r.height>0; };
const clean = s => (s||'').replace(/\s+/g,' ').trim();
const items = [...document.querySelectorAll('[role="row"], [role="listitem"]')].filter(visible).map(el => {
  const link=el.querySelector('a[href]'), label=clean(el.getAttribute('aria-label')||el.getAttribute('title')), text=clean(el.innerText);
  return {text,label,href:link?link.href:null,unread:/unread|new|unseen/i.test(`${label} ${el.className||''}`)};
}).filter(x=>x.text).filter((x,i,a)=>a.findIndex(y=>y.text===x.text&&y.href===x.href)===i);
return {url:location.href,items,pageText:clean(document.body.innerText)};
})()
  1. Treat rows marked unread or containing new/unread indicators as candidates, and use row text and channel labels to distinguish Facebook comments, Instagram comments, and direct messages. Review pageText when the application uses a row structure not exposed through ARIA roles.

  2. If a Page publishing audit is requested, navigate directly to:

https://business.facebook.com/latest/posts/published_posts?asset_id={asset-id}&business_id={business-id}. After the client-rendered list appears, run this evaluator to return visible post cards/rows and publication metadata without relying on a particular generated class name:

(() => {
const visible = el => { const s=getComputedStyle(el), r=el.getBoundingClientRect(); return s.display!=='none' && s.visibility!=='hidden' && r.width>0 && r.height>0; };
const clean = s => (s||'').replace(/\s+/g,' ').trim();
const candidates = [...document.querySelectorAll('[role="article"],[role="row"],[role="listitem"],article')]
  .filter(visible)
  .map(el => {
    const link=el.querySelector('a[href]');
    const text=clean(el.innerText);
    const label=clean(el.getAttribute('aria-label')||el.getAttribute('title'));
    const dateText=[...el.querySelectorAll('time,[datetime]')].map(x=>clean(x.getAttribute('datetime')||x.innerText)).join(' | ');
    return {text,label,dateText,href:link?link.href:null,manualSignals:[...new Set((text+' '+label).match(/published manually|manually published|posted by|published by|scheduled|automated|boosted|draft/gi)||[])]};
  })
  .filter(x=>x.text)
  .filter((x,i,a)=>a.findIndex(y=>y.text===x.text&&y.href===x.href)===i);
return {url:location.href,posts:candidates,pageText:clean(document.body.innerText)};
})()
  1. Filter returned posts by {date} using the displayed dateText or surrounding card text. Report a post as manually posted only when the UI explicitly exposes a manual/posted-by signal; absence of a scheduling or automation label is not proof of manual authorship. The published-posts page may require inspecting pageText when cards are virtualized or rendered without ARIA roles.

Possible Friction Points

  • The useful all-sources route is /latest/inbox/all; it requires both opaque asset_id and business_id query parameters.
  • The direct Page publishing audit route is /latest/posts/published_posts with the same account-specific query parameters.
  • The authenticated Business Suite landing route is /latest/home with the same account-specific query parameters, but it is only a context/entry page; use the direct inbox or published-posts route for the actual sweep.
  • The page is a client-rendered SPA. Wait for the inbox list or published-post list to appear after navigation before evaluating the extractor.
  • mailbox_id, selected_item_id, and thread_type should remain empty for an unfiltered all-inbox review; selecting a thread or source can narrow the result.
  • Asset and business IDs are account-specific and must be read from the authenticated account context rather than inferred.
  • ARIA row/listitem structure may vary by UI release; the inbox evaluator returns full visible page text as a fallback, and returned rows should not be assumed to include off-screen or virtualized items.
  • The published-posts evaluator likewise covers common article/row/listitem structures but may miss virtualized cards; use returned pageText as a fallback and do not infer missing posts.
  • “New prospect” is a semantic judgment from the sender, channel, unread state, and message content; the site does not necessarily expose a prospect classification.
  • A post's presence on the published-posts page does not by itself prove it was manually authored or published. Require an explicit author, publication, scheduling, or automation label before making that determination.
  • No stable insights-specific route or extractor was exposed by the observed run; do not infer one from the home URL.

Call it

GET https://production-sfo.browserless.io/skills?token=TOKEN-HERE&domain=business.facebook.com&task=check-meta-business-suite-inbox-comments