Docs / Developers
n8n, Make and Zapier
Use ChannelForge in your automations: triggers and actions, keys, and example scenarios.
ChannelForge fits into the automation tools teams already use. Its apps for n8n, Make and Zapier give you triggers ("an episode is ready", "a job finished") and actions ("generate episodes within a price", "approve", "hold back") without writing code. They are built on the public API and work on Pro and above.
What the apps offer#
Each app signs in with a workspace API key (fk_live_…) and checks it against GET /api/v1/me, naming the connection after your workspace. Their instant triggers subscribe a REST hook when you switch a workflow, Zap or scenario on, and remove it when you switch it off — you see each one in Settings → API & webhooks, labelled with where it comes from.
n8n#
| Node | Resource | Operations |
|---|---|---|
| ChannelForge (also usable as a tool by an n8n agent) | Workspace | Get — plan, credits and the key's scopes |
| Channel | Get, Get Many | |
| Episode | Quote, Generate (with Max Credits at least the quote — a smaller one is refused and nothing is spent), Get, Get Many, Approve, Hold Back | |
| Job | Get, Get Many, Cancel | |
| ChannelForge Trigger | — | starts a workflow on any event of the catalogue: episode ready, held, published or revised, a post failed, a job succeeded or failed, credits low, the film events, breakouts, the coach, outliers, comment themes, originality holds and storyboards |
The trigger checks every delivery's signature, and refuses one signed more than five minutes earlier, before the workflow runs. It needs your n8n reachable at a public https:// address.
Zapier#
| Kind | Name | What it does |
|---|---|---|
| Trigger (instant) | New Episode Ready | an episode passed the critic: its id, title, critic score, channel and a link to open it |
| Trigger (instant) | Episode Published | an episode went live: the platform, the post's link and when |
| Trigger (instant) | Job Finished | a job succeeded or failed: its kind, state and credits charged |
| Action | Generate Episodes | queues 1–5 episodes for a channel, under a Max Credits ceiling; the price shows as soon as a channel is picked |
| Action | Approve Episode | approves a ready episode, so its channel's schedule posts it in its turn |
| Action | Hold Back Episode | holds a ready episode, with a reason shown on it in ChannelForge |
Every delivery's signature is checked before a Zap runs. While you set a trigger up, its sample data is your workspace's latest real events. A revoked or expired key marks the connection as needing a new key.
Make#
| Kind | Module | What it does |
|---|---|---|
| Instant trigger | Watch ready episodes | an episode passed the critic |
| Instant trigger | Watch published episodes | an episode went live, with the post's link |
| Instant trigger | Watch finished jobs | a job succeeded or failed |
| Instant trigger | Watch events | any events you choose when the webhook is made, test events too |
| Action | Generate episodes | 1–5 episodes under a Max credits ceiling |
| Action | Get a price quote | the price before anything is spent |
| Action | Approve an episode, Hold back an episode | the approval queue's two answers |
| Action | Get an episode, Get a job | one record |
| Search | Search episodes, List channels | with a limit; episodes page by cursor |
| Universal | Make an API call | any route of the API, with the connection's key |
Make's webhooks do not pass the raw body on, so Make cannot check the signature: as with every Make app, a webhook's secret is its unguessable address. In errors, a wrong value or a state (an episode already held) lets the scenario go on, a revoked key stops it and asks for a new one, and a missing scope or plan stops it with the reason.
Until the apps are listed#
Everything above uses only public routes, so you can build the same today.
Triggers need an address in your tool that receives a POST, subscribed once as a REST hook:
- Create the receiving address: in n8n a Webhook node (method POST), in Zapier a Webhooks by Zapier catch hook, in Make a Webhooks custom webhook. Copy its address.
- Subscribe it to the events you want, once, with a key of any scope:
curl -s -X POST https://forge.storeswiki.com/api/v1/webhooks \
-H "Authorization: Bearer fk_live_…" -H "Content-Type: application/json" \
-d '{"url": "https://<the address your tool gave you>", "events": ["episode.ready"], "label": "n8n: episodes to review"}'- Keep the
secretfrom the answer if your tool can check signatures (n8n's Webhook node can pass the raw body to a Code node; the check is on Webhooks and REST hooks). Otherwise treat the receiving address as a secret. - In the app, open the endpoint's Deliveries and press Send a test event to see your tool receive it.
- When you no longer need it,
DELETE https://forge.storeswiki.com/api/v1/webhooks/whk_…— or revoke the key, which stops it too.
Actions are HTTP requests with the header Authorization: Bearer fk_live_…: n8n's HTTP Request node, Zapier's Webhooks by Zapier request actions, Make's HTTP module. The ones the apps use:
| Action | Request | Scope |
|---|---|---|
| Quote episodes | GET /api/v1/quote?channel_id=ch_…&count=2 | read |
| Generate episodes | POST /api/v1/episodes/generate with {"channel_id", "count", "max_credits", "idempotency_key"} | jobs |
| Approve an episode | POST /api/v1/episodes/{id}/approve | publish |
| Hold an episode back | POST /api/v1/episodes/{id}/reject with {"reason"} | write |
| Get an episode / a job | GET /api/v1/episodes/{id} / GET /api/v1/jobs/{id} | read |
| List channels / episodes | GET /api/v1/channels / GET /api/v1/episodes?state=ready | read |
Polling works too where a tool prefers it: GET /api/v1/events?type=episode.ready returns the latest events, newest first, exactly as webhooks deliver them; remember the last id you handled.
For an n8n agent, the MCP server gives every action at once: an MCP Client Tool node with the address https://forge.storeswiki.com/api/mcp, Server Transport HTTP Streamable and Bearer authentication with the key.
Example scenarios#
A human eye on every episode, in Slack#
The channel asks for approval; a reviewer approves from Slack or holds it back.
- Trigger: episode ready (
episode.ready). - Send the title, the critic's score and the
app_urlto a Slack channel, with two buttons or reactions. - On "yes": Approve an episode with the episode id. On "no": Hold back an episode with the reviewer's words as the reason.
The channel's schedule then posts approved episodes in its next slots; nothing is posted by the automation itself. If you only want a notice in Slack, without buttons, a webhook with the Slack format does it with no tool at all.
Nightly episodes within a budget#
- Schedule: every night at 22:00.
- Get a price quote for the channel and 2 episodes; stop when
enoughisfalse. - Generate episodes with Max Credits set to the quote's
max_credits_to_pass, and an idempotency key made of the channel and the date, so a rerun of the same night queues nothing more.
The channel's own New episodes a day setting already does this inside ChannelForge; the automation is for when you want your own rules (only on weekdays, only after a sale, only for channels above a target).
A publishing log in a spreadsheet#
- Trigger: episode published (
episode.published). - Add a row: the date, the channel, the episode's title, the platform and the post's link.
Credits and failures to the people who act on them#
- Trigger:
credits.low→ email the workspace's billing contact. - Trigger:
job.failed→ open a ticket with the job's kind andresult.error(failures on ChannelForge's side are retried first and not charged, so ajob.failedis worth a look).
Keys for automations#
- One key per tool, named after it ("Zapier", "n8n production"), so its use is easy to read and to revoke.
- The fewest scopes: triggers need none beyond
read; approvals addpublish, holdswrite, generationjobs. - An expiry, renewed on a calendar reminder: a revoked or expired key stops the tool's REST hooks too.
- Every request counts towards the key's 120 a minute: avoid polling loops tighter than a minute.
Related#
- Webhooks and REST hooks — every event and how to check a delivery.
- Developer overview — keys, scopes, limits and spending safeguards.
- MCP server — agents and assistants.
- Approvals on your phone — the approval queue the scenarios work with.
Something missing or unclear? Tell us and we will improve this page.