---
schema_version: "1"
id: 4ff3fa68b2cf33e99e9491549eecf18c84963917b0e390929696d7a660dfb722
title: Exchange Data Between Salesforce and Embedded MFE Widgets (Developer Preview)
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/release-notes/262-0-0/rn_mfe_data_exchange.md
canonical_url: https://help.salesforce.com/s/articleView?id=release-notes.rn_mfe_data_exchange.htm&release=262.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 395c0d8e8c71dfc20489c1efec37e50fc461c1f7ecaefdb81dfc1c8fe5686eac
description: Give embedded widgets real-time access to record context and org data, and receive user-interaction events back, without custom integration code or managing authentication tokens.
products:
  - Cross Cloud
release: "262"
---
# Exchange Data Between Salesforce and Embedded MFE Widgets (Developer Preview)

Give embedded widgets real-time access to record context and org data, and receive user-interaction events back, without custom integration code or managing authentication tokens.

**Where:** This change applies to Lightning Experience, Experience Builder sites, and Experience Cloud LWR sites in all editions.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-release-notes-salesforce_release_notes-262-0-0-production-enus/e945111b-3e0a-4011-accc-d5949363bfcc/images/icon_note.png)

Note The Dev Channel provides access to features that are not generally available and have been designated as pilot, beta, limited release, or developer preview. Their use is at the Customer's sole discretion and is subject to the Beta Services Terms at [Agreements - Salesforce.com](https://www.salesforce.com/company/legal/).

**How:** Push data from the host to the widget:

- In your wrapper LWC, call `shell.updateData({ recordId, locale })`. Payloads sent before the iframe handshake completes are queued and delivered automatically. Payloads are sent via `postMessage` which internally uses `structuredClone`, so objects like DOM Elements and Functions aren't allowed.
- Payloads must be JSON-serializable. Non-JSON types like `Date`, `Map`, `Set`, and `Blob` aren't supported. For example, `Date` objects are converted to ISO strings. Functions, DOM nodes, and class instances are dropped. For complex values, use `JSON.stringify()` before passing and parse them on the widget side.

Receive events from the widget:

- Listen on the shell element: `shell.addEventListener('event-name', handler)`. The MFE Bridge re-fires widget events as `CustomEvent`s on the host element.
- Event names on the shell are kebab-case (for example, `dealer-selected`). Because LWC templates reject hyphens in `on…` handler names, subscribe via `addEventListener` — not template event bindings.