3

I'm the Product Manager for Einstein Send Time Optimization, happy to add a few clarifications and comments here: Einstein STO doesn't load tables of 'Open Likelihood Scores' into Data Extensions, that is correct: instead the Journey Builder activity asks a service for best timings in close to real time when contacts enter the activity in the Journey. This ...


3

The reason for that is the schedule that has been set in your journey (can be seen right below the entry event's data extension section on the left hand side of your screenshot). In your case contact evailuation it is set to start on journey activation and to never repeat. Therefore only the contacts at activation time are considered and injected into the ...


3

You would have to do a Lookup or LookupRows to a data extension where that email ID and send time is stored. Possibly a SendLog if had that set up. Alternatively, you can also set up an automation to query the _Sent data view to write to a data extension so that you can retrieve using the above lookup methods. GetSendTime and Now(1) only applies to the ...


3

Custom Fields in a SendLog can be populated by the followings conditions Matching field name in send log to field in the sendable DE Matching field name in send log to attribute in Mobile Demographics Matching field name in send log to ampscript var Matching field name in send log to attributes passed in the API Call So to solve your use case you could ...


2

I suggest creating a mobile filtered list where ContactKey is not null and ContactKey does not contain "-", which will give you all of your registered contacts in marketing cloud. Then look for those without a DeviceID using SQL, or export the list to your local and do some excel finagling. Hope this helps.


2

You have essentially a "countdown" or "countup" style usecase. By that I mean a process that sends a series of emails in relation to a point in time. Since there will be either a lot, or even worse, more and more courses over time: I suggest an approach that automatically scales and is easy to maintain. You can reuse this pattern for any ...


2

It does indeed seem like this information is not exposed in a data extension or public data view. So by default, you cannot split like this. Einstein does not provide you a record by record view of the times it calculates at this time. You would have to do an ex post analysis. It's less clean, but since you have no data available at the start, it's what we ...


2

Here's my workaround for the primary key issue. TL;DR Use an hourly query to enforce the primary key handling. Journey_Builder_Status Data Extension The Update Contact activity writes to this Data Extension. SubscriberKey, Text (254), Primary Key Journey, Text (100), nullable Event, Text (100), nullable EventDate, Date, nullable, defaulted to the current ...


2

You are running into a limitation of "Update Contact". It will only Upsert, and it will always use SubscriberKey as Primary Key. As far as today, there are no really great out of the box options. There are ways to achieve this, but either custom coded, paid for or hacky. So long story short as of early 2021 is: There is no sustainable out of the ...


2

Reached to the Marketing cloud team on this. The custom headers are supported but for an access token, there is a bug that will be patched in the next release. The release schedule (safe harbor) is below R0 is 3/22 2021, R1 is 4/10 2021, and R2 is 4/17 2021 Once it is fixed, the below will work fine arguments": { "execute": { &...


2

Perhaps you can set a common value in each sending data extension -- like a field named Campaign with a default value of Newsletter. Then configure send-logging and add a sentDate and Campaign field. The sentDate column should default to today's date. Then you could have a query that pulls an audience from the send log where there are no opens or clicks for ...


2

If you are able to use the REST API, you should be able to collect this information through the following endpoint: GET /interaction/v1/interactions/{{journeyId}} Host: {{mySubDomain}}.rest.marketingcloudapis.com Content-Type: application/json Authorization: Bearer {{authToken}} This endpoint will return all the activities and other correlating information ...


2

If you really need to know who reached this particular step of your journey, you could implement an Update Contact block which allows you to log information to a data extension. This way you would obtain information who landed on the path right before the split from your screen. The are some limitations though: you can only log 5 values this way the data ...


2

This is no solution but a hint: You can define user properties in the tracking call for the user. These are contact attributes. They will be set on the contact profile in einstein for recommendations and even will last forever. YOu cannot delete them only overwrite them, so be careful with your implementation of the user details. _etmc.push(["...


2

Sending to Salesforce Data Extensions doesn't add that functionality to sends via transactional send journeys - this only works for single sends from email studio, etc. As with the older triggered emails configured in email studio, the transactional messaging API doesn't create IERs at the moment. However, I've got the confirmation from the product manager ...


2

You can retrieve the last 30 days of journey history from POST /interaction/v1/interactions/journeyhistory/search. You will need to use the journey definition id in the payload: { "definitionIds": [ "06d6f3f6-4532-4fb3-908c-xxxxxxxxxxxx" ], "start": "2019-10-23T12:29:11.882Z", "end&...


2

So this isn't in the send log (but you could add a custom field) By the SMSmessagetracking dataview has the following fields: JBActivityID Unique identifier for the journey activity the message was deployed from JBDefinitionID Unique identifier for the journey a message was deployed from


2

Your contacts previously injected into the Journey would continue in the Journey, even though they no longer qualify for entry criteria, unless you've defined Exit Criteria for the Journey. Decision Splits based on Contact Data use data as it is at the time of evaluation, not as it was at the time of entry. Decision Splits based on Journey Data evaluate data ...


2

You would have to create them as two separate journeys for that to happen. As soon as you activate the new version, the previous one stops admitting new contacts. It lets contacts inside the journey finish it, but it doesn’t let any new ones in. After a version is activated, it becomes the current version. New contacts aren’t admitted into previous versions....


2

Very interesting. I have no solution to the problem of "keeping invalid emails in the journey" (and I would consider this a problem, as it is very shortsighted exception handling and counteracting one of the supposed strengths of the tool) - but some systematic workarounds / implementation patterns: The message I take out from this - validation has ...


2

You can definitely do it in several approaches but here is my suggestion: Create two new nullable Boolean fields in the Entry Source Data Extension, let's call them FormSubmitted and FormUpdated Add the logic on the CloudPage that once the form is submitted, you populate one of these fields with True value. So it going to be if FormSubmitted is empty, then ...


2

There is no best workaround because this is a workaround, not an OOTB functionality that is usually suitable for the bigger number of use-cases. So let's hope one day, the idea would be finally released. There is already a "default" workaround, which is explained in Trailhead's module. It considers you would need to create a Decision Split that ...


2

You need to convert your date to a correct format, this this should work: SELECT UserID, Email, Registration_Date, First_Name, Last_Name FROM Staging_Journey WHERE convert(varchar, Registration_Date, 0)>CAST(getdate()-1 as date) Why do you need to convert it? The getdate() function returns a date in the following format: Jul 20 2021 12:00AM While your ...


2

Does SFMC retry the API call a certain number of times? Indefinitely? Answer: No, there's no retry. There's only a retry if your execute request times out, read further on: https://developer.salesforce.com/docs/atlas.en-us.noversion.mc-app-development.meta/mc-app-development/custom-activity-config.htm Does the subscriber get ejected from the Journey? Answer: ...


1

When you stop a Journey, the triggered sends associated with the email activities will also be stopped, any subscribers in the queue will simply be abandoned and not sent to.


1

I am assuming you are talking about Journey Builder Email Send Summary report? You can configure the report, and save it as a report definition: Once you've done so, you can schedule it to drop a csv file every 24 hours on your Enhanced FTP server: I will suggest adding a subfolder for this, and create a File Location for the export/import to use. When you ...


1

I would highlight two points on your solution. Time Zones: In which time zone is your birthday data coming in? And the time zone, in which the automation is running. Ideally, both should be same. Filter Criteria: You should put a safety check as a filter criteria in your journey that only records where BirthdayJourney = 1, or use Antonio's method above, to ...


1

If you're set on the entry source being Salesforce data, you have potentially a bigger conundrum to consider...the only way to re-enter a person into an existing Campaign is to delete the old Campaign Member record and then add them again, but that's not really how Campaigns are supposed to work. The easiest way to do what you want (as long as you're ...


1

This number indicates how many have been through this particular step, as the only step you can be in is a wait step. It is not possible to use any of the available data views or reports to identify which step a given contact has reached. There is an option to ask Salesforce for a custom data view, as in my example here. There might be a possibility of a ...


1

Thanks a lot for your feedbacks ! I guess I found the solution I needed thanks to your clues. With a SQL query, I have been able to fill a field called "hasApp" in my Data Extension. If it finds a raw in _PushAddress, then it puts a "1" in this boolean field : SELECT S.SubscriberKey as IdSF, 1 as hasApp FROM _PushAddress P INNER JOIN ...


Only top voted, non community-wiki answers of a minimum length are eligible