Skip to Content
TroubleshootingA channel shows "failed"

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

  1. Go to Structura → System Logs.
  2. In the filter, type CHANNELS.PUBLISH.
  3. Set the level filter to Errors.
  4. Open the most recent failed entry. The Activity / Message column has the reason.

If the entry has extra context (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:

  1. Open Structura → Channels.
  2. Click the LinkedIn card.
  3. 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:

  1. In Slack/Discord, create a new incoming webhook on the destination channel. See the Slack or Discord page for the exact steps.
  2. Copy the new URL.
  3. 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>.txt file 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:

  1. Wait an hour.
  2. Watch whether the next scheduled post dispatches successfully.
  3. If it does, it was a transient issue — no action needed beyond manually sharing the missed post if you want.
  4. 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 logs 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 log entry.
  • The approximate time of the failed dispatch.
Last updated on