Publishing to external platforms
Publishing lets you write a post once and send it to several external platforms at the same time — the inverse of channel mirrors, which pull content in. Supported destinations: Telegram, WordPress, Discord, Slack, a generic webhook (Zapier / Make / n8n / your own service) and the Meta family — Facebook, Instagram, Threads.
Enabling the feature
Publishing is off by default. To turn it on for a channel, open Channel settings → General tab → "Optional channel features" and switch on Publishing. Only a channel owner or admin can do this, and the feature is not available for direct messages or support channels.
Where publishing lives
Publishing settings are a tab in channel settings, beside Mirror sources — open Channel settings → Integrations → Publishing (the Megaphone entry in the channel menu goes straight there). The tab has three parts: Destinations, Where publications come from, and History. If the tab is missing, check that the "Publishing" feature is not turned off in the channel's General tab, and that your role is allowed to manage publishing.
It used to be a page of its own with a composer on it. It is not any more, for the reason the next section is about: the channel's chat is where a publication is written.
Destinations (connections)
Press "Add destination" and choose a platform — the form shows the fields it needs, and a collapsible "How to set up" block right in the dialog repeats the steps from this article. Before saving, press "Test connection" — the app calls the platform and tells you whether the credentials work. Saved credentials are encrypted at rest and are never returned by the API. Each destination can be toggled on/off or deleted.
Telegram
You'll need: a bot token and the chat id of your channel or group.
- Open @BotFather in Telegram, send
/newbotand answer the prompts (bot name and @username). BotFather returns an HTTP API token — copy it. - Add the new bot to your channel or group as an Administrator with the "Post messages" right (Channel → Administrators → Add Admin → find the bot by @username).
- Find the Chat ID: for a public channel it is its
@username(e.g.@my_channel). For a private one, forward any of its posts to @userinfobot and copy the id it shows: numeric, starting with-100. - Paste the token and chat id into the form and press "Test connection".
If it fails: the most common cause is the bot not being an admin of the channel (or having been removed); also check the token was copied in full. Telegram is the only platform a poll can be published to.
WordPress
You'll need: the site URL, a username and an application password.
- You need WordPress 5.6 or newer, reachable over HTTPS. Log in to the site's admin as the user the posts should be authored by.
- Open Users → Profile and scroll to Application Passwords. Enter a name such as "Coordio" and press "Add New". Copy the generated
xxxx xxxx xxxx xxxx xxxx xxxxpassword — it is shown only once. More in the WordPress documentation. - In the form, enter the site root URL (e.g.
https://my-site.com), the username and the copied application password. It is not your login password. - Pick the post status: "Publish" makes posts go live immediately; "Draft" saves them on the site for review before publishing.
If it fails: security plugins (Wordfence, iThemes, etc.) may disable the REST API or application passwords — re-enable them in the plugin settings. The Application Passwords section does not appear on sites without HTTPS.
Writing a publication — in the chat
A publication starts as an ordinary message in the channel, so what goes out is also in the channel it went out from. Two ways to send one:
- Per message. In the composer, open the «Also publish to …» pill beside the message field and tick the destinations. Send as usual — the message appears in the channel and goes out at the same time.
- Everything, automatically. In the Publishing tab, switch on «Publish everything written here». Every new message in the channel then goes to every enabled destination, with nothing to tick. Useful for a channel whose whole purpose is an announcement feed.
What travels with the message:
- Text — the message body, once, to every selected destination.
- Images — attached images go along; each platform receives them in its own shape (Instagram, for example, gets an automatic 1:1 crop). Other kinds of file are left behind: the text still goes.
- Polls — a poll message crosses over as a real poll on the platforms that support them (Telegram); the others are skipped for that message.
- Scheduled messages — a message scheduled for later is published at the same time it is posted here, not before.
Publishing works the same in a private channel or a DM, whose messages are encrypted at rest — they are decrypted on the way out, exactly as the chat decrypts them for you. The one thing that will not publish is a message sent while you are offline: it is delivered when the connection returns, but without its publishing picks.
⛔ An edit does not travel back out
Editing or deleting the message afterwards does not change what was already published. The post is a copy that left, and the platforms differ in whether they allow an edit at all. Fix a published post on the platform itself — and the History below is where you find it.
History & status
Every post appears in History with a status badge per destination — Published (with a link to the live post) or Failed with the reason shown under the badges. A failed leg can be retried or published now. Statuses update live. A post published from a message carries a Source message link back to it in the chat.
Polls people answer from Telegram
A poll a channel scenario asks stays a Coordio poll: the votes land on it whoever cast them. Publishing answers only one question here — where to carry it out; a copy of the poll goes to the same Telegram chat as the rest of the channel's content, and the answers come back onto the original, counted together with the ones cast in the app. In the voter list a vote from Telegram carries a small icon, and the poll's footer says how many came from there.
Three things have to be true for the return path to work.
- The poll is not anonymous. Telegram sends the answer only for a poll that names its voters; for an anonymous one no answer arrives at all. Scenario polls are always asked non-anonymously.
- The member has connected their Telegram account once. That happens in Settings → Telegram: the link opens a private chat with the bot and, in the same move, says whose account it is. Without it the vote is visible in Telegram but has nobody to be recorded against in Coordio, so it is not counted.
- A separate bot asks the poll — not the one mirroring the channel. This is not caution, it follows from how Telegram works: a bot has one update queue, and whoever reads it confirms everything in it. Two independent readers of one bot steal each other's updates, and both features start working every other time. So: one bot mirrors or publishes, a second one carries the polls. Both live in the same chat and both need administrator rights.
A published poll is one-way. A poll message you publish will go to Telegram and collect answers there, but those votes do not come back into Coordio: publishing goes out through a destination with no member behind it, so there is nobody to match an answer to. Only scenario polls, asked by the channel's bot, have the return path.
Personal questions in Telegram
A scenario also asks one person at a time — «what is your topic this week», «which role will you take». Those go into a direct thread in Coordio, and a step can additionally carry them into that person's private chat with the same bot. It is switched on per step, exactly like the channel poll above, and for a reason: a private message from a bot somebody was not expecting is a different matter from a post in a channel they joined.
The same two conditions apply. The member must have connected their Telegram account in Settings → Telegram — a bot cannot write first, so without that there is no chat to write to and the question simply stays in Coordio. And it is the scenario's bot that asks, not the publishing destination, because only that bot hears the reply.
What they type back in that chat is written into Coordio as their answer to the question, and the scenario moves on. The bot confirms it in a line so nobody is left wondering. Only the message right after a question counts: anything else typed there is ordinary chat, and a command (/status) is never read as an answer.
What's next
A later phase adds AI rewriting per platform and language, so each destination gets a version tailored to its audience.