Skip to main content
Featured group

* Marketing Cloud Engagement *

Welcome! This group is dedicated to your success with Salesforce Marketing Cloud Engagement. 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
1 answer
  1. Ajaypreet Singh Saini (Grantbook) Forum Ambassador
    Oct 24, 8:19 PM
0/9000
1 answer
0/9000

Hi, 

 

I'm looking for guidance on a use case involving migration from Salesforce Marketing Cloud Engagement to Marketing Cloud Next (MC Next). 

 

Current architecture – Marketing Cloud Engagement 

 

- An external system sends customer data through the Journey Builder API Entry Event. 

- The incoming event data is automatically stored in a Data Extension. 

- Journey Builder then sends a mobile push notification. 

- We use SFMC Data Views to retrieve send and tracking information, such as send time, SubscriberKey, notification details, and available engagement events. 

- This tracking information is then passed back to Salesforce CRM (SFSC). 

 

Proposed architecture – Marketing Cloud Next 

 

I'm considering the following approach: 

 

1. External System invokes an API-triggered On-Demand Flow. 

2. The flow receives the customer and notification payload. 

3. A Salesforce custom object  stores the incoming payload for audit purposes. 

4. The flow sends the mobile push notification using the push notification activity. 

5. The notification's send and engagement tracking information is retrieved and passed back to Service Cloud. 

 

My questions 

 

1. Can this use case be implemented in MC Next without directly using Data Cloud/Data 360 for data ingestion, transformation, or customer profile unification? 

2. Can we use a standard Salesforce custom object to retain the incoming payload for audit purposes instead of using Data Cloud? 

3. Does the push notification process require Data Cloud/Data 360 for recipient identification, device registration, or message activation? 

4. Reporting and tracking: What is the equivalent of SFMC Data Views in MC Next for retrieving push notification tracking data, such as send timestamp, recipient/customer identifier, notification details, delivery status, and available engagement events (for example, opens)? 

5. Can this event-level tracking data be retrieved through supported Salesforce APIs, standard objects, or reports and stored in Salesforce CRM without directly querying or using Data Cloud/Data 360? 

 

The incoming API payload already contains the data required for the notification, and the main requirements are to retain the original payload for audit purposes, send the push notification, retrieve the relevant tracking information, and pass that information back to Salesforce CRM. 

 

I'm trying to understand whether Data Cloud/Data 360 provides any necessary capability for this specific use case or whether standard Salesforce records and MC Next flow capabilities are sufficient. In particular, I'd appreciate clarification on whether Data 360 is only needed for reporting and analytics, or whether it is also required to access the underlying event-level tracking data. 

 

Any recommendations, documentation links, or implementation experiences would be greatly appreciated. 

 

Thanks in advance!

1 answer
  1. Oct 21, 7:37 AM

    hi @Cloud Achievers

    ,  

    I want to clear this doubt that Data 360 can't be bypassed while following Marketing Cloud Next Architecture.  

     

    To better understand the reasons - 

    Q1) Can this use case be implemented in MC Next without directly using Data Cloud/Data 360 for data ingestion, transformation, or customer profile unification? 

    A1) NO. While enabling MCN in teh Org, It is mandatory to have atleast 1 IR rule set ( customer profile unification) should be configured else the MCN will not be enabled.  

    On-demand flow also asks for D360 configured Data Graph.

     

    Q2) Can we use a standard Salesforce custom object to retain the incoming payload for audit purposes instead of using Data Cloud? 

    A2) YES. The Flow (triggered via SF REST API) will write the incoming payload to a custom object with a Create Records step.

     

    Q3) Does the push notification process require Data Cloud/Data 360 for recipient identification, device registration, or message activation? 

    A3) YES. because in D360, Salesforce Engagement SDK needs to be configured for linking Contacts to specific Device ID. Push notifications will be sent using "Push notification" element in the Flow 

     

    Q4) Reporting and tracking: What is the equivalent of SFMC Data Views in MC Next for retrieving push notification tracking data, such as send timestamp, recipient/customer identifier, notification details, delivery status, and available engagement events (for example, opens)? 

    A4) Engagement data model objects (DMOs) in Data 360. Specifically, we should use push DMOs for unified reporting. Other options are - Marketing Performance Intelligence, the Unified Engagement History dashboards and Analytics reports

     

    Q5) Can this event-level tracking data be retrieved through supported Salesforce APIs, standard objects, or reports and stored in Salesforce CRM without directly querying or using Data Cloud/Data 360?  

    A5) NO. The event-level push tracking sits in Data 360. Use Data 360–triggered flow OR Query API OR Related-list enrichment for syncing into a Service Cloud object 

     

0/9000

Hi everyone, 

 

I'm working on a use case in Salesforce Marketing Cloud Engagement and I'm stuck on a specific requirement. Hoping someone has tackled this before. 

 

The scenario:

 

A subscriber registers for an event (webinar, meeting, etc.) through a Cloud Page and opts in to receive communications. After registration, the client wants to send them a calendar invitation β€” not a regular marketing email with an .ics file attached or linked, but an actual calendar invite, like the kind you receive when someone schedules a meeting with you in Outlook or Google Calendar. 

 

The key distinction:

 

The goal is that when the subscriber receives the email, it should show up as a proper calendar invitation with Accept / Decline / Maybe options, and the event should appear in their calendar in a "tentative" state (grayed out) even before they respond β€” just like a standard meeting invite from Outlook or Google Meet. 

 

What we've tried / the problem:

 

We can generate an .ics file and include its URL in a button or link inside the email, but clicking that link downloads the file instead of opening it as an invitation directly in the calendar. That's not the experience the client wants. 

 

The question:

 

Is there a way to send a real calendar invitation from SFMC β€” either through a specific email format, an SMTP header configuration, or any other mechanism β€” so that the email client recognizes it as an invite and renders the Accept/Decline UI natively? 

 

Any pointers to documentation, workarounds, or third-party integrations that could help would be hugely appreciated. Thanks in advance!

1 answer
  1. Oct 19, 5:44 AM

    Short answer: not with a standard SFMC email send, as far as I know. A real invite (Accept / Decline / Maybe, tentative entry in the calendar) needs the email itself to carry a text/calendar MIME part with METHOD:REQUEST, usually inside multipart/alternative. Marketing Cloud builds the MIME structure for you and doesn't let you add a custom part or content type through AMPscript or the template, so Outlook and Gmail see an ordinary marketing email with a link or attachment. 

     

    What we've seen work: 

     

    1. Send the invite from a mail service that lets you build the MIME yourself (Microsoft Graph, Gmail API, SendGrid or similar), triggered from the Cloud Page form post or from a Journey custom activity / webhook. SFMC keeps the registration, consent and the follow-up journey; the invite is the one message that goes out through the other channel. Make sure the organizer address can actually receive the replies. 

     

    2. If the event runs on a webinar platform (Zoom, Teams webinars, ON24 and so on), let that platform send its own calendar invite on registration and pass the registrant to it via API. Those platforms already send proper invites and handle reschedules and cancellations, which a one-off .ics never does. 

     

    3. If it has to stay inside SFMC, the best you can do is "Add to Google / Outlook / Apple" buttons with prefilled calendar links. Not a native invite, but one click and no file download. 

     

    One thing to check with the client: a true invite means updates and cancellations also have to be sent as calendar messages (METHOD:CANCEL with the same UID), so whoever sends the first one should own the whole lifecycle.

0/9000

πŸͺŸ It's time for @* Marketing Cloud Engagement * SQL Window Functions: https://mateuszdabrowski.pl/docs/salesforce/marketing-cloud-engagement/sql/sql-window-functions/

 

 

Built for SQL power users, with a real-life example in every section: the latest open of each subscriber, the days between two orders, your top 10 customers. Most of us build those with a chain of Query Activities and a staging Data Extension. Deduplication, top N lists and running totals - window functions do it in one query, with a few traps along the way: 

 

πŸ”΅ Nearly everything works. 

 

ROW_NUMBER, RANK, NTILE, LAG and running totals all run in MCE. Even IGNORE NULLS from SQL Server 2022 works, so the last coupon each subscriber used takes a single function. 

 

🟠 Ties pick a random winner. 

 

ROW_NUMBER over two orders from the same day keeps either of them, and the next run can keep the other. There is no error, and your Data Extension changes between runs. End every ORDER BY inside OVER with a unique column. 

 

πŸ”΄ Filtering needs a subquery. 

 

WHERE ROW_NUMBER() OVER (...) = 1 fails with "Windowed functions can only appear in the SELECT or ORDER BY clauses." The usual fix, a WITH, fails too, as the MCE syntax validation wants SELECT as the first word (sic!). A subquery in FROM does the job. 

 

Encountering issues? My free and open source

SQL Studio

flags them before you run anything and offers fixes with one click.  

Writing SQL with Claude instead? The newly updated

SF MCE SQL skill from SQL Studio gives Claude the same rules.

1 comment
0/9000

We are sending an email to participants from our recent job hiring fair. In that email, I'd like to include a "forward to a friend" link so participants can share with a friend who they think may be a good fit to work for us.  

 

I'd like to create a journey by sending an email to the friend introducing us and including a link to our job board. Is this possible to do?

1 answer
  1. Oct 15, 2:58 AM

    It is possible to create a journey for this scenario, but you cannot use the standard Marketing Cloud "Forward to a Friend" native feature to automatically inject the referred friend into a brand-new Journey. Because standard FTAF forwards an email on behalf of the subscriber via an encrypted link without capturing the friend's explicit opt-in data or creating a new contact record in your database, it won't natively trigger a separate automated journey.

     

    To achieve this cleanly, you have two primary options. You can build a CloudPage with a smart web form where participants can enter their friend's name and email address, configuring the form submission to write directly to a Data Extension that acts as the entry source for your new hire-introduction journey. Alternatively, you can use personalized referral links within your initial email containing query parameters, directing the friend to a landing page where they opt in and submit their details.

     

    Verify success by submitting a test record through your form or link and checking that the new contact successfully enters the journey and receives the introduction email.

0/9000

{} MCE SQL Reference doesn't mention JSON at all. @* Marketing Cloud Engagement * SQL reads, changes and builds it anyway. Learn how: https://mateuszdabrowski.pl/docs/salesforce/marketing-cloud-engagement/sql/sql-json-functions/

 

API payloads, CloudPages submissions and product feeds land in your Data Extensions as JSON. Most of us reach for SSJS to read them and fight against performance, but a Query Activity can do much of that work itself, with a few traps along the way: 

 

πŸ”΅ It builds JSON, too.

Despite documentation, the silently updated SQL Server behind MCE supports 2022 feature set: JSON_OBJECT, JSON_ARRAY and JSON_PATH_EXISTS. FOR JSON PATH turns each subscriber's abandoned cart into one field your email can loop over. 

 

🟠 Reading has a limit.

JSON_VALUE returns NULL for any value over 4000 characters. 4000 works, 4001 doesn't, and there's no error. OPENJSON would lift the limit, but the MCE syntax validation treats it as a Data Extension name (sic!). 

 

πŸ”΄ Broken JSON stops everything.

One truncated payload fails the whole Query Activity, and the Action Log says only "Automation failed due to system error." Wrap your reads in ISJSON, and the broken records return NULL instead. 

 

Every output in the article comes from a live test in my Query Studio replacement - SQL Studio - which just got version 1.2: save results straight to a new Data Extension, share snippets across your Business Unit and add a JOIN to your query in one click.

 

More to come, so keep on querying!

0/9000
2 answers
  1. Oct 8, 9:01 AM

    Hi @Dawn Albright,

    The one reply so far, joining the _Sent data view with DateDiff > 7, is backwards. That filter keeps anyone who was sent something more than 7 days ago, including people who were also sent something yesterday. You want to exclude anyone with a send in the last 7 days. 

    Suppression query (most common approach) 

     

    Run this in Automation Studio and write the result to a "sendable" Data Extension: 

    SELECT s.SubscriberKey, s.EmailAddressFROM [YourSourceDE] sWHERE NOT EXISTS (    SELECT 1    FROM _Sent snt    WHERE snt.SubscriberKey = s.SubscriberKey      AND snt.EventDate >= DATEADD(day, -7, GETDATE()))

     

    • The send timestamp column in _Sent is EventDate.
    • Send to the output DE, not the original list.
    • For a "no more than one email per 7 days" rule, run this query immediately before each send in the same automation. Otherwise the exclusion goes stale.

    Alternatives

     

    • Journey Builder: use the same query as the entry source DE, or add a Decision Split on a "last sent date" field that you keep updated.
    • Exclusion lists or scripts: these suit a standing "never email these people" rule better than a rolling 7-day window.
    • Different lists on different schedules: build one master suppression DE that every send's query checks, instead of coordinating each list separately.

    Things to verify, since I haven't checked them against your account

     

    • _Sent only reflects sends in the Business Unit where the query runs. If the two lists send from different BUs, you'd need shared data extensions or a query at the parent level.
    • Large _Sent volumes can make this query slow, so keep the date filter in place.
    • Sends from outside Marketing Cloud (for example CRM-triggered emails) won't appear in _Sent.

     I hope you find the above information helpful. If it does, please mark it as Best Answer to help others too.

0/9000

We’re happy to share Winter β€˜27 Release resources! 🩡 

 

 

🚨 BONUS: Get ready for FeatureFest at Dreamforce! 🚨 Discover what’s new in the Winter ’27 release, get personalized feature recommendations, connect with experts, earn exclusive swag, and leave ready to get more from Salesforce – all in one exciting Dreamforce experience. Stay tuned – we’ll share more details next week!

 

Release Matrix can be found here: https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000pPZmY0AW

 

Overview deck can be found here: https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000jASjE0AW

33 comments
0/9000

πŸ“² Added the most requested article - @* Marketing Cloud Engagement * MobilePush Data Views (and the other sources for Push analytics): https://mateuszdabrowski.pl/docs/salesforce/marketing-cloud-engagement/config/mobile-push-data-views/

 

Inside, you can find everything you can expect based on my Email and SMS Data Views articles (the latter also updated with SMS Send Log details): 

πŸ”΅ Undocumented _PushAddress and _PushTag fields, picklists, SQL query and hints 

🟠 Explanation of how Push data differs from Email and SMS data 

πŸ”΄ How to get the missing Send and Engagement data (along with hard blockers that only Salesforce can fix) 

 

More MCE Data & SQL fun coming soon :)

1 comment
  1. Oct 7, 8:17 AM

    Brilliant addition! MobilePush Data Views are definitely one of the trickier areas in MCE. Thanks for documenting this so clearly! 

0/9000