<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet title="XSL_formatting" type="text/xsl" href="https://developer.salesforce.com/blogs/wp-content/themes/dfctheme/includes/feed_styles.xsl" ?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:podcast="https://podcastindex.org/namespace/1.0"
xmlns:rawvoice="https://blubrry.com/developer/rawvoice-rss/"
xmlns:media="http://search.yahoo.com/mrss/"
	xmlns:dscblog="https://developer.salesforce.com/blog/dscblog/"
>


<channel>
	<title>Salesforce Developers Blog</title>
	<atom:link href="https://developer.salesforce.com/blogs/feed" rel="self" type="application/rss+xml" />
	<link>https://developer.salesforce.com/blogs</link>
	<description>Elevating developer skills and connecting with the Salesforce Developers community</description>
	<lastBuildDate>Sat, 11 Apr 2026 01:39:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<atom:link rel="hub" href="https://pubsubhubbub.appspot.com/" />
	<itunes:author>Salesforce Developers Blog</itunes:author>
	<itunes:explicit>false</itunes:explicit>
	<itunes:image href="https://developer.salesforce.com/blogs/wp-content/plugins/powerpress/itunes_default.jpg" />
	<itunes:owner>
		<itunes:name>Salesforce Developers Blog</itunes:name>
	</itunes:owner>
	<podcast:medium>podcast</podcast:medium>
	<image>
		<title>Salesforce Developers Blog</title>
		<url>https://developer.salesforce.com/blogs/wp-content/plugins/powerpress/rss_default.jpg</url>
		<link>https://developer.salesforce.com/blogs</link>
	</image>
	<podcast:podping usesPodping="true" />
<site xmlns="com-wordpress:feed-additions:1">244780846</site>	<item>
		<title>Introducing Web Console (Beta): Code Where You Build on Salesforce</title>
		<link>https://developer.salesforce.com/blogs/2026/04/introducing-web-console-beta-code-where-you-build-on-salesforce</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/introducing-web-console-beta-code-where-you-build-on-salesforce#respond</comments>
		<pubDate>Thu, 09 Apr 2026 14:00:12 +0000</pubDate>
		<dc:creator><![CDATA[Raj Sensharma]]></dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Apex]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Salesforce Events]]></category>
		<category><![CDATA[Salesforce Releases]]></category>
		<category><![CDATA[Anonymous Apex]]></category>
		<category><![CDATA[Apex Debugging]]></category>
		<category><![CDATA[browser-based ide]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[developer tooling]]></category>
		<category><![CDATA[Metadata Navigation]]></category>
		<category><![CDATA[Salesforce Beta]]></category>
		<category><![CDATA[Salesforce Web Console]]></category>
		<category><![CDATA[SOQL]]></category>
		<category><![CDATA[TDX 2026]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205976</guid>
		<description><![CDATA[<p>A modern, browser-based IDE embedded in Salesforce workflows, built for faster debugging, quicker fixes, and less context switching.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/introducing-web-console-beta-code-where-you-build-on-salesforce">Introducing Web Console (Beta): Code Where You Build on Salesforce</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">Starting </span><b>April 14, 2026</b><span style="font-weight: 400">, we’re opening the beta for </span><b>Web Console</b><span style="font-weight: 400">, a modern, browser-based IDE embedded directly into Salesforce workflows. It is designed to help developers work faster inside the platform they already know, without switching tools just to inspect code, run queries, debug an issue, or make a quick fix. The beta release is focused on helping developers investigate issues, make targeted changes, and validate those changes in one connected experience. </span></p>
<p><span style="font-weight: 400">At its core, Web Console is built around a simple idea: </span><b>developers should not have to leave Salesforce to build Salesforce apps</b><span style="font-weight: 400">. Web Console brings the IDE into the flow of work, so you can launch from Salesforce surfaces, stay in context, and move from investigation to fix with less setup and fewer interruptions. That idea comes down to one phrase: </span><b>code where you build</b><span style="font-weight: 400">. </span></p>
<h2><span style="font-weight: 400">What is Web Console?</span></h2>
<p><span style="font-weight: 400">As a browser-based IDE that lives directly inside Salesforce, Web Console is designed to launch from the places where developers are already working, such as Setup and other context-rich entry points. As a result, you can inspect, debug, edit, and validate without breaking your flow. Rather than opening a separate tool and manually finding the right file or log, you can start from the issue itself and work forward from there. </span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205982" >
			    <img fetchpriority="high" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260407143530/A-screenshot-of-Web-Console-beta-showing-the-Explorer-on-the-left-and-code-on-the-right-e1775594448683.png?w=1000" class="postimages" width="1000" height="591" alt="A screenshot of Web Console (beta) showing the Explorer on the left and code on the right" />
			  </span>
			</p>
<p><span style="font-weight: 400">This is more than a new editor in a browser tab. It is a different way of working. Web Console brings together modern editing with the features and capabilities developers need in the moment, including debug logs, </span><a href="https://developer.salesforce.com/docs/platform/webconsole/guide/query-builder.html"><span style="font-weight: 400">SOQL execution</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/webconsole/guide/retrieve-query-plans.html"><span style="font-weight: 400">Query Plan Inspector</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/webconsole/guide/exec-anon-apex.html"><span style="font-weight: 400">Anonymous Apex</span></a><span style="font-weight: 400">, quick Apex edits, and org-aware navigation. The result is a more direct path from “</span><i><span style="font-weight: 400">something broke</span></i><span style="font-weight: 400">” to “</span><i><span style="font-weight: 400">I found it, fixed it, and validated it.</span></i><span style="font-weight: 400">”</span></p>
<h2><span style="font-weight: 400">Why Web Console feels different in practice</span></h2>
<p><span style="font-weight: 400">The value of Web Console is not just feature access. It is usability in context.</span></p>
<p><span style="font-weight: 400">When something fails in production or a sandbox, developers are usually not starting with a neat project plan. They are responding to an event, an error, or an unexpected behavior. Legacy diagnostic tools were built for this kind of reactive investigation because they keep runtime information close at hand and minimize setup. By contrast, more project-oriented IDE workflows can be powerful for sustained development, but they often introduce more state, more panes, and more cognitive overhead for short investigative tasks.</span></p>
<p><span style="font-weight: 400">Web Console is designed to bridge that gap. It keeps the investigation close to where the issue surfaced, while giving developers a more modern, browser-based editing and debugging experience. That means less hunting across windows, less context switching between tools, and a faster path to understanding what happened and what to do next. </span></p>
<p><span style="font-weight: 400">That is a big part of why this beta matters. It is not about replacing a legacy tool feature-by-feature. It is about making common developer workflows inside Salesforce faster, clearer, and more connected to the work already happening in the org.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205983" >
			    <img decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260407143532/A-screenshot-showing-Apex-jobs-with-one-Scheduled-Apex-job-queued-e1775594198894.png?w=1000" class="postimages" width="1000" height="353" alt="A screenshot showing Apex jobs with one Scheduled Apex job queued" />
			  </span>
			</p>
<h2><span style="font-weight: 400">What’s in the beta: debug logs, Anonymous Apex, SOQL, and quick edits</span></h2>
<p><span style="font-weight: 400">The beta is intentionally focused on the workflows developers and admins use most when they need to investigate and fix something quickly. These include </span><b>debug log viewing</b><span style="font-weight: 400">, </span><b>SOQL execution</b><span style="font-weight: 400">, </span><b>Query Plan inspection</b><span style="font-weight: 400">, </span><b>Anonymous Apex execution</b><span style="font-weight: 400">, and </span><b>quick, in-context Apex edits</b><span style="font-weight: 400">. Web Console is also designed to support metadata navigation through an org-aware browser experience, so developers can stay grounded in the org while they work. </span></p>
<p><span style="font-weight: 400">For example, in the beta you can:</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">inspect runtime behavior with a dedicated logs experience,</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">execute SOQL and understand query performance with Query Plan Inspector,</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">run Anonymous Apex without leaving the browser,</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">open Apex from relevant Salesforce surfaces and make focused edits in context,</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">navigate metadata without switching out to a separate development environment.</span></li>
</ul>
<p><span style="font-weight: 400">This is not a list of random features. It is a cohesive set of capabilities designed for the high-value moments where developers tend to lose time today: understanding a failure, tracing it to source, checking query behavior, making a targeted fix, and validating the outcome. </span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205981" >
			    <img decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260407143526/A-screenshot-of-Web-Console-beta-showing-a-SOQL-query-and-its-results-e1775594486176.png?w=1000" class="postimages" width="1000" height="595" alt="A screenshot of Web Console (beta) showing a SOQL query and its results" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Connected workflow example: Debugging an Apex job failure</span></h2>
<p><span style="font-weight: 400">Apex job failures are a good example of where Web Console can make an immediate difference. A developer can begin in the Apex Jobs page, where a failed or long-running Apex job is already visible. From there, they can open the related Apex class in Web Console, enable logging, re-run the scenario, inspect the execution path, jump from the stack trace to the problematic line of code, make the fix, run tests, and validate that the job now completes successfully. They can do all of that without leaving Salesforce or bouncing between disconnected tools.</span></p>
<p><span style="font-weight: 400">This streamlined flow is more efficient because it mirrors how real troubleshooting actually happens. The work does not begin in a file tree. It begins with a problem. Web Console is designed so the IDE meets the developer at that point of failure, then stays with them through diagnosis, code change, and validation.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205984" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260407143534/image4-e1775594179302.png?w=1000" class="postimages" width="1000" height="288" alt="An ordered workflow of five steps: Start in Apex Jobs, Open the class in Web Console, Inspect logs and re-run, Fix the issue, and Run tests and validate" />
			  </span>
			</p>
<p><span style="font-weight: 400">This is one of the clearest ways Web Console improves usability. Instead of forcing the developer to reconstruct the situation across separate tools, it keeps runtime evidence, source code, and validation steps close together, shortening the distance between “What just happened?” and “Did my fix resolve the issue?”</span></p>
<h2><span style="font-weight: 400">Production versus non-production: Web Console guardrails</span></h2>
<p><span style="font-weight: 400">Web Console is built with the realities of Salesforce development in mind. In </span><b>production orgs</b><span style="font-weight: 400">, Apex editing is </span><b>read-only</b><span style="font-weight: 400">, letting developers inspect and understand code safely without any risk to live orgs. In </span><b>sandboxes and other non-production environments</b><span style="font-weight: 400">, developers can make inline edits and save changes as part of a faster path-to-fix workflow.</span></p>
<p><span style="font-weight: 400">That balance is important. A modern experience should make developers faster, but not by weakening platform guardrails. Web Console keeps the guardrails intact while still streamlining inspection, debugging, and validation.</span></p>
<h2><span style="font-weight: 400">How to enable Web Console (beta)</span></h2>
<p><span style="font-weight: 400">During the open beta starting April 14, 2026, Web Console will be available across Salesforce orgs and editions through admin opt-in. It will be </span><b>off by default</b><span style="font-weight: 400"> until an admin enables it from the </span><b>Web Console Setup page</b><span style="font-weight: 400">.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205980" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260407143523/A-screenshot-of-the-Web-Console-Beta-Settings-UI-showing-the-feature-as-Active-e1775594503905.png?w=1000" class="postimages" width="1000" height="463" alt="A screenshot of the Web Console (Beta) Settings UI showing the feature as Active" />
			  </span>
			</p>
<p><span style="font-weight: 400">To learn how to enable it in your org and get started, see the </span><a href="https://developer.salesforce.com/docs/platform/webconsole/overview"><span style="font-weight: 400">Web Console (Beta) documentation</span></a><span style="font-weight: 400">.</span></p>
<h2><span style="font-weight: 400">Why this beta is focused</span></h2>
<p><span style="font-weight: 400">The beta is intentionally scoped around a set of workflows developers will recognize immediately. It delivers value now, while laying the foundation for a broader, unified development experience over time. The near-term emphasis is on embedded workflows and the high-frequency tasks that are often a source of friction for developers today: investigating failures, tracing behavior, checking queries, making quick edits, and validating fixes.</span></p>
<h2><span style="font-weight: 400">Join us at TDX</span></h2>
<p><span style="font-weight: 400">Want to see Web Console in action? If you are attending TDX, </span><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770167528654001fowJ"><span style="font-weight: 400">register</span></a><span style="font-weight: 400"> to </span><b>join us in person</b><span style="font-weight: 400"> to see how Web Console helps developers debug, edit, validate, and move faster — right inside Salesforce — in our session:</span></p>
<p><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770167528654001fowJ"><b>Build on the Salesforce Platform with Web Console</b><b><br />
</b></a><span style="font-weight: 400">Build, edit, and validate from your browser with Web Console, the unified Salesforce web environment for Apex, metadata, and in-context editing.</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Master the core capabilities and productivity features of Web Console.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Transition your daily development workflows from the legacy Developer Console to the modern Web Console.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Perform metadata management and Apex development directly within the unified web interface.</span></li>
</ul>
<p><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770167528654001fowJ"><b>Add to your TDX agenda.</b></a></p>
<h2><b>About the author</b></h2>
<p><b>Raj Sensharma</b><span style="font-weight: 400"> is a Director of Product Management at Salesforce with over 20 years of experience delivering transformative SaaS, platform, and AI-powered solutions. He’s passionate about building AI-native products that go beyond automation to enable truly agentic experiences. Raj holds an MBA and a Master’s degree in Computer Science from the University of Central Florida. Follow him on </span><a href="https://www.linkedin.com/in/rajsensharma/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/introducing-web-console-beta-code-where-you-build-on-salesforce">Introducing Web Console (Beta): Code Where You Build on Salesforce</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/introducing-web-console-beta-code-where-you-build-on-salesforce/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205976</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260407150805/Generic-C-2-e1775596111931.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260407150805/Generic-C-2-e1775596111931.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Salesforce B2C Default Domains: Instance eCDN &#038; SSL for Devs</title>
		<link>https://developer.salesforce.com/blogs/2026/04/salesforce-b2c-default-domains-instance-ecdn-ssl-for-devs</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/salesforce-b2c-default-domains-instance-ecdn-ssl-for-devs#respond</comments>
		<pubDate>Tue, 07 Apr 2026 14:00:24 +0000</pubDate>
		<dc:creator><![CDATA[Sarah Welker]]></dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Salesforce Releases]]></category>
		<category><![CDATA[Trust, Security, and Accessibility]]></category>
		<category><![CDATA[B2C Commerce]]></category>
		<category><![CDATA[Business Manager]]></category>
		<category><![CDATA[Composable Storefront]]></category>
		<category><![CDATA[Default Domain]]></category>
		<category><![CDATA[developer experience]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[eCDN]]></category>
		<category><![CDATA[ODS]]></category>
		<category><![CDATA[On-Demand Sandboxes]]></category>
		<category><![CDATA[PWA Kit]]></category>
		<category><![CDATA[Salesforce Commerce Cloud]]></category>
		<category><![CDATA[Site Reliability]]></category>
		<category><![CDATA[SSL Certificates]]></category>
		<category><![CDATA[WAF]]></category>
		<category><![CDATA[Web Security]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205958</guid>
		<description><![CDATA[<p>Discover how to streamline your workflow with out-of-the-box hostnames that enable early eCDN testing and production-like validation without the operational overhead.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/salesforce-b2c-default-domains-instance-ecdn-ssl-for-devs">Salesforce B2C Default Domains: Instance eCDN &amp; SSL for Devs</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<div class="video-container"><iframe loading="lazy" title="Default Domain OOTB Deep Shrestha v1" width="500" height="281" src="https://www.youtube.com/embed/2k5ezeX0kQY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p><span style="font-weight: 400">Reference: </span><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_default_domain.htm&amp;language=en_US&amp;type=5"><span style="font-weight: 400">Default Domain Support for B2C Commerce</span></a></p>
<p>For any developer, the road to launching a new feature for a high-traffic, consumer-facing web storefront can be a rocky one. Before a single line of code can be properly tested in a production-like environment, teams often face the operational burdens of manual DNS setup, custom domain registration, certificate management, and the required IT involvement that slows everything down. Setting up a new development or testing environment has traditionally been a process filled with friction, delaying innovation and extending time-to-market.</p>
<p><span style="font-weight: 400">Salesforce Commerce Cloud is removing these obstacles with a powerful new capability: the Default Domain. This out-of-the-box feature provides an instantly available, eCDN-ready hostname for every instance, eliminating the setup headaches that have long frustrated developers. This post breaks down the five most impactful takeaways of this new capability.</span></p>
<h2><span style="font-weight: 400">Takeaway 1: Default Domain support for B2C Commerce</span></h2>
<p><span style="font-weight: 400">The Default Domain is far more than a simple placeholder URL; it&#8217;s an immediately </span><i><span style="font-weight: 400">eCDN-ready</span></i><span style="font-weight: 400"> environment right out of the box, meaning the CDN layer and HTTPS are already configured. This is a critical distinction that transforms how development and testing can be approached.</span></p>
<p><span style="font-weight: 400">Built-in eCDN integration enables developers to test crucial, real-world functionality in a non-production environment that accurately mimics the final production setup. Development teams can now validate </span><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/perf-guide.html"><span style="font-weight: 400">PWA Kit performance</span></a><span style="font-weight: 400">, fine-tune </span><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_analyze_eCDN_traffic.htm&amp;language=en_US&amp;type=5"><span style="font-weight: 400">security rules</span></a><span style="font-weight: 400">, test complex </span><a href="https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-content-cache.html?utm_source=chatgpt.com"><span style="font-weight: 400">caching strategies</span></a><span style="font-weight: 400">, and conduct performance tuning early and often.</span></p>
<p><span style="font-weight: 400">The key benefit is the ability to prevent production issues by discovering them and addressing them earlier in the development cycle. By testing in a truly production-like environment from day one, you mitigate the risk that improper domain or certificate setup will lead to outages or insecure (HTTP) traffic when you go live. For more information, see </span><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_default_domain.htm&amp;language=en_US&amp;type=5"><b>Default Domain Support for B2C Commerce</b></a><span style="font-weight: 400">.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205962" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260406124221/Administration-UI-showing-Embedded-CDN-Settings-e1775500995363.png?w=1000" class="postimages" width="1000" height="499" alt="Administration UI showing Embedded CDN Settings" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Takeaway 2: Security is built in, not bolted on</span></h2>
<p><span style="font-weight: 400">With the Default Domain, security is a built-in feature, not an afterthought. HTTPS is automatically enabled because Salesforce manages the entire SSL/TLS certificate lifecycle. This completely eliminates any manual work for developers related to certificate provisioning, uploading, or renewal.</span></p>
<p><span style="font-weight: 400">Production instances using a Default Domain have a &#8220;secure by default&#8221; posture. To prevent accidental public exposure, production instances are preconfigured with a &#8220;Block All&#8221; firewall rule at the eCDN layer. Development teams must explicitly add &#8220;Allow&#8221; rules for specific sites or paths they want to make accessible, ensuring nothing goes public until it’s truly ready. (Remember: rules are executed </span><b>from top to bottom</b><span style="font-weight: 400">, so any custom &#8220;Allow&#8221; rules must be placed above the default block.)</span></p>
<p><span style="font-weight: 400">Development and Staging instances are also protected by default, requiring user credentials for access to safeguard these lower environments from unwanted public traffic.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205963" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260406124224/Administration-UI-showing-SSLTLS-Settings-e1775501011218.png?w=1000" class="postimages" width="1000" height="498" alt="Administration UI showing SSL/TLS Settings" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Takeaway 3: All of the control, none of the paperwork</span></h2>
<p><span style="font-weight: 400">Contrary to the common misconception that managed domains limit control, with the Default Domain developers have full eCDN configuration access through both the CDN API and the familiar Business Manager UI.</span></p>
<p><span style="font-weight: 400">You retain complete control over customizing and testing the eCDN settings for your Default Domain, including:</span></p>
<ul>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_waf_application.htm&amp;type=5"><span style="font-weight: 400">Web Application Firewall (WAF) rules</span></a></li>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_a_zone.htm&amp;type=5"><span style="font-weight: 400">Speed settings</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/configure-mrt-routing-bm.html"><span style="font-weight: 400">Routing rules</span></a></li>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_create_eCDN_firewall_rule.htm&amp;type=5"><span style="font-weight: 400">Custom rules</span></a><span style="font-weight: 400"> and </span><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_eCDN_create_rate_limiting_rule.htm&amp;type=5"><span style="font-weight: 400">Rate Limits</span></a></li>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_analyze_eCDN_traffic.htm&amp;type=5"><span style="font-weight: 400">Analytics</span></a></li>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_configure_eCDN_page_shield_policy.htm&amp;type=5"><span style="font-weight: 400">PCI settings</span></a></li>
</ul>
<p><span style="font-weight: 400">This allows you to fully customize and validate your eCDN setup for a new project or feature without any risk of affecting the configuration of your production custom domains.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205964" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260406124228/Administration-UI-showing-WAF-Settings-e1775501027407.png?w=1000" class="postimages" width="1000" height="496" alt="Administration UI showing WAF Settings" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Takeaway 4: A complement to, not a replacement for, your custom domain</span></h2>
<p><span style="font-weight: 400">It’s crucial to understand that the Default Domain does not replace or alter the functionality of your existing custom domains (also known as vanity domains), like </span><span style="font-weight: 400">www.TheWidgetStorefront.com</span><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400">The two types of domains can coexist on the same instance. Your custom domain remains the preferred choice for external-facing, branded storefronts that your shoppers interact with. (While the Default Domain can be made publicly accessible if explicitly configured, it is not intended for that purpose.) The configuration of your custom domain is not affected by any changes made to the Default Domain.</span></p>
<p><span style="font-weight: 400">The Default Domain serves a different, but equally important, purpose. Its primary use case is for internal-facing tasks – such as developer testing, load testing, and pre-production reviews – enabled by eCDN functionality in environments where setting up a custom domain is neither practical nor necessary.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205961" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260406124217/Administration-UI-showing-Embedded-CDN-Settings-with-Default-and-Proxy-Zones-e1775500976943.png?w=1000" class="postimages" width="1000" height="493" alt="Administration UI showing Embedded CDN Settings with Default and Proxy Zones" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Takeaway 5: More than a feature, a foundation for the future</span></h2>
<p><span style="font-weight: 400">While its immediate benefits are clear, the Default Domain is also a strategic platform enhancement that paves the way for future innovation. Specifically, Default Domain support is a critical prerequisite for enabling eCDN for </span><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/b2c-developer-sandboxes.html"><span style="font-weight: 400">on-demand sandboxes (ODS)</span></a><span style="font-weight: 400">, which are planned for later this year.</span></p>
<p><span style="font-weight: 400">This connection addresses persistent developer pain points identified through voice-of-the-customer feedback. For teams adopting composable storefronts, the lack of easy eCDN testing in sandboxes has created major friction. Limited local development support for hybrid environments has required teams to create many custom proxies, a cumbersome workaround that slows development cycles and that eCDN-enabled on-demand sandboxes would eliminate.</span></p>
<h2><b>Conclusion</b></h2>
<p><span style="font-weight: 400">As a foundational capability, the Default Domain enables faster deployment, enhanced site security, and more streamlined composable development workflows on Commerce Cloud.</span></p>
<p><span style="font-weight: 400">The Default Domain removes friction from the Commerce Cloud development process by eliminating the operational burden of domain and certificate management. The result is more time to focus on what you do best: building innovative features and exceptional customer experiences.</span></p>
<h2><b>Resources</b></h2>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Documentation:</span> <a href="https://help.salesforce.com/s/articleView?id=cc.b2c_default_domain.htm&amp;language=en_US&amp;type=5"><span style="font-weight: 400">Default Domain Support for B2C Commerce</span></a></li>
<li style="font-weight: 400"><span style="font-weight: 400">Trailhead: </span><a href="https://trailhead.salesforce.com/content/learn/modules/ecdn-b2c-commerce/ecdn-b2c-commerce-explore"><span style="font-weight: 400">Explore eCDN for B2C Commerce</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones.html"><span style="font-weight: 400">CDN Zones</span><span style="font-weight: 400"> &#8211;</span></a><span style="font-weight: 400"> (Applicable to Default Domains)</span>
<ul>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-cipher-suite-types.html"><span style="font-weight: 400">eCDN Supported Cipher Suites</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-logpush.html"><span style="font-weight: 400">eCDN Logpush</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-logpush-log-field.html"><span style="font-weight: 400">eCDN Logpush Log Fields</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html"><span style="font-weight: 400">eCDN PCI 4.0 Compliance Tools</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-wafv2.html"><span style="font-weight: 400">eCDN WAFv2</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-custom-rules.html"><span style="font-weight: 400">eCDN Custom Rules</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-rate-limiting-rules.html"><span style="font-weight: 400">eCDN Rate Limiting Rules</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-cache-rules.html"><span style="font-weight: 400">eCDN Cache Rules</span></a></li>
</ul>
</li>
<li style="font-weight: 400"><span style="font-weight: 400">GitHub: </span><a href="https://github.com/SalesforceCommerceCloud/b2c-developer-tooling"><span style="font-weight: 400">Salesforce Commerce cloud b2c-developer-tooling</span></a></li>
<li style="font-weight: 400"><a href="https://www.salesforce.com/plus/experience/release_readiness_live/series/release_readiness_spring_26/episode/episode-s1e4"><span style="font-weight: 400">Release Readiness Spring &#8217;26 Highlights: Agentforce Commerce</span></a></li>
</ul>
<h2><b>About the author</b></h2>
<p><span style="font-weight: 400"><strong>Raghu Venkatraman</strong> is a Product Management Director at Salesforce, where he drives product strategy and innovation. With extensive experience in enterprise software and a passion for building user-centric solutions, Raghu focuses on delivering products that empower organizations to work more efficiently and effectively. He brings deep expertise in product leadership and cross-functional collaboration to help customers maximize their Salesforce investments. Follow him on </span><a href="https://www.linkedin.com/in/raghu-venkatraman-b6bb02/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400"><strong>Deep Shrestha</strong> is a Principal Member of Technical Staff at Salesforce, specializing in software engineering and technical architecture. With a strong background in building scalable, robust solutions, Deep brings technical depth and innovation to complex engineering challenges. His expertise spans system design, implementation, and delivering high-quality software that meets the evolving needs of enterprise customers. Follow him on </span><a href="https://www.linkedin.com/in/dkshresth/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/salesforce-b2c-default-domains-instance-ecdn-ssl-for-devs">Salesforce B2C Default Domains: Instance eCDN &amp; SSL for Devs</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/salesforce-b2c-default-domains-instance-ecdn-ssl-for-devs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205958</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260406123400/Generic-A-1-e1775500470479.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260406123400/Generic-A-1-e1775500470479.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Building AI Automations with Prompt Builder Structured Outputs</title>
		<link>https://developer.salesforce.com/blogs/2026/04/building-ai-automations-with-prompt-builder-structured-outputs</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/building-ai-automations-with-prompt-builder-structured-outputs#respond</comments>
		<pubDate>Thu, 02 Apr 2026 14:00:13 +0000</pubDate>
		<dc:creator><![CDATA[Charles Watkins]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Apex]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Salesforce Releases]]></category>
		<category><![CDATA[Connect API]]></category>
		<category><![CDATA[Einstein]]></category>
		<category><![CDATA[Generative AI]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[Lightning Types]]></category>
		<category><![CDATA[Prompt Builder]]></category>
		<category><![CDATA[Spring '26]]></category>
		<category><![CDATA[Structured Outputs]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205925</guid>
		<description><![CDATA[<p>Learn how the Prompt Builder Structured Outputs feature delivers reliable, parseable JSON for Flow and Apex by eliminating hallucinated fields and the need for custom parsing code.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/building-ai-automations-with-prompt-builder-structured-outputs">Building AI Automations with Prompt Builder Structured Outputs</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><a href="https://help.salesforce.com/s/articleView?id=ai.prompt_builder_get_to_know.htm&amp;type=5"><span style="font-weight: 400">Prompt Builder</span></a><span style="font-weight: 400"> makes it easy to ground a prompt in CRM data and invoke it from Flow or Apex. When your automation needs structured data, however, there can be a problem: the model&#8217;s response always comes back as a plain string. This isn’t a problem if you’re using it to summarize a record or draft an email to a customer. What about more complex workflows like </span><i><span style="font-weight: 400">creating </span></i><span style="font-weight: 400">a case from a customer email or extracting information from a contract? In those scenarios, you’re forced to write prompt instructions that beg the model to respond with JSON (and only JSON) and write an Apex class to parse and deserialize its output. This approach works — until the model wraps the response in Markdown fences, adds a friendly explanation, or hallucinates a field.</span></p>
<p><a href="https://help.salesforce.com/s/articleView?id=ai.prompt_builder_use_structured_outputs_responses.htm&amp;language=en_US&amp;type=5"><span style="font-weight: 400">Structured Outputs</span></a><span style="font-weight: 400"> moves format enforcement from your prompt to the platform. You define the shape of the response, and the platform guarantees the model returns valid, parseable JSON in that shape every time. This post walks through how to set it up and what you can build with it.</span></p>
<h2><span style="font-weight: 400">What Structured Outputs does</span></h2>
<p><span style="font-weight: 400">Structured Outputs applies system-level instructions to a prompt template that force the model to respond in a structured format, such as JSON. This is different from </span><i><span style="font-weight: 400">asking</span></i><span style="font-weight: 400"> for JSON in your prompt. The response format is </span><i><span style="font-weight: 400">enforced</span></i><span style="font-weight: 400"> by the platform, not by the model&#8217;s willingness to follow directions. You no longer need to specify a format in your prompt, provide example outputs, or strip Markdown fences from the response. </span></p>
<p><span style="font-weight: 400">You enable it by switching the prompt template&#8217;s response format from Default to JSON. Now your prompt template will </span><i><span style="font-weight: 400">always </span></i><span style="font-weight: 400">return parseable JSON for use with Flow or Apex.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205928" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260401145549/Salesforce-Prompt-Builder-UI-showing-the-Response-Format-dropdown-being-set-to-JSON-e1775076966542.png?w=1000" class="postimages" width="1000" height="563" alt="Salesforce Prompt Builder UI showing the Response Format dropdown being set to JSON" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Defining the response shape with Lightning types</span></h2>
<p><span style="font-weight: 400">Getting JSON back is only half the battle. If you don’t specify the response’s fields, the model will choose them for you — and there’s a good chance they’ll differ from what your automation expects, leading to an error or worse, a crash. To be useful in an automation, the response needs to include specific fields with specific data types </span><i><span style="font-weight: 400">every</span></i><span style="font-weight: 400"> time. In other words, it needs a type. </span></p>
<p><a href="https://developer.salesforce.com/docs/platform/lightning-types/guide/lightning-types-object.html"><span style="font-weight: 400">Object-based Lightning types</span></a><span style="font-weight: 400"> let you define that type declaratively. Instead of specifying the fields in the prompt and writing an Apex wrapper class to model the response, you create a Lightning type with the fields you need — be they a String, Boolean, Integer, Date, or DateTime — and assign it as the prompt template&#8217;s response structure. The platform then ensures every response conforms to it.</span></p>
<p><span style="font-weight: 400">To set one up:</span></p>
<ol>
<li style="font-weight: 400"><span style="font-weight: 400">Click </span><b>New Lightning Type</b><span style="font-weight: 400"> in the Response Structure search bar.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Name your type and add the fields you need.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Save your template.</span></li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205929" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260401145623/Prompt-Builder-Response-Structure-dropdown-showing-the-New-Lightning-Type-selection-e1775076997442.png?w=1000" class="postimages" width="1000" height="563" alt="Prompt Builder Response Structure dropdown showing the New Lightning Type selection" />
			  </span>
			</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205930" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260401145658/Edit-Lightning-Type-modal-in-Salesforce-configuring-caseType-reason-and-summary-String-fields-e1775077031911.png?w=1000" class="postimages" width="1000" height="628" alt="Edit Lightning Type modal in Salesforce configuring caseType, reason, and summary String fields" />
			  </span>
			</p>
<p><span style="font-weight: 400">From this point on, every invocation returns JSON with exactly those fields regardless of how the prompt or model changes. </span></p>
<h2><span style="font-weight: 400">Using Structured Outputs in Flow</span></h2>
<p><span style="font-weight: 400">With a Lightning type assigned, your prompt template&#8217;s output fields are directly available in Flow. Add the prompt template as an Action element, and its structured response fields show up as variables you can map to record fields, use in Decision elements, or pass to subflows. </span></p>
<p>For example, a prompt template that classifies incoming cases could return <code>caseType</code>, <code>reason</code>, and <code>summary</code> fields. An Update Records element can map those fields directly to the Case record as shown below. The entire automation can be done without writing a line of code.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205931" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260401145726/Salesforce-Flow-Builder-showing-structured-response-variables-mapped-to-Case-fields-in-an-Update-Records-element-e1775077063859.png?w=1000" class="postimages" width="1000" height="628" alt="Salesforce Flow Builder showing structured response variables mapped to Case fields in an Update Records element" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Using Structured Outputs in Apex</span></h2>
<p>In Apex, structured outputs eliminate the <code>JSON.deserialize</code> step entirely. Invoke the template through the <a href="https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_EinsteinLLM_static_methods.htm#apex_ConnectAPI_EinsteinLLM_generateMessagesForPromptTemplate_1"><u>Connect API</u></a>, and the response will include a <code>structuredResponse</code> property that you can cast directly. Each Object-based Lightning type has a system-generated Apex class accessible via the <code>LightningTypes</code> namespace.</p>
<pre language="apex">// Invoke the prompt template
ConnectApi.EinsteinPromptTemplateGenerationsRepresentation result =
    ConnectApi.EinsteinLlm.generateMessagesForPromptTemplate(
        templateApiName, input
    );

// Cast directly to your Lightning Type — no deserialization needed with
// LightningTypes.{Lightning Type API Name}
LightningTypes.ClassifyMessagingSessionResponse output =
    (LightningTypes.ClassifyMessagingSessionResponse)
    result.generations[0].structuredResponse;

// Use fields like any typed object
System.debug(output.issueCategory);
System.debug(output.title);
System.debug(output.summary);
</pre>
<p>The structured outputs approach skips all the boilerplate: no wrapper classes, no <code>JSON.deserialize</code>, and no try-catch for malformed strings and stray newlines. The platform handles the format and code handles the logic.</p>
<h2><span style="font-weight: 400">Limitations</span></h2>
<p><span style="font-weight: 400">Structured outputs solve the format problem but they don&#8217;t solve everything.</span></p>
<p><b>Field types don&#8217;t support nested objects or arrays.</b><span style="font-weight: 400"> Object-based Lightning types support only String, Boolean, Integer, Date, and DateTime properties. If you need to extract a list (for example, line items on a receipt), you&#8217;ll need to return that data as a JSON string field and parse it in Apex yourself. This is the biggest limitation for real-world workflows, so plan your data model around it.</span></p>
<p><b>Picklists aren&#8217;t natively supported.</b><span style="font-weight: 400"> You can list acceptable picklist values in the field description, but the model can still hallucinate values outside your list. Add a Flow Decision element or Apex validation to check the returned value against your expected options and fall back to a default when it doesn&#8217;t match.</span></p>
<p><b>Lightning type changes can silently break downstream automations.</b><span style="font-weight: 400"> Prompt templates are versioned, but the object-based Lightning types are not. If you rename or remove a field on a Lightning type that&#8217;s already wired into a Flow or Apex class, those automations will break. Create a new Lightning type for significant changes and update your automations deliberately. Don&#8217;t edit a live type in place.</span></p>
<p><b>Structured doesn&#8217;t mean accurate.</b><span style="font-weight: 400"> Structured Outputs guarantees that the response will be valid, parseable JSON in the shape you defined. It doesn&#8217;t guarantee the values are correct. Treat Structured Outputs as a mechanism for ensuring reliable formatting, not a substitute for validation logic. Add checks to catch values that don&#8217;t make sense.</span></p>
<h2><span style="font-weight: 400">Conclusion</span></h2>
<p><span style="font-weight: 400">With Structured Outputs, your prompt templates can speak the same language as the rest of Salesforce: typed, structured, and ready for automation. It’s time to delete that parsing code, simplify those flows, and start building AI workflows that just work.</span></p>
<h2><span style="font-weight: 400">Resources</span></h2>
<p><a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_einstein_prompt_builder_lightning_type.htm&amp;release=260&amp;type=5"><span style="font-weight: 400">Spring &#8217;26 Release Notes | Structured Outputs</span></a><span style="font-weight: 400"><br />
</span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_EinsteinLLM_static_methods.htm"><span style="font-weight: 400">EinsteinLLMClass API documentation</span></a><span style="font-weight: 400"><br />
</span><a href="https://help.salesforce.com/s/articleView?id=ai.prompt_builder_use_structured_outputs_responses.htm&amp;type=5"><span style="font-weight: 400">Use Structured Outputs to Format Model Responses</span></a></p>
<h2><span style="font-weight: 400">About the author</span></h2>
<p><span style="font-weight: 400">Charles Watkins is a self-taught Developer Advocate at Salesforce and a software developer. He spends his time blogging, coding, and live streaming. You can follow him on </span><a href="https://www.linkedin.com/in/wcharlesw/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/building-ai-automations-with-prompt-builder-structured-outputs">Building AI Automations with Prompt Builder Structured Outputs</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/building-ai-automations-with-prompt-builder-structured-outputs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205925</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260401140153/Building-AI-Automations-with-Prompt-Builder-Structured-Outputs-e1775073725104.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260401140153/Building-AI-Automations-with-Prompt-Builder-Structured-Outputs-e1775073725104.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Agentforce を使って自然言語で CRM 検索を体験しよう！</title>
		<link>https://developer.salesforce.com/blogs/2026/04/try_searching_your_crm_using_natural_language_with_agentforce</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/try_searching_your_crm_using_natural_language_with_agentforce#respond</comments>
		<pubDate>Thu, 02 Apr 2026 01:58:06 +0000</pubDate>
		<dc:creator><![CDATA[odasho]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Agent Builder]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[CRM]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205935</guid>
		<description><![CDATA[<p>&#26032;&#12375;&#12356; Agentforce &#12473;&#12479;&#12472;&#12458; &#12392; Agentforce Builder &#12364;&#25552;&#20379;&#38283;&#22987;&#12373;&#12428;&#12414;&#12375;&#12383;&#12290;&#26412;&#35352;&#20107;&#12391;&#12399;&#33258;&#28982;&#35328;&#35486;&#12392;&#12508;&#12479;&#12531;&#12463;&#12522;&#12483;&#12463;&#12395;&#12424;&#12427;&#35373;&#23450;&#25805;&#20316;&#12384;&#12369;&#12391; Salesforce &#12398;&#12487;&#12540;&#12479;&#12395;&#12450;&#12463;&#12475;&#12473;&#12289;&#36969;&#20999;&#12394;&#24773;&#22577;&#12434;&#21462;&#24471;&#12377;&#12427;&#12414;&#12391;&#12398;&#26041;&#27861;&#12395;&#12388;&#12356;&#12390;&#35299;&#35500;&#12375;&#12414;&#12377;&#12290;</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/try_searching_your_crm_using_natural_language_with_agentforce">Agentforce を使って自然言語で CRM 検索を体験しよう！</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>みなさん、こんにちは！話しかけるだけで Salesforce のデータを取得できたら便利だと思いませんか？この記事では、Agentforce の Employee Agent に標準トピックを追加するだけで、自然言語による CRM 検索を実現する方法をステップバイステップで解説します。</p>
<p>動画での解説はこちらからご覧いただけます。</p>
<div class="video-container"><iframe loading="lazy" title="Agentforce を使って自然言語で CRM 検索を体験しよう！" width="500" height="281" src="https://www.youtube.com/embed/Zb9Qyk_P5J4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<blockquote><p><em>※この記事の内容を試すには、Agentforce が有効化された Salesforce 組織が必要です。まだ環境をお持ちでない方は、無料で取得可能な <a href="https://developer.salesforce.com/signup">Developer Edition</a> をご利用ください。</em></p></blockquote>
<h2>この記事のポイント</h2>
<ul>
<li>Employee Agent に <strong>General CRM</strong> トピックを追加するだけで、CRM の基本検索がエージェントで可能に</li>
<li>Agentforce Builder のキャンバスモードで、自然言語による取引先レコード表示</li>
<li>設定だけで完結し、コードは一切不要</li>
</ul>
<hr />
<h2>1. Agentforce スタジオ と Agentforce Builder の全体像</h2>
<h3>Agentforce スタジオ とは</h3>
<p>Agentforce スタジオ は、エージェントの作成・管理を一元的に行うためのハブです。Salesforce のアプリケーションランチャーから「Agentforce スタジオ」と検索して開くことができます。</p>
<p>Agentforce スタジオ には、用途に応じたエージェントのテンプレートが用意されています。</p>
<table>
<thead>
<tr>
<th><strong>エージェント</strong></th>
<th><strong>用途</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Agentforce Service Agent</td>
<td>顧客対応の自動化</td>
</tr>
<tr>
<td><strong>Agentforce Employee Agent</strong></td>
<td><strong>業務タスクの自動化</strong></td>
</tr>
<tr>
<td><span>フロー自動化エージェント</span></td>
<td><span>Flow Builder によるフロー要約</span></td>
</tr>
<tr>
<td>Slack 従業員ヘルプ</td>
<td>Slack 上での問い合わせ対応</td>
</tr>
</tbody>
</table>
<p>今回は <strong>Agentforce Employee Agent</strong> を使います。Employee Agent は社内ユーザー向けのエージェントで、Salesforce 内部のデータに対して自然言語で問い合わせができるようになります。</p>
<h3>Agentforce Builder とは</h3>
<p>Agentforce スタジオ でエージェントを選択すると、<strong>Agentforce Builder</strong> が開きます。Agentforce Builder は、エージェントの詳細な設定を行うための開発環境です。</p>
<p>Agentforce Builder には 2 つのビューがあります。</p>
<ul>
<li><strong>キャンバス（Canvas）</strong>: ノーコードのビジュアルエディタ。Agent Script をわかりやすいブロック形式で表示し、直感的にエージェントを構成できます</li>
<li><strong>スクリプト（Script）</strong>: Agent Script のコードを直接編集できるプロコード向けビュー</li>
</ul>
<p>今回はキャンバスを中心に操作していきます。</p>
<h3>トピックとは</h3>
<p>トピックは、エージェントが対応できる「業務領域」を定義するものです。1 つのエージェントに複数のトピックを追加でき、トピックごとに対応可能なアクション（検索、表示、更新など）が定義されています。</p>
<p>今回追加する <strong>General CRM</strong> は、Salesforce が標準で用意しているトピックで、以下のアクションがあらかじめ組み込まれています。</p>
<ul>
<li>取引先の検索・表示</li>
<li>取引先責任者の検索</li>
<li>商談の検索</li>
<li>リードの検索</li>
</ul>
<p>つまり、このトピックをエージェントに追加するだけで、CRM の基本的なデータ検索がエージェントでできるようになります。</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205949" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260402022111/2026-04-02_17-20-11.png?w=1778" class="postimages" width="1778" height="1000" alt="" />
			  </span>
			</p>
<hr />
<h2>2. 事前準備</h2>
<p>作業を始める前に、以下を確認してください。</p>
<ul>
<li>Salesforce 組織（Developer Edition、Sandbox、または本番環境）</li>
<li>Agentforce エージェントが有効化されていること</li>
<li>取引先にサンプルデータが投入されていること（Developer Edition にはデフォルトで Edge Communications などのサンプルデータが含まれています）</li>
</ul>
<blockquote><p><em>※ 今回のデモでは、Developer Edition に標準で含まれている「Edge Communications」のサンプルデータを使用します。サンプルデータを削除済みの場合は、新しい Developer Edition を取得するか、手動で取引先レコードを作成してください。</em></p></blockquote>
<hr />
<h2>3. Employee Agent に General CRM トピックを追加する</h2>
<h3>ステップ 1：Agentforce スタジオ を開く</h3>
<ol>
<li>Salesforce にログイン</li>
<li>アプリケーションランチャーをクリック</li>
<li>「Agentforce スタジオ」と検索して開く</li>
<li>エージェントページが表示される</li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205940" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260402013703/2026-04-02_16-24-56.png?w=1797" class="postimages" width="1797" height="1000" alt="" />
			  </span>
			</p>
<h3>ステップ 2：Employee Agent を作成</h3>
<ol>
<li>エージェントページで <strong>「新しいエージェント」</strong> をクリック</li>
<li>Agentforce Builder が開く</li>
<li><strong>「Agentforce Employee Agent」</strong> を<strong>「選択」</strong></li>
<li>「<strong>エージェント名</strong>」と「<strong>API 参照名</strong>」を入力し、「<strong>始めましょう</strong>」をクリック</li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205941" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260402013707/2026-04-02_16-31-24.png?w=1799" class="postimages" width="1799" height="1000" alt="" />
			  </span>
			</p>
<h3>ステップ 3：General CRM トピックを追加する</h3>
<ol>
<li>Agentforce Builder の左パネル（エクスプローラー）で <strong>「トピック」</strong> セクションを確認</li>
<li>トピックの追加オプション（「＋」ボタン）をクリック</li>
<li>「アセットライブラリから追加」をクリック</li>
<li>標準トピックの一覧から <strong>「General CRM」</strong> を選択して追加</li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205943" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260402013952/2026-04-02_16-39-07.png?w=1797" class="postimages" width="1797" height="1000" alt="" />
			  </span>
			</p>
<p>追加後、General CRM トピックの中身を確認してみましょう。取引先の検索、取引先責任者の検索、商談の検索、リードの検索など、CRM の基本操作がアクションとしてすでに定義されているのがわかります。</p>
<h3>ステップ 4：保存する</h3>
<ol>
<li>Agentforce Builder の <strong>「保存」</strong> ボタンをクリック</li>
</ol>
<blockquote><p><em>※ 作業中はこまめに保存することをおすすめします。Agentforce Builder では、保存しないまま画面を離れると変更内容が失われる場合があります。</em></p></blockquote>
<hr />
<h2>4. キャンバスモードで自然言語テスト</h2>
<p>設定が完了したら、Agentforce Builder のプレビュー機能を使って、エージェントの動作をテストしてみましょう。</p>
<h3>プレビューの開き方</h3>
<ol>
<li>Agentforce Builder 内で <strong>「Preview」</strong> タブをクリック</li>
<li>チャット形式のテスト画面が表示される</li>
</ol>
<h3>自然言語でのテストシナリオ</h3>
<p>以下の 3 つのプロンプトを順に試してみましょう。特定の取引先の中身を段階的に深掘りしていく流れで、自然言語検索の実力を確認できます。</p>
<p>今回は、Developer Edition にデフォルトで含まれているサンプルデータ「Edge Communications」を使います。</p>
<h4>テスト 1：取引先の概要を聞く</h4>
<pre><code>取引先の Edge Communications について教えて
</code></pre>
<p><strong>期待される結果</strong>: Edge Communications の取引先レコードが返ってきます。会社名、業種、所在地、電話番号、年間売上といった基本情報がまとめて表示されます。SOQL を一切書かずに、会社名を伝えるだけでレコードの中身を引き出せていることがポイントです。</p>
<h4>テスト 2：関連情報を深掘りする</h4>
<pre><code>Edge Communications の取引先責任者を教えて
</code></pre>
<p><strong>期待される結果</strong>: Edge Communications に紐づく取引先責任者（Contact）の一覧が返ってきます。氏名、役職、メールアドレスなどが表示されます。取引先レコード単体だけでなく、関連オブジェクトの情報も自然言語で引き出せることがわかります。</p>
<h4>テスト 3：さらに別の関連情報を聞く</h4>
<pre><code>Edge Communications に関連する商談を見せて
</code></pre>
<p><strong>期待される結果</strong>: Edge Communications に紐づく商談（Opportunity）の一覧が返ってきます。商談名、フェーズ、金額、完了予定日などが表示されます。</p>
<blockquote><p><em>※ Developer Edition のサンプルデータには Edge Communications の取引先責任者や商談があらかじめ含まれています。もし結果が返らない場合は、サンプルデータが削除されていないかご確認ください。</em></p></blockquote>
<p>このように、1 つの取引先を起点に「概要 → 取引先責任者 → 商談」と自然言語で深掘りしていけるのが、General CRM トピックの強みです。</p>
<h3>プレビューの活用ポイント</h3>
<p>プレビューでエージェントの応答を確認する際、右側パネルにはエージェントの推論プロセスが表示されます（インタラクション概要）。どの トピックが選択され、どのアクションが実行されたかを確認できるため、想定どおりの動作をしているかのデバッグに役立ちます。</p>
<hr />
<h2>5. 注意事項</h2>
<h3>作業後はこまめに「保存」</h3>
<p>Agentforce Builder では、保存しないまま画面を離れると変更内容が失われることがあります。トピックの追加やアクションの設定変更を行ったら、都度「保存」をクリックしてください。</p>
<h3>Agentforce Builder はテストやプレビュー用途</h3>
<p>今回使用した Agentforce Builder のプレビュー機能は、開発者がエージェントの動作をテスト・デバッグするための環境です。実際にエンドユーザーにエージェントを使ってもらうには、Salesforce の画面上にエージェントパネルを配置したり、Slack と連携するなど、別途チャネルの設定が必要になります。</p>
<h3>応答精度はデータに依存</h3>
<p>General CRM トピックの検索精度は、組織内のデータの量と品質に左右されます。今回のデモで使用した Edge Communications のように、取引先責任者や商談が紐づいたレコードであれば、関連情報の深掘りまでスムーズに行えます。一方、住所・業種などの項目が空欄のレコードが多い場合、期待どおりの検索結果が返らないことがあります。</p>
<hr />
<h2>6. よくあるトラブルと対処法</h2>
<h3>General CRM トピックが選択肢に表示されない</h3>
<p><strong>原因</strong>: Agentforce エージェントが有効化されていない、または組織のエディションが対応していない</p>
<p><strong>対処</strong>: 設定画面で Agentforce エージェントが有効になっているか確認してください。Developer Edition では標準で無効化されています</p>
<h3>期待した検索結果が返ってこない</h3>
<p><strong>原因</strong>: 組織にサンプルデータが入っていない、またはサンプルデータが削除されている</p>
<p><strong>対処</strong>: Developer Edition を新規取得した直後であれば、Edge Communications などのサンプルデータが含まれています。既存の環境でサンプルデータを削除済みの場合は、取引先レコードを手動で作成するか、新しい Developer Edition を取得してください</p>
<h3>日本語でのプロンプトに対して英語で応答される</h3>
<p><strong>原因</strong>: エージェントの言語設定やユーザーのロケール設定</p>
<p><strong>対処</strong>: ユーザーの言語設定が日本語になっていることを確認してください。また、プロンプトをより具体的に日本語で書くことで、日本語での応答が返りやすくなります</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205944" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260402015019/2026-04-02_16-49-48.png?w=1797" class="postimages" width="1797" height="1000" alt="" />
			  </span>
			</p>
<hr />
<h2>7. 次のステップ</h2>
<p>今回は標準の General CRM トピックを使いましたが、Agentforce ではさらに高度なカスタマイズが可能です。</p>
<h3>カスタムトピック</h3>
<p>自社固有の業務ルールやオブジェクトに対応したカスタムトピックを作成できます。たとえば「在庫管理トピック」や「承認依頼トピック」など、業務に合わせたエージェントを構築できます。</p>
<h3>Agent Script</h3>
<p>Agent Script を使うと、エージェントの推論にプログラム的な制御（if / else 条件分岐、変数、フォローアップアクションなど）を追加できます。キャンバスビューで視覚的に設定することも、スクリプトビューでコードを記述することもできます。</p>
<h3>チャネル設定</h3>
<p>作成したエージェントを実際のユーザーに公開するには、以下のようなチャネル設定が必要です。</p>
<ul>
<li>Salesforce 画面上へのエージェントパネルの配置</li>
<li>Slack との連携</li>
</ul>
<hr />
<h2>まとめ</h2>
<p>Agentforce の Employee Agent に General CRM トピックを追加するだけで、自然言語による CRM データの検索・表示が実現できます。コードを書く必要はなく、設定だけで完結します。まずは <a href="https://developer.salesforce.com/signup">Developer Edition</a> で試してみてください。</p>
<hr />
<h2>参考リソース</h2>
<ul>
<li>Salesforce Help: <a href="https://help.salesforce.com/s/articleView?id=ai.copilot_intro.htm&amp;type=5">エージェントの設計と実装</a><a href="https://help.salesforce.com/s/articleView?id=ai.copilot_intro.htm&amp;type=5"></a>（日本語）</li>
<li>Salesforce Help: <a href="https://help.salesforce.com/s/articleView?id=ai.agent_builder_studio.htm&amp;type=5">Agentforce Studio および新しい Agentforce Builder へのアクセス</a>（日本語）</li>
<li>Trailhead: <a href="https://trailhead.salesforce.com/content/learn/modules/new-agentforce-builder-quick-look/explore-the-new-agentforce-builder">Explore the New Agentforce Builder</a>（英語）</li>
</ul>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/try_searching_your_crm_using_natural_language_with_agentforce">Agentforce を使って自然言語で CRM 検索を体験しよう！</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/try_searching_your_crm_using_natural_language_with_agentforce/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205935</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260402021026/2026-04-02_17-09-57.png?w=2000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260402021026/2026-04-02_17-09-57.png?w=2000" medium="image" />
	</item>
		<item>
		<title>Agent Script徹底解説 &#8211; Agent Scriptのデバッグの仕方</title>
		<link>https://developer.salesforce.com/blogs/2026/03/agent-script-decoded-how-to-debug-agent-script-jp</link>
		<comments>https://developer.salesforce.com/blogs/2026/03/agent-script-decoded-how-to-debug-agent-script-jp#respond</comments>
		<pubDate>Wed, 01 Apr 2026 00:20:27 +0000</pubDate>
		<dc:creator><![CDATA[Mohith Shrivastava]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Agent Script]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205915</guid>
		<description><![CDATA[<p>Agentforce Builder&#12289;DX&#25313;&#24373;&#27231;&#33021;&#12289;&#12362;&#12424;&#12403;Agentforce Vibes&#12434;&#20351;&#29992;&#12375;&#12383;&#12456;&#12540;&#12472;&#12455;&#12531;&#12488;&#12473;&#12463;&#12522;&#12503;&#12488;&#12398;&#12487;&#12496;&#12483;&#12464;&#25163;&#27861;&#12434;&#32722;&#24471;&#12375;&#12414;&#12375;&#12423;&#12358;&#12290;&#12523;&#12540;&#12486;&#12451;&#12531;&#12464;&#12289;&#22793;&#25968;&#12289;&#25512;&#35542;&#12523;&#12540;&#12503;&#12434;&#12488;&#12524;&#12540;&#12473;&#12377;&#12427;&#12371;&#12392;&#12391;&#12289;&#21839;&#38988;&#12434;&#36805;&#36895;&#12395;&#35299;&#27770;&#12391;&#12365;&#12414;&#12377;&#12290;</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/agent-script-decoded-how-to-debug-agent-script-jp">Agent Script徹底解説 &#8211; Agent Scriptのデバッグの仕方</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<blockquote><p>※本記事は2026年3月3日に米国で公開された <a href="https://developer.salesforce.com/blogs/2026/03/agent-script-decoded-how-to-debug-agent-script">Agent Script Decoded: How to Debug Agent Script</a>の抄訳です。本記事の正式言語は英語であり、その内容および解釈については英語が優先されます。</p></blockquote>
<p><span style="font-weight: 400"></span><a href="https://developer.salesforce.com/blogs/2026/02/agent-script-decoded-intro-to-agent-script-language-fundamentals"><span style="font-weight: 400">Agent Script</span></a><span style="font-weight: 400">でAIエージェントを構築したものの、テストをしてみると、思ったように動作しない、ということもあるでしょう。AIエージェントが誤ったトピックに振り分けられているのか、実行すべきアクションをスキップしているのか、あるいは指示とは異なる形で応答しているのかもしれません。</span></p>
<p><span style="font-weight: 400">そんなときには、会話の各ターンで生成されるトレースが役立ちます。トレースを見れば、確実な根拠にもとづいてデバッグできます。選択されたトピック、実行可能だったアクションや実行されたアクション、変更された変数、推論ループが時間を費やした箇所がわかるのです。</span></p>
<p><span style="font-weight: 400">この記事では、まずAgent Scriptの実行フローについて説明します。次に、</span><a href="https://www.salesforce.com/agentforce/agent-builder/"><span style="font-weight: 400">Agentforce Builder</span></a><span style="font-weight: 400">と</span><a href="https://developer.salesforce.com/docs/ai/agentforce/guide/agent-dx.html"><span style="font-weight: 400">Agentforce DX</span></a><span style="font-weight: 400">（英語）を使ってAgent Scriptをデバッグする方法を見ていきます。最後に、</span><a href="https://developer.salesforce.com/blogs/2025/10/unleash-your-innovation-with-agentforce-vibes-vibe-coding-for-the-enterprise"><span style="font-weight: 400">Agentforce Vibes</span></a><span style="font-weight: 400">を使ったバイブデバッグのワークフローを紹介します。バイブデバッグでは、JSON形式の実行トレースをAgentforce Vibesに貼り付けて、期待していた結果と実際の結果を言葉で説明し、Agentforceの提案を利用してAgent Scriptを改善します。</span></p>
<h2><b>Agent Scriptの実行フロー</b></h2>
<p><span style="font-weight: 400">Agent Scriptで構築したAIエージェントを効果的にデバッグするには、まず、実行の流れを理解しておく必要があります。以下に、実行フローがわかる図を用意しました。Agent Scriptのデバッグは、スクリプトを上から下へと直線的にチェックするというよりも、決定論的な命令の実行と非決定論的な推論という</span><b>異なる2つの実行モードからなるループ</b><span style="font-weight: 400">をたどっていくイメージです。</span><b></b><span style="font-weight: 400"></span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205916" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260331181312/Agent-Script-execution-flowchart-e1772498456141_J.png?w=669" class="postimages" width="669" height="1000" alt="" />
			  </span>
			</p>
<p><span style="font-weight: 400">では、この実行フローをステップごとに見ていきましょう。</span></p>
<p><b>ステップ1 – すべての会話ターンは、必ず</b><a href="https://developer.salesforce.com/docs/ai/agentforce/guide/ascript-blocks.html#start-agent-block"><b>start_agent</b></a><b>（英語）が起点になります。ユーザーが何を発言したか、前のターンがどこで終了したかにかかわらず、AIエージェントのエントリーポイントとして最初に実行されます。このエントリーポイントで、現在の会話の状態が評価され、AIエージェントが適切なトピックに振り分けられます。</b><span style="font-weight: 400"> </span></p>
<p><span style="font-weight: 400">デバッグでまず確認すべき点は、「想定したトピックにAIエージェントが振り分けられたかどうか」です。答えが「ノー」なら、問題の原因はトピックの説明か会話の状態にあります。</span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400"></span></p>
<p><b>ステップ2 – トピックに入ると、</b><a href="https://developer.salesforce.com/docs/ai/agentforce/guide/ascript-ref-instructions.html"><b>reasoning.instructions</b></a><b>（英語）は上から順番に、決定論的に実行されます。</b><span style="font-weight: 400">ここは通常のコードのように動作する部分です。すべての</span><span style="font-weight: 400">if</span><span style="font-weight: 400">条件が評価され、</span><span style="font-weight: 400">run</span><span style="font-weight: 400">ブロックが実行され、想定どおりに変数が代入されます。一方、プロンプトテキストの行（</span><span style="font-weight: 400">|</span><span style="font-weight: 400">で始まる行）は実行されず、プロンプトバッファーに</span><i><span style="font-weight: 400">蓄積</span></i><span style="font-weight: 400">されていきます。ここが重要な違いです。ロジックは直ちに実行されますが、プロンプトテキストは蓄積されるだけです。instructionsでは、一般的な命令型プログラムでステップ実行を進めるようにバグをトレースできます。</span></p>
<p><b>ステップ3 – 組み立てられたプロンプトと利用可能なツールが、Einstein Trust Layerによって保護された大規模言語モデル（LLM）に渡されます。</b><span style="font-weight: 400">ここで、決定論的な処理から非決定論的な推論に実行が切り替わります。</span><a href="https://help.salesforce.com/s/articleView?id=ai.generative_ai_trust_arch.htm&amp;type=5"><span style="font-weight: 400">Einstein Trust Layer</span></a><span style="font-weight: 400">によって保護されたLLMは、instructionsフェーズで蓄積されたプロンプトテキスト、会話履歴、</span><a href="https://developer.salesforce.com/docs/ai/agentforce/guide/ascript-ref-tools.html"><span style="font-weight: 400">reasoning.actions</span></a><span style="font-weight: 400">（英語）のツール一覧を受け取り、その情報をもとに推論を行います。LLMは直接応答することもあれば、ツールを呼び出すこともあります。このフェーズを確実に予測することはできませんが、入力された情報（組み立てられたプロンプト）を確認することで、LLMがなぜそう推論したかを理解</span><i><span style="font-weight: 400">できます</span></i><span style="font-weight: 400">。ツールが実行されるたびに、システムはステップ2に戻ってプロンプトを再評価します。LLMがツールを使わずに直接応答するまで、このサイクルが繰り返されます。</span></p>
<p><b>ステップ4 – </b><a href="https://developer.salesforce.com/docs/ai/agentforce/guide/ascript-ref-before-after-reasoning.html"><b>after_reasoning</b></a><b>（英語）（定義されている場合）が実行され、ユーザーに応答が返されます。</b><span style="font-weight: 400">後処理のロジックが実行され、AIエージェントが応答を返し、待機します。サイクルは一時停止しているだけで、終了したわけではありません。</span></p>
<p><b>ステップ5 – ユーザーが別のメッセージを送り、ステップ1からループが再開されます。</b><span style="font-weight: 400">各ターンの切れ目で、</span><i><span style="font-weight: 400">どの変数が変わったのか、会話の状態はどう変化したのか、</span></i><i><span style="font-weight: 400">start_agent</span></i><i><span style="font-weight: 400">の振り分け先が変わっていないかを確認してください。</span></i><span style="font-weight: 400">複数のターンにまたがるバグは、ほとんどがこのような遷移に潜んでいます。更新されていない変数や、トピックの振り分け条件が当てはまらなくなっている箇所があれば、それがバグの原因かもしれません。AIエージェントの変数はグローバルな状態として扱われ、ターンをまたいで保持されることに注意しましょう。</span></p>
<h2><b>Agentforce Builderを使ったAgent Scriptのデバッグ</b></h2>
<p><span style="font-weight: 400">新しい</span><a href="https://www.salesforce.com/agentforce/agent-builder/"><span style="font-weight: 400">Agentforce Builder</span></a><span style="font-weight: 400">を使うと、AIエージェントの実行フローをデバッグし、トレースできます。Agentforce Builderでは、実際のデータに変更を加えずにテストできる</span><a href="https://help.salesforce.com/s/articleView?id=ai.agent_simulate_and_live_modes.htm&amp;type=5"><span style="font-weight: 400">シミュレーションモード</span></a><span style="font-weight: 400">と、</span><span style="font-weight: 400">実際のアクション</span><span style="font-weight: 400">をテストできるライブテストモードを利用できます。どちらにも［Interaction Summary（インタラクション概要）］パネルが用意されており、AIエージェントの会話ロジック、トピックの遷移、トリガーされたアクションを追跡できます。 </span></p>
<p>
			  <span class="postimagessection_specify alignnone size-large wp-image-205736" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260302174006/Screenshot-of-Interaction-Summary-panel-inside-Agentforce-Builder-e1772498492258.png?w=1000" class="postimages" width="1000" height="627" alt="Agentforce BuilderのTraceタブのスクリーンショット" />
			  </span>
			</p>
<p><span style="font-weight: 400">［Interaction Summary（インタラクション概要）］パネルには、入力、推論、トピックの遷移、アクション、出力の評価という各ステップが、視覚的なわかりやすいタイムラインで表示されます。このパネルは、会話の流れを把握するのにとても便利で、問題が発生している箇所の特定にも役立ちます。</span></p>
<p><span style="font-weight: 400">もっと詳しく確認したい場合は、Agentforce Builderの下部にある［</span><b>Trace（トレース）</b><span style="font-weight: 400">］タブ（以下のスクリーンショットを参照）を展開します。このタブでは、ミリ秒単位でインタラクションの内訳が表示され、時間がかかっている箇所をタイミングバーで確認できます。各インタラクションをクリックすると、動的に生成されてLLMに送信されたプロンプトなどの詳細を確認できます。</span></p>
<p><span style="font-weight: 400">変数を調べたい場合は、［</span><b>Variables（変数）</b><span style="font-weight: 400">］サブタブに切り替えると、各ステップの変数の値を確認できます。</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-large wp-image-205737" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260302174009/Screenshot-of-Trace-within-Agentforce-Builder-e1772498520667.png?w=1000" class="postimages" width="1000" height="625" alt="Agentforce BuilderのTraceタブのスクリーンショット" />
			  </span>
			</p>
<h2><b>Agentforce DXを使ったAgent Scriptのデバッグ</b></h2>
<p><span style="font-weight: 400">Visual Studio CodeのようなIDEで作業したい場合は、</span><b>Agentforce DX拡張機能</b><span style="font-weight: 400">を使って、エディターの［</span><b>Agent Tracer（エージェントトレーサー）</b><span style="font-weight: 400">］タブ（下図を参照）で同じトレース機能を利用できます。</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-large wp-image-205735" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260302174003/Agent-Tracer-within-Visual-Studio-Code-powered-by-Agentforce-DX-extension--e1772498673500.png?w=1000" class="postimages" width="1000" height="647" alt="Agentforce DX拡張機能で利用可能なVisual Studio CodeのAgent Tracerタブ" />
			  </span>
			</p>
<p><span style="font-weight: 400">左側のパネルでは、ユーザーの入力、選択されたトピック、変数の更新、有効化されたツール、推論ステップ、トピックの遷移など、実行プランの全体を確認できます。 </span></p>
<p><span style="font-weight: 400">任意のテスト会話をクリックし、</span><span style="font-weight: 400">ファイルを開くアイコン</span>（赤線で囲んだ部分）をクリックすると、会話ターンについてプランの生の応答を確認できます。このJSONファイルが、判断基準となる情報です。このファイルには、内部のAgent Script変数を含む、実行中の各時点におけるすべての状態変数の値が記載されているため、見つけにくいロジックの問題を調べるうえで非常に役立ちます。</p>
<h2><b>Agent Scriptのバイブデバッグ</b></h2>
<p><span style="font-weight: 400"></span><b>Agentforce Builder</b><span style="font-weight: 400">と</span><b>Agentforce DX</b><span style="font-weight: 400">の拡張機能では、きわめて詳細な実行トレースが可能です。しかし、こうしたツールでステップごとにデータを調べるのは、根気のいる作業です。そうした手間を解消する新しいワークフローが、バイブデバッグです。</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-large wp-image-205738" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260302174012/Vibe-debugging-Agent-Script-with-Agentforce-Vibes-e1772498701710.png?w=1000" class="postimages" width="1000" height="647" alt="Agentforce Vibesを使ったAgent Scriptのバイブデバッグ" />
			  </span>
			</p>
<p><span style="font-weight: 400">ビルダーのUIを操作して問題を調べるのではなく、</span><a href="https://www.salesforce.com/agentforce/developers/vibe-coding/"><b>Agentforce Vibes</b></a><span style="font-weight: 400">をペアプログラミングの相棒として活用すれば、トレースを任せることができます。やり方は簡単です。Visual Studio Codeで会話のターンをシミュレーションし、［</span><b>Agent Tracer（エージェントトレーサー）</b><span style="font-weight: 400">］タブからJSON形式の実行トレースをコピーしてAgentforce Vibesに貼り付け、期待していた応答をプロンプトで伝えるだけです。Agentforce Vibesは、意図していなかったトピックの振り分け、上書きされた変数、LLMが本来の流れから外れるきっかけになったプロンプトをすぐに見つけ出し、具体的なAgent Scriptの修正コードを提案します。</span></p>
<p><span style="font-weight: 400">AIを活用したこのワークフローを活用するには、コンテキストが何より重要です。Agent Scriptの構文と推論ループを理解できるように、Agentforce Vibesに正確な構成図を与える必要があります。そのために、リポジトリに2つの軽量なファイルを追加します。1つは</span><a href="https://github.com/trailheadapps/agent-script-recipes/blob/main/.airules/AGENT_SCRIPT.md"><span style="font-weight: 400">.airules/AGENT_SCRIPT.md</span></a><span style="font-weight: 400">などのルールファイル、もう1つはルートに配置するインデックスファイル、</span><a href="https://github.com/trailheadapps/agent-script-recipes/blob/main/AGENTS.md"><span style="font-weight: 400">AGENTS.md</span></a><span style="font-weight: 400">です。すぐに設定できるように、</span><a href="https://github.com/trailheadapps/agent-script-recipes/"><span style="font-weight: 400">agent-script-recipes</span></a><span style="font-weight: 400">レポジトリに、そのまま使えるサンプルが用意されています。</span></p>
<p><span style="font-weight: 400">ルールファイルを用意すれば、孤独で地道な作業だったデバッグが、会話しながら進められるワークフローに進化します。Agentforce Vibesで仮説をすばやく検証して、Agent Scriptをレビューしながら繰り返し改善できます。普遍的なコンテキスト基盤を利用したアプローチなので、このワークフローは</span><b>Claude Code</b><span style="font-weight: 400">や</span><b>Cursor</b><span style="font-weight: 400">といったAIコーディングエージェントやその他のツールにも適用できます。これで、Agent Scriptのデバッグや改善を自由自在に進められるようになります。</span></p>
<h2><span style="font-weight: 400">まとめ</span></h2>
<p><span style="font-weight: 400">Agent Scriptのデバッグは、ときにブラックボックスとの闘いのように思えるかもしれません。しかし、</span><b>Agentforce Builder</b><span style="font-weight: 400">と</span><b>Agentforce DX</b><span style="font-weight: 400">の拡張機能で実行トレースを活用すれば、勘に頼ることなく原因を突き止められます。</span></p>
<p><span style="font-weight: 400">AIエージェントの開発をマスターするうえで重要なのは、直感ではなく、データを信じることです。常に、実行ループの流れを念頭に置いておきましょう。最初に必ず</span><span style="font-weight: 400">start_agent</span><span style="font-weight: 400">がAIエージェントをトピックに振り分けること、ステップごとに実行されるコードとプロンプトテキストはまったく別のものであることを忘れないでください。厳密なロジックとプロンプトを切り分け、LLMに渡される正確なコンテキストを検証することで、問題をすばやく解決できます。手作業で変数値のずれをたどる場合でも、複雑なJSON形式のトレースを</span><b>Agentforce Vibes</b><span style="font-weight: 400">で解読する場合でも、信頼できるインテリジェントなAIエージェントを構築できるツールが一式そろっています。次にAIエージェントが想定どおりに動かなくなったときは、トレースログを掘り下げ、データを追ってみてください。</span></p>
<h2><span style="font-weight: 400">関連情報</span></h2>
<ul>
<li><a href="https://github.com/trailheadapps/agent-script-recipes"><span style="font-weight: 400">Agent Script Recipesサンプルアプリ（英語）</span></a></li>
<li><a href="https://youtube.com/playlist?list=PLgIMQe2PKPSJNLEQTPkr06gKhjnHgI1Jb&amp;si=2RRnfuL0hlypqLpQ"><span style="font-weight: 400">Agent Script Decoded動画シリーズ（英語）</span></a></li>
<li><a href="https://developer.salesforce.com/docs/ai/agentforce/guide/agent-script.html"><span style="font-weight: 400">Agent Scriptガイド（英語）</span></a></li>
<li><a href="https://www.salesforce.com/agentforce/levels-of-determinism/"><span style="font-weight: 400">Agentforceガイド</span></a></li>
</ul>
<h2><span style="font-weight: 400">執筆者について</span></h2>
<p><b>Mohith Shrivastava</b><span style="font-weight: 400">はSalesforceのプリンシパルデベロッパーアドボケイトです。15年にわたってAgentforce 360 Platform（旧Salesforce Platform）でエンタープライズ規模の製品を開発してきました。Salesforce開発者が質問し合い、知識を共有できる開発者向けフォーラムのSalesforce Stack Exchangeでも積極的に活動しています。</span><a href="https://www.linkedin.com/in/mohith-shrivastava-9a36464a/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">のプロフィールはこちら。</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/agent-script-decoded-how-to-debug-agent-script-jp">Agent Script徹底解説 &#8211; Agent Scriptのデバッグの仕方</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/03/agent-script-decoded-how-to-debug-agent-script-jp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205915</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260302175013/How-to-Debug-Agent-Script-e1772499027546.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260302175013/How-to-Debug-Agent-Script-e1772499027546.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Set Up Cross-System Observability with Correlation IDs</title>
		<link>https://developer.salesforce.com/blogs/2026/03/set-up-cross-system-observability-with-correlation-ids</link>
		<comments>https://developer.salesforce.com/blogs/2026/03/set-up-cross-system-observability-with-correlation-ids#respond</comments>
		<pubDate>Tue, 31 Mar 2026 14:00:23 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Ozil]]></dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Correlation ID]]></category>
		<category><![CDATA[Distributed Tracing]]></category>
		<category><![CDATA[Event monitoring]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Integrations]]></category>
		<category><![CDATA[Observability]]></category>
		<category><![CDATA[Platform Events]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205895</guid>
		<description><![CDATA[<p>Learn how to use Correlation IDs to track transactions across Salesforce, Apex, and Flows.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/set-up-cross-system-observability-with-correlation-ids">Set Up Cross-System Observability with Correlation IDs</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">Business applications rarely operate as standalone systems; they rely on integrations. In such distributed architectures, a single user click can trigger a cascade of events. For example, in a Salesforce app, a user interaction can go through Apex, external APIs, and asynchronous jobs. When something breaks, identifying the root cause is like searching for a needle in a haystack. The solution for this is to work with </span><b>correlation IDs,</b><span style="font-weight: 400"> also referred to as request IDs. These are unique fingerprints that follow transactions across system boundaries.</span></p>
<p><span style="font-weight: 400">This post covers how to set up </span><b>observability</b><span style="font-weight: 400"> for operations across systems and how to architect a traceable system using Salesforce native identifiers and propagation patterns. It then explores a variety of integration scenarios demonstrating how to set up observability.</span></p>
<h2><span style="font-weight: 400">Tracking operations across systems</span></h2>
<p><span style="font-weight: 400">When multiple operations are chained together across systems, it becomes harder to diagnose issues and to measure performance. To compensate for this, developers use two techniques: logging and telemetry.</span></p>
<p><b>Logging</b><span style="font-weight: 400"> is the first level of traceability. It provides a historical journal of activities within a given application. This information is generally stored in text-based log files or a database. Logs are easy to set up and great for debugging or compliance. However, because they are specific to each system, they don’t give a full picture of the user experience.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205907" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260330115926/diagram-showing-multiple-systems-with-siloed-logs-e1774893683116.png?w=1000" class="postimages" width="1000" height="452" alt="diagram showing multiple systems with siloed logs." />
			  </span>
			</p>
<p><b>Telemetry</b><span style="font-weight: 400"> focuses on real-time analytics and is based on event-driven data streams captured from multiple sources. It enables tracking a given user operation as it travels through different systems. The key that links the events across these systems is a shared correlation ID.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205908" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260330115928/diagram-showing-multiple-systems-with-telemetry-collecting-events-in-a-unified-data-stream-e1774893696155.png?w=1000" class="postimages" width="1000" height="482" alt="diagram showing multiple systems with telemetry collecting events in a unified data stream." />
			  </span>
			</p>
<h2><span style="font-weight: 400">Correlating Salesforce Platform requests</span></h2>
<h3><span style="font-weight: 400">The core concept: How to correlate</span></h3>
<p>Every transaction in Salesforce is assigned a unique ID that is logged in the <a href="https://help.salesforce.com/s/articleView?id=xcloud.real_time_em_elf_browser.htm&amp;type=5"><u>Event Monitoring logs</u></a>. For example, this ID is represented by the <code>REQUEST_ID</code> field in <code>EventLogFile</code> logs. Using this native ID, you can seamlessly join your custom application logs with standard <a href="https://help.salesforce.com/s/articleView?id=platform.code_debug_log.htm&amp;type=5"><u>Salesforce logs</u></a>.</p>
<p><span style="font-weight: 400">As per the </span><a href="https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile.htm"><span style="font-weight: 400">EventLogFile documentation</span></a><span style="font-weight: 400">, the request ID value is either a 32-character </span><a href="https://opentelemetry.io/docs/specs/otel/overview/"><span style="font-weight: 400">OpenTelemetry</span></a><span style="font-weight: 400"> (OTel) and </span><a href="https://www.w3.org/TR/trace-context/#trace-id"><span style="font-weight: 400">W3C compatible Trace-Id</span></a><span style="font-weight: 400"> or a 22-character alphanumeric ID. This ID serves as the &#8220;parent&#8221; span for all subsequent operations (logs, callout, queueable, platform event, and so on).</span></p>
<h3><span style="font-weight: 400">Working with Apex</span></h3>
<p><span style="font-weight: 400">If you want to correlate some of your debug logs, you can prepend your lines with the request ID yourself:</span></p>
<pre language="apex">// Retrieve the native Salesforce Request ID
String correlationId = Request.getCurrent().getRequestId();
System.debug(correlationId +' &lt;- Transaction Correlation ID');
</pre>
<p><span style="font-weight: 400">Or, you can let a third-party logger like </span><a href="https://github.com/jongpie/NebulaLogger"><span style="font-weight: 400">Nebula Logger</span></a><span style="font-weight: 400"> handle it for you.</span></p>
<h3><span style="font-weight: 400">Passing a request ID when calling the Salesforce Platform APIs</span></h3>
<p><span style="font-weight: 400">When calling </span><a href="https://developer.salesforce.com/docs/apis#browse"><span style="font-weight: 400">Salesforce Platform APIs</span></a><span style="font-weight: 400">, the correlation ID must travel with the request so that the receiving systems (Salesforce and possibly other systems) can log it. This enables &#8220;distributed tracing&#8221;, allowing you to see the full lifecycle of a request as it crosses system boundaries.</span></p>
<p>To set a request ID with the <a href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm"><u>Salesforce REST API</u></a>, set the <code>X-SFDC-REQUEST-ID</code> HTTP header with your unique correlation ID value. While it isn’t required for correlation, we also recommend that you set a client name using the <a href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/headers_calloptions.htm"><u><code>Sforce-Call-Options</code><span> header</span></u></a><span> as a best practice. Just like for the request ID, the supplied client name will be reported in the </span><code>CLIENT</code> column of <code>EventLogFile</code>.</p>
<p><span style="font-weight: 400">Here’s an example of how to configure a request for a custom </span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_rest.htm"><span style="font-weight: 400">Apex REST web service</span></a><span style="font-weight: 400"> with such headers using the </span><a href="https://www.postman.com/salesforce-developers/salesforce-developers/collection/b32utmu/salesforce-platform-apis"><span style="font-weight: 400">Salesforce Platform APIs collection for Postman</span></a><span style="font-weight: 400">:</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205909" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260330115929/screenshot-of-Postman-showing-a-Salesforce-Platform-API-request-with-the-request-ID-and-client-name-passed-as-headers.png?w=770" class="postimages" width="770" height="435" alt="screenshot of Postman showing a Salesforce Platform API request with the request ID and client name passed as headers" />
			  </span>
			</p>
<p><span style="font-weight: 400">Although this is beyond the scope of this blog post, note that other Salesforce products let you achieve this. For example, MuleSoft lets you </span><a href="https://help.salesforce.com/s/articleView?id=001116575&amp;type=1"><span style="font-weight: 400">set custom correlation IDs for Flows with HTTP endpoints</span></a><span style="font-weight: 400"> and Salesforce Commerce APIs (SCAPI) let you </span><a href="https://engineering.salesforce.com/investigate-issues-with-ease-by-adding-a-correlation-id-to-your-api-7a689413ff44/"><span style="font-weight: 400">pass correlation IDs as part of your requests</span></a><span style="font-weight: 400">.</span></p>
<h3><span style="font-weight: 400">Propagating correlation IDs in Apex HTTP Callouts</span></h3>
<p><span style="font-weight: 400">When calling a third-party API with </span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_callouts.htm"><span style="font-weight: 400">Apex HTTP callouts</span></a><span style="font-weight: 400">, use a custom header in your request to propagate the current transaction’s unique request ID (correlation ID).</span></p>
<pre language="apex">HttpRequest req = new HttpRequest();
req.setEndpoint('callout:My_External_Service');
req.setMethod('POST');

// Pass the correlation ID as a header
String requestId = Request.getCurrent().getRequestId();
req.setHeader('', requestId);

Http http = new Http();
HttpResponse res = http.send(req);
</pre>
<p>Note: If your downstream systems support the <a href="https://www.w3.org/TR/trace-context/"><u>Trace Context</u></a> W3C standard, you can map your request ID to a <a href="https://www.w3.org/TR/trace-context/#traceparent-header"><code>traceparent</code><u><span> header</span></u></a><span>. This allows you to simplify the correlation configuration and unify the event representation across logs.</span></p>
<h3><span style="font-weight: 400">Propagating correlation IDs in Platform Events</span></h3>
<p><a href="https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_events_intro.htm"><span style="font-weight: 400">Platform event</span></a><span style="font-weight: 400"> publishing is asynchronous. This means that the following three elements that control the life cycle of an event are transactionally separate and do not natively share the same request ID:</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">the Apex code or client that enqueues the event for publication</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">the event bus process that publishes the event</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">the Apex trigger or client that subscribes to the event.</span></li>
</ul>
<p>While Salesforce provides a system <code>EventUuid</code> to <a href="https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_events_event_uuid.htm"><u>identify event messages</u></a>, this UUID is generated after publish and does not identify the originating transaction. In order to pass correlation information in a platform event, you must create a custom field (e.g., <code>SourceRequestId__c</code>) on your platform event object to carry the context.</p>
<p><span style="font-weight: 400">Here’s an example of how you can do this when publishing an event with Apex:</span></p>
<pre language="apex">// Create the event
Order_Event__e event = new Order_Event__e();
event.Order_Number__c = '12345';

// Manually propagate the correlation ID
event.SourceRequestId__c = Request.getCurrent().getRequestId();

// Publish
EventBus.publish(event);
</pre>
<p>When the subscriber (e.g., an external app or an after insert Apex trigger) receives the event, it reads the <code>SourceRequestId__c</code> value to retrieve the correlation ID and continue the logging trace.</p>
<h3><span style="font-weight: 400">Propagating correlation IDs when working with asynchronous Apex</span></h3>
<p><span style="font-weight: 400">Asynchronous jobs like </span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_queueing_jobs.htm"><span style="font-weight: 400">Queueable</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_batch.htm"><span style="font-weight: 400">Batch</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_scheduler.htm"><span style="font-weight: 400">Schedulable</span></a><span style="font-weight: 400">, and </span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_invoking_future_methods.htm"><span style="font-weight: 400">future methods</span></a><span style="font-weight: 400"> run in fresh transaction contexts with brand new request IDs. To trace the parent transactions that enqueued the jobs, you must pass the parent request ID through the constructor.</span></p>
<p><span style="font-weight: 400">Here’s an example of how you can store the parent transaction’s correlation ID as a state variable within a Queueable class:</span></p>
<pre language="apex">public class AsyncProcessor implements Queueable {
    private final String parentCorrelationId;

    // Constructor captures the ID from the calling transaction
    // Same logic applies to batch
    public AsyncProcessor() {
        this.parentCorrelationId = Request.getCurrent().getRequestId();
    }

    public void execute(QueueableContext context) {
        // Log using the parent ID to maintain continuity
        System.debug('Processing Queueable linked to: ' + this.parentCorrelationId);
        
        // If making further callouts, pass the parent request ID, not the current request ID
	 Assert.areNotEqual(
this.parentCorrelationId,
Request.getCurrent().getRequestId(),
'The two request IDs are different because of the asynchronicity'
);
    }
}
</pre>
<p>Use a similar approach for <code>Batchable</code> and <code>Schedulable</code>.</p>
<p>Use a String parameter to pass the ID in <code>@future</code> methods.</p>
<h3><span style="font-weight: 400">Propagating correlation IDs in Flow</span></h3>
<p><span style="font-weight: 400">When working with Flow, you can call third-party APIs declaratively with an </span><a href="https://help.salesforce.com/s/articleView?id=platform.flow_http_callout_configure.htm&amp;type=5"><span style="font-weight: 400">HTTP callout action</span></a><span style="font-weight: 400"> or with an </span><a href="https://help.salesforce.com/s/articleView?id=platform.enhanced_external_services_example_create_flow.htm&amp;type=5"><span style="font-weight: 400">external service action</span></a><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400">Regardless of the action type that you use, you first need to obtain the request ID. Flow does not have a native &#8220;Get Request ID&#8221; action so you must build your own. To do so, you can write and call a simple invocable Apex class to expose the current request ID to the flow:</span></p>
<pre language="apex">public class FlowCorrelationHelper {
    @InvocableMethod(
        label='Get Correlation ID'
        description='Returns the current Request ID'
    )
    public static List&lt;String&gt; getCorrelationId() {
        return new List&lt;String&gt;{
            Request.getCurrent().getRequestId()
        };
    }
}
</pre>
<p><span style="font-weight: 400">At this point, if you use an HTTP callout action, you can pass the correlation ID as a custom header.</span></p>
<p><span style="font-weight: 400">However, if you use an external service action, you might need to modify your service’s definition manually to add the proper header for passing the correlation ID in your operations. At run time, you won’t be able to create headers that are not part of the service definition.</span></p>
<h2><span style="font-weight: 400">Sample integration scenarios</span></h2>
<p><span style="font-weight: 400">Now that we’ve covered the theory, let’s take a look at four integration scenarios that mix the different techniques for passing request IDs across systems.</span></p>
<h3><span style="font-weight: 400">Scenario 1: Inbound request with custom Apex execution</span></h3>
<p>In this scenario, a third-party system sends a REST API request to the platform with a correlation ID passed in the <code>X-SFDC-REQUEST-ID</code> HTTP header. Upon receiving the request, the correlation ID is automatically retrieved and saved as the current request ID natively by the platform. Some custom Apex code (either a trigger or a custom Apex REST web service) is then executed. As part of the Apex execution, the correlation ID can be retrieved via <code>Request.getCurrent().getRequestId()</code>. Request IDs are saved in the event log file.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205903" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260330115917/Diagram-illustrating-the-first-scenario-e1774893626694.png?w=1000" class="postimages" width="1000" height="338" alt="Diagram illustrating the first scenario." />
			  </span>
			</p>
<h3><span style="font-weight: 400">Scenario 2: Inbound platform event with custom Apex execution</span></h3>
<p>In this second scenario, a third-party system publishes a custom platform event thanks to a REST API call. The request holds a correlation ID in the <code>X-SFDC-REQUEST-ID</code> HTTP header and the custom event holds the same correlation ID in a custom <code>SourceRequestId__c</code> field.</p>
<p><span style="font-weight: 400">Upon receiving the request, the correlation ID is automatically retrieved and saved in the event log file and the platform event is published. The platform event is captured by the platform as part of an after insert Apex trigger.</span></p>
<p>Due to the asynchronous nature of triggers, the code runs in a separate transaction and cannot reuse the original request ID. Instead, the correlation ID is retrieved from the <code>SourceRequestId__c</code> event field and can be propagated further or logged.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205905" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260330115922/Diagram-illustrating-the-second-scenario-e1774893656932.png?w=1000" class="postimages" width="1000" height="424" alt="Diagram illustrating the second scenario." />
			  </span>
			</p>
<h3><span style="font-weight: 400">Scenario 3: REST exchange with asynchronous processing</span></h3>
<p><span style="font-weight: 400">In this third scenario, a third-party system sends a request to the platform. This triggers some asynchronous processing. Once the process completes, the platform sends a request to a third-party system (either the one that triggered the scenario or a different one). The same correlation ID is shared across systems during the entire sequence.</span></p>
<p><span style="font-weight: 400">As in previous scenarios, the correlation ID is passed to the platform via a header. The API request triggers the execution of custom Apex code. The code creates and enqueues a job for some long-running processing.</span></p>
<p><span style="font-weight: 400">Since the queueable job runs asynchronously, a distinct request ID is generated in this context. In order to propagate the original correlation ID, we retrieve the Apex caller’s request ID and pass it to the job via the Queueable constructor.</span></p>
<p><span style="font-weight: 400">Once the job is completed, it runs an Apex callout that sends a request back to the third-party system with the correlation ID passed in the request body or in a header.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205906" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260330115924/Diagram-illustrating-the-third-scenario-with-an-asynchronous-queueable-job-e1774893671125.png?w=1000" class="postimages" width="1000" height="401" alt="Diagram illustrating the third scenario with an asynchronous queueable job." />
			  </span>
			</p>
<p>A variation of this scenario may include a platform event being sent back to the third-party system. This variant still includes asynchronous processing as the event bus assigns its own <code>EventUuid</code> after publish and doesn’t carry the original request ID. Hence, a custom <code>SourceRequestId__c</code> field is required to propagate the correlation ID.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205902" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260330115914/Diagram-illustrating-a-variant-of-the-third-scenario-with-a-platform-event-e1774893608349.png?w=1000" class="postimages" width="1000" height="404" alt="Diagram illustrating a variant of the third scenario with a platform event." />
			  </span>
			</p>
<h3><span style="font-weight: 400">Scenario 4: Flow with an HTTP callout</span></h3>
<p><span style="font-weight: 400">In this scenario, a screen or record flow processes some data, which then makes a callout to a third-party system. Since flows do not have a native &#8220;Get Request ID&#8221; action, an Apex class with an </span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_annotation_InvocableMethod.htm"><span style="font-weight: 400">invocable method</span></a><span style="font-weight: 400"> is required to expose the current Request ID to the Flow. Once retrieved, the request ID can be sent as part of the outbound request either in the body or as a header.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205904" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260330115920/Diagram-illustrating-the-fourth-scenario-with-a-flow-and-an-HTTP-callout-e1774893640894.png?w=1000" class="postimages" width="1000" height="327" alt="Diagram illustrating the fourth scenario with a flow and an HTTP callout." />
			  </span>
			</p>
<p><span style="font-weight: 400">If you are using HTTP Callouts via Flow, you cannot dynamically set headers in Flow Builder. You may need to configure </span><a href="https://help.salesforce.com/s/articleView?id=xcloud.nc_named_creds_and_ext_creds.htm&amp;type=5"><span style="font-weight: 400">external credentials</span></a><span style="font-weight: 400"> with custom headers to manage how metadata is passed, though dynamic injection often requires an Apex invocable action.</span></p>
<p><span style="font-weight: 400">As with the previous scenario, a variation of this scenario may include a platform event being sent back to the third-party system. In this case, the request ID is propagated to the third-party system using a custom event field.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205901" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260330115910/Diagram-illustrating-a-variant-of-the-fourth-scenario-with-a-flow-and-a-platform-event-e1774893593701.png?w=1000" class="postimages" width="1000" height="353" alt="Diagram illustrating a variant of the fourth scenario with a flow and a platform event." />
			  </span>
			</p>
<h2><span style="font-weight: 400">Conclusion</span></h2>
<p><span style="font-weight: 400">The techniques and patterns covered in this post provide a framework for implementing observability across the Salesforce Platform and third-party systems. The platform&#8217;s native request IDs serve as the foundation for end-to-end distributed tracing, and the key to success is consistent propagation across every boundary.</span></p>
<p><span style="font-weight: 400">Once this transmission chain is correctly assembled, you can move beyond siloed logs to gain immediate and deep insights into cross-system interactions. This unified view is critical for efficiently troubleshooting issues and investigating performance bottlenecks, allowing teams to focus on a shared trace rather than wasting time cross-referencing multiple logs by date and time. Implementing these correlation patterns is essential for building and maintaining highly performant and resilient distributed applications.</span></p>
<h2><span style="font-weight: 400">Resources</span></h2>
<ul>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile.htm"><span style="font-weight: 400">EventLogFile documentation</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_System_Request.htm"><span style="font-weight: 400">Request Apex class documentation</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/sforce_api_objects_apievent.htm"><span style="font-weight: 400">ApiEvent documentation</span></a></li>
</ul>
<h1><span style="font-weight: 400">About the authors</span></h1>
<p><b>Sébastien Colladon</b><span style="font-weight: 400"> is a Salesforce Certified Technical Architect (CTA). He loves contributing to the Salesforce ecosystem. He is passionate about his craft. Follow him on </span><a href="http://www.linkedin.com/in/sebastien-colladon"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400"> and check out his </span><a href="https://github.com/scolladon"><span style="font-weight: 400">GitHub projects</span></a><span style="font-weight: 400">.</span></p>
<p><b>Philippe Ozil </b><span style="font-weight: 400">is a Principal Developer Advocate at Salesforce, where he focuses on the Salesforce Platform. He writes technical content and speaks frequently at conferences. He is a full-stack developer and enjoys working with APIs, DevOps, robotics, and VR projects. Follow him on</span><a href="https://x.com/PhilippeOzil"> <span style="font-weight: 400">X</span></a><span style="font-weight: 400">, </span><a href="https://www.linkedin.com/in/philippeozil/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">, and </span><a href="https://bsky.app/profile/pozil.bsky.social"><span style="font-weight: 400">Bluesky</span></a><span style="font-weight: 400">, and check out his</span><a href="https://github.com/pozil"> <span style="font-weight: 400">GitHub projects</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/set-up-cross-system-observability-with-correlation-ids">Set Up Cross-System Observability with Correlation IDs</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/03/set-up-cross-system-observability-with-correlation-ids/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205895</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260331002013/DoubleHeadshot-1-e1774938031745.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260331002013/DoubleHeadshot-1-e1774938031745.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Expose Your Composable Storefront in Page Designer Without ISML</title>
		<link>https://developer.salesforce.com/blogs/2026/03/expose-your-composable-storefront-in-page-designer-without-isml</link>
		<comments>https://developer.salesforce.com/blogs/2026/03/expose-your-composable-storefront-in-page-designer-without-isml#respond</comments>
		<pubDate>Thu, 26 Mar 2026 14:00:15 +0000</pubDate>
		<dc:creator><![CDATA[Katia Hage]]></dc:creator>
				<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[New Developments]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Composable Storefront]]></category>
		<category><![CDATA[Dynamic Component Loading]]></category>
		<category><![CDATA[Headless Commerce]]></category>
		<category><![CDATA[ISML to React Migration]]></category>
		<category><![CDATA[Metadata Cartridge]]></category>
		<category><![CDATA[Page Designer]]></category>
		<category><![CDATA[PWA Kit]]></category>
		<category><![CDATA[React Components]]></category>
		<category><![CDATA[Salesforce B2C Commerce]]></category>
		<category><![CDATA[Storefront Performance]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205876</guid>
		<description><![CDATA[<p>Eliminate duplicate work by building Page Designer components once in React to streamline your workflow and boost storefront performance.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/expose-your-composable-storefront-in-page-designer-without-isml">Expose Your Composable Storefront in Page Designer Without ISML</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">If you&#8217;ve built </span><a href="https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-for-page-designer.html"><span style="font-weight: 400">Page Designer</span></a><span style="font-weight: 400"> components in B2C Commerce for a composable storefront in the past, you had to maintain two implementations, one in </span><a href="https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-isml.html"><span style="font-weight: 400">ISML</span></a><span style="font-weight: 400"> for Page Designer and another in React for your storefront. With </span><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/pwa-framework.html"><span style="font-weight: 400">PWA Kit </span></a><span style="font-weight: 400">v3.17, that duplication is no longer necessary.</span></p>
<p><span style="font-weight: 400"></span><span style="font-weight: 400">You can now expose React-based composable storefront components directly in Page Designer, without maintaining ISML versions. Also, Page Designer now uses dynamic component loading, which loads only components that are in use. The new Page Designer streamlines your workflow and reduces maintenance, saving you development time while boosting storefront performance through dynamic component loading! In fact, the seamless integration of Page Designer with composable storefronts can save significant development time as reported by some early adopters. </span></p>
<p><span style="font-weight: 400">In this post, we explain how the new headless Page Designer architecture works and how to use it in your storefront.</span></p>
<h2><span style="font-weight: 400">Comparing new and old Page Designer approaches</span></h2>
<p><span style="font-weight: 400">The diagram below shows a side-by-side comparison of the data flow in the old approach and the new approach. It illustrates the shift from a legacy ISML-dependent architecture to a direct Page Designer integration with the PWA-Kit based Composable Storefront. The new architecture removes the ISML rendering layer. Page Designer now injects your composable storefront directly, where React components render the page. The </span><i><span style="font-weight: 400">metadata cartridge</span></i><span style="font-weight: 400"> contains reusable pages and components and defines component structure. In the new approach, Page Designer doesn&#8217;t execute server-side JavaScript from the metadata cartridge. Instead, all logic is implemented in the React storefront components.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205882" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260325134746/image1-e1774468079969.png?w=1000" class="postimages" width="1000" height="496" alt="Diagram comparing the old approach (left) vs the new integrated Page Designer approach (right)" />
			  </span>
			</p>
<p><span style="font-weight: 400">Check out the differences between the new headless approach and the old approach of building reusable pages and components in Page Designer. </span></p>
<table>
<tbody>
<tr>
<td><b>Aspect</b></td>
<td><b>Old Approach with ISML</b></td>
<td><b>New Approach</b></td>
</tr>
<tr>
<td><span style="font-weight: 400">Component Definition</span></td>
<td><span style="font-weight: 400">ISML and React components required</span></td>
<td><span style="font-weight: 400">React components only</span></td>
</tr>
<tr>
<td><span style="font-weight: 400">Metadata</span></td>
<td><span style="font-weight: 400">Component metadata in JSON</span></td>
<td><span>Component metadata in JSON with </span><code>arch_type: "headless"</code></td>
</tr>
<tr>
<td><span style="font-weight: 400">Maintenance</span></td>
<td><span style="font-weight: 400">Two implementations (ISML and React)</span></td>
<td><span style="font-weight: 400">Single React implementation</span></td>
</tr>
<tr>
<td><span style="font-weight: 400">Component Registry and Bundle Impact</span></td>
<td><span style="font-weight: 400">Uses a mapping object that you configure manually to register components. All components loaded. No lazy loading.</span></td>
<td><span style="font-weight: 400">Uses a dynamic registry to lazy load components. Only the used components are loaded (code splitting). Loading of non-critical components or resources is deferred until they are needed.</span></td>
</tr>
<tr>
<td><span style="font-weight: 400">Dependencies</span></td>
<td>Requires<code> @salesforce/commerce-sdk-react</code></td>
<td><span>Requires </span><code>@salesforce/storefront-next-runtime </code>in PWA Kit v3.17 or later, in addition to <code>@salesforce/commerce-sdk-react</code></td>
</tr>
<tr>
<td><span style="font-weight: 400">Page Designer React Primitives</span></td>
<td><span style="font-weight: 400">Static regions and components with limited behavior</span></td>
<td><span style="font-weight: 400">Design-mode-aware regions and components rendered by the storefront</span></td>
</tr>
<tr>
<td><span style="font-weight: 400">Server-Side Custom JavaScript</span></td>
<td><span style="font-weight: 400">Executed at run time </span></td>
<td><span style="font-weight: 400">Metadata JavaScript files aren&#8217;t executed. All component logic runs in the React storefront.</span></td>
</tr>
<tr>
<td><span style="font-weight: 400">Preview</span></td>
<td><span style="font-weight: 400">Preview in Page Designer shows only ISML pages. </span><a href="https://developer.salesforce.com/docs/commerce/commerce-solutions/guide/storefront-preview.html"><span style="font-weight: 400">Storefront Preview</span></a><span style="font-weight: 400"> needed for PWA live preview.</span></td>
<td><span style="font-weight: 400">Page Designer can preview PWA Kit storefront.</span></td>
</tr>
</tbody>
</table>
<h2><span style="font-weight: 400">Page Designer new metadata attributes for PWA Kit</span></h2>
<p><span style="font-weight: 400">Page Designer uses a hierarchical architecture with three main concepts: pages, regions, and components. (To learn more, see </span><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/page-designer.html"><span style="font-weight: 400">Integrate Page Designer with PWA Kit</span></a><span style="font-weight: 400"> in the </span><i><span style="font-weight: 400">Composable Storefront Developer Guide</span></i><span style="font-weight: 400">.) Page Designer components are defined using metadata files in the metadata cartridge. When the new headless mode is enabled, the storefront is responsible for rendering the components.</span></p>
<p>To enable headless rendering, two metadata attributes are required: <code>arch_type</code> and <code>route</code>. With the <code>arch_type</code> attribute, Page Designer recognizes your storefront as headless, and doesn&#8217;t render ISML components. The <code>route</code> attribute specifies a page&#8217;s location in the storefront. The route attribute enables Page Designer to open the correct storefront route when rendering the page in edit and preview mode.</p>
<h3><span style="font-weight: 400">The arch_type field in Page Designer metadata files</span></h3>
<p>Add <code>"arch_type": "headless"</code> to Page Designer metadata files such as pages, components, and aspect types.<br />
When <code>arch_type</code> is set to <code>"headless"</code>, preexisting custom JavaScript in Page Designer metadata isn&#8217;t executed—all logic must be in your React components.</p>
<h3><span style="font-weight: 400">The route field in pages</span></h3>
<p>Add the <code>route</code> field to specify a page&#8217;s location in the storefront. For example, <code>"/"</code> for homepage or <code>"/about"</code> for the About page. Also, you can set dynamic routes with parameters. For example, <code>"/product/:productId"</code> or<code> "/category/:categoryId"</code>. Route parameters must match the attribute IDs defined in the page&#8217;s aspect type.</p>
<p><span style="font-weight: 400">To learn more about routes, see </span><a href="https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/page-designer.html#understanding-page-designer-components"><span style="font-weight: 400">Understanding Page Designer Components</span></a><span style="font-weight: 400"> in the </span><i><span style="font-weight: 400">Composable Storefront Guide</span></i><span style="font-weight: 400">.</span></p>
<h3><span style="font-weight: 400">Example page</span></h3>
<p>In this example, we show how to use the <code>headless</code> attribute with the home route of <code>/</code>.</p>
<pre language="json">{
    "name": "Home Page",
    "description": "Main landing page",
    "arch_type": "headless",
    "route": "/",
    "region_definitions": [...]
}
</pre>
<h3><span style="font-weight: 400">Example: Card component metadata</span></h3>
<p><span style="font-weight: 400">In this example, we </span><span style="font-weight: 400">show metadata for a card component with </span><span style="font-weight: 400">the <code>headless</code></span><span style="font-weight: 400"> attribute.</span></p>
<pre language="json">{
    "name": "Content Card",
    "description": "Flexible card component",
    "group": "commerce_assets",
    "arch_type": "headless",
    "region_definitions": [],
    "attribute_definition_groups": [...]

}
</pre>
<p><span style="font-weight: 400">To learn more about Page Designer best practices and permissions, see </span><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/b2c-dev-for-page-designer.html"><span style="font-weight: 400">Page Designer</span></a><span style="font-weight: 400"> in the </span><i><span style="font-weight: 400">B2C Commerce Guide</span></i><span style="font-weight: 400">.</span></p>
<h2><span style="font-weight: 400">Migration Checklist: ISML to Headless</span></h2>
<p><span style="font-weight: 400">To migrate your app to the new headless architecture, follow this sequence of steps.</span></p>
<ol>
<li style="font-weight: 400">Install the required dependency, the <code>@salesforce/storefront-next-runtime</code><span> package.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Update component metadata to headless.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Update page metadata with routes.</span></li>
<li style="font-weight: 400">Update the aspect type metadata for the product detail page (PDP), the product list page (PLP), and search, by adding the <code>arch_type</code> field.</li>
<li style="font-weight: 400"><span style="font-weight: 400">Migrate from manual mapping to the dynamic registry lazy loading.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Set up PageDesignerProvider in the App component.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Create a PageDesignerInit component.</span></li>
<li style="font-weight: 400">Create the <code>useGlobalAnchorBlock</code> Hook.</li>
<li style="font-weight: 400"><span style="font-weight: 400">Add PageDesignerInit to the App.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Deploy and test the storefront.</span></li>
</ol>
<p><span style="font-weight: 400">For details, see </span><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/page-designer.html#migration-steps"><span style="font-weight: 400">Migration Steps</span></a><span style="font-weight: 400"> in the </span><i><span style="font-weight: 400">Composable Storefront Developer Guide</span></i><span style="font-weight: 400">. </span></p>
<h2><span style="font-weight: 400">Conclusion</span></h2>
<p><span style="font-weight: 400">The new headless Page Designer architecture removes one of the biggest pain points when building composable storefronts: maintaining duplicate ISML implementations. Developers can now build Page Designer components once in React, while merchants continue to use the familiar Page Designer UI to compose pages. This approach reduces maintenance, simplifies development workflows, and improves performance through dynamic component loading.</span></p>
<h2><span style="font-weight: 400">Resources</span></h2>
<ul>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-for-page-designer.html"><span style="font-weight: 400">B2C Commerce Guide: Page Designer</span></a><span style="font-weight: 400"> </span></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/page-designer.html"><span style="font-weight: 400">Composable Storefront Developer Guide: Integrate Page Designer with PWA Kit</span></a></li>
</ul>
<h2><span style="font-weight: 400">About the Authors</span></h2>
<p><b>Maria Juraschik</b><span style="font-weight: 400"> is a Lead Software Engineer at Salesforce, working on Page Designer and Content Management.</span></p>
<p><b>Katia Hage</b><span style="font-weight: 400"> is a Lead Technical Writer at Salesforce. Katia writes documentation for storefront solutions for Commerce Cloud. Previously, Katia also covered documentation and Trailhead for the Salesforce Platform and Data 360.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/expose-your-composable-storefront-in-page-designer-without-isml">Expose Your Composable Storefront in Page Designer Without ISML</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/03/expose-your-composable-storefront-in-page-designer-without-isml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205876</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260325134454/Expose-Your-Composable-Storefront-in-Page-Designer-e1774467925262.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260325134454/Expose-Your-Composable-Storefront-in-Page-Designer-e1774467925262.png?w=1000" medium="image" />
	</item>
		<item>
		<title>The Salesforce Developer’s Guide to TDX 2026</title>
		<link>https://developer.salesforce.com/blogs/2026/03/the-salesforce-developers-guide-to-tdx-2026</link>
		<comments>https://developer.salesforce.com/blogs/2026/03/the-salesforce-developers-guide-to-tdx-2026#respond</comments>
		<pubDate>Tue, 24 Mar 2026 15:01:20 +0000</pubDate>
		<dc:creator><![CDATA[Sarah Welker]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Agentforce Vibes]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Salesforce Events]]></category>
		<category><![CDATA[Salesforce Releases]]></category>
		<category><![CDATA[Agentforce 360]]></category>
		<category><![CDATA[Agentic Enterprise]]></category>
		<category><![CDATA[developer community]]></category>
		<category><![CDATA[lwc]]></category>
		<category><![CDATA[Real-Time Search API]]></category>
		<category><![CDATA[salesforce flow]]></category>
		<category><![CDATA[Slack]]></category>
		<category><![CDATA[TDX26]]></category>
		<category><![CDATA[Vibe Coding]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205846</guid>
		<description><![CDATA[<p>Build the Agentic Enterprise. Join us at TDX 2026, April 15-16, in San Francisco or on Salesforce+.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/the-salesforce-developers-guide-to-tdx-2026">The Salesforce Developer’s Guide to TDX 2026</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">Calling all Salesforce Developers: it’s time to build the Agentic Enterprise. At </span><a href="https://www.salesforce.com/tdx/register/?&amp;utm_source=blog&amp;utm_medium=organic_social&amp;utm_campaign=TDX26_Dev_Blog_RegLaunch_IP&amp;d=701ed00000zwR6SAAU"><span style="font-weight: 400">TDX</span></a><span style="font-weight: 400"> on April 15-16, 2026, you’ll experience the future of software and learn how to build it with two immersive days of 400+ deep technical sessions, hands-on training, 100+ live product demos, and direct access to Salesforce engineers and product experts shaping what’s next. </span></p>
<p><span style="font-weight: 400">Be at the forefront of the largest technological shift in decades and get hands-on with the latest tools, features, and best practices to build the next generation of apps and agents. Whether you’re attending in person or tuning in virtually on </span><a href="https://www.salesforce.com/plus/experience/tdx_2026?&amp;utm_source=blog&amp;utm_medium=organic_social&amp;utm_campaign=TDX26_Devs_Blog_RegLaunch_SF+&amp;d=701ed000011mNZAAA2"><span style="font-weight: 400">Salesforce+</span></a><span style="font-weight: 400">, we’ve curated our top recommendations to help you jumpstart your agentic AI journey while maximizing your time at TDX 2026. </span></p>
<p><span style="font-weight: 400">With </span><a href="https://reg.salesforce.com/flow/plus/tdx26/agendabuilder/page/agendabuilder?&amp;utm_source=blog&amp;utm_medium=organic_social&amp;utm_campaign=TDX_Blog_Devs_AgendaBuilder_IP&amp;d=701ed000016U8ltAAC"><span style="font-weight: 400">Agenda Builder</span></a><span style="font-weight: 400"> live, now’s the time to start bookmarking your must-attend sessions to plan your perfect two days</span><span style="font-weight: 400">.</span></p>
<h2><b>Experience the big moments and must-see keynotes</b></h2>
<p><span style="font-weight: 400">Get started by bookmarking the event’s can&#8217;t-miss sessions, including a visionary keynote, Hackathon Showdown, and an exciting product roadmap discussion. Add these sessions to your agenda if you’re attending in person, and follow the livestream on </span><a href="https://www.salesforce.com/plus/experience/tdx_2026?&amp;utm_source=blog&amp;utm_medium=organic_social&amp;utm_campaign=TDX26_Devs_Blog_RegLaunch_SF+&amp;d=701ed000011mNZAAA2"><span style="font-weight: 400">Salesforce+</span></a><span style="font-weight: 400"> if you’re joining remotely.</span></p>
<h3>TDX Main Keynote</h3>
<p><span style="font-weight: 400">Discover how to build your Agentic Enterprise with Salesforce and unlock the power of humans and agents driving customer success together.<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1767708938892001U7SC">Add to your agenda</a><br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4bb.png" alt="💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://www.salesforce.com/plus/experience/tdx_2026/tdx-2026-main-keynote">Watch on Salesforce+</a></span></p>
<h3>True to the Core</h3>
<p><span style="font-weight: 400">Join Co-Founder Parker Harris and Salesforce product leaders to hear the latest Agentforce 360 roadmap highlights, followed by a live Q&amp;A. This is a unique opportunity to ask your questions and get answers directly from the experts.<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1768431561711001kqY8">Add to your agenda</a><br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4bb.png" alt="💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://www.salesforce.com/plus/experience/tdx_2026/true-to-the-core-tdx-2026">Watch on Salesforce+</a></span></p>
<h3>TDX Hackathon Showdown</h3>
<p><span style="font-weight: 400">Watch finalists pitch Agentforce solutions to esteemed judges for a $50,000 prize. Discover how these innovators are building the future of the Agentic Enterprise.<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1768431587636001ktA1">Add to your agenda</a><br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4bb.png" alt="💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://www.salesforce.com/plus/experience/tdx_2026/tdx-hackathon-showdown">Watch on Salesforce+</a></span></p>
<h2><b>Learn how to build the Agentic Enterprise in the Campground</b></h2>
<p><span style="font-weight: 400">Once you’ve secured your badge, head to the Campground to see the Agentic Enterprise in action. This is where apps, agents, data, and Slack come to life through immersive demos, hands-on experiences, and customer stories highlighting what’s possible with Agentic AI. </span></p>
<h3>Get hands-on with Agentforce Vibes</h3>
<p><span style="font-weight: 400">The Agentforce Vibes area is an immersive, hands-on space designed to help you unlock the power of enterprise vibe coding and experience Agentforce Vibes in action. Participate in a guided, 15-minute hands-on project and build a React app with Agentforce Vibes to earn an exclusive t-shirt. </span></p>
<h3>Dive deeper with product demos at Platform Park</h3>
<p><span style="font-weight: 400">Platform Park features 18 expert-led demos designed to take technical audiences beyond the keynote stage and theater sessions, and into the “how” of building, scaling, and customizing next-generation solutions. Whether you’re looking to deepen what you’ve learned so far at TDX26 or explore specific innovations, you&#8217;ll gain practical insights through guided product demonstrations that sharpen your technical expertise.</span></p>
<h3>Attend introductory sessions at Basecamp Theater</h3>
<p><span style="font-weight: 400">Located in the heart of Platform Park, Basecamp Theater features five repeating sessions that break down the fundamentals of Agentforce, Data 360, and more. Whether you’re a seasoned pro or new to the Salesforce ecosystem, these introductory sessions provide the essential grounding you need to tackle more advanced demos and workshops. Sessions include:</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Introduction to Agentforce</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Introduction to Data 360</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Introduction to Platform</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Introduction to Enterprise Vibe Coding with Agentforce Vibes</span></li>
<li>Agentforce in Slack and MCP Tools in Slackbot</li>
</ul>
<p><span style="font-weight: 400">To find these theater sessions in the </span><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog?&amp;utm_source=blog&amp;utm_medium=organic_social&amp;utm_campaign=TDX26_Dev_Blog_Sessions_IP&amp;d=701ed00000zxlHVAAY"><span style="font-weight: 400">TDX session catalog</span></a><span style="font-weight: 400">, select &#8220;Session Type&#8221; in the left navigation and then select &#8220;Activity&#8221;.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205869" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260324021513/Screenshot-2026-03-24-at-1.14.43-AM-e1774340134538.png?w=1000" class="postimages" width="1000" height="662" alt="TDX 2026 session catalog with the session type &quot;Activity&quot; checked." />
			  </span>
			</p>
<h3>Test your skills at Camp Mini Hack</h3>
<p><span style="font-weight: 400">Visit Camp Mini Hack to get hands-on with Agentforce and earn exclusive prizes. Designed for all skill levels, these 30-minute challenges focus on building intelligent agents, automating complex workflows, and integrating data across the Agentforce 360 Platform.</span></p>
<h3>Explore The Agentic Enterprise</h3>
<p><span style="font-weight: 400">Visit The Agentic Enterprise to see how global leaders are building the future through immersive stories that showcase real-world enterprise success in Agentforce City. This is your destination to get &#8220;under the hood&#8221; with technical specifications and implementation details from teams already managing agents at scale. From autonomous service to complex workflow chaining, you’ll find the practical insights needed to construct your own agentic future.</span></p>
<h3>Scale faster with Agentforce Consultations</h3>
<p><span style="font-weight: 400">Agentforce Consultations</span> <span style="font-weight: 400">connect you with technical experts to translate product capability into a practical, validated build plan. This is your opportunity to solve technical blockers and walk away with the specific technical specifications needed to maintain momentum the minute you’re back to work.</span></p>
<h3>Build your Agentic Enterprise at the Agentforce Zone</h3>
<p><span style="font-weight: 400">Explore the full lifecycle of trusted, autonomous AI agents at the Agentforce Zone</span><b>, </b><span style="font-weight: 400">featuring six specialized booths and one featured Mega Demo. This is the space to move beyond theory and see how data, human judgment, and autonomous AI agents come together in production. Whether you’re looking to master Agentforce Studio, explore workflow chaining, or dive into Agentforce Observability, you’ll find the technical immersion needed to build and govern real-world enterprise systems. </span></p>
<h3>Unify your Agentic Enterprise with Slack</h3>
<p><span style="font-weight: 400">Experience Slack as the front door to Salesforce, apps, and agents. This interactive journey transforms traditional demos into a hands-on adventure where you’ll see how Slack and the Real-Time Search API turn isolated tools into collaborative teammates. Chat with Slackbot using your unique context, build with Agentforce agents, and explore native automations with Salesforce Flow and Workflow Builder. Complete the journey to earn an exclusive TDX26 Slackbot plushy.</span></p>
<h2><b>Skill up with developer sessions</b></h2>
<p><span style="font-weight: 400">Developer sessions are your opportunity to learn directly from product experts, Salesforce Developer Advocates, and peers building the Agentic Enterprise. These sessions cover technical deep dives, real-world implementations, and innovative solutions across the Agentforce 360 Platform. Join us to sharpen your skills and deliver production-ready solutions at scale. </span></p>
<p><span style="font-weight: 400">To find developer-focused sessions in the </span><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog?&amp;utm_source=blog&amp;utm_medium=organic_social&amp;utm_campaign=TDX26_Dev_Blog_Sessions_IP&amp;d=701ed00000zxlHVAAY"><span style="font-weight: 400">TDX session catalog</span></a><span style="font-weight: 400">, select “Role” in the left navigation and then select “Developer”.<br />

			  <span class="postimagessection_specify alignnone size-medium wp-image-205871" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260324021724/Screenshot-2026-03-24-at-1.16.45-AM-e1774340262672.png?w=1000" class="postimages" width="1000" height="651" alt="TDX 2026 session catalog with Developer role box checked." />
			  </span>
			<br />
</span></p>
<h3>Agentforce and AI integration sessions</h3>
<p><span style="font-weight: 400">Master Agentforce Vibes and vibe coding with these essential sessions to architect secure, production-ready agents and LWC apps.<br />
</span><b></b></p>
<h4><b>Create High Quality Apps with Agentforce Vibes</b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> Master the creation of high-quality applications using Agentforce Vibes for instant generation and validation. This session will deliver practical workflows for integrating Code Analyzer and ApexGuru to ensure your LWC and Apex code is resilient, secure, and production-ready.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> John Belo, Mayuresh Verma, and Jeff Douglas<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1767709938347001tn37">Add this session to your agenda</a></span></p>
<h4><b>Design Rich Inputs and Outputs for Agents<br />
</b></h4>
<p><b></b><b>What to expect:</b><span style="font-weight: 400"> Move from building basic, text-heavy chatbots to delivering high-quality, streamlined conversational experiences. Master Lightning Type Overrides to eliminate frustrating back-and-forth dialogue and harness LWC-driven interactions that drive successful Agentforce adoption.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Charles Watkins<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1769711014854001oumV">Add this session to your agenda</a></span></p>
<h4><b>Build Enterprise-Ready Apps with Grounded Vibe Coding<br />
</b></h4>
<p><b></b><b>What to expect:</b><span style="font-weight: 400"> ​​Bridge the &#8220;Context Gap&#8221; by integrating the Salesforce API Context, Metadata Experts, and Unified Catalog into your development lifecycle. Master the technical engine that transforms AI-generated output into trusted, production-grade metadata through real-world architectural patterns.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Gonzalo Gambino and Sally El Ghoul<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1768776743306001RnSk">Add this session to your agenda</a></span></p>
<h3>Agentforce 360 Platform sessions</h3>
<p><span style="font-weight: 400">Scale the Agentic Enterprise with these essential sessions to master core platform innovations, advanced Apex patterns, and modern API security.</span></p>
<h4><b>Enhancing API Security with SOAP API Login Retirement<br />
</b><b></b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> Modernize your integration strategy by migrating from legacy SOAP login methods to secure, modern authentication standards. This session provides the architectural blueprint required to audit existing integrations, implement robust authentication flows, and ensure your APIs remain secure as support for legacy login ends.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Jeremy Westerman<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770769387920001lClx">Add this session to your agenda</a></span></p>
<h4><b>Deep Dive into Apex Best Practices for Apps and Agents</b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> ​​Master advanced Apex patterns designed for enterprise-scale agents and applications. You will learn to architect for concurrency, implement robust exception logging, and optimize trigger performance to ensure your code remains resilient and efficient as agent interactions scale.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Daniel Ballinger, Markus Neubrand, Mitch Spano, and Peter Churchill<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770777032201001i2zG">Add this session to your agenda</a></span></p>
<h4><b>Platform Integration Championship Live<br />
</b><b></b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> Put your integration skills to the test in a fast-paced, live game show format. Compete against your peers to showcase your expertise in APIs, external services, and event-driven architectures, with a prize for the champion who demonstrates the sharpest technical knowledge.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Tyson Read, Raj Advani, and Jeremy Westerman<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1768598582666001Cp4i">Add this session to your agenda</a></span></p>
<h3>Roadmap sessions</h3>
<p><span style="font-weight: 400">Align your long-term strategy with these essential sessions to get an exclusive look at the future of Data 360, LWC, and Agentforce.</span></p>
<h4><b>Salesforce Developer Tools Roadmap: Vibe Coding, MCP and ALM</b></h4>
<p><b>What to expect: </b><span style="font-weight: 400">Get an exclusive look at the future of our developer tooling, covering the latest advancements in Vibe Coding, MCP, and ALM. This session will provide the roadmap for the technologies you need to build, test, and deploy resilient agents and apps at scale.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Dan Fernandez and Karishma Lalwani<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770702511000001XggD">Add this session to your agenda</a></span></p>
<h4><b>Apex Roadmap: What’s New and What’s Coming</b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> This must-see roadmap session offers an exclusive look at the future of Apex, including upcoming enhancements engineered for agents. You will gain critical updates on security models and asynchronous limits, equipping you to build efficient, scalable code on the Agentforce 360 Platform.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Daniel Ballinger and Markus Neubrand<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770065594397001P4G7">Add this session to your agenda</a></span></p>
<h4><b>Explore the Agentforce Roadmap</b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> Review the strategic trajectory of the Agentforce 360 Platform. This session outlines upcoming innovations in autonomous agent capabilities, governance frameworks, and data integration patterns, providing the architectural foresight needed for your enterprise deployments.<br />
</span><span style="font-weight: 400"><strong>Featured speakers: </strong>Austin Javellana, Will Matteson, Deepak Mukunthu, and Shiv Ramanna<br />
</span><span style="font-weight: 400"><strong></strong></span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770418593999001UUk4">Add this session to your agenda</a></span></p>
<h4><b>Explore the Data 360 Roadmap for Developers</b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> Gain technical insight into the evolution of Data 360, the foundational data layer of the Agentforce 360 Platform. Get a peek at upcoming enhancements in data ingestion pipelines, as well as learn about identity resolution and semantic modeling, so you can build scalable data foundations that ground your agents in trusted, real-time context.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Pradeep Krishna, Jitin Mehndiratta, and William Yeh<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1771006992458001gliK">Add this session to your agenda</a></span></p>
<h4><b>LWC Roadmap: What&#8217;s New and What&#8217;s Coming</b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> Explore the LWC roadmap and future of front-end development. Discover how Micro Frontends, Lightning Out 2.0, and new base components simplify building scalable enterprise applications.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Clay Martin, Shalini Jain, and Ben Sklar<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770688737762001ZDuk">Add this session to your agenda</a></span></p>
<h3>More product sessions</h3>
<p><span style="font-weight: 400">Extend your agentic logic with these essential sessions to automate Data 360 deployments using Data Kits and architect secure solutions using Slack, Zero Trust, and more.</span></p>
<h4><b>Automate Data 360 Deployments: DevOps for Data Kits</b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> You will learn how to implement automated deployment pipelines for Data 360 using Data Kits. Master techniques for managing environment parity, versioning, and lifecycle management for your data assets, ensuring consistent, repeatable configurations across your development and production environments.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Jitin Mehndiratta and William Yeh<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1767594544285001W4nW">Add this session to your agenda</a></span></p>
<h4><b>Build Employee Agents for Slack and Experience Cloud</b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> Architect and deploy employee-facing agents within Slack and Experience Cloud. Learn the patterns for integrating agent logic into these interfaces to ensure secure, context-aware interactions that allow employees to solve complex tasks natively within their flow of work.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Simon Finney<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1768829967693001GhUn">Add this session to your agenda</a></span></p>
<h4><b>Secure AI Integrations with Zero Trust &amp; MCP</b></h4>
<p><b>What to expect:</b><span style="font-weight: 400"> Architect secure AI integrations by leveraging Zero Trust principles and the Model Context Protocol (MCP). You will learn to implement granular access controls, validate agent connections, and enforce security policies across your multi-agent architecture, ensuring data protection and compliance in your enterprise environment.<br />
</span><b>Featured speakers:</b><span style="font-weight: 400"> Aman Sahu and Roushan Kumar<br />
</span><span style="font-weight: 400"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770973570653001knwi">Add this session to your agenda</a></span></p>
<h2><b>More things to look out for at TDX</b></h2>
<h3>Grow your network at Community Cove</h3>
<p><span style="font-weight: 400">Community Cove is the destination for Trailblazers across the ecosystem to connect, network, learn, and have fun. From technical deep dives to joining a slide-free meetup, you’ll find the peers and experts needed to empower your Salesforce journey.</span></p>
<h3>Skill up at Camp Trailhead</h3>
<p><span style="font-weight: 400">Get hands-on with Salesforce in just 20-30 minutes at Camp Trailhead. Whether you’re a new learner or an experienced pro, this is your stop to get hands-on with apps, agents, data, and Slack. Dive into curated Trailhead badges with expert assistance, complete badges to claim exclusive rewards, and celebrate your new skills at the photo booth.</span></p>
<h3>Learn and earn with the TDX Quest</h3>
<p><span style="font-weight: 400">The TDX Quest is an interactive experience designed to help you build practical skills and earn exclusive prizes. This year, we’ve simplified the path to focus on 1:1 engagement at each activation so you can learn at your own pace. Complete the Quest to build your own custom swag bag and celebrate your achievements with the Trailblazer Community.</span></p>
<h3>Explore the Admin and Architect tracks</h3>
<p><span style="font-weight: 400">Looking to diversify your agenda? Check out all the sessions on the Admin and Architect tracks to see how the Agentic Enterprise is being built, governed, and scaled in this new Agentic AI era. Explore the <a href="https://admin.salesforce.com/blog/2026/the-salesforce-admins-guide-to-tdx-2026">Admin</a> and <a href="https://www.salesforce.com/blog/salesforce-architect-guide-tdx-2026">Architect</a> Guides to TDX 2026 to learn more about what TDX has in store for these roles.</span></p>
<h2><b>Quick TDX tips <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /></b></h2>
<h3>Watching from home? Join on Salesforce+</h3>
<p><span style="font-weight: 400">Can’t make it to TDX in person? Select keynotes and sessions will be live-streamed on Salesforce+ during both days of the event. In addition to the live experience, a selection of on-demand episodes will be available for viewing after TDX ends.</span></p>
<p><a href="https://www.salesforce.com/plus/experience/tdx_2026?&amp;utm_source=blog&amp;utm_medium=organic_social&amp;utm_campaign=TDX26_Devs_Blog_RegLaunch_SF+&amp;d=701ed000011mNZAAA2"><span style="font-weight: 400">Register for Salesforce+</span></a><span style="font-weight: 400"> for free to get access to featured content.</span></p>
<h3>Accessibility at TDX <span style="font-weight: 400;font-size: 16px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/267f.png" alt="♿" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h3>
<p><span style="font-weight: 400">We’re dedicated to ensuring an exceptional and accessible experience for all Trailblazers, including those with disabilities and/or medical conditions. If you’re </span><span style="font-weight: 400">unsure if</span><span style="font-weight: 400"> you’ll need support during TDX, reach out to the Disability Help Desk to chat with a dedicated accessibility manager. We can answer questions, provide information, and assist you in determining if further accommodations are necessary. Email us at DisabilityHelpDesk@Salesforce.com. For more accessibility information, visit the</span><a href="https://www.salesforce.com/tdx/faq/"> <span style="font-weight: 400">TDX FAQ</span></a><span style="font-weight: 400"> page.</span></p>
<h2><b>Your TDX 2026 checklist <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></b></h2>
<p><span style="font-weight: 400">TDX 2026 will be here before you know it. Take these steps now to prepare for the big event.</span></p>
<ul>
<li style="font-weight: 400"><a href="https://www.salesforce.com/tdx/register/?&amp;utm_source=blog&amp;utm_medium=organic_social&amp;utm_campaign=TDX26_Dev_Blog_RegLaunch_IP&amp;d=701ed00000zwR6SAAU"><span style="font-weight: 400">Register to attend TDX</span></a><span style="font-weight: 400"> if you haven’t already. </span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Start building your perfect TDX agenda now with </span><a href="https://reg.salesforce.com/flow/plus/tdx26/agendabuilder/page/agendabuilder?=undefined&amp;utm_source=blog&amp;utm_medium=organic_social&amp;utm_campaign=TDX_Blog_Devs_AgendaBuilder_IP&amp;d=701ed000016U8ltAAC"><span style="font-weight: 400">Agenda Builder</span></a><span style="font-weight: 400">. Refer to the sessions in this post to guide you. </span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Download the Salesforce Events app </span><span style="font-weight: 400">in the</span><a href="https://apps.apple.com/us/app/salesforce-events/id1021413071"> <span style="font-weight: 400">App Store</span></a><span style="font-weight: 400"> or</span><a href="https://play.google.com/store/search?q=salesforce%20events&amp;c=apps&amp;hl=en_US&amp;gl=US"> <span style="font-weight: 400">Google Play Store</span></a><span style="font-weight: 400"> to keep track of everything on your agenda in one easy-to-access place.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">If you’re not attending in person, be sure to </span><a href="https://www.salesforce.com/plus/experience/tdx_2026?&amp;utm_source=blog&amp;utm_medium=organic_social&amp;utm_campaign=TDX26_Devs_Blog_RegLaunch_SF+&amp;d=701ed000011mNZAAA2"><span style="font-weight: 400">register and watch on Salesforce+</span></a><span style="font-weight: 400">. </span></li>
</ul>
<p><span style="font-weight: 400">Follow</span><span style="font-weight: 400"> Salesforce Developers </span><span style="font-weight: 400">on</span><a href="https://x.com/SalesforceDevs"> <span style="font-weight: 400">X</span></a><span style="font-weight: 400"> and</span><a href="https://www.linkedin.com/showcase/salesforcedevs/"> <span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400"> for more TDX updates.</span></p>
<h2><b>About the author</b></h2>
<p><b>Sarah Welker</b><span style="font-weight: 400"> is a Developer Marketing Manager at Salesforce. She balances her love for sustainable shopping and Sunday league soccer with a mission to visit every MLB ballpark, while maintaining her status as her kids&#8217; #1 fan on the sidelines. Find her on </span><a href="https://www.linkedin.com/in/sarahwelker47/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/the-salesforce-developers-guide-to-tdx-2026">The Salesforce Developer’s Guide to TDX 2026</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/03/the-salesforce-developers-guide-to-tdx-2026/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205846</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260323235553/TDX26-Developer-Guide-e1774331768998.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260323235553/TDX26-Developer-Guide-e1774331768998.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Build Custom Property Editors and Types for Experience Builder</title>
		<link>https://developer.salesforce.com/blogs/2026/03/build-custom-property-editors-and-types-for-experience-builder</link>
		<comments>https://developer.salesforce.com/blogs/2026/03/build-custom-property-editors-and-types-for-experience-builder#respond</comments>
		<pubDate>Thu, 19 Mar 2026 14:00:18 +0000</pubDate>
		<dc:creator><![CDATA[Sudheer Kumar Reddy Gowrigari]]></dc:creator>
				<category><![CDATA[App Development]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Lightning Web Components]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Component Configuration]]></category>
		<category><![CDATA[Custom Property Editor]]></category>
		<category><![CDATA[Custom Property Type]]></category>
		<category><![CDATA[Experience Builder]]></category>
		<category><![CDATA[lwc]]></category>
		<category><![CDATA[Salesforce Development]]></category>
		<category><![CDATA[UI/UX]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205826</guid>
		<description><![CDATA[<p> Learn how to enhance the Experience Builder configuration experience by creating custom property editors and complex property types for Lightning Web Components.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/build-custom-property-editors-and-types-for-experience-builder">Build Custom Property Editors and Types for Experience Builder</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400;">Make component configuration for your </span><a href="https://help.salesforce.com/s/articleView?id=experience.community_designer_overview.htm&amp;type=5"><span style="font-weight: 400;">Experience Builder</span></a><span style="font-weight: 400;"> users more convenient and intuitive by creating </span><a href="https://developer.salesforce.com/docs/platform/lwc/guide/use-experience-cloud-custom-property-editor-type.html"><span style="font-weight: 400;">custom property editors and types</span></a><span style="font-weight: 400;"> for your custom Lightning Web Components. You can now replace basic text boxes and dropdowns with custom UIs such as date pickers, color selectors, and button groups. This blog post shows you how to make your Lightning Web Components visually interactive and easy to configure.</span></p>
<h2><b>Creating a custom property editor</b></h2>
<p><span style="font-weight: 400;">With custom property editors, you can create any type of UI field for configuring a property value in Experience Builder. For instance, instead of a text field where your users type in a date, you can offer a date selector with a pop-up calendar in the component property panel, where users can click to select a date.</span></p>
<p><span style="font-weight: 400;">Because a custom property editor is simply a Lightning Web Component, creating one is just like creating any other Lightning Web Component, just with a few extra details. Let’s take a look at how to create one, using text alignment as an example.</span></p>
<p><b>Scenario: </b>Say that you&#8217;re working with a custom Lightning Web Component named <code>CustomArticle</code>. For the <code>textAlignment</code> property, instead of the default <code>String</code> editor, you envision having a button group where users can adjust alignment with one click.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205828" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260318153556/A-text-alignment-editor-with-buttons-for-left-center-and-right-alignment.png?w=177" class="postimages" width="177" height="126" alt="A text-alignment editor with buttons for left, center, and right alignment." />
			  </span>
			</p>
<p>To create this button group, you can create a Lightning Web Component that acts as a custom property editor for the <code>textAlignment</code> property of the <code>String</code> type. Let’s call this new custom editor <code>alignmentCPE</code>. To create it, follow these basic steps.</p>
<h3><span style="font-weight: 400;">Step 1: Create a component class</span></h3>
<p>For the <code>alignmentCPE</code> component to act as a custom property editor, it must adhere to the property editor contract. The contract requires your custom property editor component to include certain public properties in its element class: label, value, errors, and schema. See the documentation for more information about <a href="https://developer.salesforce.com/docs/platform/lwc/guide/use-experience-cloud-property-editor-contract.html"><u>the property editor contract</u></a>, including other public properties that it exposes.</p>
<p><span style="font-weight: 400;">Here’s a basic class snippet for creating a component class.</span></p>
<pre language="javascript">export default class AlignmentCPE extends LightningElement {
    @api value;
    @api label;
    @api schema; // Derived from the associated property type.
    @api errors;
    @track buttons = [...]

    handleAlignmentClick(event) {
        const value = event.target.value;
        this.value = value;
        this.dispatchEvent(
            new CustomEvent('valuechange', { detail: { value: this.value } })
        );
    }
}
</pre>
<p>Note the custom event being dispatched by the click handler. The event name must be exactly <code>valuechange</code>, and the detail must include the <code>value</code> property as part of the property editor contract.</p>
<h3><span style="font-weight: 400;">Step 2: Create the component UI</span></h3>
<p>Next, craft a user-friendly UI for your property editor using HTML and CSS, just as you would for other Lightning Web Components.</p>
<p>Here&#8217;s a code snippet for the <code>alignmentCPE</code> component.</p>
<pre language="html">&lt;template&gt;
    &lt;label&gt;Text Alignment&lt;/label&gt;&lt;div&gt;
        &lt;lightning-button-group onclick=&quot;{handleAlignmentClick}&quot;&gt;
            &lt;template&gt;
                &lt;lightning-button-icon-stateful key=&quot;{button.value}&quot; value=&quot;{button.value}&quot; selected=&quot;selected&quot; icon-name=&quot;{button.icon}&quot;&gt;
                &lt;/lightning-button-icon-stateful&gt;
            &lt;/template&gt;
        &lt;/lightning-button-group&gt;
    &lt;/div&gt;&lt;p&gt;
&lt;/p&gt;&lt;/template&gt;
</pre>
<h3><span style="font-weight: 400;">Step 3: Update the component’s metadata configuration</span></h3>
<p>Finally, ensure that the <code>js-meta.xml</code> file of your component recognizes <code>alignmentCPE</code> as a property editor by adding the <code>lightning__PropertyEditor</code> target.</p>
<pre language="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"&gt;
  &lt;apiVersion&gt;66.0&lt;/apiVersion&gt;
  &lt;isExposed&gt;true&lt;/isExposed&gt;
  &lt;masterLabel&gt;Alignment Editor Component&lt;/masterLabel&gt;
  &lt;targets&gt;
    &lt;target&gt;lightning__PropertyEditor&lt;/target&gt;
  &lt;/targets&gt;
&lt;/LightningComponentBundle&gt;
</pre>
<h2><span style="font-weight: 400;">Creating a custom property type</span></h2>
<p><span>While a single custom property editor is powerful, you can go even further.</span> For example, you may have multiple properties on your custom Lightning Web Component, and you may want to group these properties in a specific way, such as in tabs or in accordion sections. Or, you may have multiple properties that you want to reuse in different Lightning Web Components.</p>
<p>In these cases, you can create a custom property type. With a custom property type, you can:</p>
<ul>
<li>Group properties in tabs or accordions</li>
<li>Put multiple properties in a custom property type and reuse this custom type without having to re-create each of these properties for each component</li>
<li>Add more validation rules to certain properties. For example, for a URL field, you can specify which protocols to allow, such as https or http.</li>
</ul>
<p>A custom property type is defined using a new metadata type called <code>LightningTypeBundle</code>. To create a custom property type, follow the steps below.</p>
<p><b>Scenario</b>: Say that you&#8217;re working with your custom Lightning Web Component, <code>CustomArticle</code>. You want to create a complex property type, <code>layoutProperty</code>, that includes sub-properties for <code>borderStyle</code>, <code>borderWeight</code>, <code>borderRadius</code>, <code>layoutHeight</code>, and <code>layoutWidth</code>. You also want to organize these properties on tabs named Borders and Size.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205829" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260318153621/image2.png?w=766" class="postimages" width="766" height="352" alt="(left): Border properties grouped under the Borders tab. (right): Layout properties grouped under the Size tab." />
			  </span>
			</p>
<p><span style="font-weight: 400;">To create this complex type, follow these steps. </span></p>
<h3><span style="font-weight: 400;">Step 1. Structure the LightningTypeBundle</span></h3>
<p>First set up the folder for the new metadata type. Create a <code>lightningTypes</code> folder to describe <code>layoutProperty</code>, the custom property type in this example.</p>
<pre language="text"> 
+--myMetadataPackage
     +--lightningTypes
          +--layoutProperty
              +--experienceBuilder
                  +--editor.json
              +--schema.json
</pre>
<h3><span style="font-weight: 400;">Step 2. Define the schema: schema.json</span></h3>
<p>A <code>schema.json</code> file is integral to defining the structure, type, and validation of a property. By adhering to the <a href="https://json-schema.org/specification"><u>JSON Schema</u></a> specifications, you ensure that the property values that you set for your component align with the necessary structure and format, maintaining data integrity and component functionality.</p>
<p>See our documentation for a <a href="https://developer.salesforce.com/docs/platform/lightning-types/guide/lightning-types-object.html"><u>full list of keywords</u></a> that you can specify in a <code>schema.json</code> file. Unless otherwise noted, the keywords follow the JSON Schema specification.</p>
<p>Here&#8217;s the schema JSON for the complex <code>layoutProperty</code> property type:</p>
<pre language="json">{
    "title": "Layout Properties",
    "lightning:type": "lightning__objectType",
    "properties": {
        "borderStyle": {
            "lightning:type": "lightning__textType",
            "title": "Border Style"
        },
        "borderWeight": {
            "lightning:type": "lightning__integerType",
            "title": "Border Weight (px)"
        },
        "borderRadius": {
            "lightning:type": "lightning__integerType",
            "title": "Border Radius (px)"
        },
        "layoutHeight": {
            "lightning:type": "lightning__integerType",
            "title": "Layout Height (px)"
        },
        "layoutWidth": {
            "lightning:type": "lightning__integerType",
            "title": "Layout Width (px)"
        }
    },
    "required": []
}
</pre>
<p>In the <code>schema.json</code> file, you specify a <code>lightning:type</code> for each property in your complex property type. Salesforce offers several Lightning property types out of the box that act as the basic types. See our documentation for the <a href="https://developer.salesforce.com/docs/platform/lightning-types/references/lightning-types/lightning-types-reference.html"><u>full list of Lightning types</u></a>. Each Lightning property type is associated with a default property editor in Experience Builder, so if you do use one of these property types, you don’t have to create a property editor yourself.</p>
<p>For example, here&#8217;s the default property editor for the Lightning type <code>lightning__dateTimeType</code>.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205830" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260318153722/The-default-property-editor-for-the-Lightning-type-lightning__dateTimeType.png?w=588" class="postimages" width="588" height="344" alt="The default property editor for the Lightning type lightning__dateTimeType." />
			  </span>
			</p>
<h3><span style="font-weight: 400;">Step 3. Define the editor: editor.json</span></h3>
<p>This optional step covers what to do when you want to create a custom property editor for your custom property type. Whereas <code>schema.json</code> defines a property type structure, the optional <code>editor.json</code> file lets you override the property editors for a property and lay out the property as you wish, such as in a vertical layout, on tabs, or in accordion sections.</p>
<p>See our documentation for the <a href="https://developer.salesforce.com/docs/platform/lightning-types/guide/lightning-types-ui-config.html"><u>full list of keywords</u></a> that you can specify in an <code>editor.json</code> file. Unless otherwise noted, the keywords follow the JSON Schema specification.</p>
<p>Here’s an example of an <code>editor.json</code> file for laying out properties on tabs for <code>layoutProperty</code>.</p>
<pre language="json">{
  "editor": {
    "layout": {
      "definition": "lightning/tabSetLayout",
      "children": [
        {
          "definition": "lightning/tabLayout",
          "attributes": {
            "label": "Borders"
          },
          "children": [
            {
              "definition": "lightning/propertyLayout",
              "attributes": {
                "property": "borderStyle"
              }
            },
            {
              "definition": "lightning/propertyLayout",
              "attributes": {
                "property": "borderWeight"
              }
            },
            {
              "definition": "lightning/propertyLayout",
              "attributes": {
                "property": "borderRadius"
              }
            }
          ]
        },
        {
          "definition": "lightning/tabLayout",
          "attributes": {
            "label": "Size"
          },
          "children": [
            {
              "definition": "lightning/propertyLayout",
              "attributes": {
                "property": "layoutHeight"
              }
            },
            {
              "definition": "lightning/propertyLayout",
              "attributes": {
                "property": "layoutWidth"
              }
            }
          ]
        }
      ]
    }
  }
}
</pre>
<h2><b>Linking custom property editors and types to a Lightning Web Component</b></h2>
<p>After you create a custom property editor or custom property type, the final step is to link them to your Lightning Web Component. Here’s an example of an XML configuration that integrates the custom property editor <code>alignmentCPE</code> and the custom property type <code>layoutProperty</code>.</p>
<pre language="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"&gt;
    &lt;apiVersion&gt;66.0&lt;/apiVersion&gt;
    &lt;isExposed&gt;true&lt;/isExposed&gt;
    &lt;targets&gt;
        &lt;target&gt;lightningCommunity__Page&lt;/target&gt;
        &lt;target&gt;lightningCommunity__Default&lt;/target&gt;
    &lt;/targets&gt;
    &lt;targetConfigs&gt;
        &lt;targetConfig targets="lightningCommunity__Default"&gt;
            &lt;!-- Linking the Custom Property Editor for Text alignment--&gt;
            &lt;property name="textAlignment" type="String" editor="c/alignmentCPE" label="Text Alignment" /&gt;            
            &lt;!-- Linking the Custom Property Type for Layout &amp; border style --&gt;
            &lt;property name="layoutProperty" type="c__layoutProperty" label="Layout &amp; border style" /&gt;
        &lt;/targetConfig&gt;
    &lt;/targetConfigs&gt;
    &lt;masterLabel&gt;Custom Article&lt;/masterLabel&gt;
&lt;/LightningComponentBundle&gt;
</pre>
<p><span style="font-weight: 400;">This example shows how to use a custom property editor and custom property type together, but you can choose to use either independently, depending on your component&#8217;s needs.</span></p>
<h2><b>Conclusion</b></h2>
<p><span style="font-weight: 400;">Custom property editors and custom property types empower developers to dramatically improve the configuration experience for users in Experience Builder. By moving beyond basic fields to create intuitive, interactive UIs, you can make your Lightning Web Components easier to configure and reuse. Whether you need fine-grained control over a single property&#8217;s UI with a custom editor, or you need to group and structure multiple related properties with a custom type, these tools give you the flexibility you need to deliver a superior low-code development experience.</span></p>
<h2><b>Resources</b></h2>
<ul>
<li style="font-weight: 400;"><a href="https://developer.salesforce.com/docs/platform/lwc/guide/use-experience-cloud-custom-property-editor-type.html"><span style="font-weight: 400;">Create a Custom Property Editor or Type for a Custom Component in Experience Builder</span></a><span style="font-weight: 400;">: A comprehensive resource for creation through deployment</span></li>
<li style="font-weight: 400;"><a href="https://developer.salesforce.com/docs/platform/lightning-types/overview"><span style="font-weight: 400;">Lightning Types Developer Guide</span></a><span style="font-weight: 400;">: A detailed resource for developing new Lightning Types</span></li>
<li style="font-weight: 400;"><a href="https://github.com/salesforce-experiencecloud/custom-property-editor-code-samples/tree/master/lightningTypeExamples"><span style="font-weight: 400;">Code samples:</span></a><span style="font-weight: 400;"> Ready-to-use sample components</span></li>
</ul>
<h2><b>About the authors</b></h2>
<p><b>Henry Chen</b><span style="font-weight: 400;"> is a Software Engineer on the Salesforce Platform team, working on low-code builders. He enjoys spending his free time playing video games, ice skating, and watching movies.</span></p>
<p><b>Sudheer Kumar Reddy Gowrigari</b><span style="font-weight: 400;"> is an Engineering Manager on the Salesforce Platform team leading the content builder and builder framework areas. Outside work, he loves playing cricket, diving into books, and watching movies.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/build-custom-property-editors-and-types-for-experience-builder">Build Custom Property Editors and Types for Experience Builder</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/03/build-custom-property-editors-and-types-for-experience-builder/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205826</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260318155150/Build-Custom-Property-Editors-and-Types-for-Experience-Builder-e1773870724910.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260318155150/Build-Custom-Property-Editors-and-Types-for-Experience-Builder-e1773870724910.png?w=1000" medium="image" />
	</item>
		<item>
		<title>What’s New in Salesforce Omnistudio Standard Designers</title>
		<link>https://developer.salesforce.com/blogs/2026/03/whats-new-in-salesforce-omnistudio-standard-designers</link>
		<comments>https://developer.salesforce.com/blogs/2026/03/whats-new-in-salesforce-omnistudio-standard-designers#respond</comments>
		<pubDate>Tue, 17 Mar 2026 14:00:25 +0000</pubDate>
		<dc:creator><![CDATA[Sarah Welker]]></dc:creator>
				<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Salesforce Releases]]></category>
		<category><![CDATA[Data Mapper]]></category>
		<category><![CDATA[developer experience]]></category>
		<category><![CDATA[Flexcards]]></category>
		<category><![CDATA[Integration Procedures]]></category>
		<category><![CDATA[low code]]></category>
		<category><![CDATA[Omniscript]]></category>
		<category><![CDATA[Omnistudio]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Salesforce Platform]]></category>
		<category><![CDATA[Standard Designers]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205806</guid>
		<description><![CDATA[<p>Discover how native Omnistudio Standard Designers eliminate build complexity. Learn to use a streamlined UI and instant activation to enhance your team&rsquo;s build efficiency.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/whats-new-in-salesforce-omnistudio-standard-designers">What’s New in Salesforce Omnistudio Standard Designers</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">We know that many of you rely on </span><a href="https://www.salesforce.com/products/omnistudio/overview/"><b>Salesforce Omnistudio</b></a><span style="font-weight: 400"> every day to build fast and intuitive digital experiences across Salesforce. However, we know that long wait times can be a major headache. We’re talking about that moment when you finish designing a complex Omniscript or Flexcard, click the &#8216;Activate&#8217; button, and then… wait. The process of compiling and deployment can be lengthy. This cuts into your productivity and can be frustrating when you just want to see your changes live.</span></p>
<p><span style="font-weight: 400">The good news? The new </span><a href="https://help.salesforce.com/s/articleView?id=xcloud.os_designers_common.htm&amp;type=5"><b>Omnistudio Standard Designers</b></a><span style="font-weight: 400">, runtime, and components are now built directly into the </span><b>Salesforce Platform</b><span style="font-weight: 400">. This eliminates the old packaged installation process and ensures everything runs natively on the Platform.</span></p>
<h2><b>What are Omnistudio standard designers?</b></h2>
<p><span style="font-weight: 400">The Omnistudio standard designers are tools that run directly on the Salesforce Platform, rather than a separate managed package. This includes runtime components like </span><a href="https://help.salesforce.com/s/articleView?id=xcloud.os_omnistudio_flexcards_24388.htm&amp;type=5"><span style="font-weight: 400">Flexcards</span></a><span style="font-weight: 400">, </span><a href="https://help.salesforce.com/s/articleView?id=xcloud.os_omnistudio_dataraptors_45587.htm&amp;type=5"><span style="font-weight: 400">Data Mappers</span></a><span style="font-weight: 400">, </span><a href="https://help.salesforce.com/s/articleView?id=xcloud.os_omnistudio_integration_procedures_48334.htm&amp;type=5"><span style="font-weight: 400">Integration Procedures</span></a><span style="font-weight: 400">, and </span><a href="https://help.salesforce.com/s/articleView?id=xcloud.os_omniscripts_8355.htm&amp;type=5"><span style="font-weight: 400">Omniscripts</span></a><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400">If Omnistudio is the engine for building these experiences, what are the parts that make it run? It breaks down into four key components: Omniscripts and Flexcards handle the frontend UI experience, while Data Mappers and Integration Procedures manage the backend data orchestration. Together, they bridge the gap between user interaction and backend data processing.</span></p>
<p><span style="font-weight: 400">Example: You might use an </span><b>Omniscript</b><span style="font-weight: 400"> to take a student’s application, collecting their name, GPA, and program choice on a </span><a href="https://www.learnexperiencecloud.com/topic/a081U00000OhIqgQAF/lightning-web-runtime-lwr"><span style="font-weight: 400">Lightning Web Runtime (LWR)</span></a><span style="font-weight: 400"> site. A </span><b>Flexcard</b><span style="font-weight: 400"> on an Experience Site could then show those account details and launch an Omniscript flyout to update that information. Upon submission, a </span><b>Data Mapper</b><span style="font-weight: 400"> loads Omniscript input fields (name, GPA) into the appropriate Student Profile record in Salesforce. If the student enters GPA and tuition information in an Omniscript, an embedded </span><b>Integration Procedure</b><span style="font-weight: 400"> orchestrates the backend logic to calculate scholarship amounts before displaying the results.</span></p>
<h2><b>Omnistudio’s journey: Past, present, and future on Platform</b></h2>
<p><span style="font-weight: 400">To understand the change, we need to rewind a bit. In the past, Omnistudio was managed through packages. If you were using it with  </span><a href="https://help.salesforce.com/s/articleView?id=ind.comms_cpq_and_epc.htm&amp;type=5"><span style="font-weight: 400">Communications, Media, and Energy &amp; Utilities (CME)</span></a><span style="font-weight: 400"> or insurance packages, everything was bundled together. The tools used to build ( designer), basic data components (entities), and the engine that ran scripts (the runtime) all resided within that specific industry package.</span></p>
<p><span style="font-weight: 400">Following the acquisition of </span><a href="https://www.salesforce.com/industries/"><span style="font-weight: 400">Vlocity</span><span style="font-weight: 400">,</span></a><span style="font-weight: 400"> we introduced a new layer called the </span><b>Foundation package</b><span style="font-weight: 400">. This new package housed Omnistudio designers and entities separately. This was a crucial phase because industries such as </span><a href="https://www.salesforce.com/healthcare-life-sciences/health-cloud/"><span style="font-weight: 400">Agentforce Health</span></a><span style="font-weight: 400">, </span><a href="https://www.salesforce.com/education/cloud/"><span style="font-weight: 400">Agentforce Education</span></a><span style="font-weight: 400">, </span><a href="https://www.salesforce.com/manufacturing/cloud/"><span style="font-weight: 400">Agentforce Manufacturing</span></a><span style="font-weight: 400">, and </span><a href="https://www.salesforce.com/financial-services/cloud/"><span style="font-weight: 400">Agentforce Financial Services (FS)</span></a><span style="font-weight: 400"> could install the Omnistudio package directly without needing the older CMT or INS packages.</span></p>
<p><span style="font-weight: 400">Today, Omnistudio is a native, deeply integrated part of the Salesforce Platform. With this transition, you no longer need to install separate packages. Once you enable your industry license (which includes Omnistudio licenses), the designers and runtime are available immediately. There’s no need to rely on packages, so you&#8217;re always using the fastest and latest version.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205810" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260313162809/An-infographic-showing-the-evolution-of-the-all-new-Omnistudio-on-Platform-e1773440909575.png?w=1000" class="postimages" width="1000" height="373" alt="An infographic showing the evolution of the all-new Omnistudio on Platform." />
			  </span>
			</p>
<h2><b>Who can access the new standard designers?</b></h2>
<p><span style="font-weight: 400">Now the question arises: Who can or ‌can&#8217;t access the new designers? We&#8217;ve got you.</span></p>
<ul>
<li style="font-weight: 400"><b>New customers:</b><span style="font-weight: 400"> If your org has a Salesforce Industries license and no existing package, enabling your bundled Omnistudio license gives you direct access to designers and runtime on the Platform. No separate Omnistudio package installation is needed.</span></li>
<li style="font-weight: 400"><b>Existing customers already on the Platform: </b><span style="font-weight: 400">If you already have Omnistudio license enabled, and the org is on the Platform, you&#8217;re in luck. Once the package is updated to the latest version, you&#8217;ll get the standard designers by default.</span></li>
<li style="font-weight: 400"><b style="color: #4a4a4a;font-family: 'Salesforce Sans', Arial, sans-serif">Existing customers still on the package runtime:</b><span style="font-weight: 400"> If your org is on the package runtime, you won&#8217;t automatically get access to standard designers. You&#8217;ll need to take steps to migrate to the Platform runtime to gain access to it.</span></li>
</ul>
<h2><b>Benefits of standard designers</b></h2>
<p><span style="font-weight: 400">To be honest, the package designer’s list page for managing components was often difficult to navigate. Navigating the hierarchical view made it difficult to find what you were working on.  Locating properties and elements while switching between tabs to build and configure a component was troublesome, and moving between versions required multiple steps.</span></p>
<p><span style="font-weight: 400">With the standard designers, you&#8217;re automatically on the best and latest versions. You get immediate access to new features, better performance and user experience (UX), faster Omniscript activation, and security enhancements without waiting for complex package updates. These enhancements allow you to go live faster and enhance productivity. However, it doesn’t stop here. Let’s see some more benefits.</span></p>
<h3><b>Enhanced developer experience with general UI improvements</b></h3>
<p><span style="font-weight: 400">The new Omnistudio standard designers bring a huge leap forward in the daily developer experience. They are more responsive and intuitive, and they are visually aligned with familiar Salesforce interfaces.</span></p>
<h4><b>Salesforce standard list view page</b></h4>
<p><b></b><span style="font-weight: 400">The new designers use traditional Salesforce list views for all four major components.</span></p>
<ul>
<li style="font-weight: 400"><b>Familiar look and feel:</b><span style="font-weight: 400"> The list page follows Salesforce standards, meaning it looks and acts like your familiar Account or Contact pages.</span></li>
<li style="font-weight: 400"><b>Customization power:</b><span style="font-weight: 400"> This is a significant benefit for developers working in teams. Since it is a standard Salesforce list view, you can create custom views and filters, choose which columns to display, and filter components to show only what you are actively working on.</span></li>
<li style="font-weight: 400"><b style="color: #4a4a4a;font-family: 'Salesforce Sans', Arial, sans-serif">Focus on recent work:</b><span style="font-weight: 400"> No more old hierarchical list view. The new list view defaults to showing the most recently modified records, ensuring your current components are front and center.</span></li>
</ul>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205814" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260313162821/The-list-view-page-of-the-standard-designers-e1773441154124.png?w=1000" class="postimages" width="1000" height="368" alt="The list view page of the standard designers." />
			  </span>
			</p>
<h4><b>Organized designer canvas for Flexcard and Omniscript</b></h4>
<p><b></b><span style="font-weight: 400">The new designer canvas has been completely reconfigured to be more intuitive and aligned with experiences like the </span><a href="https://trailhead.salesforce.com/content/learn/modules/lightning_app_builder"><span style="font-weight: 400">Lightning App Builder</span></a><span style="font-weight: 400">. The layout is much more logical and intuitive. For example, creating a Flexcard now takes just three steps: click </span><b>New</b><span style="font-weight: 400">, enter details, and </span><b>Save</b><span style="font-weight: 400">. To select a data source, click the </span><b>Setup</b><span style="font-weight: 400"> icon, scroll to </span><b>Data Source</b><span style="font-weight: 400">, and choose from the dropdown. You will also find:</span></p>
<ul>
<li style="font-weight: 400"><b>Elements on the left:</b><span style="font-weight: 400"> All available elements (such as steps, blocks, Data Mappers, and standard actions) appear neatly on the left side of the canvas. You can drag and drop them directly onto the canvas.</span></li>
<li style="font-weight: 400"><b>Canvas in the center:</b><span style="font-weight: 400"> The canvas where you build and visualize your components is centrally located.</span></li>
<li style="font-weight: 400"><b>Properties on the right:</b><span style="font-weight: 400"> The properties panel automatically loads on the right side of the screen when you drag, drop, or click a component. The necessary configuration options appear instantly when needed.</span></li>
<li style="font-weight: 400"><b>Organized elements:</b><span style="font-weight: 400"> To improve clarity, elements are now grouped logically. For example, Data Mapper actions are clubbed into one section to make them easily understandable.</span></li>
<li style="font-weight: 400"><b style="color: #4a4a4a;font-family: 'Salesforce Sans', Arial, sans-serif">Setup panel access:</b><span style="font-weight: 400">  Less frequently used configurations (such as the setup panel for knowledge articles, currency fields, or cache configurations) are accessible through a top menu or dedicated icon instead of cluttering the workspace.</span></li>
</ul>
<h4><b>Intuitive version management</b></h4>
<p><span style="font-weight: 400">Managing multiple versions of your components within the builder interface is now significantly easier, eliminating unnecessary navigation steps.</span></p>
<ul>
<li style="font-weight: 400"><b>Switching inside the designers:</b><span style="font-weight: 400"> Users can easily switch versions via a drop-down menu located at the top of the designer interface (available for Omniscript, Flexcard, and Integration Procedures). This eliminates the need to return to the main list page to access an older version.</span></li>
<li style="font-weight: 400"><b>Creating new versions:</b><span style="font-weight: 400"> To create a new version, simply click the </span><b>New Version</b><span style="font-weight: 400"> button and confirm.</span></li>
<li style="font-weight: 400"><b style="color: #4a4a4a;font-family: 'Salesforce Sans', Arial, sans-serif">Track older versions:</b><span style="font-weight: 400"> Select </span><b style="color: #4a4a4a;font-family: 'Salesforce Sans', Arial, sans-serif">Manage Versions</b><span style="font-weight: 400"> from the dropdown on the right side of the record to view all versions and drill down as needed (available for Omniscript, Flexcard, Integration Procedure list pages).</span></li>
</ul>
<h4><b>The Design Assistant</b></h4>
<p><span style="font-weight: 400">In the managed package runtime, there were no guardrails or limits set on creativity. Developers could unknowingly create overly complex components that were so large or heavy, they broke the designer itself. This meant developers often didn&#8217;t realize they had exceeded system limits until discovering the issue during activation.</span></p>
<p><span style="font-weight: 400">The Design Assistant reviews your Omniscript or Flexcard with soft guardrails, not hard warnings, during design. Instead of reaching the checkout line (activation) and realizing the cart is too heavy (breaking the component), you’re gently reminded mid-shopping (during design) to split items (heavy child cards) into smaller carts for smoother processing.</span></p>
<p><span style="font-weight: 400">Design Assistant provides two types of feedback: </span></p>
<ul>
<li style="font-weight: 400"><b>Information messages:</b><span style="font-weight: 400"> Displayed when designs approach system limits. For example, a data table component is approaching the 500-row limit. These act as early warnings.</span></li>
<li style="font-weight: 400"><b style="color: #4a4a4a;font-family: 'Salesforce Sans', Arial, sans-serif">Warning messages:</b><span style="font-weight: 400"> Displayed when the design exceeds recommended limits, signaling that the component may be too complex.</span></li>
</ul>
<h3><b>Component-specific design transformations</b></h3>
<p><span style="font-weight: 400">Through component-specific enhancements, the standard environment is now more responsive, intuitive, and developer-friendly. This shift allows you to spend less time managing the tools and more time delivering meaningful digital experiences.</span></p>
<h4><b>Instant activation and creation speed</b></h4>
<p><span style="font-weight: 400">In the package designers, activating an Omniscript required activation, compilation, and deployment. It was a time-consuming bottleneck that disrupted workflow.</span></p>
<p><span style="font-weight: 400">With the new designers:</span></p>
<ul>
<li style="font-weight: 400"><b>Activation</b><span style="font-weight: 400"> for Omniscripts, Flexcards, and Integration Procedures is nearly instantaneous.</span></li>
<li style="font-weight: 400"><b>Performance</b><span style="font-weight: 400"> is up to nine times faster than the legacy package.</span></li>
<li style="font-weight: 400"><b>Creation</b><span style="font-weight: 400"> of Omniscripts and Flexcards is up to six times faster.</span></li>
<li style="font-weight: 400"><b>Flexcard creation</b><span style="font-weight: 400"> now requires just two clicks: </span><b>New</b><span style="font-weight: 400"> and </span><b>Save</b><span style="font-weight: 400">.</span></li>
</ul>
<p><b>Note:</b><span style="font-weight: 400"> All data presented above is derived from internal testing.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205813" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260313162819/Salesforce-Omniscript-Builder-page-showing-a-multistep-guided-process-e1773441137665.png?w=1000" class="postimages" width="1000" height="515" alt="Salesforce Omniscript Builder page showing a multistep guided process." />
			  </span>
			</p>
<h4><b>Integration Procedure</b><b> Designer</b></h4>
<p><span style="font-weight: 400">The Integration Procedure Designer has undergone significant visual and functional upgrades. The older Angular-based package designer was simply not as intuitive. It dumped you directly onto a blank canvas without guidance on where to start. Even dragging elements was clunky and frustrating.</span></p>
<p><span style="font-weight: 400">Now, when you click </span><b>New</b><span style="font-weight: 400">, you are prompted to enter a Name, Type, Subtype, and Description. After saving, the designer opens in a new browser tab with a playground-type structure. Once you land on the designer&#8217;s canvas, you immediately see a </span><b>Plus (+)</b><span style="font-weight: 400"> icon indicating where to begin adding components. This structure is much more visual and clearly shows the flow of data.</span></p>
<p><span style="font-weight: 400">The new Integration Procedure interface also introduces several key usability enhancements such as:</span></p>
<ul>
<li style="font-weight: 400"><b>Easy component setup:</b><span style="font-weight: 400"> Add components using Plus (+) icons between cards. The properties panel appears instantly in the right tray for configuration, and you can view the Type and Subtype through the gear icon in settings.</span></li>
<li style="font-weight: 400"><b>Visual connectors:</b><span style="font-weight: 400"> After adding components, </span><a href="https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_connectors_salesforce_group.htm&amp;language=en_US&amp;type=5"><span style="font-weight: 400">connectors</span></a><span style="font-weight: 400"> automatically appear between components, clearly displaying execution flow. Since Integration Procedures are headless, these connectors make data flow transparent and easy to understand.</span></li>
<li style="font-weight: 400"><b>Easy manipulation:</b><span style="font-weight: 400"> Use drag-and-drop functionality to add components, shuffle them within the canvas, and rearrange them easily.</span></li>
<li style="font-weight: 400"><b>Undo/Redo: </b><span style="font-weight: 400">To make development easier, we&#8217;ve introduced undo and redo options.</span></li>
<li style="font-weight: 400"><b>Explicit saving:</b><span style="font-weight: 400"> Changes (like dragging a component or adding an action) require clicking an explicit Save button to ensure they are intentional.</span></li>
<li style="font-weight: 400"><b style="color: #4a4a4a;font-family: 'Salesforce Sans', Arial, sans-serif">Intuitive preview:</b><span style="font-weight: 400"> Entering ‌preview mode and executing your Integration Procedures now includes color indicators to show which action was successful and which component failed during execution, significantly improving troubleshooting.</span></li>
</ul>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205812" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260313162815/Integration-Procedure-Designer-interface-with-TransactionLoop-element-open-on-the-canvas-e1773441122763.png?w=1000" class="postimages" width="1000" height="484" alt="Integration Procedure Designer interface with TransactionLoop element open on the canvas." />
			  </span>
			</p>
<h4><b>Data Mapper Designer</b></h4>
<p><span style="font-weight: 400">The Data Mapper, an essential backend tool for Omnistudio, handles data extraction, loading, and transformation. </span></p>
<p><span style="font-weight: 400">The first thing you will notice is the visual upgrade. The new Data Mapper UI visually aligns with the new Integration Procedure Designer, ensuring a consistent experience across backend components.</span></p>
<p><span style="font-weight: 400"></span><span style="font-weight: 400">Key improvements include:</span></p>
<ul>
<li style="font-weight: 400"><b>Select interface:</b><span style="font-weight: 400"> Start by selecting an interface type (such as Extract or Load), then use the Plus (+) icon to add objects and formulas intuitively.</span></li>
<li style="font-weight: 400"><b>Connectors:</b><span style="font-weight: 400"> Link elements using connectors, with options to move rows up or down or insert rows within a clean table structure. </span></li>
<li style="font-weight: 400"><b>The new table view:</b><span style="font-weight: 400"> The table-based layout resembles JSON paths and outputs, making mappings easier to visualize and configure.</span></li>
<li style="font-weight: 400"><b style="color: #4a4a4a;font-family: 'Salesforce Sans', Arial, sans-serif">Transformation setup:</b><span style="font-weight: 400"> This visual alignment makes defining how data is extracted, transformed, and loaded more accurate, saving significant time during configuration.</span></li>
</ul>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205811" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260313162812/Data-Mapper-Designer-with-an-Extract-Object-element-on-the-canvas-e1773441107755.png?w=1000" class="postimages" width="1000" height="484" alt="Data Mapper Designer with an Extract Object element on the canvas." />
			  </span>
			</p>
<h2><b>Start exploring the standard designers today</b></h2>
<p><span style="font-weight: 400">The new Omnistudio standard designers mark a massive architectural shift, delivering instant activation with a simplified, intuitive canvas, and essential future-proofing for next-generation features. Now is the perfect time to ensure your organization is positioned to benefit from these improvements. Sign up today.</span></p>
<h2><b>Resources</b></h2>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Learn about </span><a href="https://trailhead.salesforce.com/content/learn/modules/omnistudio-development-essentials"><span style="font-weight: 400">Omnistudio Development Essentials</span></a><span style="font-weight: 400"> on Trailhead</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Watch a video to learn how to </span><a href="https://youtu.be/x7kwVCFpKyM?si=k7V_kyNXkUpMv1q4"><span style="font-weight: 400">Build Low-Code Digital Experiences with All-New Omnistudio</span></a></li>
<li style="font-weight: 400"><span style="font-weight: 400">Learn about </span><a href="https://trailhead.salesforce.com/content/learn/modules/omnistudio-omniscript-fundamentals"><span style="font-weight: 400">Omnistudio Omniscript Fundamentals</span></a><span style="font-weight: 400"> on Trailhead</span></li>
</ul>
<h2><b>About the author</b></h2>
<p><span style="font-weight: 400"><strong>Krishna Kruthiventi</strong> is a Senior Product Manager at Salesforce, specializing in Industries Cloud solutions. His primary focus is on the Omnistudio product suite, simplifying complex enterprise workflows and elevating Omnistudio to deliver best-in-class, consumer-grade digital experiences for both administrators and end users. Follow him on </span><a href="https://www.linkedin.com/in/krishna-deepak-kruthiventi-08339183/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span><span style="font-weight: 400"><br />
</span><span style="font-weight: 400"><br />
</span><span style="font-weight: 400"><strong>Payal Verma</strong> is a Content Marketing Analyst at Salesforce with over four years of professional experience in product, brand, and content marketing. She has worked across B2B and B2C markets, developing and executing content strategies for a wide range of formats, including blogs, social media, scripts, e-books, guides, etc. Follow her on </span><a href="https://www.linkedin.com/in/payal-verma-writer-marketer/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/03/whats-new-in-salesforce-omnistudio-standard-designers">What’s New in Salesforce Omnistudio Standard Designers</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/03/whats-new-in-salesforce-omnistudio-standard-designers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205806</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260313170913/Generic-C-e1773443366479.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260313170913/Generic-C-e1773443366479.png?w=1000" medium="image" />
	</item>
	</channel>
</rss>
