[{"data":1,"prerenderedAt":146},["ShallowReactive",2],{"pseo:platforms:activepieces:post-to-channel":3},{"ban_risk":4,"faqs":5,"feature":15,"goal":19,"platform":20,"prerequisites":27,"related":31,"seo":64,"steps":80,"test":119,"tier":120,"troubleshooting":121,"updated":78,"url":74,"verified":145},"medium",[6,9,12],{"a":7,"q":8},"Because a Channel post is a message whose recipient is the Channel id, exactly as a group message is a message to a group id. Every message endpoint works, so a text post, an image with a caption, a video or a document goes to the Channel through the same request shape as a message to a person, and this recipe uses the link endpoint only because a preview card performs best.","Why is there no dedicated publish endpoint for Channels?",{"a":10,"q":11},"Yes: use the image or video endpoint with the Channel id as the recipient and either a public URL or a media id for the file, and put the whole post in the caption, since the caption is the post. Upload once and reuse the media id when the same asset goes to several Channels, rather than uploading it again in every run.","Can I post a video or an image instead of a link?",{"a":13,"q":14},"No. That piece is built on Meta's official Cloud API, which has no notion of Channels at all, so it cannot list them or post to them. The generic HTTP piece against Wapito is the route to Channels from Activepieces, and because Activepieces can be self-hosted, the whole flow, the token and the post history can stay on your own infrastructure.","Does the Activepieces WhatsApp piece do this?",{"name":16,"slug":17,"url":18},"Post to Channel","post-to-channel","\u002Fwhatsapp-api\u002Fpost-to-channel\u002F","Post to your WhatsApp Channel from an Activepieces flow whenever a blog post, release or product goes live, with a link preview that sends followers on. The channel id is the recipient, an HTTP piece sends the post to Wapito, and a Code piece reads the response so a refused post is caught rather than lost.",{"http_module":21,"name":24,"slug":25,"url":26},{"docs_url":22,"name":23},"https:\u002F\u002Fwww.activepieces.com\u002Fpieces\u002Fhttp","HTTP piece > Send HTTP request","Activepieces","activepieces","\u002Fintegrations\u002Factivepieces\u002F",[28,29,30],"An Activepieces workspace, cloud or self-hosted, where you can create flows and connections.","A connected Wapito channel whose linked number owns or administers the WhatsApp Channel you want to post to.","A trigger that carries the title, the summary and the URL of what was published, such as an RSS piece, a CMS webhook or a schedule.",{"errors":32,"operations":48,"pillar":18,"platform":26},[33,36,39,42,45],{"title":34,"url":35},"invalid_request (400)","\u002Fdocs\u002Ferrors\u002Finvalid-request\u002F",{"title":37,"url":38},"invalid_recipient (400)","\u002Fdocs\u002Ferrors\u002Finvalid-recipient\u002F",{"title":40,"url":41},"unauthorized (401)","\u002Fdocs\u002Ferrors\u002Funauthorized\u002F",{"title":43,"url":44},"token_revoked (401)","\u002Fdocs\u002Ferrors\u002Ftoken-revoked\u002F",{"title":46,"url":47},"channel_locked (403)","\u002Fdocs\u002Ferrors\u002Fchannel-locked\u002F",[49,52,55,58,61],{"title":50,"url":51},"POST \u002Fmessages\u002Ftext","\u002Fdocs\u002Fapi\u002Fmessages\u002Fsend-text\u002F",{"title":53,"url":54},"POST \u002Fmessages\u002Fimage","\u002Fdocs\u002Fapi\u002Fmessages\u002Fsend-image\u002F",{"title":56,"url":57},"POST \u002Fmessages\u002Fvideo","\u002Fdocs\u002Fapi\u002Fmessages\u002Fsend-video\u002F",{"title":59,"url":60},"POST \u002Fmessages\u002Fdocument","\u002Fdocs\u002Fapi\u002Fmessages\u002Fsend-document\u002F",{"title":62,"url":63},"POST \u002Fmessages\u002Flink","\u002Fdocs\u002Fapi\u002Fmessages\u002Fsend-link\u002F",{"breadcrumb":65,"canonical":75,"description":76,"h1":77,"lastmod":78,"title":79},[66,69,72,73],{"name":67,"url":68},"Home","\u002F",{"name":70,"url":71},"Integrations","\u002Fintegrations\u002F",{"name":24,"url":26},{"name":16,"url":74},"\u002Fintegrations\u002Factivepieces\u002Fpost-to-channel\u002F","https:\u002F\u002Fwapito.com\u002Fintegrations\u002Factivepieces\u002Fpost-to-channel\u002F","Post to your WhatsApp Channel from an Activepieces flow whenever a blog post, release or product goes live, with a link preview that sends followers on.","Post to a WhatsApp Channel from an Activepieces flow","2026-09-16","Post to a WhatsApp Channel from Activepieces | Wapito",[81,86,91,98,108,114],{"body":82,"field_map":83,"title":85},"Add the HTTP piece to a flow, pick Send HTTP request, and under authentication choose Bearer token; Activepieces saves it as a connection you name once and reuse in every step and every flow. The token is then out of the step configuration, which matters when you export a flow or share the project with someone who should be able to edit the flow but not read the token.",{"Authorization":84},"Bearer connection \"Wapito\" — value: your channel token","Store the token as a Bearer connection on the HTTP piece",{"body":87,"field_map":88,"title":90},"Run a one-off flow, or use the same HTTP piece in a test step, with GET https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fnewsletters and the Wapito connection. The response lists every Channel the linked number belongs to with its role; take the id of the one where role is owner or admin, which ends in @newsletter, and keep it in a flow variable or a Storage piece so the send step never carries a hard-coded id.",{"channel_id":89},"newsletters[].id where role is owner or admin — for example 120363099887766554@newsletter","Look up the WhatsApp Channel id once",{"body":92,"field_map":93,"title":97},"Use the piece that knows something was published: the RSS piece polling your feed, a Webhook piece your CMS calls, or a Schedule piece for a weekly round-up. Map the title, a one-line summary and the canonical URL from the trigger output with the data selector. Followers cannot reply to a Channel post, so the summary should stand on its own and the link should be the call to action.",{"summary":94,"title":95,"url":96},"{{trigger.summary}} — one or two sentences","{{trigger.title}} — the headline of the post","{{trigger.link}} — where the preview should send people","Add the trigger and pull the post's fields",{"body":99,"field_map":100,"title":107},"Add the HTTP piece with Send HTTP request, method POST, URL https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fmessages\u002Flink and the Wapito connection. Set the body type to JSON and map the fields: the Channel id as the recipient, the summary as the body, the URL, and a title and an image for the preview card. A link post with a preview is the format that moves followers off WhatsApp, which is usually the point of publishing there.",{"body":101,"description":102,"image":103,"title":104,"to":105,"url":106},"{{trigger.summary}} — the text above the preview","{{trigger.summary}} — optional preview description","{{trigger.image}} — optional preview image URL","{{trigger.title}} — the preview headline","{{channel_id}} — the @newsletter id","{{trigger.link}}","Send the post as a link message to the Channel",{"body":109,"field_map":110,"title":113},"Add a Code piece after the send that receives the HTTP step's output and returns the message id when the status is 201, or throws with the error code from the body otherwise. Throwing is deliberate: a failed step shows red in the run history and can trigger a retry or a notification, whereas a flow that ends quietly on a refused post is a Channel that silently stopped publishing.",{"error.code":111,"message_id":112},"inputs.response.body.error.code on any other status","inputs.response.body.id on a 201","Read the response in a Code piece",{"body":115,"field_map":116,"title":118},"Channel posts flow through the same per-channel send queue as ordinary messages, so a trigger that fires for every item in a bulk import will queue dozens of posts at once. Add a Delay piece between posts when the trigger can batch, and let Wapito's own pacing handle the rest. Keep each post complete in itself: there is no reply, no thread and no way for a follower to ask what a post meant.",{"Delay piece":117},"A minute or more between posts when a trigger can fire in bulk","Space the posts out and keep them self-contained","Publish a test item on the trigger source, or run the flow manually with sample data. The HTTP step should return a 201 with a message id, the Code piece should pass the id through, and the post should appear in the Channel on a phone that follows it, with the link preview showing the title and image you mapped.","t3b",[122,126,131,136,141],{"code":123,"http_status":124,"title":125,"url":38},"invalid_recipient",400,"Recipient is not valid",{"code":127,"http_status":128,"title":129,"url":130},"forbidden",403,"Action not allowed","\u002Fdocs\u002Ferrors\u002Fforbidden\u002F",{"code":132,"http_status":133,"title":134,"url":135},"send_rate_limited",429,"Send queue saturated","\u002Fdocs\u002Ferrors\u002Fsend-rate-limited\u002F",{"code":137,"http_status":138,"title":139,"url":140},"channel_not_connected",409,"Channel not connected","\u002Fdocs\u002Ferrors\u002Fchannel-not-connected\u002F",{"code":142,"http_status":143,"title":144,"url":41},"unauthorized",401,"Missing or invalid token",false,1790464904271]