[{"data":1,"prerenderedAt":134},["ShallowReactive",2],{"pseo:platforms:make:create-group":3},{"ban_risk":4,"faqs":5,"feature":15,"goal":19,"platform":20,"prerequisites":27,"related":31,"seo":58,"steps":74,"test":109,"tier":110,"troubleshooting":111,"updated":72,"url":68,"verified":133},"high",[6,9,12],{"a":7,"q":8},"One operation for the HTTP module, plus one for each other module in the run: the trigger, the aggregator, the update. A scenario that creates one group per run therefore costs a handful of operations, and the only way it becomes expensive is a trigger that fires once per member instead of once per group, which the aggregator step exists to prevent.","How many Make operations does creating a group use?",{"a":10,"q":11},"Make's HTTP app offers an API-key connection that can carry the Authorization header for you, and it is the better choice when several scenarios call Wapito, because rotating the token then means editing one connection. A plain header is fine for a single scenario; either way the token should not be visible in a scenario shared with a teammate.","Should I store the token in a connection instead of a header?",{"a":13,"q":14},"WhatsApp lets a person block being added to groups by strangers, and Wapito cannot override that setting. The creation still succeeds and the response still lists the group, but that person is not in it. Read the participants back after creation if membership matters, and share the invite link with anyone who was not added so they can join on their own terms.","Why is a member missing from the group after a successful run?",{"name":16,"slug":17,"url":18},"Create Group","create-group","\u002Fwhatsapp-api\u002Fcreate-group\u002F","Create a WhatsApp group from a Make scenario whenever a new project, order or cohort needs its own chat, with the members mapped from the trigger. An HTTP module posts the group to Wapito, Make parses the response, and the group id is written back to the record that started the scenario.",{"http_module":21,"name":24,"slug":25,"url":26},{"docs_url":22,"name":23},"https:\u002F\u002Fwww.make.com\u002Fen\u002Fintegrations\u002Fhttp","HTTP > Make a request","Make","make","\u002Fintegrations\u002Fmake\u002F",[28,29,30],"A Make account on any plan that allows the HTTP app and at least a handful of operations per run.","A Wapito channel that is connected, and its channel token.","A trigger module whose bundle carries a name for the group and the phone numbers of the first members, for example a Watch Records module on a CRM or a form tool.",{"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},"engine_error (502)","\u002Fdocs\u002Ferrors\u002Fengine-error\u002F",{"title":40,"url":41},"unauthorized (401)","\u002Fdocs\u002Ferrors\u002Funauthorized\u002F",{"title":43,"url":44},"channel_locked (403)","\u002Fdocs\u002Ferrors\u002Fchannel-locked\u002F",{"title":46,"url":47},"not_found (404)","\u002Fdocs\u002Ferrors\u002Fnot-found\u002F",[49,52,55],{"title":50,"url":51},"POST \u002Fgroups","\u002Fdocs\u002Fapi\u002Fgroups\u002Fcreate-group\u002F",{"title":53,"url":54},"GET \u002Fgroups\u002F{id}","\u002Fdocs\u002Fapi\u002Fgroups\u002Fget-group\u002F",{"title":56,"url":57},"GET \u002Fgroups\u002F{id}\u002Finvite","\u002Fdocs\u002Fapi\u002Fgroups\u002Fget-group-invite\u002F",{"breadcrumb":59,"canonical":69,"description":70,"h1":71,"lastmod":72,"title":73},[60,63,66,67],{"name":61,"url":62},"Home","\u002F",{"name":64,"url":65},"Integrations","\u002Fintegrations\u002F",{"name":24,"url":26},{"name":16,"url":68},"\u002Fintegrations\u002Fmake\u002Fcreate-group\u002F","https:\u002F\u002Fwapito.com\u002Fintegrations\u002Fmake\u002Fcreate-group\u002F","Create a WhatsApp group from a Make scenario whenever a new project, order or cohort needs its own chat, with the members mapped from the trigger.","Create a WhatsApp group from a Make scenario","2026-09-16","Create WhatsApp Groups from Make (No Code) | Wapito",[75,80,86,93,99,104],{"body":76,"field_map":77,"title":79},"Start the scenario with the module that knows a group is needed, then add an Array Aggregator that collects the phone numbers into one array, because the participants field has to be a single JSON array rather than a bundle per person. If the numbers live in one text field separated by commas, a Text parser module splitting on the comma feeds the aggregator instead.",{"participants":78},"Array Aggregator output — one element per phone number, in international format","Add the trigger and an array aggregator for the members",{"body":81,"field_map":82,"title":85},"Add an HTTP > Make a request module. Set the URL to https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fgroups and the method to POST, add a header named Authorization whose value is Bearer followed by your channel token, and add a second header Content-Type with the value application\u002Fjson. Set the body type to Raw and the content type to JSON so the module sends exactly the bytes you map.",{"Authorization":83,"Content-Type":84},"Header — Bearer wpt_… (your channel token)","Header — application\u002Fjson","Configure HTTP > Make a request against the groups endpoint",{"body":87,"field_map":88,"title":92},"In the request content, write the JSON object with mapped pills rather than pasted values: the subject from the trigger's name field, the participants from the aggregator, and an optional description. Wrap the subject pill in quotes as the JSON needs, and use the aggregator's array pill directly for participants so Make serialises it as a real array instead of a string that looks like one.",{"description":89,"participants":90,"subject":91},"{{1.summary}} — optional text set on the group at creation","{{3.array}} — the aggregated phone numbers","{{1.name}} — the group name, up to 100 characters","Map the request body from the bundle",{"body":94,"field_map":95,"title":98},"Enable Parse response on the HTTP module so the reply becomes fields the next modules can map, instead of a JSON string you would have to parse yourself. The group id is the id field of the data output, a long numeric string ending in @g.us; Make keeps it as text, but the module you write it to has to as well, or a numeric column will round the digits away.",{"group_id":96,"invite_code":97},"{{4.data.id}} — store as text, for example 120363041234567890@g.us","{{4.data.invite_code}} — optional, for a join link later in the scenario","Switch on Parse response and read the group id",{"body":100,"field_map":101,"title":103},"Add an Update Record module for the app that triggered the scenario and map the group id into a text field on that record. The scenario now owns the link between the project and its group, which means a later scenario can message the group by reading one field, and a re-run on the same record can check the field and skip creation instead of opening a second group.",{"record.whatsapp_group":102},"{{4.data.id}} — a text field on the triggering record","Write the id back to the source record",{"body":105,"field_map":106,"title":108},"Right-click the HTTP module, add an error handler, and route it to a Slack, email or Data store module that records the response body. Wapito answers a refused creation with a JSON error whose code names the reason, such as invalid_recipient for a number that is not dialable or channel_not_connected when the linked phone is offline, and that code is what the alert should show.",{"error.code":107},"{{4.data.error.code}} inside the error handler route","Add an error handler so a refused request is visible","Run the scenario once with a record whose members are your own second phone. The HTTP module's output should show status 201 and a data.id ending in @g.us, the phone should receive the group invitation, and the triggering record should now carry that id in its text field.","t3b",[112,117,120,125,129],{"code":113,"http_status":114,"title":115,"url":116},"invalid_recipient",400,"Recipient is not valid","\u002Fdocs\u002Ferrors\u002Finvalid-recipient\u002F",{"code":118,"http_status":114,"title":119,"url":35},"invalid_request","Request failed validation",{"code":121,"http_status":122,"title":123,"url":124},"channel_not_connected",409,"Channel not connected","\u002Fdocs\u002Ferrors\u002Fchannel-not-connected\u002F",{"code":126,"http_status":127,"title":128,"url":41},"unauthorized",401,"Missing or invalid token",{"code":130,"http_status":131,"title":132,"url":44},"channel_locked",403,"Channel is locked",false,1790464904347]