Use Loops to manage contacts, send transactional emails, and trigger email sequences with events. Update Contact creates a contact when no match exists. Configure an API key from Loops Settings > API before selecting an operation.
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.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication emailstring Yes The email address for the new contact firstNamestring No The contact first name lastNamestring No The contact last name sourcestring No Custom source value replacing the default "API" subscribedboolean No Whether the contact receives campaign emails (defaults to true) userGroupstring No Group to segment the contact into (one group per contact) userIdstring No Unique user identifier from your application mailingListsjson No Mailing list IDs mapped to boolean values (true to subscribe, false to unsubscribe) customPropertiesjson No Custom contact properties as key-value pairs (string, number, boolean, or date values)
Parameter Type Description successboolean Whether the contact was created successfully idstring 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.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication emailstring No The contact email address (at least one of email or userId is required) userIdstring No The contact userId (at least one of email or userId is required) firstNamestring No The contact first name lastNamestring No The contact last name sourcestring No Custom source value replacing the default "API" subscribedboolean No Whether the contact receives campaign emails (sending true re-subscribes unsubscribed contacts) userGroupstring No Group to segment the contact into (one group per contact) mailingListsjson No Mailing list IDs mapped to boolean values (true to subscribe, false to unsubscribe) customPropertiesjson No Custom contact properties as key-value pairs (send null to reset a property)
Parameter Type Description successboolean Whether the contact was updated successfully idstring 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.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication emailstring No The contact email address to search for (at least one of email or userId is required) userIdstring No The contact userId to search for (at least one of email or userId is required)
Parameter Type Description contactsarray Array of matching contact objects (empty array if no match found) ↳ id string Loops-assigned contact ID ↳ email string Contact email address ↳ firstName string Contact first name ↳ lastName string Contact last name ↳ source string Source the contact was created from ↳ subscribed boolean Whether the contact receives campaign emails ↳ userGroup string Contact user group ↳ userId string External user identifier ↳ mailingLists object Mailing list IDs mapped to subscription status ↳ optInStatus string Double opt-in status: pending, accepted, rejected, or null
Delete a contact from Loops by email address or userId. At least one identifier must be provided.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication emailstring No The email address of the contact to delete (at least one of email or userId is required) userIdstring No The userId of the contact to delete (at least one of email or userId is required)
Parameter Type Description successboolean Whether the contact was deleted successfully messagestring 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.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication emailstring Yes The email address of the recipient transactionalIdstring Yes The ID of the transactional email template to send dataVariablesjson No Template data variables as key-value pairs (string or number values) addToAudienceboolean No Whether to create the recipient as a contact if they do not already exist (default: false) attachmentsjson No Array of file attachments. Each object must have filename (string), contentType (MIME type string), and data (base64-encoded string).
Parameter Type Description successboolean 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.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication emailstring No The email address of the contact (at least one of email or userId is required) userIdstring No The userId of the contact (at least one of email or userId is required) eventNamestring Yes The name of the event to trigger eventPropertiesjson No Event data as key-value pairs (string, number, boolean, or date values) mailingListsjson No Mailing list IDs mapped to boolean values (true to subscribe, false to unsubscribe)
Parameter Type Description successboolean 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.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication
Parameter Type Description mailingListsarray Array of mailing list objects ↳ id string The mailing list ID ↳ name string The mailing list name ↳ description string The mailing list description (null if not set) ↳ isPublic boolean Whether the list is public or private
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.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication perPagestring No Number of results per page (10-50, default: 20) cursorstring No Pagination cursor from a previous response to fetch the next page
Parameter Type Description transactionalEmailsarray Array of published transactional email templates ↳ id string The transactional email template ID ↳ name string The template name ↳ createdAt string Creation timestamp (ISO 8601) ↳ updatedAt string Last updated timestamp (ISO 8601) ↳ lastUpdated string Deprecated alias of updatedAt, kept for backwards compatibility ↳ dataVariables array Template data variable names paginationobject Pagination information ↳ totalResults number Total number of results ↳ returnedResults number Number of results returned ↳ perPage number Results per page ↳ totalPages number Total number of pages ↳ nextCursor string Cursor for next page (null if no more pages) ↳ nextPage string URL for next page (null if no more pages)
Create a new custom contact property in your Loops account. The property name must be in camelCase format.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication namestring Yes The property name in camelCase format (e.g., "favoriteColor") typestring Yes The property data type (e.g., "string", "number", "boolean", "date")
Parameter Type Description successboolean 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.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication liststring No Filter type: "all" for all properties (default) or "custom" for custom properties only
Parameter Type Description propertiesarray Array of contact property objects ↳ key string The property key (camelCase identifier) ↳ label string The property display label ↳ type string The property data type (string, number, boolean, date)
Check whether a Loops contact is on the suppression list (bounced, complained, or unsubscribed) by email address or userId.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication emailstring No The contact email address to check (at least one of email or userId is required) userIdstring No The contact userId to check (at least one of email or userId is required)
Parameter Type Description contactIdstring The Loops-assigned contact ID emailstring The contact email address userIdstring The contact userId isSuppressedboolean Whether the contact is on the suppression list removalQuotaLimitnumber Total suppression-removal quota for the team removalQuotaRemainingnumber 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.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication emailstring No The contact email address to remove from suppression (at least one of email or userId is required) userIdstring No The contact userId to remove from suppression (at least one of email or userId is required)
Parameter Type Description successboolean Whether the contact was removed from suppression successfully messagestring Status message from the API removalQuotaLimitnumber Total suppression-removal quota for the team removalQuotaRemainingnumber 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.
Inputs and outputsParameter Type Required Description apiKeystring Yes Loops API key for authentication transactionalIdstring Yes The ID of the transactional email template to retrieve
Parameter Type Description idstring The transactional email template ID namestring The template name draftEmailMessageIdstring ID of the draft email message, if any publishedEmailMessageIdstring ID of the published email message, if any transactionalGroupIdstring ID of the transactional group this template belongs to, if any createdAtstring Creation timestamp (ISO 8601) updatedAtstring Last updated timestamp (ISO 8601) dataVariablesarray Template data variable names
A trigger starts a workflow when a supported event occurs in this service.
Trigger workflow when a Loops campaign email is sent
Configuration and outputsParameter Type Required Description signingSecretstring Yes Required to verify the webhook signature from Loops.
Parameter Type Description eventNamestring Event type (e.g., campaign.email.sent, loop.email.sent, transactional.email.sent) eventTimenumber Unix timestamp (seconds) when the event occurred webhookSchemaVersionstring Webhook schema version (e.g., "1.0.0") campaignIdstring Campaign ID, present on campaign.email.sent campaignNamestring Campaign name, present on campaign.email.sent loopIdstring Loop (workflow) ID, present on loop.email.sent loopNamestring Loop (workflow) name, present on loop.email.sent transactionalIdstring Transactional email ID, present on transactional.email.sent emailjson Email object from the payload (id, emailMessageId, subject) emailIdstring Unique email ID (payload email.id) emailMessageIdstring Sent email message ID (payload email.emailMessageId) subjectstring Email subject line (payload email.subject) contactIdentityjson Contact identity object from the payload (id, email, userId) contactIdstring Contact ID (payload contactIdentity.id) contactEmailstring Contact email address (payload contactIdentity.email) userIdstring Contact user ID, when set (payload contactIdentity.userId) mailingListsjson Mailing lists the send targeted (id, name, description, isPublic); present on campaign and loop sends
Trigger workflow when a link in a Loops email is clicked
Configuration and outputsParameter Type Required Description signingSecretstring Yes Required to verify the webhook signature from Loops.
Parameter Type Description eventNamestring Event type (e.g., email.delivered, email.opened, email.clicked) eventTimenumber Unix timestamp (seconds) when the event occurred webhookSchemaVersionstring Webhook schema version (e.g., "1.0.0") sourceTypestring Source of the email: "campaign", "loop", or "transactional" campaignIdstring Campaign ID, present when sourceType is "campaign" loopIdstring Loop (workflow) ID, present when sourceType is "loop" transactionalIdstring Transactional email ID, present when sourceType is "transactional" emailjson Email object from the payload (id, emailMessageId, subject) emailIdstring Unique email ID (payload email.id) emailMessageIdstring Sent email message ID (payload email.emailMessageId) subjectstring Email subject line (payload email.subject) contactIdentityjson Contact identity object from the payload (id, email, userId) contactIdstring Contact ID (payload contactIdentity.id) contactEmailstring Contact email address (payload contactIdentity.email) userIdstring Contact user ID, when set (payload contactIdentity.userId)
Trigger workflow when a Loops email is delivered
Configuration and outputsParameter Type Required Description signingSecretstring Yes Required to verify the webhook signature from Loops.
Parameter Type Description eventNamestring Event type (e.g., email.delivered, email.opened, email.clicked) eventTimenumber Unix timestamp (seconds) when the event occurred webhookSchemaVersionstring Webhook schema version (e.g., "1.0.0") sourceTypestring Source of the email: "campaign", "loop", or "transactional" campaignIdstring Campaign ID, present when sourceType is "campaign" loopIdstring Loop (workflow) ID, present when sourceType is "loop" transactionalIdstring Transactional email ID, present when sourceType is "transactional" emailjson Email object from the payload (id, emailMessageId, subject) emailIdstring Unique email ID (payload email.id) emailMessageIdstring Sent email message ID (payload email.emailMessageId) subjectstring Email subject line (payload email.subject) contactIdentityjson Contact identity object from the payload (id, email, userId) contactIdstring Contact ID (payload contactIdentity.id) contactEmailstring Contact email address (payload contactIdentity.email) userIdstring Contact user ID, when set (payload contactIdentity.userId)
Trigger workflow when a Loops email hard bounces
Configuration and outputsParameter Type Required Description signingSecretstring Yes Required to verify the webhook signature from Loops.
Parameter Type Description eventNamestring Event type (e.g., email.delivered, email.opened, email.clicked) eventTimenumber Unix timestamp (seconds) when the event occurred webhookSchemaVersionstring Webhook schema version (e.g., "1.0.0") sourceTypestring Source of the email: "campaign", "loop", or "transactional" campaignIdstring Campaign ID, present when sourceType is "campaign" loopIdstring Loop (workflow) ID, present when sourceType is "loop" transactionalIdstring Transactional email ID, present when sourceType is "transactional" emailjson Email object from the payload (id, emailMessageId, subject) emailIdstring Unique email ID (payload email.id) emailMessageIdstring Sent email message ID (payload email.emailMessageId) subjectstring Email subject line (payload email.subject) contactIdentityjson Contact identity object from the payload (id, email, userId) contactIdstring Contact ID (payload contactIdentity.id) contactEmailstring Contact email address (payload contactIdentity.email) userIdstring Contact user ID, when set (payload contactIdentity.userId)
Trigger workflow when a Loops email is opened
Configuration and outputsParameter Type Required Description signingSecretstring Yes Required to verify the webhook signature from Loops.
Parameter Type Description eventNamestring Event type (e.g., email.delivered, email.opened, email.clicked) eventTimenumber Unix timestamp (seconds) when the event occurred webhookSchemaVersionstring Webhook schema version (e.g., "1.0.0") sourceTypestring Source of the email: "campaign", "loop", or "transactional" campaignIdstring Campaign ID, present when sourceType is "campaign" loopIdstring Loop (workflow) ID, present when sourceType is "loop" transactionalIdstring Transactional email ID, present when sourceType is "transactional" emailjson Email object from the payload (id, emailMessageId, subject) emailIdstring Unique email ID (payload email.id) emailMessageIdstring Sent email message ID (payload email.emailMessageId) subjectstring Email subject line (payload email.subject) contactIdentityjson Contact identity object from the payload (id, email, userId) contactIdstring Contact ID (payload contactIdentity.id) contactEmailstring Contact email address (payload contactIdentity.email) userIdstring Contact user ID, when set (payload contactIdentity.userId)
Trigger workflow when a Loops email soft bounces
Configuration and outputsParameter Type Required Description signingSecretstring Yes Required to verify the webhook signature from Loops.
Parameter Type Description eventNamestring Event type (e.g., email.delivered, email.opened, email.clicked) eventTimenumber Unix timestamp (seconds) when the event occurred webhookSchemaVersionstring Webhook schema version (e.g., "1.0.0") sourceTypestring Source of the email: "campaign", "loop", or "transactional" campaignIdstring Campaign ID, present when sourceType is "campaign" loopIdstring Loop (workflow) ID, present when sourceType is "loop" transactionalIdstring Transactional email ID, present when sourceType is "transactional" emailjson Email object from the payload (id, emailMessageId, subject) emailIdstring Unique email ID (payload email.id) emailMessageIdstring Sent email message ID (payload email.emailMessageId) subjectstring Email subject line (payload email.subject) contactIdentityjson Contact identity object from the payload (id, email, userId) contactIdstring Contact ID (payload contactIdentity.id) contactEmailstring Contact email address (payload contactIdentity.email) userIdstring Contact user ID, when set (payload contactIdentity.userId)
Trigger workflow when a Loops loop email is sent
Configuration and outputsParameter Type Required Description signingSecretstring Yes Required to verify the webhook signature from Loops.
Parameter Type Description eventNamestring Event type (e.g., campaign.email.sent, loop.email.sent, transactional.email.sent) eventTimenumber Unix timestamp (seconds) when the event occurred webhookSchemaVersionstring Webhook schema version (e.g., "1.0.0") campaignIdstring Campaign ID, present on campaign.email.sent campaignNamestring Campaign name, present on campaign.email.sent loopIdstring Loop (workflow) ID, present on loop.email.sent loopNamestring Loop (workflow) name, present on loop.email.sent transactionalIdstring Transactional email ID, present on transactional.email.sent emailjson Email object from the payload (id, emailMessageId, subject) emailIdstring Unique email ID (payload email.id) emailMessageIdstring Sent email message ID (payload email.emailMessageId) subjectstring Email subject line (payload email.subject) contactIdentityjson Contact identity object from the payload (id, email, userId) contactIdstring Contact ID (payload contactIdentity.id) contactEmailstring Contact email address (payload contactIdentity.email) userIdstring Contact user ID, when set (payload contactIdentity.userId) mailingListsjson Mailing lists the send targeted (id, name, description, isPublic); present on campaign and loop sends
Trigger workflow when a Loops transactional email is sent
Configuration and outputsParameter Type Required Description signingSecretstring Yes Required to verify the webhook signature from Loops.
Parameter Type Description eventNamestring Event type (e.g., campaign.email.sent, loop.email.sent, transactional.email.sent) eventTimenumber Unix timestamp (seconds) when the event occurred webhookSchemaVersionstring Webhook schema version (e.g., "1.0.0") campaignIdstring Campaign ID, present on campaign.email.sent campaignNamestring Campaign name, present on campaign.email.sent loopIdstring Loop (workflow) ID, present on loop.email.sent loopNamestring Loop (workflow) name, present on loop.email.sent transactionalIdstring Transactional email ID, present on transactional.email.sent emailjson Email object from the payload (id, emailMessageId, subject) emailIdstring Unique email ID (payload email.id) emailMessageIdstring Sent email message ID (payload email.emailMessageId) subjectstring Email subject line (payload email.subject) contactIdentityjson Contact identity object from the payload (id, email, userId) contactIdstring Contact ID (payload contactIdentity.id) contactEmailstring Contact email address (payload contactIdentity.email) userIdstring Contact user ID, when set (payload contactIdentity.userId) mailingListsjson Mailing lists the send targeted (id, name, description, isPublic); present on campaign and loop sends