Integrate Loops into the workflow. Create and manage contacts, send transactional emails, and trigger event-based automations.
Create a new contact in your Loops audience with an email address and optional properties like name, user group, and mailing list subscriptions.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
email | string | Yes | The email address for the new contact |
firstName | string | No | The contact first name |
lastName | string | No | The contact last name |
source | string | No | Custom source value replacing the default "API" |
subscribed | boolean | No | Whether the contact receives campaign emails (defaults to true) |
userGroup | string | No | Group to segment the contact into (one group per contact) |
userId | string | No | Unique user identifier from your application |
mailingLists | json | No | Mailing list IDs mapped to boolean values (true to subscribe, false to unsubscribe) |
customProperties | json | No | Custom contact properties as key-value pairs (string, number, boolean, or date values) |
| Parameter | Type | Description |
|---|
success | boolean | Whether the contact was created successfully |
id | string | The Loops-assigned ID of the created contact |
Update an existing contact in Loops by email or userId. Creates a new contact if no match is found (upsert). Can update name, subscription status, user group, mailing lists, and custom properties.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
email | string | No | The contact email address (at least one of email or userId is required) |
userId | string | No | The contact userId (at least one of email or userId is required) |
firstName | string | No | The contact first name |
lastName | string | No | The contact last name |
source | string | No | Custom source value replacing the default "API" |
subscribed | boolean | No | Whether the contact receives campaign emails (sending true re-subscribes unsubscribed contacts) |
userGroup | string | No | Group to segment the contact into (one group per contact) |
mailingLists | json | No | Mailing list IDs mapped to boolean values (true to subscribe, false to unsubscribe) |
customProperties | json | No | Custom contact properties as key-value pairs (send null to reset a property) |
| Parameter | Type | Description |
|---|
success | boolean | Whether the contact was updated successfully |
id | string | The Loops-assigned ID of the updated or created contact |
Find a contact in Loops by email address or userId. Returns an array of matching contacts with all their properties including name, subscription status, user group, and mailing lists.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
email | string | No | The contact email address to search for (at least one of email or userId is required) |
userId | string | No | The contact userId to search for (at least one of email or userId is required) |
| Parameter | Type | Description |
|---|
contacts | array | Array of matching contact objects (empty array if no match found) |
Delete a contact from Loops by email address or userId. At least one identifier must be provided.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
email | string | No | The email address of the contact to delete (at least one of email or userId is required) |
userId | string | No | The userId of the contact to delete (at least one of email or userId is required) |
| Parameter | Type | Description |
|---|
success | boolean | Whether the contact was deleted successfully |
message | string | Status message from the API |
Send a transactional email to a recipient using a Loops template. Supports dynamic data variables for personalization and optionally adds the recipient to your audience.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
email | string | Yes | The email address of the recipient |
transactionalId | string | Yes | The ID of the transactional email template to send |
dataVariables | json | No | Template data variables as key-value pairs (string or number values) |
addToAudience | boolean | No | Whether to create the recipient as a contact if they do not already exist (default: false) |
attachments | json | No | Array of file attachments. Each object must have filename (string), contentType (MIME type string), and data (base64-encoded string). |
| Parameter | Type | Description |
|---|
success | boolean | Whether the transactional email was sent successfully |
Send an event to Loops to trigger automated email sequences for a contact. Identify the contact by email or userId and include optional event properties and mailing list changes.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
email | string | No | The email address of the contact (at least one of email or userId is required) |
userId | string | No | The userId of the contact (at least one of email or userId is required) |
eventName | string | Yes | The name of the event to trigger |
eventProperties | json | No | Event data as key-value pairs (string, number, boolean, or date values) |
mailingLists | json | No | Mailing list IDs mapped to boolean values (true to subscribe, false to unsubscribe) |
| Parameter | Type | Description |
|---|
success | boolean | Whether the event was sent successfully |
Retrieve all mailing lists from your Loops account. Returns each list with its ID, name, description, and public/private status.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
| Parameter | Type | Description |
|---|
mailingLists | array | Array of mailing list objects |
Retrieve a list of published transactional email templates from your Loops account. Returns each template with its ID, name, created/updated timestamps, and data variables.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
perPage | string | No | Number of results per page (10-50, default: 20) |
cursor | string | No | Pagination cursor from a previous response to fetch the next page |
| Parameter | Type | Description |
|---|
transactionalEmails | array | Array of published transactional email templates |
pagination | object | Pagination information |
Create a new custom contact property in your Loops account. The property name must be in camelCase format.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
name | string | Yes | The property name in camelCase format (e.g., "favoriteColor") |
type | string | Yes | The property data type (e.g., "string", "number", "boolean", "date") |
| Parameter | Type | Description |
|---|
success | boolean | Whether the contact property was created successfully |
Retrieve a list of contact properties from your Loops account. Returns each property with its key, label, and data type. Can filter to show all properties or only custom ones.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
list | string | No | Filter type: "all" for all properties (default) or "custom" for custom properties only |
| Parameter | Type | Description |
|---|
properties | array | Array of contact property objects |
Check whether a Loops contact is on the suppression list (bounced, complained, or unsubscribed) by email address or userId.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
email | string | No | The contact email address to check (at least one of email or userId is required) |
userId | string | No | The contact userId to check (at least one of email or userId is required) |
| Parameter | Type | Description |
|---|
contactId | string | The Loops-assigned contact ID |
email | string | The contact email address |
userId | string | The contact userId |
isSuppressed | boolean | Whether the contact is on the suppression list |
removalQuotaLimit | number | Total suppression-removal quota for the team |
removalQuotaRemaining | number | Remaining suppression-removal quota for the team |
Remove a Loops contact from the suppression list by email address or userId, allowing them to receive emails again. Subject to a team removal quota.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
email | string | No | The contact email address to remove from suppression (at least one of email or userId is required) |
userId | string | No | The contact userId to remove from suppression (at least one of email or userId is required) |
| Parameter | Type | Description |
|---|
success | boolean | Whether the contact was removed from suppression successfully |
message | string | Status message from the API |
removalQuotaLimit | number | Total suppression-removal quota for the team |
removalQuotaRemaining | number | Remaining suppression-removal quota for the team |
Retrieve a single transactional email template from your Loops account by its ID, including its data variables and draft/published message IDs.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Loops API key for authentication |
transactionalId | string | Yes | The ID of the transactional email template to retrieve |
| Parameter | Type | Description |
|---|
id | string | The transactional email template ID |
name | string | The template name |
draftEmailMessageId | string | ID of the draft email message, if any |
publishedEmailMessageId | string | ID of the published email message, if any |
transactionalGroupId | string | ID of the transactional group this template belongs to, if any |
createdAt | string | Creation timestamp (ISO 8601) |
updatedAt | string | Last updated timestamp (ISO 8601) |
dataVariables | array | Template data variable names |
Trigger workflow when a Loops email is delivered
| Parameter | Type | Description |
|---|
eventName | string | Event type (e.g., email.delivered, email.opened, email.clicked) |
eventTime | number | Unix timestamp (seconds) when the event occurred |
webhookSchemaVersion | string | Webhook schema version (e.g., "1.0.0") |
sourceType | string | Source of the email: "campaign", "loop", or "transactional" |
campaignId | string | Campaign ID, present when sourceType is "campaign" |
loopId | string | Loop (workflow) ID, present when sourceType is "loop" |
transactionalId | string | Transactional email ID, present when sourceType is "transactional" |
email | json | Email object from the payload (id, emailMessageId, subject) |
emailId | string | Unique email ID (payload email.id) |
emailMessageId | string | Sent email message ID (payload email.emailMessageId) |
subject | string | Email subject line (payload email.subject) |
contactIdentity | json | Contact identity object from the payload (id, email, userId) |
contactId | string | Contact ID (payload contactIdentity.id) |
contactEmail | string | Contact email address (payload contactIdentity.email) |
userId | string | Contact user ID, when set (payload contactIdentity.userId) |
Trigger workflow when a Loops email is opened
| Parameter | Type | Description |
|---|
eventName | string | Event type (e.g., email.delivered, email.opened, email.clicked) |
eventTime | number | Unix timestamp (seconds) when the event occurred |
webhookSchemaVersion | string | Webhook schema version (e.g., "1.0.0") |
sourceType | string | Source of the email: "campaign", "loop", or "transactional" |
campaignId | string | Campaign ID, present when sourceType is "campaign" |
loopId | string | Loop (workflow) ID, present when sourceType is "loop" |
transactionalId | string | Transactional email ID, present when sourceType is "transactional" |
email | json | Email object from the payload (id, emailMessageId, subject) |
emailId | string | Unique email ID (payload email.id) |
emailMessageId | string | Sent email message ID (payload email.emailMessageId) |
subject | string | Email subject line (payload email.subject) |
contactIdentity | json | Contact identity object from the payload (id, email, userId) |
contactId | string | Contact ID (payload contactIdentity.id) |
contactEmail | string | Contact email address (payload contactIdentity.email) |
userId | string | Contact user ID, when set (payload contactIdentity.userId) |
Trigger workflow when a link in a Loops email is clicked
| Parameter | Type | Description |
|---|
eventName | string | Event type (e.g., email.delivered, email.opened, email.clicked) |
eventTime | number | Unix timestamp (seconds) when the event occurred |
webhookSchemaVersion | string | Webhook schema version (e.g., "1.0.0") |
sourceType | string | Source of the email: "campaign", "loop", or "transactional" |
campaignId | string | Campaign ID, present when sourceType is "campaign" |
loopId | string | Loop (workflow) ID, present when sourceType is "loop" |
transactionalId | string | Transactional email ID, present when sourceType is "transactional" |
email | json | Email object from the payload (id, emailMessageId, subject) |
emailId | string | Unique email ID (payload email.id) |
emailMessageId | string | Sent email message ID (payload email.emailMessageId) |
subject | string | Email subject line (payload email.subject) |
contactIdentity | json | Contact identity object from the payload (id, email, userId) |
contactId | string | Contact ID (payload contactIdentity.id) |
contactEmail | string | Contact email address (payload contactIdentity.email) |
userId | string | Contact user ID, when set (payload contactIdentity.userId) |
Trigger workflow when a Loops email hard bounces
| Parameter | Type | Description |
|---|
eventName | string | Event type (e.g., email.delivered, email.opened, email.clicked) |
eventTime | number | Unix timestamp (seconds) when the event occurred |
webhookSchemaVersion | string | Webhook schema version (e.g., "1.0.0") |
sourceType | string | Source of the email: "campaign", "loop", or "transactional" |
campaignId | string | Campaign ID, present when sourceType is "campaign" |
loopId | string | Loop (workflow) ID, present when sourceType is "loop" |
transactionalId | string | Transactional email ID, present when sourceType is "transactional" |
email | json | Email object from the payload (id, emailMessageId, subject) |
emailId | string | Unique email ID (payload email.id) |
emailMessageId | string | Sent email message ID (payload email.emailMessageId) |
subject | string | Email subject line (payload email.subject) |
contactIdentity | json | Contact identity object from the payload (id, email, userId) |
contactId | string | Contact ID (payload contactIdentity.id) |
contactEmail | string | Contact email address (payload contactIdentity.email) |
userId | string | Contact user ID, when set (payload contactIdentity.userId) |
Trigger workflow when a Loops email soft bounces
| Parameter | Type | Description |
|---|
eventName | string | Event type (e.g., email.delivered, email.opened, email.clicked) |
eventTime | number | Unix timestamp (seconds) when the event occurred |
webhookSchemaVersion | string | Webhook schema version (e.g., "1.0.0") |
sourceType | string | Source of the email: "campaign", "loop", or "transactional" |
campaignId | string | Campaign ID, present when sourceType is "campaign" |
loopId | string | Loop (workflow) ID, present when sourceType is "loop" |
transactionalId | string | Transactional email ID, present when sourceType is "transactional" |
email | json | Email object from the payload (id, emailMessageId, subject) |
emailId | string | Unique email ID (payload email.id) |
emailMessageId | string | Sent email message ID (payload email.emailMessageId) |
subject | string | Email subject line (payload email.subject) |
contactIdentity | json | Contact identity object from the payload (id, email, userId) |
contactId | string | Contact ID (payload contactIdentity.id) |
contactEmail | string | Contact email address (payload contactIdentity.email) |
userId | string | Contact user ID, when set (payload contactIdentity.userId) |
Trigger workflow when a Loops campaign email is sent
| Parameter | Type | Description |
|---|
eventName | string | Event type (e.g., campaign.email.sent, loop.email.sent, transactional.email.sent) |
eventTime | number | Unix timestamp (seconds) when the event occurred |
webhookSchemaVersion | string | Webhook schema version (e.g., "1.0.0") |
campaignId | string | Campaign ID, present on campaign.email.sent |
campaignName | string | Campaign name, present on campaign.email.sent |
loopId | string | Loop (workflow) ID, present on loop.email.sent |
loopName | string | Loop (workflow) name, present on loop.email.sent |
transactionalId | string | Transactional email ID, present on transactional.email.sent |
email | json | Email object from the payload (id, emailMessageId, subject) |
emailId | string | Unique email ID (payload email.id) |
emailMessageId | string | Sent email message ID (payload email.emailMessageId) |
subject | string | Email subject line (payload email.subject) |
contactIdentity | json | Contact identity object from the payload (id, email, userId) |
contactId | string | Contact ID (payload contactIdentity.id) |
contactEmail | string | Contact email address (payload contactIdentity.email) |
userId | string | Contact user ID, when set (payload contactIdentity.userId) |
mailingLists | json | Mailing lists the send targeted (id, name, description, isPublic); present on campaign and loop sends |
Trigger workflow when a Loops loop email is sent
| Parameter | Type | Description |
|---|
eventName | string | Event type (e.g., campaign.email.sent, loop.email.sent, transactional.email.sent) |
eventTime | number | Unix timestamp (seconds) when the event occurred |
webhookSchemaVersion | string | Webhook schema version (e.g., "1.0.0") |
campaignId | string | Campaign ID, present on campaign.email.sent |
campaignName | string | Campaign name, present on campaign.email.sent |
loopId | string | Loop (workflow) ID, present on loop.email.sent |
loopName | string | Loop (workflow) name, present on loop.email.sent |
transactionalId | string | Transactional email ID, present on transactional.email.sent |
email | json | Email object from the payload (id, emailMessageId, subject) |
emailId | string | Unique email ID (payload email.id) |
emailMessageId | string | Sent email message ID (payload email.emailMessageId) |
subject | string | Email subject line (payload email.subject) |
contactIdentity | json | Contact identity object from the payload (id, email, userId) |
contactId | string | Contact ID (payload contactIdentity.id) |
contactEmail | string | Contact email address (payload contactIdentity.email) |
userId | string | Contact user ID, when set (payload contactIdentity.userId) |
mailingLists | json | Mailing lists the send targeted (id, name, description, isPublic); present on campaign and loop sends |
Trigger workflow when a Loops transactional email is sent
| Parameter | Type | Description |
|---|
eventName | string | Event type (e.g., campaign.email.sent, loop.email.sent, transactional.email.sent) |
eventTime | number | Unix timestamp (seconds) when the event occurred |
webhookSchemaVersion | string | Webhook schema version (e.g., "1.0.0") |
campaignId | string | Campaign ID, present on campaign.email.sent |
campaignName | string | Campaign name, present on campaign.email.sent |
loopId | string | Loop (workflow) ID, present on loop.email.sent |
loopName | string | Loop (workflow) name, present on loop.email.sent |
transactionalId | string | Transactional email ID, present on transactional.email.sent |
email | json | Email object from the payload (id, emailMessageId, subject) |
emailId | string | Unique email ID (payload email.id) |
emailMessageId | string | Sent email message ID (payload email.emailMessageId) |
subject | string | Email subject line (payload email.subject) |
contactIdentity | json | Contact identity object from the payload (id, email, userId) |
contactId | string | Contact ID (payload contactIdentity.id) |
contactEmail | string | Contact email address (payload contactIdentity.email) |
userId | string | Contact user ID, when set (payload contactIdentity.userId) |
mailingLists | json | Mailing lists the send targeted (id, name, description, isPublic); present on campaign and loop sends |
- Category:
tools
- Type:
loops