Social inbox sync
ivy.agent.social-inbox-sync · v0.1.0
ivyx
Reads what people wrote to a brand's accounts since the last run (Instagram comments, LinkedIn comments, X mentions, YouTube comments), each platform behind an if, and answers one list of kind conversations that IVYX Social's inbox shows and times against the reply SLA. Reads only.
Steps
In the order the agent's file lists them, each with where its inputs come from and the values the file fixes. A branch or a loop is a step too.
- 01Ivy NodeWhich platforms does the brand have?ivy.node.social-plan
Reads an IVYX Social collect or inbox agent's input (a connection and an id per platform) and says which platforms are there, so the agent's if-branches run only those steps.
- takes
firmfrom the agent's inputclientfrom the agent's inputig_connectionfrom the agent's inputig_user_idfrom the agent's inputfb_connectionfrom the agent's inputfb_page_idfrom the agent's inputli_connectionfrom the agent's inputli_organization_idfrom the agent's inputli_handlefrom the agent's inputx_connectionfrom the agent's inputx_handlefrom the agent's inputyt_connectionfrom the agent's input
- 02BranchInstagram?
Lets what follows run only when has_instagram of step 1 is true.
- 03Ivy NodeInstagram commentsivy.node.ig-conversations
Reads the comments under an Instagram professional account's recent media, with their replies, through the Graph API with a Meta connection, as the conversations IVYX Social's inbox shows: one conversation per top-level comment, its replies as the thread, the account's own replies marked outgoing.
Runs only on the then branch of step 2.
- takes
connectionfrom the agent's input,ig_connectionig_user_idfrom the agent's input
- 04BranchLinkedIn?
Lets what follows run only when has_linkedin of step 1 is true.
- 05Ivy NodeLinkedIn commentsivy.node.li-comments
Reads the comments under a LinkedIn company page's recent posts through the Community Management API with a LinkedIn connection, as the conversations IVYX Social's inbox shows.
Runs only on the then branch of step 4.
- takes
connectionfrom the agent's input,li_connectionorganization_idfrom the agent's input,li_organization_idhandlefrom the agent's input,li_handle
- 06BranchX?
Lets what follows run only when has_x of step 1 is true.
- 07Ivy NodeX mentionsivy.node.x-mentions
Reads the posts that mention an X account through the X API v2 with an X connection, as the conversations IVYX Social's inbox shows (kind mention).
Runs only on the then branch of step 6.
- takes
connectionfrom the agent's input,x_connectionhandlefrom the agent's input,x_handle
- 08BranchYouTube?
Lets what follows run only when has_youtube of step 1 is true.
- 09Ivy NodeYouTube commentsivy.node.yt-comments
Reads the comment threads on the channel's videos through the Data API with a Google connection, as the conversations IVYX Social's inbox shows: one per top-level comment, its replies as the thread, the channel's own replies marked outgoing.
Runs only on the then branch of step 8.
- takes
connectionfrom the agent's input,yt_connection
- 10Ivy NodeOne list of conversationsivy.node.conversations-pack
Gathers the platform nodes' conversations into one answer of kind conversations, oldest first, each id once; what IVYX Social's inbox takes.
Runs only on the else branch of step 8.
- takes
clientfrom the agent's inputconversations_afrom step 3,conversationsconversations_bfrom step 5,conversationsconversations_cfrom step 7,conversationsconversations_dfrom step 9,conversations- returns
kind,conversations,count,client
Nodes it brings
Adding this agent in IVYX Studio adds these nodes with it. A node your workspace already has is kept as it is, even at another version.
- Social: pack the conversationsivy.node.conversations-pack · v0.1.0
- Instagram: comments as conversationsivy.node.ig-conversations · v0.1.0
- LinkedIn: comments on a page's posts as conversationsivy.node.li-comments · v0.1.0
- Social: which platforms this run hasivy.node.social-plan · v0.1.0
- X: mentions of the account as conversationsivy.node.x-mentions · v0.1.0
- YouTube: comments on the channel's videos as conversationsivy.node.yt-comments · v0.1.0
What it touches
Collected from what each of its nodes declares, plus the model call when a step is a model turn. A declaration is the author's statement, and it is what policy rules select on.
Inputs
| Field | Type | Description |
|---|---|---|
| firm | string | The firm's slug in IVYX Social; the destination routes the delivery to /api/firms/<firm>/intake. |
| clientrequired | string | The brand's name, as IVYX Social knows it; the destination hands it on as the delivery's client. |
| ig_connection | Not declared | The platform's connection, as the stored secret connection.<id>. |
| ig_user_id | string | The Instagram professional account's id. |
| fb_connection | Not declared | The platform's connection, as the stored secret connection.<id>. |
| fb_page_id | string | The Facebook Page's id; the first managed Page when omitted. |
| li_connection | Not declared | The platform's connection, as the stored secret connection.<id>. |
| li_organization_id | string | The LinkedIn company page's id or URN. |
| li_handle | string | Its vanity name. |
| x_connection | Not declared | The platform's connection, as the stored secret connection.<id>. |
| x_handle | string | The X account's handle. |
| yt_connection | Not declared | The platform's connection, as the stored secret connection.<id>. |
Outputs
| Field | Type | Description |
|---|---|---|
| kindrequired | string | conversations |
| conversationsrequired | array | Not declared |
| count | integer | Not declared |
| client | string | Not declared |
Tests
2 of 2 test cases passed on Oct 25, 2026, in the publisher's own environment, before this version was published. The registry keeps that record; it does not run the cases again.
Requires: python:3.9, tools/connectors-standin.py on 127.0.0.1:18911, its connections stored as the secrets connection.standin-<platform>
- instagram
Instagram's one commented post is one conversation of kind comment.
- given
firmivyxclientIVYXig_connection{"$secret":"connection.standin-meta"}ig_user_id17841400001- expects
kindequals conversationscountequals 1conversations.0.kindequals comment
- no-platform
No connection is an empty inbox of the same kind.
- given
firmivyxclientIVYX- expects
kindequals conversationscountequals 0conversationsequals []