> ## 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.

# Sendlane

> Forward identity-resolved customer events to Sendlane to power email and SMS automation, abandoned cart recovery, and browse abandonment workflows.

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

Sendlane is connected through **Upstack Flows**, the product that handles event delivery to marketing automation platforms. Upstack identifies visitors that Shopify and Sendlane's native tracking miss — turning anonymous browse and cart abandonment sessions into actionable Sendlane contacts. This means more abandoned cart workflows fire, more browse abandonment messages send, 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. Looks up the contact in Sendlane by email or Sendlane contact ID to verify they exist.
3. If the contact is found, enriches the event with cart/product data and sends it to Sendlane as a custom event.
4. The custom event can trigger Sendlane automations like abandoned cart flows, browse abandonment sequences, and post-purchase campaigns.

The result: abandoned cart and browse abandonment workflows fire for visitors that Shopify's native tracking misses.

<Info>
  Sendlane events are only sent for contacts that already exist in Sendlane. This ensures your automations target real, opt-in subscribers and keeps your deliverability healthy.
</Info>

## Required Credentials

To connect Sendlane to Upstack, you need two credentials from your Sendlane account:

| Credential            | Description                                   | Where to Find                                |
| --------------------- | --------------------------------------------- | -------------------------------------------- |
| **API Access Token**  | Authenticates API requests to Sendlane        | Sendlane → Settings → API                    |
| **Integration Token** | Identifies custom events for your integration | Sendlane → Integrations → Custom Integration |

<Steps>
  <Step title="Generate API Access Token">
    In Sendlane, go to **Settings → API** and generate a new API token. Copy the token — you'll need it in the next step.
  </Step>

  <Step title="Create Custom Integration">
    In Sendlane, go to **Integrations → Custom Integration** and create a new integration. Copy the **Integration Token** provided.
  </Step>

  <Step title="Configure in Upstack">
    In the Upstack dashboard, go to **Destinations → Add Destination → Sendlane** and paste both credentials.
  </Step>
</Steps>

## Event Mapping

Upstack forwards the following events to Sendlane as custom events:

| Upstack Event                   | Sendlane Event                                 | Key Properties                                                | Use Case                      |
| ------------------------------- | ---------------------------------------------- | ------------------------------------------------------------- | ----------------------------- |
| `ViewContent`                   | `product-viewed-upstackified`                  | `product_id`, `product_name`, `product_img_url`, `variant_id` | Browse abandonment flows      |
| `AddToCart`                     | `added-to-cart-upstackified`                   | `line_items`, `subtotal`, `total`, `currency`                 | Abandoned cart flows          |
| `InitiateCheckout`              | `checkout-started-upstackified`                | `checkout_id`, `line_items`, `subtotal`, `total`, `currency`  | Checkout abandonment flows    |
| `Purchase`                      | `order-placed-upstackified`                    | `order_id`, `line_items`, `total`, `currency`, `discounts`    | Post-purchase flows, win-back |
| `SubscriptionRecurringPurchase` | `subscription-recurring-purchase-upstackified` | `order_id`, `line_items`, `total`, `currency`                 | Subscription renewal flows    |

Each event includes line item details such as `product_id`, `variant_id`, `sku`, `product_name`, `quantity`, `item_price`, `product_img_url`, and `product_url`.

## Best Practices

<Tip>
  **Build abandonment automations on Upstack events.** Create Sendlane automations triggered by the `-upstackified` events (e.g., `added-to-cart-upstackified`) to capture visitors that your standard tracking misses.
</Tip>

<Tip>
  **Use cross-flow exclusions.** If you have both standard Sendlane automations and Upstack-powered automations, add exclusion filters to prevent the same customer from receiving duplicate messages.
</Tip>

<Warning>
  **Disable overlapping integrations.** If you previously used another attribution tool that sends similar events to Sendlane, disable those integrations before enabling Upstack to avoid duplicate events and messages.
</Warning>

## FAQ

<AccordionGroup>
  <Accordion title="How is this different from Sendlane's native Shopify integration?">
    Sendlane's native Shopify integration only sees 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 Sendlane. This lets your abandoned cart and browse abandonment workflows fire for many more visitors.
  </Accordion>

  <Accordion title="What happens if a contact doesn't exist in Sendlane?">
    Upstack only sends events for contacts that already exist in Sendlane. If the visitor's email isn't found in your Sendlane account, the event is skipped. This keeps your Sendlane account clean and ensures events only target real subscribers.
  </Accordion>

  <Accordion title="Will I get duplicate events if I keep Sendlane's native Shopify integration?">
    Possibly. If both Upstack and Sendlane's native integration track the same event types, Sendlane may record both. The recommended approach is to disable the corresponding events in Sendlane's native integration for any event types Upstack is configured to send.
  </Accordion>

  <Accordion title="What permissions does the Sendlane API token need?">
    The Sendlane API token must have permission to read contacts and send custom events. Use a token with the minimum scope required — Upstack does not need account management or billing permissions.
  </Accordion>

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

## Troubleshooting

<AccordionGroup>
  <Accordion title="Events not appearing in Sendlane">
    If events are showing in the Upstack Live Event Stream but not arriving in Sendlane:

    **Steps to fix:**

    1. Confirm the Sendlane destination shows **Active** (green) in the Upstack dashboard
    2. Verify your API Access Token is valid and has not expired
    3. Check that the contact exists in Sendlane — events are only sent for existing contacts
    4. Verify the Integration Token matches the custom integration you created in Sendlane
    5. If the destination status is red, disconnect and reconnect with fresh credentials
  </Accordion>

  <Accordion title="Custom events not triggering automations">
    If events are arriving in Sendlane but not triggering your automations:

    **Steps to fix:**

    1. Verify your automation is set to trigger on the correct event name (e.g., `added-to-cart-upstackified`, not `Added to Cart`)
    2. Check that the automation is active and not paused
    3. Ensure the contact meets any segment or filter conditions on the automation
    4. Review the contact's activity feed to confirm the event was received
  </Accordion>
</AccordionGroup>

<Note>
  For additional troubleshooting beyond Sendlane-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">
    Similar email/SMS marketing integration for Klaviyo users.
  </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>
