# Loops (Actions) Destination

[Loops](https://loops.so?utm_source=segmentio\&utm_medium=docs\&utm_campaign=partners) is a modern email platform for SaaS, a better way to send marketing and transactional email.

You can use this Segment destination to create and update your Loops contacts and trigger email sending with events.

Loops maintains this destination. For any issues with the destination, [contact their Support team](mailto:help@loops.so).

## Getting started

1. From the Segment web app, click **Catalog**, then click **Destinations**.
2. Search for "Loops (Actions)" in the Destinations Catalog, and select the destination.
3. Click **Configure Loops**.
4. Select an existing Source to connect to Loops and click **Next**.
5. On the Setup page, enter a name for your destination and click **Create destination**.
6. Open Loops and generate an API key from [Settings > API](https://app.loops.so/settings?page=api). Click "Generate key" then click the "Copy to clipboard" icon.
7. Open the Segment app, go to the Settings page inside your Loops destination, and paste your API key. Then, click "Save Changes".

## Create or update contacts

You can create and update Loops contacts by using Segment's [Identify method](/docs/segment/connections/spec/identify/), like this:

```javascript
analytics.identify("test-user-a5h7xb", {
  email: "adam@loops.so",
  firstName: "Adam",
  favoriteColor: "blue",
  favoriteNumber: 42
});
```

If the email address or user ID do not exist in your contacts, a new contact will be created. If the email address or user ID already exists, the existing contact will be updated with the data sent in the Identify call.

Go to the Mappings tab inside your Loops destination and click **New Mapping**. Select **Create or update a contact**.

It is important that you set up the data mapping properly in step 3 of the "Create or update a contact" form. This is where you can select which data is sent on to Loops and into which fields. Loops provides an example default mapping in the form, but you should make sure that you set up the mapping to capture the correct data in the correct fields (you may have some [custom fields in Loops](https://loops.so/docs/add-users/properties) that the default mapping doesn't cover, for example).

You can pass any custom fields that you're using in Loops inside "Custom Contact Attributes".

Once you have completed the mapping you can send a test event. After you submit a test event, you can verify everything is set up correctly by looking for the contact on the [Audience](https://app.loops.so/audience) page in your Loops account.

Loops has a full tutorial for creating and updating contacts [in the Loops docs](https://loops.so/docs/add-users/segment#create-or-update-contact).

## Sending events

In Loops you can send emails [triggered by events](https://loops.so/docs/loop-builder/triggering-emails). You can trigger these events from Segment by using the [Track method](/docs/segment/connections/spec/track/), like this:

```javascript
analytics.track("User Registered");
```

When you make a Track call, Segment will pass this event data on to Loops, which can then send emails based on [email-sending triggers](https://loops.so/docs/loop-builder/loop-triggers) you've set up in your account.

To set up event sending with Segment, go to the Mappings tab inside your Loops destination and click **New Mapping**. Select **Send Event**.

In the next page, enter the name of the event you're tracking into the "Event Name" field (for example, "User Registered" from the example above). If you have not already created the contact in Loops, you need to include an email address in your mapping, as Loops requires a contact for each event.

Now you are able to send a test event. You can verify that the event was triggered properly in your Loops account from the [Events](https://app.loops.so/settings?page=events) page.

Read the tutorial for sending events [in the Loops docs](https://loops.so/docs/add-users/segment#send-event).

## Destination Settings

| Field   | Description        | Required | Type     |
| ------- | ------------------ | -------- | -------- |
| API Key | Your Loops API Key | Yes      | password |

## Available Actions

Build your own Mappings. Combine supported [triggers](/docs/segment/connections/destinations/actions/#components-of-a-destination-action) with the following Loops-supported actions:

> \[!NOTE]
>
> Individual destination instances have support a maximum of 50 mappings.

* [Create or update a contact](#create-or-update-a-contact)
* [Send Event](#send-event-1)

### Create or update a contact

Create or update a contact in Loops

Create or update a contact is a **Cloud** action. The default Trigger is `type = "identify"`

| Field                     | Description                                                                                                                                                                                                            | Required | Type     |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- |
| Contact Created Date      | Date the contact was created.                                                                                                                                                                                          | No       | DATETIME |
| Custom Contact Attributes | Contact attributes maintained by your team.                                                                                                                                                                            | No       | OBJECT   |
| Contact Email             | Email address for the contact. This is required when creating new contacts.                                                                                                                                            | No       | STRING   |
| First Name                | The contact's given name.                                                                                                                                                                                              | No       | STRING   |
| Last Name                 | The contact's surname.                                                                                                                                                                                                 | No       | STRING   |
| Mailing Lists             | Key-value pairs of mailing list IDs and a boolean denoting if the contact should be added (true) or removed (false) from the list. Input list IDs as keys on the right, and a boolean true or false value on the left. | No       | OBJECT   |
| Source                    | The contact's source.                                                                                                                                                                                                  | No       | STRING   |
| Subscribed                | Whether the contact is subscribed to email.                                                                                                                                                                            | No       | BOOLEAN  |
| User Group                | The contact's user group.                                                                                                                                                                                              | No       | STRING   |
| User ID                   | User ID for the contact.                                                                                                                                                                                               | Yes      | STRING   |

### Send Event

Send an event for a contact in Loops

Send Event is a **Cloud** action. The default Trigger is `type = "track"`

| Field              | Description                                                                       | Required | Type   |
| ------------------ | --------------------------------------------------------------------------------- | -------- | ------ |
| Contact Email      | Email address for the contact.                                                    | No       | STRING |
| Event Name         | Name of the event.                                                                | Yes      | STRING |
| User ID            | User ID for the contact.                                                          | Yes      | STRING |
| Contact Properties | Optional properties that will be updated on the event's contact.                  | No       | OBJECT |
| Event Properties   | Event-specific properties that can be included in emails triggered by this event. | No       | OBJECT |
