Skip to main content
Gruppo in evidenza

* Data 360 *

Welcome! This group is dedicated to your success with Salesforce Data 360. Join the conversation here to stay up to date on the product, learn best practices, and everything in between. Use this group to review resources, ask questions, help each other, and share experiences. --------------------------------------- This group is maintained and moderated by Salesforce employees. The content received in this group falls under the official Forward-Looking Statement: http://investor.salesforce.com/about-us/investor/forward-looking-statements/default.aspx

I recently completed Data 360 certificate and I documented what I learned and how I understood the key concepts.  

 

This will help you understand Data360 ecosystem better:  

https://saisocial.substack.com/p/data-cloud-consultant-how-to-pass

 

 

 

3 commenti
0/9000

Hello Trailblazers, 

 

Navigating the Data 360 credit consumption model can be challenging when trying to map overall credit usage back to specific transforms, refreshes, or pipeline resources.

To help address this gap, I recently authored an article for the Salesforce Architects blog outlining a practical credit feedback loop designed to help you:

  • Test Build Logic: Validate transforms against filtered data before running full-scale datasets.
  • Pinpoint Usage: Trace consumption back to specific architecture components rather than relying on aggregate totals.
  • Right-Size Cadence: Align refresh schedules directly with business requirements to avoid unnecessary credit burn.
  • Architect Visibility: Embed credit monitoring directly into your system design from day one.

📖 Read the full article: https://sforce.co/4A0Ae46

How is your team currently tracking and optimizing Data 360 credit usage in your architecture? I’d love to connect and hear your approaches in the comments!  

#Data360  #Salesforce Admin #Salesforce #Data Management #Data Cloud 

0/9000

Hi everyone,

 

I’ve encountered a specific behavior in

Salesforce Data Cloud Streaming Data Transforms (SDT) that isn't explicitly detailed in the official documentation regarding record persistence. I would like to understand the underlying logic or if this is the intended "Streaming SQL" behavior for Data Cloud.

 

The Scenario:

  • Source DLO (sessionEvent): Category: Engagement. Primary Key: UUID (unique for every single event).
  • Fields: cookie__c (Business Key) and type__c (Event type).
  • Streaming Data Transform Logic: SQL

SELECT

cookie__c AS id__c, -- Target Primary Key

cookie__c AS cookie__c

FROM sessionEvent

WHERE type__c = 'login'

 

Target DLO (anonymousProfiles): Category: Profile. Primary Key: id__c (mapped from cookie__c).

The Observed Behavior:

  1. Event A arrives: { id__c: 'uuid-1', cookie__c: 'cookie001', type__c: 'login' }.
    • Result: A record with ID cookie001 is correctly created in the Target DLO.
  2. Event B arrives: { id__c: 'uuid-2', cookie__c: 'cookie001', type__c: 'navigation' }.
    • Result: The record cookie001 is automatically deleted from the Target DLO.

The Mystery: Even though the Source DLO has unique UUIDs as Primary Keys (meaning Event B is NOT an update of Event A but a new record), the Streaming engine seems to be performing a "Retraction".

It appears that when a new event for the same "Business Key" (cookie__c) enters the stream but fails the WHERE clause, the engine interprets this as a state change for that ID and issues a Tombstone/Delete

command to the Target DLO to maintain the "integrity" of the SQL definition. 

 

Questions:

  1. Is this behavior documented? Does the SDT engine treat the Target PK as a stateful materialized view that "retracts" records if the latest event for a business key doesn't meet the criteria?
  2. Is there a way to make the SDT "Append-only" for the target DLO without using composite keys (e.g., cookie + type) to prevent deletions?
  3. Does the engine keep an internal state of business keys even if the Source DLO is categorized as Engagement?

I've already solved this using a composite key in the target, but I want to understand the "why" behind this automatic deletion to design better data architectures in the future.

 

Has anyone else observed this "Silent Deletion" or "Retraction" logic?

1 risposta
  1. 3 set, 16:31

    Hi Juan Pablo, 

     

    Great diagnosis — and yes, this is the actual (if under-documented) mechanics of Streaming Data Transforms. 

     

    Answering your three questions: 

     

    1. Is this documented? Not explicitly with this framing, but it follows from how SDT works under the hood: it behaves like a continuously materialized view keyed on the target Primary Key, not a simple append/insert stream. The engine treats your target PK (id__c/cookie__c) as "the current state for this key, per the transform's SQL definition." When a new source event arrives for that same key and no longer satisfies the WHERE clause, the engine's correct answer to "what does the view look like now for this key?" is "nothing" — so it retracts/deletes the previously materialized row. This is standard streaming materialized-view semantics (the same pattern you'd see in Spark Structured Streaming or ksqlDB), not a bug or hidden special case. 

     

    2. Can you make it append-only without a composite key? Not with a single business-key PK feeding a filtered SELECT — the moment your target PK is purely the business key, the transform is inherently a stateful "latest matching state per key" view, and any later event for that key that fails the filter will retract it. Your composite key fix (cookie + type) is exactly right, because it changes the semantic from "current login state per cookie" to "did this cookie ever have a login event" — each (cookie, type) pair becomes its own independent, append-safe row that no other event can invalidate. 

     

    3. Does it track state even though the source is Engagement-categorized? Yes — the Engagement categorization on the source DLO governs retention/volume handling on the source side, but it doesn't change the transform engine's need to maintain per-target-key state to know whether to insert, no-op, or retract on each new source event. 

     

    So: not a "silent deletion" bug — it's the expected behavior of a stateful streaming view keyed on a business key with a filter, and composite keys are the documented-by-implication way to avoid it. 

     

    Reference:

    https://help.salesforce.com/s/articleView?id=data.c360_a_streaming_transform_considerations.htm&language=en_US&type=5

     

     

    Good instinct isolating this via the composite key — that's the standard pattern for exactly this scenario.

0/9000

Bring your coffee, questions, experiences, and opinions — our inaugural Datablazers Coffee Chat

 is happening next Tuesday, August 25 at 9am PT, and we want you there!  

 

This is your space — a casual, conversational hangout where practitioners in this community explore the questions we're all working through, swap approaches, and learn from each other. Hosted by fellow Datablazers @Mehmet Orun and @Anu Pandey

 

For our first conversation, we're tackling a question a lot of us wrestle with: How do you know where you're going with your data architecture before you start building the pipes?

 

Come ready to think out loud with the group — through open discussion and breakout rooms, we'll dig into the decisions that should come before picking connectors, integration patterns, or platforms. 

 

Register here 

Bring your coffee, questions, experiences, and opinions — our inaugural Datablazers Coffee Chat is happening next Tuesday, August 25 at 9am PT, and we want you there! This is your space — a casual, co 

2 commenti
0/9000

"We can't find the field specified for International Contact on the Account Contact DMO or it isn't configured properly."

Stillhave this error, don't know what to do!

Yhanksfor your help on this superbadge

 

Super badge Data Cloud Fundamentals - Add Data Model Object 

1 risposta
0/9000
3 risposte
  1. 2 set, 18:21

    Thank you for your detailed answers, guys! 

    Actually, I had just added a stream and DMO mapping, then tried Identity Resolution only. I deleted that after testing, and nothing else was left. I checked each and every tab, nothing was there. It just wouldn't let me delete that relation. 

    After trying multiple ways, I found an option in the data model to edit the category. I switched it to "Other," and after that I was able to delete it since the primary key logic became invalid. It looks like a technical glitch, nothing was actually connected. 

    Thanks again for your help! 

0/9000

⭐️ Master the Basics of Data Exploration with Data 360 Query Editor ⭐️  

Ever wonder how to quickly pull the exact business answers you need? This module guides you step-by-step through the main features of the Data 360 Query Editor. You will learn how to create your workspace, run simple queries, and pull the exact information you need without getting overwhelmed. 

👉  Complete this Trailhead Module 

⭐️ Master the Basics of Data Exploration with Data 360 Query Editor ⭐️ Ever wonder how to quickly pull the exact business answers you need? 

0/9000

Hi All,  

 

I have configured the

Website Connector in Data Cloud and created the Webpage Embed Code

. This generated the required beacon code, which I added to the developer website immediately below the <head> tag. 

 

Following the configuration, two data streams were automatically created:

  • Website Behavioral Events
  • Website Profile Events

However, the data streams are currently not refreshing, and the website activity is not being captured. Even when a user visits the website, I am unable to see the corresponding records being ingested into the data streams.

I have included the embed/beacon code below for your reference: 

 

<script src="https://cdn.c360a.salesforce.com/beacon/c360a/e5adb394-0b5c-4a4e-a1e9-72bfbb4c328a/scripts/c360a.min.js?wtcp_id=1NDWK000000Fu9x4AC"></script>

<script> 

const consent = { 

provider: "Salesforce Marketing Cloud", 

purpose: "Tracking", 

status: "Opt In" 

}; 

 

SalesforceInteractions.init({ 

consents: [consent], 

}).then(() => { 

SalesforceInteractions.initSitemap({ pageTypes: [] }); 

}); 

</script>

  

Resources I have followed the below article for this website tracking:  

 

https://medium.com/@marketingcloudtips/marketing-cloud-on-core-tracking-external-websites-without-a-consent-banner-467326874412

3 risposte
  1. 26 ago, 17:16

    Hey Swetha, 

     

    Per Salesforce's own developer blog, consent should be your first suspect, "without a recorded opt-in for the relevant purpose, the SDK will suppress downstream event tracking, which looks identical to a broken sitemap or schema. Always validate that consent is firing before you start debugging anything else." Your consent block looks correctly structured, but confirm in browser DevTools > Application > Cookies that the consent cookie is actually getting set after page load, not just that the script ran without errors. 

     

    Second likely issue: your initSitemap call has an empty pageTypes array: `SalesforceInteractions.initSitemap({ pageTypes: [] })`. Per Salesforce's Interactions SDK docs, the sitemap needs at least one page type configuration to actually match and dispatch events, an empty array means there's nothing for the sitemap to match against, so events likely aren't being triggered at all even though the SDK itself initializes fine. 

     

    Debugging steps directly from Salesforce's own guide: 

    1. Enable debug logging (there should be a way to set a debug log level in the SDK init options) 

    2. Look for the [DEBUG]: Sent event and [DEBUG]: Sending events console messages, if these never appear, the event is never being generated client-side (points to consent or sitemap config) 

    3. Also listen for the OnPageMatchStatusUpdated custom event, this shows exactly how the sitemap's page-type matching evaluated, useful specifically because you have an empty pageTypes array 

     

    Given your embed code matches the Medium article closely, but that article was written for a CloudPages/Marketing Cloud context, if you're implementing this on an external developer website (not a CloudPages-hosted page), double check the wtcp_id and connector match exactly what Data Cloud generated for you, a mismatch there would also cause silent non-tracking. 

     

    Reference:

    https://developer.salesforce.com/blogs/2026/06/understanding-the-data-360-web-sdk

0/9000

We would like to check Calculated Insights refresh activity history. 

History should show who has refreshed CI and when CI refresh started and ended.

4 risposte
  1. 26 ago, 10:49

    Salesforce support team has updated that it's platform gap and we can not find who has triggerred CI refresh process. 

     

    This is creating problem for us, as CI is getting refreshed sutomatically without schedule and credits are getting used.

0/9000

We are currently building notification framework to monitor Data Stream errors in Slack.  

 

On the DataStream object we can identify records with the ImportRunStatus field having a value of FAILURE. However, we cannot find where the error message content is stored (likely a related object looking up to this DataStream)   

 

When failures occur, the error message is visible to be previewed while on the Refresh History tab as shown in screenshot. This is the text content we are trying to find within SF schema.  

According to this link: a DLO exists for Problem Records, but in Query Editor or Data Explorer cannot find nor query this DLO, for example PR_DLO_<DataStreamName> - in Query Editor we receive an Insufficient Access error. In data explorer that DLO is not able to be seen in the lookup.  

 

Has anyone else managed to find where this error message is stored?  

Thanks in advance! 

 

How to access Data Stream Refresh History Error Message

 

 

image (4).png

 

image (5).png

 

 

 

7 risposte
  1. 24 ago, 15:25

    Hi Emma, did you identify whether it is possible to access the error details message? We have the same use case and need to access the message if possible.

0/9000