Node reference
Heymarket
Heymarket node reference - all 62 operations, the credential it needs, and a worked example.
Heymarket business texting (Messaging). 62 operations: SMS, MMS, group MMS, broadcasts, private notes and email; conversations (list, open, close, reassign, transfer, read state); contacts v1 and v2 with custom fields and opt-out status; lists; scheduled messages; templates; tracked short links; tags; surveys; inboxes and team.
Credential: Heymarket API credential - see Credentials.
Heymarket has no scope system. Its OpenAPI spec publishes two bearer schemes - the legacy team API key (what Pipory's credential holds) and a self-signed HS256 JWT minted from an API Secret - and lists BOTH as acceptable on every one of its 77 operations, with no per-operation scope or permission attached to either. Access is simply whatever the team member behind the key already has, so a 401 or 403 means the key is wrong, revoked, or belongs to a user who cannot reach that inbox - never that a checkbox was left unticked. Limit the blast radius by issuing the key under a user with a restricted team role.
| Operation | What it does |
|---|
sendMessage | Send SMS / MMS (1:1) |
sendGroupMms | Send group MMS |
sendBroadcast | Send broadcast to a list |
sendPrivateNote | Post a private note (memo) |
sendEmail | Send email |
getConversationMessages | Get recent messages in a conversation |
listMessages | List all team messages |
| Operation | What it does |
|---|
getConversation | Get conversation |
listConversations | List conversations |
markConversationRead | Mark conversation read |
markConversationUnread | Mark conversation unread |
openConversation | Open conversation |
closeConversation | Close conversation |
reassignConversation | Reassign conversation to a user |
transferConversation | Transfer conversation to another inbox |
| Operation | What it does |
|---|
createContact | Create contact |
getContact | Get contact |
updateContact | Update contact |
deleteContact | Delete contact |
findContact | Find contact by phone or external ID |
listContacts | List contacts |
batchCreateContacts | Batch create contacts |
getContactStatus | Get contact opt-out / block status |
setContactStatus | Set contact opt-out / block status |
listContactFields | List custom contact fields |
createContactFields | Create custom contact fields |
| Operation | What it does |
|---|
createContactV2 | Create contact (v2) |
getContactV2 | Get contact (v2) |
updateContactV2 | Update contact (v2) |
deleteContactV2 | Delete contact (v2) |
listContactsV2 | List contacts (v2) |
searchContactsV2 | Search contacts by channel (v2) |
bulkUpsertContactsV2 | Bulk create / update contacts (v2) |
| Operation | What it does |
|---|
createList | Create list |
updateList | Update list membership |
deleteList | Delete list |
getList | Get list |
listLists | List lists |
| Operation | What it does |
|---|
createScheduledMessage | Schedule a message |
getScheduledMessage | Get scheduled message |
updateScheduledMessage | Update scheduled message |
deleteScheduledMessage | Cancel scheduled message |
| Operation | What it does |
|---|
createTemplate | Create template |
getTemplate | Get template |
updateTemplate | Update template |
deleteTemplate | Delete template |
listTemplates | List templates |
| Operation | What it does |
|---|
createLink | Create tracked short link |
bulkCreateLinks | Create up to 5 tracked links |
getLink | Get tracked link |
getLinkByShortCode | Get tracked link by short code |
updateLink | Change a link's destination |
deleteLink | Delete tracked link |
listLinks | List tracked links |
| Operation | What it does |
|---|
createTag | Create tag |
getTag | Get tag |
deleteTag | Delete tag |
listTags | List tags |
| Operation | What it does |
|---|
getSurvey | Get survey |
listSurveys | List surveys |
| Operation | What it does |
|---|
listInboxes | List inboxes |
getTeam | Get team and members |
Send a text — and supply the two ids the old node never collected
A Heymarket node saved before the operation wave will not run until inboxId and creatorId are filled in. That is not a migration we could avoid: the documented send endpoint requires both, the old node sent neither (it posted a body the API does not accept, to a host on a different TLD), and there is no default that would be correct. listInboxes returns both, which is why it exists.
Set Operation to sendMessage, then fill in:
| Field | Value | Notes |
|---|
inboxId | {{ inboxes.[0].id }} | From listInboxes. An integer — Heymarket rejects the string form, so the node coerces and reports a fixable error |
creatorId | {{ inboxes.[0].creator_id }} | The user the message is attributed to |
to | {{ myTrigger.phone }} | E.164 |
text | Your order {{ myTrigger.orderId }} has shipped. | |
Sets {{sms.messageId}} and {{sms.status}}.