Collect social post requests and schedule them in Hootsuite

Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.

App
HootsuiteSlack BotGeneral Input DatabaseMarketingOperationsContent GenerationNotifications & Alerts
PromptCreate

Build me an internal post request desk that replaces the spreadsheet and email chaos of people across the company asking our social team to post something. Anyone at the company, a store manager, a recruiter, a sales rep, opens the app and submits a request. Our social manager opens the same app and works a queue of everything that has come in, edits the copy, picks the Hootsuite social profiles and schedules it.

Submitter view. A simple submit form with: what happened (a short description of the moment or news), a rough caption they would like used, an optional photo, which brand or region the post is for (a picklist I can edit), and the date they want it out. Below the form, a list of everything that person has submitted before with its current status, the final copy if the manager changed it, the accounts it went to, and the scheduled time once it is booked. Submitters only ever see their own requests.

Manager queue view. The same app opened by a social manager shows every incoming request, filterable by status and by requested date, sorted so the soonest requested dates come first. Opening a request gives a work card with the submitter, what happened, the requested date, the photo preview, and an editable copy field. From this card the manager can edit the copy, pick which Hootsuite social profiles to publish to, set the exact publish date and time, and hit Schedule. The manager can also decline a request with a short reason, which shows on the submitter's card.

Persistence. Store requests in the app database: id, submitter identity, description, original caption, edited caption, brand or region, requested date, media id and media processing state, per network variant drafts, chosen social profile ids, scheduled publish time, one row per resulting Hootsuite message id with its own per profile state, decline reason, and status. Statuses: submitted, in review, scheduled, partially scheduled, failed, published, declined.

Photo handling. When a submitter attaches a photo, a handler calls Hootsuite Create Media Upload URL to register the file and get back a media id plus a pre-signed upload URL, then PUTs the bytes to that URL with no Authorization header, since it is a pre-signed S3 URL and not a Hootsuite API call. The app then polls Hootsuite Retrieve Media Upload Status until the media is ready, showing a processing indicator on the request card. The Schedule button stays disabled while media is still processing. If scheduling ever comes back with error 40021, the media is not yet ready, so surface that plainly and let the manager retry rather than failing silently.

Profile picker. Populate the picker with Hootsuite Retrieve Social Profiles, grouped by network with the account name and network shown. Two rules to enforce in the picker: a Pinterest profile cannot be bundled with any other social profile in one scheduling call, so if Pinterest is selected alongside anything else, either block the combination with a clear message or schedule Pinterest as its own separate call. Twitter and X profiles have the same single network restriction (error 40023), so handle them the same way.

Scheduling. Schedule uses Hootsuite Schedule Message with the edited copy, the chosen profile ids, the publish time and the media id when there is a photo. Scheduling to several profiles creates a separate Hootsuite message per profile, each with its own message id, so store every returned id against the request rather than just the first. A partially failed request returns both data and errors in the same response, so show partial success explicitly on the card: which profiles were booked, which failed and why, and let the manager retry only the failed ones. If error 40025 comes back, the Hootsuite scheduled message limit has been reached, so say that in plain words instead of a generic failure.

State refresh. A handler calls Hootsuite Retrieve Message for each stored message id and shows the resulting state per profile on the request card, so the manager and the submitter can both see whether a post is still scheduled, has gone out, or failed after the fact. Refresh on card open and on a manual refresh button. Roll the per profile states up into the overall request status: all booked is scheduled, some booked is partially scheduled, none booked is failed.

Embedded background agent: Adapt for each network. Each request card gets an Adapt for each network button that kicks off a background agent. The agent takes the raw submission, the description, the submitter's rough caption and the brand or region, and rewrites it into per network variants that respect each platform's length and tone: a tight punchy version for X that fits the character limit, a longer narrative version for LinkedIn, a hashtag forward version for Instagram, and a warmer conversational version for Facebook. It writes those drafts back into the request record so the app can display them as editable fields the manager tweaks before scheduling. When the manager picks profiles, default each profile's copy to the matching network variant while still allowing a manual override. The agent only drafts, it never schedules anything.

Notification. Once scheduling succeeds, notify the original submitter over Slack: find them with Slack Bot Look Up User by Email using the email on their submission, then Slack Bot Send a Message as a direct message telling them their request is on the calendar, including the scheduled date and time, the accounts it is going to and the final copy. If the schedule was only partially successful, say which accounts were booked and which are still outstanding rather than claiming a clean success.

Permissions. Keep a manager list in an app settings screen (the app owner is a manager by default). Managers see the whole queue, every filter and the Schedule and decline actions. Everyone else sees only the submit form and their own request history, with no queue view and no scheduling controls.

What does this prompt do?

  • Gives anyone in the company one simple form: what happened, a rough caption, an optional photo, the brand or region it is for, and the date they want it live.
  • Shows each submitter the status of everything they have sent, so nobody chases the social team over email, while the social manager gets one queue of every request filtered by status and date.
  • Lets the manager rewrite the copy, pick the exact social accounts to publish to, and put the post on the Hootsuite calendar in one click.
  • Adds an Adapt for each network button that drafts per platform versions of the post: short and punchy for X, a longer story for LinkedIn, hashtag forward for Instagram, ready for the manager to tweak.

What do I need to use this?

  • A Hootsuite account with the social accounts you publish to already connected
  • A Slack workspace so the person who asked for the post gets told when it is booked in
  • A short list of who acts as social manager, since they are the only ones who see the whole queue
  • Photos in a normal image format if people want to attach one to their request

How can I customize it?

  • Change the submit form fields to match how you work, for example adding store number, campaign name or the approver who signed it off
  • Decide who counts as a social manager, and whether submitters can see each other's requests or only their own
  • Adjust the tone and length rules used for each network version, or add the networks you publish to most

FAQs

Do the people submitting requests need a Hootsuite login?
No. Only the social team's Hootsuite account is connected. Everyone else just fills in the form and watches the status of their own requests.
Can one request go out to several social accounts at once?
Yes. Pick as many accounts as you want and each one gets its own scheduled post, so you can see clearly if some went through and others did not. Pinterest is the exception and has to be scheduled on its own.
What happens if someone attaches a photo?
The photo is uploaded and has to finish processing before it can be attached to a post, so the Schedule button stays switched off until the image is ready.
Will the person who submitted the request know when it goes live?
Yes. They get a Slack message with the scheduled date and time and the accounts it is going to, and the status on their own request updates at the same time.
Does the per network rewriting post anything by itself?
No. It only writes drafts back into the request. Nothing reaches the calendar until your social manager reviews it and hits Schedule.

Related templates

Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Approval war room for every social post awaiting sign-off

One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.

Hootsuite
Slack Bot
App
Turn champion job changes into new pipeline in Attio

Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.

Boomerang
Attio
Slack Bot
Agentic Task
Voice agent QA review board for your Hume EVI calls

Open one board each morning, see which voice calls went badly, replay the exact moment the caller got frustrated, and file the fix.

Hume
Linear
Slack Bot
App
Clear your Guru verification backlog in one weekly app

A personal queue of every overdue Guru card, sorted by how late it is, with one-click verify, reassign, comment, and an agent that drafts the refresh for you.

Guru
Slack Bot
App
Short-term rental turnover console for Home Assistant

Open one screen each morning to see every rental's locks, temperature, humidity, and next check-in, then prep the next stay in a single click.

Home Assistant
Google Calendar
Slack Bot
App

Retire the social request spreadsheet.

Give the whole company one place to ask for a post, and give your social team one queue to work out of.