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",
}

Payload properties

The payload properties table outlines each property in the mailingListEntry.subscribed, mailingListEntry.unsubscribed, and mailingListEntry.removed event JSON payload, specifying their name, data type, and description.

Name Type Description
id string Unique ID of this mailingListEntry event.
list string Updated list category: subscribed, unsubscribed, or abandoned.
updated integer Timestamp (in milliseconds) when this event was generated.
reason string Reason for the update: subscribed, unsubscribed, or abandoned.
order.reference string Customer-facing order reference number, or null if checkout was incomplete.
order.id string Unique order ID associated with this event.
order.order string Duplicate of order.id for backward compatibility.
order.referrer string URL of the page where the customer last came from before checkout or cart abandonment.
order.session string Session ID of the order at checkout. This expires after 24 hours.
order.origin string Original storefront (checkout) URL where checkout was initiated.
order.storefront string Name of the storefront (checkout) used.
order.items array Array of products that were in the cart when the customer entered their email. This array contains one object per product.
order.items.product string Product path or ID.
order.items.path string Same as product.
order.items.quantity integer Number of units the customer intended to purchase.
order.items.display string Customer-facing product name.
order.items.summary string Short description of the product.
order.items.imageUrl string URL of the product image, if any.
order.items.isVirtual boolean Indicates whether the product is virtual (non-physical). Always false for physical products.
order.items.isSubscription boolean Indicates whether the product is a subscription. Returns true if the product is a subscription.
order.items.price number Unit price of the product in transaction currency.
order.items.variation string Product variation ID, if applicable.
order.items.description string Detailed product description.
order.items.sku string Stock Keeping Unit (SKU) for inventory tracking.
order.items.pricing object Product price. May contain one string pairing for each currency.
email string Email address entered or updated.
firstName string Customer's first name, if provided.
lastName string Customer's last name, if provided.
country string Two-letter ISO country code of the customer.
currency string Three-letter ISO currency code for the cart.
language string Two-letter ISO language code used in checkout.
storefront string Storefront (checkout) identifier used.
referrer string Full URL of the page where the customer completed checkout or abandoned the cart.
optIn boolean Indicates whether the customer opted in to marketing or communications via the FastSpring checkout. Returns true if the customer opted in to marketing communications.

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.