ManyChat node reference - all 32 operations, the credential it needs, and a worked example.
ManyChat Public API (Messaging). 32 operations: subscribers (get by id or user ref, find by email/phone, name or custom field, create, update), subscriber tags (add and remove by id or name), subscriber custom fields (set by id, by name, or many at once), sending (content, content to a user ref, a whole flow), page tags and custom-field definitions, bot fields, and page reads (info, flows, growth tools, one-time notification topics).
Credential: ManyChat API token - see Credentials.
The Public API has no scope system: its OpenAPI spec declares a single Bearer HTTP security scheme with no scopes attached, and one page API key grants full access to that page's whole Public API. The key is minted per chatbot page under Settings → API and looks like <pageId>:<hash>, so the blast radius is the page, not an operation. Two things a refusal usually means instead of a missing permission: API access is a paid (Pro) plan feature, and the key belongs to one page — using it against another page's subscriber IDs fails. Note the separate Profile-level key ManyChat issues for its account-wide Profile API is a different credential and is not what this node uses.
| Operation | What it does |
|---|
getSubscriber | Get subscriber |
getSubscriberByUserRef | Get subscriber by user ref |
findSubscriberBySystemField | Find subscriber by email or phone |
findSubscribersByName | Find subscribers by name |
findSubscribersByCustomField | Find subscribers by custom field |
createSubscriber | Create subscriber |
updateSubscriber | Update subscriber |
| Operation | What it does |
|---|
addTag | Add tag to subscriber (by ID) |
addTagByName | Add tag to subscriber (by name) |
removeTag | Remove tag from subscriber (by ID) |
removeTagByName | Remove tag from subscriber (by name) |
| Operation | What it does |
|---|
setCustomField | Set custom field (by ID) |
setCustomFieldByName | Set custom field (by name) |
setCustomFields | Set many custom fields |
| Operation | What it does |
|---|
sendContent | Send content to subscriber |
sendContentByUserRef | Send content to a user ref |
sendFlow | Send a flow to subscriber |
| Operation | What it does |
|---|
getTags | List tags |
createTag | Create tag |
deleteTag | Delete tag (by ID) |
deleteTagByName | Delete tag (by name) |
| Operation | What it does |
|---|
getCustomFields | List custom fields |
createCustomField | Create custom field |
| Operation | What it does |
|---|
getBotFields | List bot fields |
createBotField | Create bot field |
setBotField | Set bot field (by ID) |
setBotFieldByName | Set bot field (by name) |
setBotFields | Set many bot fields |
| Operation | What it does |
|---|
getPageInfo | Get page info |
getFlows | List flows |
getGrowthTools | List growth tools |
getOtnTopics | List one-time notification topics |
Set a custom field by name instead of by numeric id
ManyChat's own API addresses custom fields by numeric id, which a workflow author does not have and which changes between accounts. setCustomFieldByName takes the name shown in the ManyChat UI, so a workflow survives being rebuilt against a different page.
Set Operation to setCustomFieldByName, then fill in:
| Field | Value | Notes |
|---|
subscriberId | {{ myTrigger.subscriberId }} | ManyChat has NO list-subscribers endpoint — a subscriber is reachable only by id, user_ref, exact name, email/phone or a custom field value |
fieldName | signup_plan | The field name as shown in ManyChat |
fieldValue | {{ myTrigger.plan }} | |
Sets {{field.status}}. A refusal here is a bad key or an account without a paid (Pro) plan — ManyChat has no scope system, so it is never a missing permission.