Channel activity & errors
Two places tell you whether your channels are healthy: the Channels page and the per-campaign run detail. The Channels page gives you a fast at-a-glance view; the run detail lets you dig into any specific publish. The bell icon in the top bar surfaces an actionable notice when something needs you to step in (a broken webhook, a disconnected OAuth integration).
At-a-glance: the Channels page
Open Structura → Channels in wp-admin (or the Channels tab in the portal). Each connected channel shows one of three states:
- Connected — healthy; dispatches are firing successfully.
- Needs attention — recent dispatches have failed. Click the badge for a short explanation (e.g., “OAuth token expired”, “Webhook URL returned 404”).
- Disabled — you paused the channel. Dispatches won’t fire until you re-enable it.
“Recent” in this context means the last handful of attempts — we don’t flag a channel as unhealthy on a single transient blip, but a repeated failure will flip the badge.
Drill in: the per-publish detail
Open the campaign’s most recent run from the dashboard or the campaign’s detail page. The Channels step in the run timeline lists one row per connected channel with a Success / Error outcome and the underlying message.
For terminal failures (a webhook URL that’s gone, an expired OAuth token), the cloud also fires a user-facing notice. Click the bell icon to find it — each notice carries a one-click action that either reconnects the channel or opens the channel’s settings.
Typical successful pattern
For one post, three connected channels, the run’s Channels step shows three rows — LinkedIn, Slack, IndexNow — all green.
Typical failed pattern
One channel down, others healthy:
- LinkedIn — Success. “Post created.”
- Slack — Error. “Webhook returned HTTP 404. Webhook may have been deleted.”
The error row gives you the reason. Act on it — either fix the credential (see Disconnecting or reconnecting) or, for a transient issue, wait and confirm the next publish works.
Common error messages
“OAuth token expired” / “invalid_grant” — the channel’s auth token is no longer valid. Reconnect it. See Disconnecting or reconnecting.
“Webhook returned 404” — the webhook URL you gave us no longer exists. Regenerate it in Slack/Discord and reconnect.
“Rate limited” — you’ve published a lot in a short time and the channel is throttling. Dispatches for the next few posts may also fail; the channel typically unblocks within minutes to an hour.
“Payload too large” — usually means a featured image exceeded the channel’s file size limit. The rest of the message may have gone through; check the channel to see what landed.
“Chat not found” / “Forbidden” — Telegram-specific. Bot isn’t a member of the chat, chat ID wrong, or the bot lacks permission.
For a deeper walk through failures, see A channel shows “failed”.
Dispatches are not retried automatically
If a dispatch fails, it’s not queued for retry. That’s a deliberate MVP choice — retrying without care can double-post to channels that partially succeeded. Instead, Structura surfaces the failure so you can:
- Fix the underlying issue (reconnect, fix webhook, etc.).
- Manually share the missed post from the destination itself if it’s important.
- Let the next scheduled publish go through cleanly.
If this trade-off is a pain for you, let us know — we’re gathering signal for what a retry or catch-up feature should look like.
What health the Channels page actually shows
On each card:
- Last-dispatched timestamp.
- The most recent per-channel status (Success, Errors).
- A compact count like “12 sent / 1 failed” across recent history.
Click a connected channel to see its install panel with the most recent dispatch outcomes for that channel.