A channel shows “failed”
When a channel shows “Needs attention” on the Channels page, or
a CHANNELS.PUBLISH entry comes back with an error level, walk
through this page to find the cause and fix it.
The underlying error message is the fastest clue — start by reading it, then match against the sections below.
Find the error message
A channel failure usually fires a Connection notice in your bell icon — open it to see the underlying error and a one-click Reconnect action. If the bell doesn’t have anything for that channel, open the campaign’s most recent run from the dashboard and look at the Channels step in the run detail; each per-channel outcome carries the reason on its own row.
If the row has extra context (an expanded view shows a stack trace or raw provider response), that’s the most useful clue — it’s what the channel’s own API returned to us.
Error: OAuth / authorization
Messages like: invalid_grant, Token expired, Unauthorized,
Access token revoked, 401.
Applies to: LinkedIn (or any future OAuth channel).
Why: you changed your LinkedIn password, revoked Structura from LinkedIn’s authorized apps, or the token aged out naturally.
Fix:
- Open Structura → Channels.
- Click the LinkedIn card.
- Click Reconnect. Walk through the OAuth flow.
See LinkedIn and Disconnecting or reconnecting.
Error: webhook URL invalid
Messages like: 404, Webhook not found, invalid_token (Slack).
Applies to: Slack, Discord.
Why: the webhook was deleted in Slack/Discord — either the channel was archived, an admin revoked the app, or someone regenerated the webhook.
Fix:
- In Slack/Discord, create a new incoming webhook on the destination channel. See the Slack or Discord page for the exact steps.
- Copy the new URL.
- In Structura, open the channel’s install panel and click Reconnect. Paste the new URL.
Error: rate limited
Messages like: 429, rate limit exceeded,
Too many requests.
Applies to: any channel, but most common for LinkedIn if you publish many posts in a short window.
Why: the channel’s API is throttling us because of recent volume.
Fix:
- Wait — most rate limits clear within minutes to an hour.
- If it’s persistent, check whether you’re running an unusual burst (e.g., publishing a backlog). Slow the cadence.
- Dispatches aren’t auto-retried, so missed posts during the throttle won’t catch up automatically; share manually if they matter.
Error: payload too large
Messages like: Payload exceeds limit, Image too large,
413.
Applies to: channels that send the featured image — Discord, Telegram, Slack (less common).
Why: the post’s featured image exceeds the channel’s file-size or pixel limit.
Fix:
- Use smaller featured images. Structura’s built-in Visuals settings can be set to a smaller aspect ratio, or use JPEG/WebP (smaller than PNG) under Structura → Settings → Visuals → Format Encoding.
- If an already-published post failed to dispatch for this reason, the text of the message likely did go through — check the channel.
Error: Telegram-specific
Messages:
chat not found— chat ID wrong, or bot isn’t a member of that chat/channel. For channels, the bot must be an administrator.Forbidden: bot can't initiate conversation with a user— for private chats, you must message the bot first. Send the bot a message in Telegram, then try again.Unauthorized— bot token wrong.
Fix: see Telegram for how to verify the token and chat ID, and how to reconnect with corrected values.
Error: IndexNow-specific
Messages:
Key file mismatch— the<key>.txtfile at your site’s root doesn’t match the key we’re submitting under. Either re-upload the correct file, or regenerate the key in the install panel and upload a new file.Key file not reachable— we couldn’t fetch the file over HTTP. Check that it’s at the web root (not/wp-content/), accessible without auth, and returning 200.
See IndexNow.
Error: email didn’t send
Messages: wp_mail failed, SMTP error.
Applies to: Email to owner.
Why: WordPress’s outbound mail isn’t configured correctly on this site.
Fix: see the “Make sure WordPress can actually send email” section of Email to owner.
Error: everything else
Some channel failures are transient — a brief outage at the
channel, a network blip. If the error message is generic (500,
Unknown error, timeout) and isolated:
- Wait an hour.
- Watch whether the next scheduled post dispatches successfully.
- If it does, it was a transient issue — no action needed beyond manually sharing the missed post if you want.
- If failures persist, treat it like a credential problem and reconnect.
When the channel works but the message looks wrong
If the dispatch succeeded per the run detail but the message looks off in Slack/Discord/LinkedIn (truncated title, broken image, no link preview):
- Link previews on LinkedIn come from your post’s Open Graph tags.
If your theme or SEO plugin isn’t emitting them, LinkedIn won’t
render a preview. Check with a tool like
https://www.opengraph.xyz. - Slack/Discord embeds can be affected by post content specifics. If the issue is reproducible, send us a sample URL.
If you’re stuck
Contact support with:
- The channel name.
- The error text from the notice (or the run detail’s Channels step).
- The approximate time of the failed dispatch.