SendPulse v2
Provides integration with the SendPulse Bulk Email API for managing mailing lists and their contacts. Use it to list, create, rename, and delete mailing lists, look up and search contacts, add contacts with or without list variables, update contact variables and phone numbers, and remove or unsubscribe contacts.
Revision History
0.0.0.2 - Initial release.
Connection
This Connection stores the credentials used by every SendPulse method. Choose an AuthenticationType; only the properties for the selected type are shown.
| Property | Type | Description |
|---|---|---|
AuthenticationType |
Enum | ClientCredentials to authenticate with a SendPulse API client ID and secret, or ApiKey to use a permanent SendPulse API key. Defaults to ClientCredentials. |
ClientId |
String | ClientCredentials only. The client ID from your SendPulse API settings. |
ClientSecret |
Masked | ClientCredentials only. The client secret from your SendPulse API settings. |
ApiKey |
Masked | ApiKey only. A permanent SendPulse API key, sent as a Bearer token. Replace it if it is revoked. |
TimeoutSeconds |
Integer | Timeout for each request, in seconds. Defaults to 30 and must be greater than zero. |
Setup Notes
- The SendPulse Node is available on Cloud Runtime clusters.
- In SendPulse, open your account's API settings and copy the API client ID and secret, or generate a permanent API key.
- With
ClientCredentials, the Node obtains short-lived access tokens and renews them automatically. Tokens are saved with the Connection so later runs can reuse an unexpired token. - With
ApiKey, the key cannot be renewed automatically. If SendPulse rejects the key, replace it in the Connection. - Click
Acquire Metadataon the Connection before loading template details or running the Node. This downloads SendPulse's public Bulk Email API description and saves it with the Connection. RunAcquire Metadataagain to refresh it. If a refresh fails, the previously saved metadata is kept. - Test Connection obtains a fresh access token, when
ClientCredentialsis selected, and performs a read-only request for one mailing list. It does not requireAcquire Metadataand does not change the saved Connection. - An HTTP
403response usually means your SendPulse account or tariff plan does not allow the requested operation.
Methods
Each method exposes templates for a fixed set of SendPulse mailing-list and contact operations. Select a template to populate the stable Operation value and the operation-specific Options and Items fields. Template names come from the SendPulse API, and each template description shows its HTTP method and path.
Read operations use Options only. Write operations use Options for the target mailing list and Items for the request body, with one SendPulse request per row.
Query
Retrieves mailing lists, list variables, and contacts. The Node pages through mailing-list and contact listings automatically and emits one row for each record.
Available templates:
getMailingLists(GET /addressbooks) - Lists the mailing lists in your account.getMailingListById(GET /addressbooks/{id}) - Gets one mailing list.getMailingListVariables(GET /addressbooks/{id}/variables) - Lists the variables defined for a mailing list.getEmailsFromMailingList(GET /addressbooks/{id}/emails) - Lists the contacts in a mailing list, including their variable values.getEmailsTotalCount(GET /addressbooks/{id}/emails/total) - Gets the number of contacts in a mailing list.getContactsByVariable(GET /addressbooks/{id}/variables/{variableName}/{searchValue}) - Finds contacts in a mailing list whose variable exactly matches a value.getEmailFromList(GET /addressbooks/{id}/emails/{email}) - Gets one contact from a mailing list by email address.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | SendPulse Connection details. |
Operation |
String | Stable operation identifier populated by the selected template. |
Options |
Object | Path and filter values for the selected operation. Every template except getMailingLists requires the mailing-list id. getContactsByVariable also requires variableName and searchValue, and getEmailFromList requires email. Contact listings can accept optional filters such as order (asc or desc), active, and not_active, as shown by the template. |
| Return | Type | Description |
|---|---|---|
Response |
Array | One row per mailing list, variable, or contact returned by SendPulse, or a single row for a count or single-record lookup. |
Create
Creates mailing lists or adds contacts to a mailing list, one request for each row in Items.
Available templates:
createMailingList(POST /addressbooks) - Creates a mailing list.addEmailsToMailingList(POST /addressbooks/{id}/emails) - Adds email addresses to a mailing list.Add contacts with variables(POST /addressbooks/{id}/emails) - Adds contacts to a mailing list together with values for the list's variables.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | SendPulse Connection details. |
Operation |
String | Stable operation identifier populated by the selected template. |
Options |
Object | The target mailing-list id for the contact templates. Not used by createMailingList. |
Items |
Array | One request per row. createMailingList rows contain bookName. addEmailsToMailingList rows contain emails as a comma-separated list of up to 100 addresses. Add contacts with variables rows contain an emails array, where each entry has an email and a variables object holding the mailing list's variable fields. |
| Return | Type | Description |
|---|---|---|
Response |
Array | One row per input item, containing the SendPulse response and Flowgear result metadata. createMailingList returns the new mailing list's id. |
Update
Renames a mailing list or updates contact details in a mailing list, using each row in Items as one request.
Available templates:
updateMailingList(PUT /addressbooks/{id}) - Renames a mailing list.updateContactVariables(POST /addressbooks/{id}/emails/variable) - Updates variable values for a contact.updateContactPhone(PUT /addressbooks/{id}/phone) - Updates the phone number for a contact.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | SendPulse Connection details. |
Operation |
String | Stable operation identifier populated by the selected template. |
Options |
Object | The required mailing-list id. |
Items |
Array | One update request per row. updateMailingList rows contain the new name. updateContactVariables rows contain the contact's email and a variables array of name and value pairs. updateContactPhone rows contain the contact's email and the new phone. |
| Return | Type | Description |
|---|---|---|
Response |
Array | One row per input item, containing the SendPulse response and Flowgear result metadata. |
Delete
Deletes a mailing list or removes contacts from a mailing list.
Available templates:
deleteMailingList(DELETE /addressbooks/{id}) - Deletes a mailing list.deleteEmailsFromMailingList(DELETE /addressbooks/{id}/emails) - Removes email addresses from a mailing list.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | SendPulse Connection details. |
Operation |
String | Stable operation identifier populated by the selected template. |
Options |
Object | The mailing-list id. For deleteMailingList, you can omit it when every Items row supplies its own id. |
Items |
Array | For deleteEmailsFromMailingList, one request per row, each containing emails as a comma-separated list of up to 100 addresses. For deleteMailingList, optional rows that each contain only the id of a mailing list to delete. |
| Return | Type | Description |
|---|---|---|
Response |
Array | One row per request, containing the SendPulse response and Flowgear result metadata. |
Unsubscribe
Unsubscribes contacts from a mailing list without removing them. Select the unsubscribeEmailsFromMailingList template (POST /addressbooks/{id}/emails/unsubscribe).
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | SendPulse Connection details. |
Operation |
String | Stable operation identifier populated by the selected template. |
Options |
Object | The required mailing-list id. |
Items |
Array | One request per row, each containing emails as a comma-separated list of up to 100 addresses. |
| Return | Type | Description |
|---|---|---|
Response |
Array | One row per input item, containing the SendPulse response and Flowgear result metadata. |
Usage Notes
- The Node supports SendPulse mailing lists and contacts only. Campaigns, SMTP, SMS, chatbots, double opt-in, tags, the blacklist, account balance, and webhooks are not available.
Optionsaccepts only the path and filter values shown by the selected template. Unknown fields are rejected. Paging is managed by the Node, solimitandoffsetare not available.Optionsapplies to the whole invocation. Every row inItemstargets the mailing list identified byOptions.id. To work with several mailing lists, run the Node once per list, for example inside a For Each.getContactsByVariablematchessearchValueliterally. It is not a filter expression. Template samples are not applied unless you enter a value.getEmailsFromMailingListandAdd contacts with variablesuse the variables defined on the selected mailing list. When loading template details, supplyOptions.idto see that list's typed variable fields. Without it, the template shows the base fields only.- Mailing-list variables of type string, number, and date are supported. Any other variable type, or a list with duplicate or unnamed variables, causes an error.
- Enter
emailsinaddEmailsToMailingList,deleteEmailsFromMailingList, andunsubscribeEmailsFromMailingListas a comma-separated list of no more than 100 addresses per row. Quote values that contain commas, quotes, or line breaks, and double any embedded quotes. Spaces are preserved, and an empty value produces an empty list. Split larger lists across several rows. - Contact additions require plain email addresses, for example
contact@example.com. Addresses that include a display name or surrounding spaces are rejected before the request is sent. - A successful contact addition means SendPulse accepted the request. It does not confirm that every address was added, because SendPulse can process contacts asynchronously or filter them. The
Flowgear.Messagefor these rows isSendPulse accepted the request; contact insertion is not confirmed.Use aQuerytemplate to confirm the result when required. deleteMailingListruns once usingOptions.idwhenItemsis not connected. WhenItemsis connected, each row must contain only theidof the mailing list to delete. An emptyItemsinput deletes nothing.Create,Update,Delete, andUnsubscriberesponses includeFlowgear.IsSuccess,Flowgear.Message, andFlowgear.Request. Failed rows also include SendPulse'smessageanderror_codewhen SendPulse returns them.- When SendPulse rejects an individual item, for example because of a validation error, the Node returns a failed row and continues with later items. Authentication, permission, connection, and other request-wide failures stop the operation.
Queryrows return records as SendPulse provides them, withoutFlowgearmetadata. An empty result returns no rows. Numeric contactphonevalues are returned as strings.getEmailFromListreturns contactvariablesas an array ofname,type, andvalueobjects.- If SendPulse briefly limits the request rate, the Node waits and retries a limited number of times. If the account quota is exhausted, the operation fails until the quota resets.
- Writes that time out or return an unexpected response are not retried automatically. Check the mailing list in SendPulse before running the write again.
Known Issues
getContactsByVariablereturns the results from a single SendPulse response. SendPulse does not document paging for this search, so very large result sets may not be returned in full.