Publishing targets
Overview
A publishing target is a place where published items appear. Without a target a published item stays visible in the system — it simply goes nowhere.
A target consists of two things: which adapter serves it, and that adapter's settings. Which adapters are on offer depends on the installed modules.
| Adapter | Where to |
|---|---|
| Own website | The item gets an address on your site. |
| Flow | Any external system — WordPress, a partner portal, whatever has a flow. |
A failing target does not stop the others
Every target carries its own state and its own error text, per language. If a WordPress is down, the item is not "failed" — it is on your site and has a problem at one target. Inside the item you see exactly which target is stuck and what it reported.
A shared state would force you to treat the failure of a side channel like a total failure.
Which language, which type
A target can be restricted to languages and content types. Empty means "everything":
- A partner portal may only want the English version.
- A WordPress blog wants blog posts, not job ads.
Without these settings the editor would have to remember it at every publication.
Core tasks
Create a target. Name, adapter, settings. Optionally restrict it to languages and content types.
Switch a target off. Inactive targets are skipped on publication. Items already published there stay in place — deactivating is not withdrawing.
Retry after a failure. Publish the item again; that catches up exactly the target that was stuck and leaves the others untouched.
Connecting WordPress
- Enable the WordPress module.
- Under connections store the address and credentials (username +
application password).
- Install the shipped template "WordPress: publish post".
- Create a target here with the Flow adapter and point
flowKeyat that flow in its
settings; optionally depublishFlowKey for withdrawal.
The flow branches between create and update by itself — on the identifier WordPress assigned the first time and that the flow reports back. Without that report the second run would create a second post, and both would be there for readers.
Withdrawing on WordPress means "set to draft", not delete. A deleted post takes comments, links and the address with it; whoever wants to withdraw almost never wants that.
Fields in detail
The What it does column answers what changes in the system — not what the field is called. The grey name behind the label is the API field: the same thing runs under that name through automation, import and AI tools.
Channel
| Field | Required | Values / format | What it does |
|---|---|---|---|
Name name | yes | text, max. 120 characters | What the channel is called in the selection. |
Adapter adapterKey | yes | an available adapter | Where publishing goes — your own website, a social network, a foreign system. The adapter determines which settings appear below. |
Settings config | no | depending on the adapter | Credentials and targets of the connection. |
Languages locales | no | several languages | Which languages the channel publishes. Content in a language the channel does not carry is not published there — instead of appearing in a foreign language. |
Content types typeKeys | no | several content types | What may appear on this channel. |
Brand brandId | no | one of your brands | Which brand the channel stands for. |
Active active | no | yes/no | Off stops publishing without losing the setup. |
Content type
The content type is the shape of a content item: it defines which fields exist.
| Field | Required | Values / format | What it does |
|---|---|---|---|
Key typeKey | yes | short, stable text | The technical identifier. Do not change it once content rests on it. |
Name name | yes | text, max. 120 characters | What the type is called in the selection. |
Description description | no | text | What it is meant for. |
Icon icon | no | text | The symbol in lists. |
Fields fields | yes | list of field definitions | What content of this type consists of: key, label, kind (text, image, choice, date), required flag. This list is the actual work — it determines every later mask. |
Title field titleFieldKey | no | one of the fields | Which field counts as the heading — in lists, calendar and preview. |
Excerpt field excerptFieldKey | no | one of the fields | Which field serves as the teaser. |
Image field featuredImageFieldKey | no | one of the fields | Which image is used as the preview image. |
Categories categories | no | list of categories | What content of this type is classified with. |
Target selection targetMode | no | automatic or explicit | Whether content of this type goes to every matching channel on its own or whether targets are chosen per item. Automatic is convenient — and the reason a draft accidentally lands everywhere. |
Settings & permissions
- Module
module.content. content.channel.manage— create and edit targets. Deliberately its own permission: a new
target means every future item also goes there. That is setup, not day-to-day work.
content.item.viewis enough to read the list: whoever maintains items should be able to
see where their text can go.
FAQ & troubleshooting
"Adapter unavailable." The target points at an adapter that no longer exists — usually because the corresponding module was switched off. The item is untouched; the target is skipped on the next publication and reports the reason.
A target says "failed" and quotes a sentence from the external system. That is intended: "HTTP 400" alone ends no investigation, "category 12 does not exist" does. Fix the cause and publish again — that catches up exactly this target.
After publishing twice, the item exists twice on the external system. Then the flow did not report the identifier back. Check that the "Content: report publication" node sits at the end of the flow and picks up the external system's identifier.
The English version does not appear. Either the target has a language restriction, or the item has no English text. An empty version is deliberately not published.