[{"data":1,"prerenderedAt":138},["ShallowReactive",2],{"pseo:platforms:n8n:create-group":3},{"ban_risk":4,"faqs":5,"feature":18,"goal":22,"platform":23,"prerequisites":29,"related":33,"seo":60,"steps":76,"test":112,"tier":113,"troubleshooting":114,"updated":74,"url":70,"verified":137},"high",[6,9,12,15],{"a":7,"q":8},"Yes. Create the group with the linked number alone or with one member, then call the participants endpoint from a later node whenever a new person needs adding. It is the better pattern when members trickle in over time, because each addition is its own request with its own error handling, and a single bad number does not stop the group being created.","Can I add participants later instead of at creation time?",{"a":10,"q":11},"The id is a numeric string longer than a 64-bit integer, followed by @g.us. n8n treats it as text, but a spreadsheet cell or a numeric database column will parse the digits and round them, and the rounded value is not a group anyone can message. Format the destination column as text before the first run, or prefix the value in a way your sheet will not parse.","Why does the group id break when I write it to Google Sheets or Airtable?",{"a":13,"q":14},"Creating groups is one of the clearest automation signals WhatsApp watches for, so it is a high-risk operation on any unofficial API. Run this recipe from a number you can afford to lose, keep the rate to what a person could plausibly do by hand, and prefer sharing an invite link over adding people who never asked to be in the group.","Does creating a group from n8n carry ban risk?",{"a":16,"q":17},"No, because that node wraps Meta's official Cloud API, and the official API has no endpoint for creating a group, adding members or reading a group's participants. The generic HTTP Request node against Wapito is the only route to groups from n8n, which is why this recipe never touches the built-in WhatsApp node.","Can I use the n8n WhatsApp Business Cloud node instead?",{"name":19,"slug":20,"url":21},"Create Group","create-group","\u002Fwhatsapp-api\u002Fcreate-group\u002F","Create a WhatsApp group from n8n the moment a deal, ticket or booking needs one, with the founding members pulled from the trigger record. One HTTP Request node posts the subject and the participants to Wapito, and a Set node keeps the returned group id on the record so later nodes can message the group without looking it up again.",{"http_module":24,"name":27,"slug":27,"url":28},{"docs_url":25,"name":26},"https:\u002F\u002Fdocs.n8n.io\u002Fintegrations\u002Fbuiltin\u002Fcore-nodes\u002Fn8n-nodes-base.httprequest\u002F","HTTP Request node","n8n","\u002Fintegrations\u002Fn8n\u002F",[30,31,32],"An n8n Cloud or self-hosted instance where you can create credentials and workflows.","A Wapito channel that is connected, and its channel token copied from the dashboard.","A trigger that carries a group name and at least one phone number in international format, such as a CRM deal-won event or a form submission.",{"errors":34,"operations":50,"pillar":21,"platform":28},[35,38,41,44,47],{"title":36,"url":37},"invalid_request (400)","\u002Fdocs\u002Ferrors\u002Finvalid-request\u002F",{"title":39,"url":40},"engine_error (502)","\u002Fdocs\u002Ferrors\u002Fengine-error\u002F",{"title":42,"url":43},"unauthorized (401)","\u002Fdocs\u002Ferrors\u002Funauthorized\u002F",{"title":45,"url":46},"channel_locked (403)","\u002Fdocs\u002Ferrors\u002Fchannel-locked\u002F",{"title":48,"url":49},"not_found (404)","\u002Fdocs\u002Ferrors\u002Fnot-found\u002F",[51,54,57],{"title":52,"url":53},"POST \u002Fgroups","\u002Fdocs\u002Fapi\u002Fgroups\u002Fcreate-group\u002F",{"title":55,"url":56},"GET \u002Fgroups\u002F{id}","\u002Fdocs\u002Fapi\u002Fgroups\u002Fget-group\u002F",{"title":58,"url":59},"GET \u002Fgroups\u002F{id}\u002Finvite","\u002Fdocs\u002Fapi\u002Fgroups\u002Fget-group-invite\u002F",{"breadcrumb":61,"canonical":71,"description":72,"h1":73,"lastmod":74,"title":75},[62,65,68,69],{"name":63,"url":64},"Home","\u002F",{"name":66,"url":67},"Integrations","\u002Fintegrations\u002F",{"name":27,"url":28},{"name":19,"url":70},"\u002Fintegrations\u002Fn8n\u002Fcreate-group\u002F","https:\u002F\u002Fwapito.com\u002Fintegrations\u002Fn8n\u002Fcreate-group\u002F","Create a WhatsApp group from n8n the moment a deal, ticket or booking needs one, with the founding members pulled from the trigger record.","Create a WhatsApp group from an n8n workflow","2026-09-16","Create WhatsApp Groups from n8n (No Code) | Wapito",[77,82,87,94,100,107],{"body":78,"field_map":79,"title":81},"In n8n open Credentials, add a Header Auth credential and name it Wapito. Set the header name to Authorization and the value to the word Bearer, a space, and your channel token. Every HTTP Request node in this recipe selects this credential, so the token is never pasted into a node parameter and never ends up in an exported workflow JSON.",{"Authorization":80},"Header Auth credential \"Wapito\" — value: Bearer wpt_…","Store the channel token as a Header Auth credential",{"body":83,"field_map":84,"title":86},"Start with the node that knows a group is needed: a CRM trigger, a form trigger or a Webhook node fed by your own system. Follow it with a Code node that builds an array of phone numbers in international format from the trigger fields, dropping blanks and duplicates. Wapito accepts numbers with or without the leading plus, but every entry has to be dialable or the whole request is rejected with invalid_recipient.",{"participants":85},"Code node output — an array of strings such as [\"+15551234567\", \"+15559876543\"]","Add the trigger and shape the participants list",{"body":88,"field_map":89,"title":93},"Add an HTTP Request node, set the method to POST and the URL to https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fgroups, choose Generic Credential Type, then Header Auth, and pick the Wapito credential. Set Body Content Type to JSON and use expressions rather than string concatenation for every field, so a name containing a quote or an emoji does not produce a malformed body.",{"description":90,"participants":91,"subject":92},"{{ $json.summary }} — optional, set on the group immediately after creation","{{ $('Code').item.json.participants }} — the array from the previous step","{{ $json.deal_name }} — the group name, up to 100 characters","Post the group to Wapito with an HTTP Request node",{"body":95,"field_map":96,"title":99},"The response is the group as WhatsApp created it, and the field you need is id, a long numeric string ending in @g.us. Add a Set node that copies {{ $json.id }} into a field on your record and marks it as a string. n8n keeps it as text on its own, but any downstream sheet or database column that is numeric will round the id and every later message to the group will fail.",{"group_id":97,"invite_code":98},"{{ $json.id }} — store as text, for example 120363041234567890@g.us","{{ $json.invite_code }} — optional, if you want to share a join link later","Keep the group id with a Set node",{"body":101,"field_map":102,"title":106},"Add a second HTTP Request node that posts to https:\u002F\u002Fapi.wapito.com\u002Fv1\u002Fmessages\u002Ftext with the same credential, using the stored group id as the recipient. A typing_time of a few seconds makes the first message arrive at a human pace, which matters most on a number that has just created a group. Connect an IF node on the response status if you want to alert someone when the send is refused.",{"body":103,"to":104,"typing_time":105},"Welcome text with expressions from the trigger, for example {{ $json.customer_name }}","{{ $('Set').item.json.group_id }} — the @g.us id from the previous step","3","Send the welcome message to the new group",{"body":108,"field_map":109,"title":111},"Switch on Continue On Fail for both HTTP Request nodes and route the error output to a Slack or email node, so a refused request is visible instead of silently ending the execution. The error body from Wapito carries a code such as invalid_recipient or channel_not_connected, and reading it in the alert saves a trip to the execution log.",{"error.code":110},"{{ $json.error.code }} — the Wapito error code on the failure branch","Handle the response and the failure branch","Run the workflow manually with a test record whose participants are your own second phone. The execution should show a 201 from the groups node with an id ending in @g.us, the phone should receive the group invitation and the welcome message within a few seconds, and the Set node's output should carry the id as a string.","t3b",[115,120,123,128,132],{"code":116,"http_status":117,"title":118,"url":119},"invalid_recipient",400,"Recipient is not valid","\u002Fdocs\u002Ferrors\u002Finvalid-recipient\u002F",{"code":121,"http_status":117,"title":122,"url":37},"invalid_request","Request failed validation",{"code":124,"http_status":125,"title":126,"url":127},"channel_not_connected",409,"Channel not connected","\u002Fdocs\u002Ferrors\u002Fchannel-not-connected\u002F",{"code":129,"http_status":130,"title":131,"url":43},"unauthorized",401,"Missing or invalid token",{"code":133,"http_status":134,"title":135,"url":136},"rate_limited",429,"Too many requests","\u002Fdocs\u002Ferrors\u002Frate-limited\u002F",false,1790464904372]