Plugs
Repost a post or add a comment once it reaches a number of likes, comments, reposts or views.
A plug is a one-time follow-up on a post: "when this gets 100 likes, repost it" or "when this gets 50 comments, add this comment". SociaHive checks the post's numbers and runs the action once, the first time the goal is reached.
Plugs are on the Creator, Studio, Pro and Agency plans. Calls from a free account get 403 with code: "feature_disabled".
What each platform supports
| Platform | Metrics | Actions | Checked |
|---|---|---|---|
| X | likes, comments (replies), reposts (incl. quotes), views | repost, comment (a reply under the post) | every 30 minutes for 24 hours |
| likes, comments | comment | every 5 minutes for the first hour, then every 30, for 48 hours | |
| Facebook Page | likes (all reactions), comments, reposts (shares) | comment | every 5 minutes for the first hour, then every 30, for 48 hours |
| LinkedIn company page | likes, comments, reposts | comment (as the page) | every 5 minutes for the first hour, then every 30, for 48 hours |
LinkedIn plugs work on company page posts only (LinkedIn shares a personal post's numbers only with a permission it grants to select developers), and only once LinkedIn approves company pages for SociaHive.
The window starts when the post goes live. A plug can be added while the post is scheduled (it waits) or after it is live, but not on a draft.
Limits: 3 plugs per account on a post, 10 watching at once per user. X reads are billed per read, so checks per account are also capped per minute and per day; when the daily cap is reached the plug shows "Daily check limit reached" and resumes the next day.
States
| State | Meaning |
|---|---|
armed | Watching. last_value and last_checked_at show progress. While the action runs, fired_at is set and the plug cannot be removed. |
fired | The action ran, once. |
expired | The window ended without reaching the goal (NOT_REACHED), the post was deleted (POST_DELETED) or unscheduled. |
failed | See error. AMBIGUOUS_MAY_HAVE_POSTED means the platform did not answer: check the post before adding the plug again. Plugs never retry an action. |
REST API
GET /api/v1/posts/{id}/plugs (scope posts:read) returns { plugs, targets, limits }. targets lists the post's accounts that can carry a plug, with their metrics and actions.
POST /api/v1/posts/{id}/plugs (scope posts:write):
DELETE /api/v1/posts/{id}/plugs?plug_id=<id> removes a plug in any state (409 firing while its action runs).
Agent tools
list_plugs { postId }: the post's plugs and the targets that can carry one.arm_plug { postId, accountId?, metric, threshold, action, text? }: needs confirmation, because it posts to a real audience when it fires.accountIdcan be left out when the post has a single account that can carry a plug.
CLI
Webhook
post.plug_fired is sent once per plug, after its action ran: