Publish to anything you own.
A Custom destination is a network Ocoya does not have to know about. Give it a URL and it receives your finished content as JSON — the same way a post goes to Instagram, except the other end is yours.
The destination for everything else.
Most of what people publish goes to a network with a logo. This is for the rest of it.
Your own blog
Articles written in Ocoya land in whatever CMS you already run — Ghost, Strapi, Sanity, something you built.
A network we do not support
Catch the post and forward it yourself. Anything with an API can be reached from your own code.
An approval step of your own
Route published content into a review queue, a Slack channel or a spreadsheet before it goes anywhere else.
Your own records
Keep a copy of everything published, in your warehouse, without polling an API for it.
A URL, a name, and usually one header.
There is no OAuth dance, because you own both ends. Paste the address, add the header your endpoint authenticates with, and it shows up in the composer beside your social profiles.
- Any URL that accepts a POST and answers 2xx
- Headers for whatever your endpoint authenticates with
- Appears in the composer like any other profile
Connect a custom destination
Name
Webhook URL
Advanced options
Four steps, and none of them is a developer week.
Have somewhere to receive it
Any URL that accepts a POST with a JSON body and answers 2xx. It has to be reachable from the internet — Ocoya dials it from our side, not from your browser.
Add the destination
Integrations → Custom. Give it a name you will recognise in the composer, and paste the URL.
Add a header, if it needs one
Under Advanced options, add the header your endpoint authenticates with — usually Authorization or X-API-Key. It is stored encrypted and never shown back to the browser.
Publish to it like a network
It appears in the composer beside your social profiles. Schedule a post, or point a blog campaign at it, and it receives everything the composer stored.
One POST, with everything the composer stored.
The body is JSON. The caption arrives exactly as authored — Markdown if it is an article — and everything else the composer kept rides along under options, so a field added later needs no change at your end.
- Content-Type: application/json, plus any headers you added
- caption is the body as written; title and media are separate
- options carries slug, excerpt, tags and SEO fields
Answer with a 2xx and Ocoya marks the post published. Anything else is shown to you with the body your endpoint returned.
Every field, with its type
The slug, excerpt, SEO fields, tags and reading time an article carries — what each one is, and which of them a social post leaves out.
It is your endpoint, dialled carefully.
A destination is an address we connect to from our own network, so it gets treated like one.
Private and internal addresses are refused, and the connection is pinned to the address it resolved to.
A redirect is followed only after the new address passes the same check.
Your headers are stored encrypted and never serialised back to the browser.
Whatever your endpoint answers is shown in the activity log, body and all.
Publish it wherever it belongs.
Connect a destination in a minute and point your next campaign at it.



