Mailing List Entries

Use the mailingListEntry webhooks to collect abandoned cart information and send remarketing messages.

When a mailingListEntry.updated, mailingListEntry.abandoned, or mailingListEntry.removed event is triggered, FastSpring sends a webhook payload containing the customer's email address and any associated order details.

  • mailingListEntry.updated fires when a customer adds their email to your mailing list, or when the mailing list status changes (subscribed, unsubscribed, or abandoned).
  • mailingListEntry.abandoned fires 30 minutes after the most recent activity. This applies if a customer entered their email, but did not complete their purchase.
  • mailingListEntry.removed fires when a customer's email is removed from the mailing list. This may happen when a customer unsubscribes.

This page provides:

  • A full sample payload showing a populated mailingListEntry.updated, mailingListEntry.abandoned, and mailingListEntry.removed webhook
  • A detailed table listing every payload property, including name, type, and description
  • Notes on when this webhook is triggered

Webhook payload examples

mailingListEntry.updated

When a mailingListEntry.updated event is triggered, the webhook sends the following JSON payload:

{
    "id": "208cc47000a1c0b04991a742b151f7f84e04baee6ffbde7ecabd2911aee1d4ad",
    "list": "subscribed",
    "updated": 1751561132926,
    "reason": "subscribed",
    "order": {
        "reference": "ABC1234567-8910-11121D",
        "id": "abCdE1FGH2Hij3KLMnOpqR",
        "order": "abCdE1FGH2Hij3KLMnOpqR",
        "referrer": "https://mystore.test.onfastspring.com/cloud-storage",
        "session": "LDN5SX4KBZCI2:-WSh0LWdSn-delCV0a0ibw",
        "storefront": "mystore",
        "items": [
            {
                "product": "cloud-storage",
                "path": "cloud-storage",
                "quantity": 1,
                "display": "Cloud Storage Service",
                "summary": "Cloud Storage Service",
                "imageUrl": null,
                "isVirtual": false,
                "isSubscription": false,
                "price": 14.95,
                "variation": "cloud-storage",
                "description": "Cloud Storage Service",
                "sku": "SKU-12345",
                "pricing": {
                    "values": {
                        "USD": 14.95
                    }
                }
            }
        ]
    },
    "email": "[email protected]",
    "firstName": "Jane",
    "lastName": "Doe",
    "country": "US",
    "currency": "USD",
    "language": "en",
    "storefront": "mystore",
    "referrer": "https://mystore.test.onfastspring.com/cloud-storage",
    "optIn": false
}

mailingListEntry.abandoned

When a mailingListEntry.abandoned event is triggered, the webhook sends the following JSON payload:

{
    "id": "208cc47000a1c0b04991a742b151f7f84e04baee6ffbde7ecabd2911aee1d4ad",
    "list": "abandoned",
    "updated": 1751561434399,
    "reason": "abandoned",
    "order": {
        "reference": "ABC1234567-8910-11121D",
        "id": "abCdE1FGH2Hij3KLMnOpqR",
        "order": "abCdE1FGH2Hij3KLMnOpqR",
        "referrer": "https://app.fastspring.com/",
        "origin": "https://app.fastspring.com/2/product/home.xml?mRef=Product:XEBDgN...",
        "storefront": "mystore/popup-defaultB2B",
        "items": [
            {
                "product": "cloud-storage",
                "path": "cloud-storage",
                "quantity": 1,
                "display": "Cloud Storage Service",
                "summary": "Cloud Storage Service",
                "imageUrl": null,
                "isVirtual": false,
                "isSubscription": false,
                "price": 14.95,
                "variation": "cloud-storage",
                "description": "Cloud Storage Service",
                "sku": "SKU-12345",
                "pricing": {
                    "values": {
                        "USD": 14.95
                    }
                }
            }
        ]
    },
    "email": "[email protected]",
    "firstName": "Jane",
    "lastName": "Doe",
    "country": "US",
    "currency": "USD",
    "language": "en",
    "storefront": "mystore/popup-defaultB2B",
    "referrer": "https://app.fastspring.com/",
    "optIn": true
}

mailingListEntry.removed

When a mailingListEntry.removed event is triggered, the webhook sends the following JSON payload:

{
    "id": "208cc47000a1c0b04991a742b151f7f84e04baee6ffbde7ecabd2911aee1d4ad",
    "list": "unsubscribed",
    "updated": 1751561113784,
    "email": "[email protected]",
    "firstName": "Jane",
    "lastName": "Doe",
    "country": "US",
}

Navigate this webhook

The mailingListEntry.updated, mailingListEntry.abandoned, and mailingListEntry.removed webhook payloads all share the same structure, with minor differences depending on the event type. Use the cards below to jump to a specific section of the property reference.

Payload properties

All fields below are included in the mailingListEntry.updated, mailingListEntry.abandoned, or mailingListEntry.removed webhook payloads. Fields are grouped into categories for easier navigation.

NameTypeDescription
Event Fields
idstringUnique ID of this mailingListEntry event
liststringList category: subscribed, unsubscribed, or abandoned
updatedintegerTimestamp in milliseconds when this event was generated
reasonstringReason for the update: subscribed, unsubscribed, or abandoned
emailstringEmail address entered or updated
firstNamestringCustomer first name, when provided
lastNamestringCustomer last name, when provided
countrystringTwo-letter ISO country code
currencystringThree-letter ISO currency code for the cart
languagestringTwo-letter ISO language code used in checkout
storefrontstringStorefront (checkout) identifier used
referrerstringFull URL where the customer came from before checkout or abandonment
optInbooleanWhether the customer opted in to communications via checkout
Order Summary
order.referencestringCustomer-facing order reference (may be null if checkout was incomplete)
order.idstringUnique order ID associated with this event
order.orderstringDuplicate of order.id for backward compatibility
order.referrerstringURL the customer visited immediately before checkout/cart
order.sessionstringCheckout session ID (expires after 24 hours)
order.originstringOriginal storefront URL where checkout was initiated
order.storefrontstringStorefront name/path used for the session
Order Items
order.itemsarrayProducts in the cart when the email was captured
order.items.productstringProduct path or ID
order.items.pathstringDuplicate of order.items.product
order.items.quantityintegerUnits the customer intended to purchase
order.items.displaystringCustomer-facing product name
order.items.summarystringShort product description
order.items.imageUrlstringProduct image URL, when available
order.items.isVirtualbooleanWhether the product is virtual (non-physical)
order.items.isSubscriptionbooleanWhether the product is a subscription
order.items.pricenumberUnit price in transaction currency
order.items.variationstringProduct variation ID, when applicable
order.items.descriptionstringDetailed product description
order.items.skustringStock Keeping Unit (SKU)
order.items.pricingobjectPrice map by currency (e.g., values.USD)

Cart abandonment tracking

When a customer enters their email but doesn't complete checkout, FastSpring marks the cart as abandoned and sends a mailingListEntry.updated webhook.

Customer flow:

  1. Start timer: The moment an item is added to cart, a 30-minute countdown begins.
  2. Abandon event: If the purchase isn't completed within 30 minutes, the cart is flagged as abandoned.
  3. Webhook dispatch: Within 15 minutes of abandonment, FastSpring sends:
    • Event: mailingListEntry.updated
    • list: abandoned
    • reason: abandoned

The webhook's items array contains one object per abandoned product, each with:

  • product: Product path or ID
  • quantity: Units selected
  • display: Customer-facing product name
  • summary: Short product description
  • imageUrl: URL of the product's icon image

Customer mailing list opt-in (subscribed)

When checking out, customers can select a checkbox to opt-in to future emails:

  1. When a customer completes a purchase with a new email address, FastSpring sends their email in the mailingListEntry.updated webhook.
  2. If the customer opted in to future emails, FastSpring marks the list and reason properties as subscribed.

This fires once per unique email; repeat opt-ins with the same email address are ignored.

Customer mailing list opt-out (unsubscribed)

If a subscribed customer opts out of the mailing list, FastSpring sends two webhook events in the following order:

  1. mailingListEntry.removed: Shows the list property as subscribed. FastSpring will remove the email address from the mailing list.
  2. mailingListEntry.updated: Shows the list and the reason properties as unsubscribed.

Note: For third-party remarketing services, see Extensions. These services help you receive webhook data, parse the information, and send remarketing messages to consumers with abandoned carts.