Catch failed social posts and alert your marketing team
When a scheduled social post fails to go out, retry it if it was a blip and ping your marketing channel when an account needs reconnecting.
When bundle.social sends a webhook telling me one of my posts has moved to ERROR status, triage the failure straight away instead of letting it fail silently. Publishing in bundle.social is asynchronous, so a post can be accepted, then quietly fail minutes later with nobody noticing until the content is missing from the feed.
Start by calling Get post in bundle.social with the post ID from the webhook, and read the errorsVerbose block on the post record. It is keyed by platform, and each entry carries a code, a userFacingMessage, an errorMessage and an isTransient flag. Treat errorsVerbose as the source of truth and handle each failing platform separately: one post can publish fine on LinkedIn and fail on Instagram, and the two need different responses.
If isTransient is true for a failing platform, call Retry post. Leave a few minutes between attempts, and give up after two retries so we never sit in a retry loop. Keep that cap explicit and do not exceed it. Failed posts still count against the organization's monthly quota, and the API enforces hard rate limits of 100 requests per second, 500 per 10 seconds and 2,000 per minute, so an uncapped retry against a failure that will never succeed burns both quota and rate limit. If the post is still in ERROR after the second retry, stop retrying and send the Slack alert described below, noting that automatic retries were exhausted.
If isTransient is false, for example an expired token or a revoked permission, do not retry at all. Retrying cannot fix an authorization problem. Go straight to alerting.
To alert, send a Slack message to my marketing channel. Name the exact social account and platform that broke. The errorsVerbose key gives the platform directly, and the error code prefix confirms the origin: META for Instagram, Facebook and Threads, TT for TikTok, LI for LinkedIn, YT for YouTube, TW for X, PIN for Pinterest, RD for Reddit, BSKY for Bluesky, MST for Mastodon, HTTP for generic API errors and NET for DNS or connection failures. If the post payload does not already identify the account clearly, call Get social account by team and type to resolve its handle or channel name so the alert names a real account rather than an ID.
Quote the userFacingMessage in plain English rather than the raw errorMessage string, and say clearly that the account needs reconnecting in bundle.social. Include the post's scheduled time and a preview of its content, roughly the first couple of hundred characters, so whoever picks it up immediately knows what did not go out and how time sensitive it is.
Optionally call Create portal link in bundle.social and include the resulting hosted URL in the Slack message as a one click reconnect link, so the person fixing it can reauthorize the account without navigating the dashboard themselves.
Do not alert for transient failures that recovered on retry. Those are noise. Only send a Slack message when a failure is non transient, or when the two retry attempts have been used up and the post is still in ERROR.
What does this prompt do?
- Watches for social posts that fail to publish, the moment bundle.social reports the failure rather than days later when someone notices the post is missing.
- Retries automatically when the failure looks temporary, then stops after two attempts so nothing sits in a retry loop.
- Posts a plain English alert to your marketing Slack channel when an account has genuinely lost access and needs reconnecting.
- Names the exact account and platform that broke, and includes the scheduled time plus a preview of the post that never went out.
What do I need to use this?
- A bundle.social account with at least one social account connected, such as Instagram, Facebook, LinkedIn or TikTok.
- A Slack workspace and the channel your marketing team actually watches.
- Permission to turn on failure notifications in your bundle.social organization settings.
How can I customize it?
- Change which Slack channel gets the alert, or send it as a direct message to whoever owns social publishing.
- Adjust how many times a temporary failure is retried and how long to wait between attempts.
- Include a one click reconnect link in the alert so whoever picks it up can fix the account without hunting for it.
FAQs
What counts as a temporary failure?
Will it keep retrying forever?
What happens when an account has lost access?
Does this work if the same post goes to several platforms at once?
Can I send the alerts somewhere other than Slack?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.
Every Tuesday we pull your best new reviews, draft social captions, email testimonials and product page quotes, then stage them in Notion for approval.
Every weekday morning, unfulfilled orders get an address check: harmless typos fixed automatically, risky addresses held with a note to the customer.
Stop finding out about failed posts a week later.
Set this up once and every silent publishing failure becomes a clear, actionable alert in your marketing channel.