Search Content

What is HowToSFMC

HowToSFMC is a Salesforce Marketing Cloud resource by a group of practitioners with a range of SFMC experience. The aim of the site is to take common “How do I?” questions and instead of make a single how-to document, crowd-source many options. Including from the wider community.

Armed with these choices, we’ll help to provide context to the decision making and empower you to build your ideal solution.

glasses photo

Join us on Slack

The email marketers behind HowToSFMC are members of a very active community of email marketers called EmailGeeks. The EmailGeeks community has grown to more than 5,000 members who participate in conversations around all things email; including two dedicated SFMC channels.

Hero Image

Video Playlists

Recent Articles

Published 01/15/2021
General
January 2021 - Release Notes Summary

It feels like only a couple of weeks ago that a group of trailblazers were looking at and reflecting on the year that was 2020 (Session 1 and Session 2) and bringing the SFMC year to a close, but it’s time for the first release of 2021!

One of the key characteristics of the releases throughout 2020 is that there was a focus on certain themes and bringing the overall platform into a better state. Permissions have been broken out of catch alls for Journey Builder, SFTP has been given a swift kick up the security upgrade path and content builder templates have been made more accessible. There’s been a strive to make SFMC more self supporting with the improved Setup window allowing users to toggle settings that previously required a support request and whilst the ambition was to make SSL certification self-serving in November, it’s making a rare second appearance in release notes this time around. The foundations of last year have meant that whilst the overall new capability increments were a little light on the ground, 2021 should be a big year for taking your Marketing automation efforts up a notch.

The majority of this you’ll find under the App and Setup heading in the release notes, but there’s some closely aligned elements in other categories so I wanted to bring them together.

As mentioned above, Self-Serve SSL certs are back in the release notes this time around. Currently you need to raise a support case to get SSL certification in place (If you’re on a private domain without an SSL, you’re probably getting sick of all the images not loading in Chrome by now!). But, unfortunately the “when” on this is essentially unconfirmed. So, hopefully this gets brought in time for this release, it would be a shame for it to make the cut 3 times in a row.

Some key _(no pun intended) _elements bringing themselves to the fore right now is encryption and the option to start using your own encryption keys as opposed to just the default ones available. The theme of bringing things up a level from a security perspective slipping into 2021 with the option of how you want to encrypt SFMC. Definitely something to look into if you’ve had worries that your data at rest is encrypted in the same way as other tenants on your stack.

The timer officially starts on the retirement of the SFMC Public Key and you will no longer be able to create new File Transfer activities using it after June 1st. So it’s great that BYOK is being rolled out to decrypting files received from other sources. The official advice from Salesforce is that you **stop **using the standard public key as soon as you can. There are some details for creating a key pair in the documentation here.

Social Studio is getting the Multi-Factor Authentication and Single Sign-On treatment in this release, so you’ll be able to enforce SSO and MFA once it is live.

As mentioned in previous release notes, the V2 Marketing Cloud connector is going away in less than 3 months now and the deep linking from Sales/Service Cloud in to SFMC is being removed in this release. If you’re using V2 and are on an edition of Salesforce CRM that supports it. If you are using a Salesforce Professional Edition, you will need to upgrade your Sales or Service cloud edition to Enterprise or Unlimited in order to access V5. If you’re not sure whether it makes sense for your business to do the upgrade, you can check out the difference between V2 and V5 here. If you’re not in a position to upgrade to V5, you may need to investigate other options for transferring data between your Marketing Cloud org and Salesforce.

It’s not all just good to go if you’re one of the multitude of users who is using the V5 app to integrate between SFMC and Sales/Service Cloud. You will need to make sure that your integration is using the connected app not the legacy integration to ensure connectivity between the two systems persists beyond January 30th. If you’re not sure whether you’re using the connected app or the legacy integration, jump over to the Salesforce Integration screen in Marketing Cloud & if you see a Tracking User Name and Tracking User Password field in the config settings - you’re using the legacy authentication method. Get that updated ASAP and you should be golden!

Possibly the single most updated element of SFMC in the past year, the capabilities for Distributed Marketing keep adding up! If you’re using Custom Personalization Interactions for segmented sends, you’ll now be able to use multiple tabs as opposed to one (recommendation is no more than 10 tabs with no more than 10 fields to keep it performant). This should be available now if you’re using version 230 and above of the DIstributed Marketing package.

Restrictions have been given an update with the option of using regular expressions and wildcards in the restricted words section. There’s also been an addition for the ability to restrict sending based on an active flag or a date range to make sure no content goes out that is no longer or not yet relevant. So check out Restricted Words and Restrict Sending in your Distributed Marketing package!

Farewell Discover Reports. You were helpful to have around, but the formal announcement of Discover being retired will be on February 1st 2021. But, it’s not going away without a replacement! Datorama reports will launch as part of this release and as the release rolls out, we’re expecting to see some more enablement details made available. We can’t add a whole lot of specific details here because they’re not currently available yet, but, having participated in some of the user experience research around it - this looks to be a big step forward. Whilst it may need some time to mature and may not cover all of your immediate analytical needs, it would be worthwhile considering what you can achieve with the new tool when it launches as opposed to creating new things that will sunset in 2022 as Discover is turned off for good.

MobileConnect is getting some new attributes in the Data Views. You’ll be able to add the JBDefinitionID and JBActivityID to your queries against the _SMSmessagetracking Data View. This should help you map your Journey Builder SMS activities more effectively. The actual Data View documentation hasn’t been updated yet with the full definition of these fields but it seems likely that JBActivityID will correspond to JourneyActivityObjectID the same way that TriggererSendDefinitionObjectID does to Email activity. So this will be the first time that there has been a simple way to match with an attribute between Mobile Connect and Journey Builder.

Also in the realms of tracking your SMS, you’ll be able to get the transient, bounced and delivery events for your SMS when sending them from the transactional API. When sending your SMS via the transactional API, just subscribe to the SMSTransient, SMSBounce and/or SMSDelivered events in the process.

Google Analytics gets a nice shot in the arm with the cost prohibitive requirement of GA360 going away and you’ll be able to start making use of the free elements of the analytical tool within Journey Builder. Don’t expect it to be a huge game changer, but it should hopefully simplify some of your campaign reporting if you’re a free Google Analytics user. Besides - it’s free… so why wouldn’t you?

There’s some general improvements coming through to Einstein in this release, including a learning portal which will help to understand the use cases for each Einstein capability. So if you’ve ever wondered what you’d use Copy Insights for, take a look and it should shine a light on what Salesforce suggests is a good use case for the tool. There’s also some improvements from an analytics perspective for Asset selection.

One thing to be aware of is Send Time Insight where Einstein can now use data from multiple customers to derive insight about the best time to send an email. Einstein will securely model opted-in customers (that’s us as users, not your customers/contacts) to improve prediction accuracy. The feature is going to have a gradual rollout but you’ll see a banner in the STO dashboard letting you know that the model determining when is best to send your email is using global data. If you do not wish to contribute to the global data, you won’t be able to benefit from this but to opt out, you’ll need to raise a support case.

Image tagging will now automatically tag things in non-english languages, but you’ll need to set that up. Any current tags in place won’t be updated until you update the image that the tag was for which may be a bit of a hassle if you’re using tagging extensively already but definitely a great one to have for anyone using multiple languages! Asset attributes will now also be able to have multiple values, eg: If you have an asset that works well for both football and basketball fans, you can set that as well as having a set of fixed valid values to use to prevent human error on data entry!

This is the big one for this release. After not providing too much in the way of new capabilities and primarily focusing on quality of life changes for Interactive Emails and similar functionality for the last 12 months, Salesforce have gone all in on some new messaging options in this release. Though, they won’t all hit your orgs on release day unfortunately.

However, the quality of life changes aren’t finished for Interactive Email forms. Currently if you have a hidden field, it may be visible to the form recipient, even though it doesn’t need to be. In this release, new or recently modified Interactive Email forms will experience the new behaviour of not passing the hidden field value through the form submission. A nice little addition to customer experience and keeping your interactive form elements neat.

Journey builder contact error details will get an improvement to make it easier to troubleshoot issues that have caused contacts to exit a journey prematurely due to an error. This won’t include every error type right now, but it will cover errors in email, updating contacts, Sales/Service Cloud activities as well as surfacing some errors from your custom activities. You’ll access it in the Health panel of a journey, search for a contact and if that contact got removed due to an error, you’ll get the details of the error so you can make the changes you need to prevent it happening in the future.

If (like me) you’ve been a big fan of the recently added Alert Manager, the default threshold for alerts being triggered will be set for 10 consecutive subscribers for your triggered send definitions to enter an errored state due to bad data or AMPscript failing to evaluate. One thing to note here is that notifications relating to cancelled triggered sends from Salesforce Support are being retired, so make sure you’re getting emails from Alert Manager to make sure your triggered sends don’t start erroring and not knowing about it.

Mailbox provider one-click unsubscribes will now be added to new or modified email headers in any commercial email send classification. One-click unsubscribe isn’t a bad thing and making your emails easy to unsubscribe from doesn’t have to be the end of the world, but having this in will make sure mailbox providers are treating your emails appropriately. But if you do see an increase in Unsubscribe activity after the new release, make sure you check to see if they are coming from your existing unsubscribe process or if they are coming from this. It’s one to keep an eye out for.

Stepping away from Emails, a nice little change is the ability to choose the duration of an SMS Conversation within Mobile Connect. These can be set up at a keyword level and you can now set your double opt-in and Next Keyword based conversations to listen for a response. If you’ve never used SMS conversations, take a look here to see how the conversation window could work better for you.

WhatsApp messaging comes to Journey Builder through a new partnership with Sinch who are an official WhatsApp business solution provider. You’ll need to link your account with Facebook Business Manager and subject to WhatsApp approving your account you could be using WhatsApp messaging within a few business days. You’ll need to create your message templates and create an audience, but the WhatsApp activity will appear towards the latter half of February once you’ve purchased the additional feature. So, whilst it may not be there for you and it may not be relevant for you - it’s something that up until now has required 3rd party integrations rather than native capabilities.

AMP for Email finally lands in SFMC in March. After being announced at AMPFest 2020, the AMP MIME-Type will become available in your business units. If you’ve not heard of AMP for Email (not to be confused with AMPscript in Email), it’s a framework to unlock greater content capabilities, real time status updates and even two way interaction directly from a customer inbox. Take a look at AMP.dev for some of the documentation to help you get started. But definitely don’t get confused with AMPscript and AMP scripts. If you build any AMP emails that you’d like to showcase, get in touch - it would be great to get some examples that showcase just how to push the capabilities of both SFMC and AMP for Email in tandem.

This is a pretty big release overall with some awesome new possibilities, but unlike the releases of the past it’s not a one and done. Things will change over a few weeks. The major new features with WhatsApp and AMP for Email are both expected to land after the final date of the release roll out. The core elements of the release are expected to finish landing on February 6th but WhatsApp and AMP won’t be available until 16th February and 1st March respectively. You’ve got the V2 connector being turned off at the end of March and the SSO certificate needing to be updated before 18th February. So, whilst there’s a lot going on it feels like there’s a lot of calendar management that needs to go into this to make sure you don’t miss any of these features being turned on or turned off for your business.

Keep an eye on the release notes for the items you have any specific interest in, the release edits are listed in the summary page and they do get updated after the original publish date. At time of writing, this summary covered the original publish date. If things have changed that are no longer reflective of the release, we’ll endeavour to keep updates on Twitter.

Read more
Jason Cort
Published 12/13/2020
SQL
12 Days of Scriptmas

Like many of you, the holiday season is a favorite for all of How2’s directors, admins and other community members! In that light, we are looking to share some of the ‘gifts of script’ we have accumulated over the years with you!

We will reveal a single script each day from Dec. 13th right up to Christmas Day (Dec. 25th) to provide you with the 12 DAYS OF SCRIPTMAS! We hope you enjoy all the ‘gifts’ we have been busy crafting these last few days to share with all you trailblazers and email-geeks as our gifts to you!

Happy Holidays and have a GREAT SCRIPTMAS!!


We are excited to share our first day with you all and for the beginning we are coming out strong with a debug process for SFMC SSJS:


<script runat='server'>
Platform.Load("core", "1.1.1");
/*
 @param { string } identify what you're writing
 @param { response } function/api response
 @param { debug } toggle if function should run or not


 debug = 1 will have output
 debug = 0 will hide output
*/
var debug = 1;

function deBug(string, response, debug) {
  if (response) {
    debug ? Write("<br><b>" + string + ":</b><br> " + Stringify(response) + "<br><br>") : null;
  } else {
    debug ? Write("<br><b>" + string + "</b><br> ") : null;
  }
} //End deBug

</script>

A special thanks to our own Tony Zupancic for the script.


The second day is here! Are you excited?! We are! For today’s script, we are sharing a quick SQL trick to help dedupe your results. Hope it helps you as much as it has helped us.


/* SQL dedupe using partition window and 
targeting first row match found */ 

SELECT x.SubscriberKey
, x.Email
FROM (SELECT a.SubscriberKey
  , a.Email
  , MAX(a.EventDate) AS lastOpenDate
  , row_number() Over(
  		Partition By 
  			a.SubscriberKey 

  			Order By 
  				a.Email
  		) row
  FROM DataExtension a
  WHERE ISNULL(a.EventDate,'') != ''
  Group By a.SubscriberKey
  , a.Email) x 
WHERE x.row = 1

A special thanks to our own Genna Matson for this script.


Day three! This is so exciting for us! Today, we are sharing a small AMPScript snippet that illustrates how to create dynamic variable creation/setting. The possibilities with this are near endless!


%%[
SET @deRows = LookupRows(...)

FOR @i = 1 TO RowCount(@deRows) DO
  SET @row = Row(@deRows,@i)
  SET @tempValue = Field(@Row,'Field')
  SET @FieldSet = TreatAsContent(CONCAT('%','%[SET @Field', @i, ' = @tempValue]%', '%'))
NEXT @i 
]%%
  

A special thanks to our own Greg (Gortonington) Gifford for this script.


We are a third of the way through! It is so exciting…yet also sad that there are only 8 more days left. Today is a trick to help you break up your SQL queries that could time out into multiple queries to get around the 30 minute limit.


/* Avoid time outs by breaking large volume DEs down
by targeting the _customObjectKey attribute on the DE.

This attribute indexes at 0. 

The below example breaks the DE in two. 
First half of the DE -- Query 1: */ 

SELECT a.EmailAddress
, a.SubscriberKey
, a.Status
FROM DataExtension a
WHERE _customObjectKey % 1 = 0


/* Second half of the DE -- Query 1: */ 

SELECT a.EmailAddress
, a.SubscriberKey
, a.Status
FROM DataExtension a
WHERE _customObjectKey % 1 = 1

A special thanks to our own Genna Matson for this script.


FIVE. GOLDEN. RIii…I mean hello and welcome to the fifth day of Scriptmas!! We are excited to provide this wondersful SSJS function that can be used to make sure to elegantly end your SSJS scripts rather than have them timeout and error. Hope it helps to save you some hair and keep that blood pressure low!


<script runat=server>
Platform.Load("Core","1.1.1");
​
var dev = 1;
​
var now = new Date();
var start = now.getTime();
var timeOut = 1500000; //25 minutes
//60000 milliseconds in a minute
​
​
if (dev) {
  timeOut = 10000;
}
​
​
​
do {
​

​//Your Code Here
​
} while((new Date().getTime() - start) < timeOut)
​
</script>

A special thanks to our own Greg (Gortonington) Gifford for this script.


OHHHHH…WE’RE HALFWAY THEERRREE!!! OHHHH OHH AMPSCRIPT CUZ WE CARE! Ahem. Sorry couldn’t resist some Bon Jovi. Today is our halfway point to the end! It has been a WONDERFUL journey and we want to thank everyone for coming along with us so far. Our elves have been cooking up quite a few wonderful things that we are excited to share over the next few days, so make sure you keep checking back every day!

<h1>
  Sendable Data Extension - Summary
</h1>
<table>
<thead>
  <tr>
    <th>DE Name</th>
    <th>Description</th>
    <th>Rowcount</th>
  </tr>
</thead>
%%[
SET @GetSendableDEs = CreateObject('RetrieveRequest')
SetObjectProperty(@GetSendableDEs, "ObjectType", "DataExtension")
SET @SimpleFilter = CreateObject("SimpleFilterPart")
SetObjectProperty(@SimpleFilter, "Property", "IsSendable")
SetObjectProperty(@SimpleFilter, "SimpleOperator", "Equals")
AddObjectArrayItem(@SimpleFilter, "Value", "True")
AddObjectArrayItem(@GetSendableDEs,"Properties","Name")
AddObjectArrayItem(@GetSendableDEs,"Properties","Description")
SetObjectProperty(@GetSendableDEs, "Filter", @SimpleFilter)
SET @DERows = InvokeRetrieve(@GetSendableDEs,@status,@reqID) 
SET @DECount = ROWCOUNT(@DERows)

IF @DECount > 0 THEN
FOR @Loop = 1 to @DECount DO

SET @DERow = ROW(@DERows,@Loop)
SET @DEName = FIELD(@DERow,'Name')
SET @DEKey = FIELD(@DERow,'CustomerKey')
SET @DEDesc = FIELD(@DERow,'Description')
SET @DERowcount = DataExtensionRowCount(@DEName)
]%%
  <tr>
    <td>%%=V(@DEName)=%%</td>
    <td>%%=V(@DEDesc)=%%</td>
    <td>%%=V(@DERowcount)=%%</td>
  </tr>
%%[ NEXT @Loop ELSE ENDIF ]%%
</table>

A special thanks to our own Jason Cort for this script.


We know how much console.log is important to JS developers and this script helps to fill that big hole that is left behind when running SSJS. We hope this helps to bring you a happy holiday season and a very merry Scriptmas!

<script runat=server>
var json = ["one","two","three"]
consoleLog(json);

function consoleLog(value) {
   if (typeof value === 'object' && value !== null) {
      value = Platform.Function.Stringify(value);
   }

   Platform.Response.Write('<script>console.log(' + value + ');</script>');
}
</script>

A special thanks to our own Shibu Abraham for this script.


Who else is excited for the holidays? We have had a ton of fun so far and are very excited for the next few days! We hope these scripts have been useful or at least helped in some way or another. This script helps tons with those that need to use Time Zones in SQL.

/* Get around some timezone challenges with the AT TIME ZONE 'function' within your SQL Queries */
select
eventdate AT TIME ZONE 'Central America Standard Time' AT TIME ZONE 'UTC' AS 'eventdate'
,SubscriberKey
,jobID
from
_Sent**

A special thanks to our own Jason Cort for this script.


Hello again and happy SCRIPTMas! Our elves cooked up something special today sharing examples on how to utilize the LookupRows and LookupOrderedRows AMPScript functions!

%%[ /* AMPscript Lookups */

/* Lookup Rows */
set @lookupVariable = 'rando'
set @lookupRows = LookupRows('DataExtension','Field',@lookupVariable)
set @countRows = RowCount(@lookupRows)
if @countRows > 0 then
  set @row = Row(@lookupRows,1)
  set @field = Field(@row,'Field')
endif


/* Lookup Ordered Rows -- returns 5 ordered rows */
set @lookupVariable = 'rando'
set @lookupOrderedRows = LookupOrderedRows('DataExtension',5,'Field asc','variable',@lookupVariable)
set @countOrderedRows = RowCount(@lookupOrderedRows)
if @countOrderedRows > 0 then
  set @row = Row(@lookupOrderedRows,1)
  set @field = Field(@row,'Field')
endif

]%%

A special thanks to our own Genna Matson for this script.


Holy Cow! Our own Mr. Tony Zups provides us with a powerhouse of a script - a SSJS function to run your API calls via a config file. These next few days are ramping up to be great ones!

<script runat='server'>
Platform.Load("core", "1.1.1");
var accessToken = getAccessToken();//get accessToken

var getJourneyConfig = {
	endpoint: "interaction/v1/interactions/"
	method: "GET"
}


function scriptUtil(config, accessToken) {

 var method = config.method;
 var url = "restBase" + config.endpoint;

 try {
  var req = new Script.Util.HttpRequest(url);
  req.emptyContentHandling = 0;
  req.retries = 2;
  req.continueOnError = true;
  req.contentType = "application/json"
  req.method = method;
  req.setHeader("Authorization", "Bearer " + accessToken);

  if (config.payload) {
   req.postData = Stringify(config.payload);
  }

  var resp = req.send();

  var resultStr = String(resp.content);
  var resultJSON = Platform.Function.ParseJSON(String(resp.content));

  return resultJSON;

 } catch (e) {

  Write("API (e)" + Stringify(e));
  return
 };
}
</script>

A special thanks to our own Tony Zupancic for the script.


One more day! Today we are sharing a wonderful script showing SQL subqueries and how to use them. They are instrumental in most complex SQL queries. With scripts like these last few…what could be the final one? Come back tomorrow and see!

/* Subqueries are a great way to extend your SQL capabilities and they come in many formats.

Eg: Using a Subquery to create a reference dataset from a single location to fFind every subscriber who has opened any email.*/

Select
Subscriberkey
from
_Subscribers
Where
SubscriberKey in (select Subscriberkey from _Open)

/* You can create Subqueries within your Subqueries to get a single output for a specific set of requirements.
Eg: Using a nested Subquery to finding all Subscribers who have Opened an email of a specific Email Name format  */

Select
Subscriberkey
from
_Subscribers
where
Subscriberkey in (select Subscriberkey from _Open
                  where
                  JobID in (Select JobId from _Job
                            where emailname like '%PromoCampaign%')
                  )
                  
/* You can use Subqueries if you need to calculate or derive something to use within your main query, it can save you needing to maintain an additional query and you can join your subquery in to your original query

Level 3 - Finding how many times a person has opened and the first time someone opened an email of the PromoCampaign type with one query rather than 3 */

select
sub.SubscriberKey
,tot.totalopens
,fir.firstopen
from
_subscribers sub
join (select subscriberkey, count(*) as 'TotalOpens' from _Open
      where
      JobID in (select JobId from _Job
                where emailname like '%PromoCampaign%')
      group by subscriberkey ) tot on sub.subscriberkey = tot.subscriberkey
join (select subscriberkey, min(eventdate) as 'FirstOpen' from _open
      where
      Jobid in (select JobId from _Job
                where emailname like '%PromoCampaign%')
     group by subscriberkey ) fir on sub.subscriberkey = fir.subscriberkey

A special thanks to our own Jason Cort for this script.

We did it! Today’s script is a SSJS script to output a list of all the field names inside of a data extension. This can be super helpful in multiple ways, from using in a DE inventory or using it to output fields for a SQL query.

<script runat=server>
Platform.Load("Core","1");  
var dataExtensionFields = DataExtension.Init('myDE').Fields.Retrieve()
if (dataExtensionFields.length > 0) {
    for (var i = 0; i < dataExtensionFields.length; i++) {
        Write('<br>'+dataExtensionFields[i].Name);
    }
}
</script>

A special thanks to our own Jacob Edwards for this script.

Thank you everyone for reading! If you would like to contribute or be a part of HowToSFMC, please reach out to us using <a href=“https://www.howtosfmc.com/contact/”>our contact form</a> or on our Slack channel.

Read more
HowToSFMC
Published 11/09/2020
SSJS
Survey Results - 2020

So, we asked for community feedback on resources that are used to help you to succeed, blaze your trail and become an overall more capable SFMC practitioner and the community has definitely delivered. The resources ranged in categories from websites run by Trailblazers, books, content from Third Parties and a staggering 18 unique individual Trailblazers were called out for the contributions they have made to your experience as your upskill, reskill or share skills within the Marketing Cloud.

One of the most interesting results from these were the number of unique resources that were suggested, where just one person has submitted a resource but some of them are gems that are new to us that need to be flagged. So, we’ll be running through the top 10, in no particular order, highlighting some of their highlights.

Whether you’ve got a question about using SQL, Content Builder, SSJS or pretty much anything you can think of with SFMC you’ve got some of the greatest minds in the community answering questions in their free time. You may have something unique to ask or you may find that there’s a number of people with the same query and you’ve got multiple solutions to your challenge.

With the tag based filtering, it’s quick and easy to get into the details around the questions you’ve got as well as a great way to start on your own quest to become a Salesforce Marketing Champion by getting stuck in. We cannot recommend SFSE enough and chances are if you type an SFMC question in your search engine of choice, SFSE will be one of the top results and start steering you down the right track to a resolution.

Created by Zuzanna Jarczynska (2020 Salesforce Marketing Champion and MVP) and featuring a wealth of resources, examples and great tools that you can get into the nitty gritty of how things work and how to make things work for you. The level of detail in the explanations of each of the examples is excellent and should definitely be a part of your regular reading. If you are ever in need of some inspiration for interesting projects or inspiration to push yourself further as a developer, bookmark sfmarketing.cloud today.

Highlight resources:

Data Views in Salesforce Marketing Cloud

Create a Cloudpages form with an image/file upload

Adam Spriggs (2020 Marketing Champion and MVP) is a name many will be familiar with, a prolific contributor to Salesforce Stack Exchange as well as many of the community webinar events. His blog covers not just SFMC but also just “interesting things” including memes, coffee and some top tier YouTube content. But, it is also one of the first places many people find when starting their journey in SFMC. The ever present requirement for a custom preference centre or for starting an automation via SSJS are 2 common tasks of SFMC developers and Adam has some great info on both of these topics.

Highlight Resources:

SFMC Known Issues Feed

AMPscript Lookup Examples

We’ve mentioned Adam Spriggs & Eliot Harper both in this article for their independent sites and SFMC resources, but when you bring 2 great minds together you can sometimes get something great. In this instance, we’ve got something arguably more useful than that with the AMPscript Guide. Whilst the guide itself isn’t free, the website contains ample code samples and all of the syntax details to enable you to up your AMPscript game.

Highlight Resources:

Marketing Cloud API Functions

AMPscript Language Overview

Greg “Gortonington” Gifford (2020 Marketing Champion and MVP) has set out to create a hub of interesting resources covering all things SFMC. Drawing on experiences from being client side as a jack of all trades through to today, Gortonington.com is definitely in the class of Master of SSJS with the resources that have been put together. Whether you know the difference between SOAP Objects and SQL Queries or not, there’s lots of practical and useful tips and guides to get you started as you level up your SFMC skills.

Highlight Resources:

SSJS Intro

SQL and the Three Valued Logic involving NULL

Markus Slabina (2020 Marketing Champion) is a Salesforce Consultant covering not just Marketing Cloud but also Cross Cloud projects and implementations. Markus.codes covers a broad range of topics with a strong focus on Journey Builder, Cross Cloud and making the most of what you have available. But it would be remiss to mention the blog without mentioning the open source Google Chrome Plugin, SFMC DevTools. Whilst this isn’t an official Salesforce product, there are some nice features that may help streamline your workflow.

Highlight Resources:

SFMC DevTools

Securing CloudPages with SSJS

DESelect is an AppExchange partner for Salesforce Marketing Cloud with the aim of making segmentation in SFMC a simple and easy task with less technical overheads. Whilst they have a lot to say about their product, they have well thought out content around data modelling within SFMC that is definitely worth checking out. The newest video series Heroes of Marketing Cloud features in depth video interviews with Trailblazers and is not one to miss.

Highlight Resources:

What data to store and how to integrate it

Heroes of Marketing Cloud with Kaelan Moss

AMPscript.xyz is the home of Ivan Razine, a web designer and developer and features how-to guides, tips and tricks for a range of the core SFMC technologies. With over 40 different articles at your disposal covering CloudPages, Data Extensions, AMPscript and more it’s a great source of solutions to some SFMC challenges. Even those SFMC challenges you didn’t realise you may have had to face!

Highlight Resources:

Create a Search and Replace app in SFMC

The 5 ways of adding and updating Data Extensions

Eliot Harper (2020 Marketing Champion and MVP) shares his tips across all aspects of SFMC in his short form video series mc.chat. Each video is accompanied by a well structured transcript to make this one of the most widely accessible video series on SFMC currently available. The topics are covered in the right amount of depth to either answer your question or to leave you with enough to go on to continue finding the solution to your specific challenge. Definitely taking a flick through the series.

Highlight Resources:

Email Address Update Behaviour

CloudPages Development

For those of you who haven’t heard of Guilda, she is a tour de Salesforce in bringing Trailblazer initiatives to life and showcasing the absolute best that the community has to offer. She’s spearheading the community driven events like Lookup(Answers) and Technical Marketers Meetings and you’ll find her regularly appearing at Trailblazer Community Events. If there is a single person at Salesforce to keep an eye out for to know what’s going on and when, it’s Guilda.

Highlight Resources:

Follow Guilda on Twitter

Written by Larry Rockoff, The Language of SQL takes a different approach to the syntax encyclopedia you sometimes find with SQL documentation. Taking readers through the simplest of SELECT statements through to the logic behind differing types of JOIN, Rockoff brings the fundamental concepts of SQL to life. Whilst not an SFMC specific resource, many SFMC developers will need to be well versed in this language - so if you’re looking to learn or improve you’d do well to grab a copy of this book.

Where to buy:

Amazon UK (No Affiliate Link)
Amazon US (No Affiliate Link)

Covering the complex world of email deliverability, WordToTheWise is a great resource for email marketers to understand how to make the most of their efforts from their email campaigns. It includes discussion pieces on SpamTraps,Delivery Improvement and Best Practices making it an incredibly valuable resource for SFMC practitioners.

Highlight Resources:

Gmail suddenly puts mail in the bulk folder

The key to improving deliverability

One of the most fully fleshed out API resources for those who use Postman. It includes REST and SOAP API activities ready to use in a well laid out collection. The collection is community maintained, is actively updated (as recently as 28th October 2020 to include new Transactional API endpoints) and covers a huge range of standard requirements from AUTH through to creating assets in Content Builder. Pair this up with Postman today.

The single most inspirational conclusion that can be drawn from this is that the resources the community are looking out for are diverse in terms of content, medium and function. We have resources that focus specifically on the development side of the spectrum as well as the Email Campaign Management. There are videos, books and code repositories & we’ll add the full set of resources shortly. If there’s any resources that you think have been missed, whilst the survey may be closed we would still be glad to hear of them.

Thank you again for all of your contributions to HowToSFMC.com and we would definitely recommend you check out any of the resources both above and below.

Read more
HowToSFMC
All Rights Reserved
Made with by your fellow SFMC users.