> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upstackdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Loops

> Forward identity-resolved customer events to Loops to trigger email automations, transactional emails, and marketing campaigns based on real-time e-commerce activity.

<Note>
  **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
</Note>

Loops is connected through **Upstack Flows**, the product that handles event delivery to marketing automation platforms. Upstack identifies visitors that standard tracking misses — turning anonymous browse and cart abandonment sessions into actionable Loops contacts with email addresses attached. This means more automated email workflows fire, more transactional messages reach the right customers, and you recover revenue that would otherwise be invisible.

## How It Works

When a visitor takes an action on your store, Upstack:

1. Captures the event through the Upstack Pixel and matches it to a known visitor profile using Upstack's identity resolution.
2. If the visitor is identified (email available), enriches the event with the contact's email and any other known properties.
3. Sends the event to Loops using your Loops API key as a trackable event that can trigger automations.
4. Optionally creates or updates the contact in Loops so it can be segmented and used in campaigns.

The result: email automations fire for visitors that standard tracking misses.

## Supported Events

| Upstack Event      | Loops Event        | Key Properties                                               | Use Case             |
| ------------------ | ------------------ | ------------------------------------------------------------ | -------------------- |
| `ViewContent`      | `Viewed Product`   | `ProductName`, `ProductID`, `Price`, `ImageURL`              | Browse abandonment   |
| `AddToCart`        | `Added to Cart`    | `ProductName`, `ProductID`, `Price`, `Quantity`, `CartValue` | Abandoned cart       |
| `InitiateCheckout` | `Started Checkout` | `CartValue`, `ItemCount`, `CheckoutURL`                      | Checkout abandonment |
| `Purchase`         | `Placed Order`     | `OrderID`, `Revenue`, `Items`, `DiscountCodes`               | Post-purchase flows  |

Upstack also syncs profile properties including name, email, and location data. These are available for Loops segmentation immediately after sync.

## Credentials

| Field   | Required | Description                                                   |
| ------- | -------- | ------------------------------------------------------------- |
| API Key | Yes      | Your Loops API key for authenticating event and contact syncs |

<Info>
  Your Loops API key can be found in your Loops account under **Settings → API**. Generate a key with write access to events and contacts.
</Info>

## Set Up Loops

<Steps>
  <Step title="Get your Loops API key">
    1. Log in to your [Loops account](https://loops.so/)
    2. Navigate to **Settings → API**
    3. Click **Create API Key** if you don't have one
    4. Copy the API key — you'll need it in the next step
  </Step>

  <Step title="Add Loops as a destination in Upstack">
    1. In the Upstack dashboard, go to **Destinations**
    2. Click **Add Destination** and select **Loops**
    3. Paste your Loops API key in the **API Key** field
    4. Click **Save** to enable the destination
  </Step>

  <Step title="Verify events are flowing">
    1. Trigger a test action on your store (view a product, add to cart)
    2. In Loops, check **Events** to see incoming events
    3. In Upstack, check the Live Event Stream to confirm events show as delivered to Loops
  </Step>
</Steps>

## FAQ

<AccordionGroup>
  <Accordion title="What is Loops?">
    Loops is an email marketing and automation platform designed for modern SaaS and e-commerce businesses. It allows you to create automated email sequences triggered by user behavior, send transactional emails, and manage marketing campaigns — all through a simple API-first interface.
  </Accordion>

  <Accordion title="How is this different from connecting Loops directly to Shopify?">
    Standard Shopify integrations only see visitors that Shopify has identified — typically logged-in customers or shoppers who have entered an email at checkout. Upstack's identity resolution matches anonymous sessions to known customer profiles using cookies, click IDs, and cross-session behavioral data, then sends those events to Loops with the contact's email attached. This lets your automated workflows fire for many more visitors.
  </Accordion>

  <Accordion title="What permissions does the Loops API key need?">
    The Loops API key must have permission to write events and contacts. When creating your API key in Loops, ensure it has the scopes required to send events and create or update contacts.
  </Accordion>

  <Accordion title="How long does it take for events to appear in Loops?">
    Once the destination is active, events typically appear in Loops within a few minutes. You can verify by triggering a test action on your store (such as adding a product to cart) and checking the Events section in Loops.
  </Accordion>

  <Accordion title="Can I send custom events to Loops?">
    Yes. Any event tracked by the Upstack Pixel can be configured to forward to Loops. Contact support if you need to send custom events beyond the standard e-commerce events.
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Events not appearing in Loops">
    If events show in the Upstack Live Event Stream but aren't arriving in Loops:

    **Steps to fix:**

    1. Confirm the Loops destination shows **Active** (green) in the Upstack dashboard
    2. Verify your API key is valid — try regenerating it in Loops if you're unsure
    3. Check the Events section in Loops — events may appear under a different name than expected
    4. If the destination status is red, disconnect and reconnect with a fresh API key
  </Accordion>

  <Accordion title="Contacts not being created in Loops">
    If events are arriving but contacts aren't being created:

    **Steps to fix:**

    1. Ensure the API key has permission to create contacts
    2. Verify that Upstack has resolved an email address for the visitor — anonymous events without an email won't create contacts
    3. Check if the contact already exists in Loops under a different email or identifier
  </Accordion>
</AccordionGroup>

<Note>
  For additional troubleshooting beyond Loops-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
</Note>

## Related

<CardGroup cols={2}>
  <Card title="Data Enrichment" icon="magnifying-glass-plus" href="/concepts/data-enrichment">
    How Upstack Enrichment improves visitor identification — the foundation of Flows recovery.
  </Card>

  <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution">
    How Upstack ID connects anonymous sessions to known customers with email addresses.
  </Card>

  <Card title="Klaviyo Destination" icon="envelope" href="/destinations/klaviyo">
    Sync events and contacts to Klaviyo using the same Upstack Flows pipeline.
  </Card>

  <Card title="Events Not Reaching Destination" icon="wrench" href="/troubleshooting/events-not-reaching-destination">
    End-to-end diagnostic guide when events aren't arriving at any destination.
  </Card>
</CardGroup>
