πŸ“Œ What is SSJS in SFMC?

SSJS (Server-Side JavaScript) is used in Salesforce Marketing Cloud Engagement to run JavaScript code on SFMC servers πŸ” β€” not on the user’s browser.

βœ… It’s useful for:

  • πŸ” Personalizing landing pages (CloudPages)
  • βœ‰οΈ Building dynamic emails
  • 🧠 Handling complex logic
  • πŸ“Š Interacting with Data Extensions

🧠 Why Use SSJS over AMPscript?

Feature AMPscript βœ… SSJS πŸ’»
Inline personalization βœ… Best ⚠️ Works but complex
Arrays, try/catch, logic ❌ Limited βœ… Powerful
Easier for beginners βœ… Yes ❌ Slight learning curve
CloudPages & apps ⚠️ Limited βœ… Best

πŸ‘‰ Use AMPscript for personalization in emails
πŸ‘‰ Use SSJS for logic-heavy work in CloudPages


πŸ› οΈ Syntax for SSJS Block

To write SSJS inside CloudPages, wrap it with:

<script runat="server">
// Your SSJS code here
</script>

πŸ’‘ Optional attributes:

<script 
runat="server"
language="JavaScript"
executioncontexttype="Post"
executioncontextname="myContext">
// Your SSJS code here
</script>

πŸš€ Real-Time Example: Retrieve Subscriber Info from Data Extension

🎯 Use Case

Retrieve a subscriber’s first name from a Data Extension based on their email address and display it on a CloudPage.

🧱 Requirements

  • A Data Extension named: SubscribersDE
    • Columns: EmailAddress, FirstName
  • Create a CloudPage in SFMC

πŸ’» SSJS Code Block

<script runat="server">
Platform.Load("Core","1");

var email = Request.GetQueryStringParameter("email"); // Get email from URL param
var rows = DataExtension.Init("SubscribersDE").Rows.Retrieve({Property: "EmailAddress", SimpleOperator: "equals", Value: email});

var firstName = "Guest";

if(rows.length > 0) {
firstName = rows[0].FirstName;
}
</script>

<h1>Welcome, <ctrl:var name="firstName" default="Guest" />! πŸ‘‹</h1>

πŸ” Step-by-Step: How to Run in SFMC

πŸ§‘β€πŸ’Ό Step 1: Create a Data Extension

  • Go to Email Studio > Subscribers > Data Extensions
  • Create SubscribersDE with:
    • EmailAddress (Text, Primary Key)
    • FirstName (Text)

πŸ–₯️ Step 2: Add Test Data

  • Insert some records manually like:
EmailAddress FirstName
test@example.com John
hello@domain.com Alice

🌐 Step 3: Create a CloudPage

  1. Navigate to CloudPages
  2. Create a new Landing Page > Collection
  3. Drag in HTML Block
  4. Paste the SSJS code above
  5. Save & Publish the page
  6. Add a test query param like:
<script runat="server">
Platform.Load("Core", "1");

// Get email from URL parameter
var email = Request.GetQueryStringParameter("email");

// Initialize DE using CustomerKey (recommended over name)
var de = DataExtension.Init("48BA0"); // or use CustomerKey like "DE_KEY_123"

// Retrieve matching record
var rows = de.Rows.Retrieve({
    Property: "EmailAddress",
    SimpleOperator: "equals",
    Value: email
});

// Default greeting name
var firstName = "Guest";

// If a match is found, use the FirstName from the DE
if (rows.length > 0) {
    firstName = rows[0].FirstName;
}

// Output personalized greeting
Write("<h1>Welcome, " + firstName + "! πŸ‘‹</h1>");
</script>
https://your-cloudpage-url.com?email=test@example.com

πŸ” It should display:
πŸ‘‰ Welcome, John! πŸ‘‹


πŸ§ͺ Bonus: Debugging & Tips

πŸ”Ή Platform.Load(“Core”,”1″)
Always load this before using Core functions.

πŸ”Ή Request.GetQueryStringParameter(“email”)
Fetches URL param. You can also use Request.GetFormField() for POST.

πŸ”Ή Error Handling Example

javascriptCopyEdittry {
// your code
} catch(e) {
Write("Error: " + Stringify(e));
}

🎁 Wrap Up

βœ… You just learned:

  • What SSJS is in SFMC
  • When to use SSJS vs AMPscript
  • How to retrieve data from Data Extensions using SSJS
  • How to build a dynamic CloudPage πŸ’‘

πŸ“Œ Useful SFMC SSJS Methods Cheat Sheet

Method Use
Retrieve Get data from Data Extensions
Add Insert new record
Update Update existing
Remove Delete record

Example:

jsCopyEditDataExtension.Init("SubscribersDE").Rows.Add({
EmailAddress: "new@domain.com",
FirstName: "NewUser"
});