← Back to Events

Return Initiated

Also known as: Return Requested

OperationseventE-commerce: Returns, Refunds & Customer SupportE-commerce

Return Initiated fires when a customer successfully submits a return request against a completed order through the self-service returns portal (Shopify, Salesforce Commerce Cloud, Loop, Narvar), carrying the order reference, the returned line items, the stated reason, the return method and the requested resolution (refund, exchange or store credit). It is the authoritative numerator input for return rate and the leading signal of revenue at risk, reported by initiation date well before the downstream Refund Issued event confirms the financial reversal.

Event Serialization

always

Business Use Case

1️⃣ The Customer Service operations lead monitors daily Return Initiated volume by Return Method and staffs the returns desk and carrier-pickup capacity when initiations spike above normal daily volumes. 2️⃣ The Merchandising and product quality team reviews weekly Return Initiated by Return Reason and Item ID (SKU) to flag SKUs with high size_too_small or not_as_described shares, then corrects size guides, product copy or vendor quality issues. 3️⃣ The Finance controller uses initiation-date returned merchandise value to size the returns reserve and revenue at risk ahead of the Refund Issued event, adjusting net revenue forecasts at month close. 4️⃣ The E-commerce optimisation team compares exchange, store credit and refund shares of Resolution Type by Customer Type and tests portal messaging that steers eligible refund requests toward exchange or store credit to retain revenue.

Business Criticality

High

Journey / Navigation Area

Monetization

Owning Function

Customer Service

Calculation Notes

1️⃣ Fire only on the server-confirmed success state of the returns portal, after the platform has issued the RMA and returned a return_id; never on the submit button click or on a validation failure, otherwise abandoned and rejected attempts inflate the return-rate numerator. 2️⃣ Serialization is 'always': every distinct return request emits one event, so a customer raising two requests against the same order emits two events with different return_id values. Deduplicate on return_id and suppress the push on confirmation-page reloads, back-navigation and portal status refreshes. 3️⃣ Because the GA4 event is the shared submit_form, always send form_type = 'return_request' and filter every downstream report on it; without the filter, contact, newsletter and warranty form submissions leak into return counts. 4️⃣ Required parameters are form_type, return_id, transaction_id, items, value and currency, since they carry the join to the purchase event and to Refund Issued. The coded fields return_reason, return_method and resolution_type must come from the controlled lists behind the Return Reason, Return Method and Refund Type dimensions, and item-level return_reason must be populated per line when the reason differs between items. 5️⃣ Report value as the merchandise value of the returned lines only, at the price paid and excluding shipping and tax, and populate items with only the lines being returned; for a partial return, sending the full order value or full order line list overstates revenue at risk and breaks unit return rate. 6️⃣ Consent and PII: the payload is limited to pseudonymous order and RMA identifiers and coded values, consistent with pii_flag false. Never push the customer's free-text comment, name, email, phone or address into the data layer, and honour the analytics consent state before the push; where consent is denied, the returns platform record remains the system of record for operational handling. 7️⃣ Common instrumentation mistakes: reusing the purchase transaction_id as return_id, emitting free-form reason strings that fragment the Return Reason dimension, omitting item_category so category-level return rates cannot be produced, and sending events from the client only, which loses portal-originated requests when the confirmation page is blocked by consent, ad blockers or a closed tab before the tag fires; reconcile daily counts against RMAs created through the self-service returns portal only.

Platform Events

PlatformEvent
Google Analytics 4submit_form
Adobeform_submit

Data Mappings

W3 Data Layer
{
  "event": [
    {
      "eventInfo": {
        "eventName": "submit_form",
        "eventAction": "return_request",
        "type": "form_submit",
        "timeStamp": "2026-09-18T14:32:05.000Z"
      },
      "category": {
        "primaryCategory": "returns"
      },
      "attributes": {
        "formType": "return_request",
        "returnID": "RMA-100482231",
        "transactionID": "ORD-5581904",
        "returnReason": "size_too_small",
        "returnMethod": "mail_prepaid_label",
        "resolutionType": "exchange",
        "value": 89.98,
        "currency": "USD"
      }
    }
  ],
  "transaction": {
    "transactionID": "ORD-5581904",
    "item": [
      {
        "productInfo": {
          "productID": "SKU-44821-M",
          "productName": "Merino Crew Sweater"
        },
        "category": {
          "primaryCategory": "Apparel/Knitwear"
        },
        "quantity": 1,
        "price": {
          "basePrice": 59.99,
          "currency": "USD"
        },
        "attributes": {
          "returnReason": "size_too_small"
        }
      },
      {
        "productInfo": {
          "productID": "SKU-30917-32",
          "productName": "Slim Chino Trouser"
        },
        "category": {
          "primaryCategory": "Apparel/Trousers"
        },
        "quantity": 1,
        "price": {
          "basePrice": 29.99,
          "currency": "USD"
        },
        "attributes": {
          "returnReason": "not_as_described"
        }
      }
    ]
  }
}
GA4 Data Layer
{
  "event": "submit_form",
  "form_type": "return_request",
  "return_id": "RMA-100482231",
  "return_reason": "size_too_small",
  "return_method": "mail_prepaid_label",
  "resolution_type": "exchange",
  "ecommerce": {
    "transaction_id": "ORD-5581904",
    "value": 89.98,
    "currency": "USD",
    "items": [
      {
        "item_id": "SKU-44821-M",
        "item_name": "Merino Crew Sweater",
        "item_category": "Apparel",
        "item_category2": "Knitwear",
        "price": 59.99,
        "quantity": 1,
        "return_reason": "size_too_small"
      },
      {
        "item_id": "SKU-30917-32",
        "item_name": "Slim Chino Trouser",
        "item_category": "Apparel",
        "item_category2": "Trousers",
        "price": 29.99,
        "quantity": 1,
        "return_reason": "not_as_described"
      }
    ]
  }
}
Adobe Client Data Layer
{
  "event": "form_submit",
  "eventInfo": {
    "formType": "return_request"
  },
  "form": {
    "formName": "returns_portal",
    "formType": "return_request"
  },
  "return": {
    "returnID": "RMA-100482231",
    "transactionID": "ORD-5581904",
    "returnReason": "size_too_small",
    "returnMethod": "mail_prepaid_label",
    "resolutionType": "exchange",
    "value": 89.98,
    "currency": "USD"
  },
  "product": [
    {
      "productID": "SKU-44821-M",
      "productName": "Merino Crew Sweater",
      "category": "Apparel/Knitwear",
      "price": 59.99,
      "quantity": 1,
      "returnReason": "size_too_small"
    },
    {
      "productID": "SKU-30917-32",
      "productName": "Slim Chino Trouser",
      "category": "Apparel/Trousers",
      "price": 29.99,
      "quantity": 1,
      "returnReason": "not_as_described"
    }
  ]
}
XDM Mapping
{
  "eventType": "web.formFilledOut",
  "timestamp": "2026-09-18T14:32:05.000Z",
  "web": {
    "webInteraction": {
      "name": "form_submit:return_request",
      "type": "other",
      "linkClicks": {
        "value": 1
      }
    }
  },
  "commerce": {
    "order": {
      "purchaseID": "ORD-5581904",
      "currencyCode": "USD"
    }
  },
  "productListItems": [
    {
      "SKU": "SKU-44821-M",
      "name": "Merino Crew Sweater",
      "productCategories": [
        {
          "categoryID": "Apparel/Knitwear"
        }
      ],
      "priceTotal": 59.99,
      "quantity": 1
    },
    {
      "SKU": "SKU-30917-32",
      "name": "Slim Chino Trouser",
      "productCategories": [
        {
          "categoryID": "Apparel/Trousers"
        }
      ],
      "priceTotal": 29.99,
      "quantity": 1
    }
  ],
  "_experience": {
    "analytics": {
      "customDimensions": {
        "eVars": {
          "eVar30": "return_request",
          "eVar31": "RMA-100482231",
          "eVar32": "size_too_small",
          "eVar33": "mail_prepaid_label",
          "eVar34": "exchange"
        }
      },
      "event1to100": {
        "event30": {
          "value": 1
        },
        "event31": {
          "value": 89.98
        }
      }
    }
  },
  "_tenant": {
    "returns": {
      "formType": "return_request",
      "returnID": "RMA-100482231",
      "transactionID": "ORD-5581904",
      "returnReason": "size_too_small",
      "returnMethod": "mail_prepaid_label",
      "resolutionType": "exchange",
      "returnValue": 89.98
    }
  }
}

Source Data

Digital Analytics (GA4) + Returns Portal (Shopify / Loop / Narvar)

Dependencies

Prerequisite: List the dependencies required for this Event

Report Attributes

Return Reason Return Method Resolution Type Item Category Item ID (SKU) Order Date Cohort Days Since Purchase Device Category Customer Type (New vs Returning)

Segment Eligibility

true

Governance

Data SensitivityInternal

Dimensions

Derived Entities

Governance & Metadata

Created bydevyendarm
Created on9/18/2026
Last modified bydevyendarm
Last modified on9/20/2026
Version1.0.0
Validation stateqa passed
StatusPUBLISHED

GitHub

View related Pull Requestcatalog/events/return-initiated.yml

Community Discussion