In programming languages, loops are a basic, yet a very powerful and indispensable concept. They shorten the code and reduce the need to repeat tasks. A loop is a set of instructions to be executed until a certain condition is met. In this article, we will focus on the most fundamental kind of loop, the for loop, and it’s usage in AMPscript and Server-Side JavaScript.

For loops in AMPscript
NOTE: In this article, we will focus on understanding the basic concepts of working with loops in Salesforce Marketing Cloud. For a strictly technical specification, defer to the following article: AMPscript Process Loops. |
A for loop, which is actually the only loop available in AMPscript, lets you execute the same script repeatedly until an ending condition is met.
Let’s use the following example: we have a Data Extension with customer IDs and their ordered items. We want to use that dataset to send an email to each customer, listing the items each of them ordered.
Here’s our Data Extension called Orders:
CustomerId | OrderId | OrderItem |
---|---|---|
0031t000005D98UAAS | 4632 | Women’s Marine Hoodie |
0031t000005D98UAAS | 4632 | Glass Love Bottle – 16.9 oz |
0031t000005D98UAAS | 4632 | Eco Ballpoint Pen |
0031t00000ZnTENAA3 | 3686 | Men’s Marine Hoodie |
0031t00000YEM4ZAAX | 7354 | Leather Hampton Watch |
In our example, the script contained within the loop would do the following: display a bullet point and display OrderItem name, and repeat the same action until all the OrderItems for a relevant Customer were displayed.
The most important element of any loop is the counter. The counter will define how many times the script in the loop should be executed. In order to define the counter, we must first set the criteria to find all the matching results in our Data Extension. We will use the LookupRows function to look up all rows, that match the Id of the Customer, that we want to send the email to. Then, we will use the RowCount function to determine how many results were found. The outcome of the RowCount
function will be our counter and will decide how many times the script inside the loop will be repeated. Here’s the first part of our script, where we count how many records match the criteria: [click here to see the code on Github]
Now let’s think through the loop logic. This is the verbal description of the loop that we would like to build:
Start at 1
and repeat the following in a loop until you reach the number defined in the RowCount
variable: display the current index and the name of the OrderItem
found in the referring row from the results of the LookupRows
function. Increase the index by one and repeat the process. Stop looping once the index reaches the number defined in the counter.
Here’s how this looks in AMPscript: [click here to see the code on Github]
You will notice the next
keyword at the end of the loop – each time this keyword is reached, the system compares the current index to the value of the counter defined by the RowCount
function. If the value is not equal to the end index, the loop will repeat until the end index is reached.

Here’s a full script that we can now use in an email, with added exception handling that will show “No items to display” in case the LookupRows
function doesn’t find any matching records for a subscriber in the Orders Data Extension: [click here to see the code on Github]
For a live coding example, see my YouTube video on Using AMPscript loops in Salesforce Marketing Cloud
For loops in Server-Side Javascript
While JavaScript offers at least five different kinds of loops, and all of those can be used in Salesforce Marketing Cloud, in this article we will focus on the most basic one, the for loop.
We will create a similar solution to the one created in the AMPscript example above. We will use the same Data Exteniosn called Orders and we will use a loop to display all the OrderItems for a Customer on a CloudPage.
The first thing we have to do in order to interact with a data extension via server-side JavaScript is to initialize the Data Extension object. Then, we will use the Server-Side JavaScript Rows.Lookup function to find all rows that match the Id of the Customer. For the purpose of this tutorial, we will hardcode the CustomerId
into the script: [click here to see the code on Github]
The above script will return an ArrayList, which is a collection of elements. Arrays use numbers to access its elements and the numbering always starts at zero:
Arrays in JavaScript are zero-based. This means that JavaScript starts counting from zero when it indexes an array. In other words, the index value of the first element in the array is “0” and the index value of the second element is “1”, the third element’s index value is “2”, and so on.
https://blog.kevinchisholm.com/javascript/javascript-array-length-always-one-higher/
In AMPscript we used the RowCount
function to determine the counter for our loop. In JavaScript, we will use the Array length Property. Inside the loop, we will display the current index (i
) and the name of the element (OrderItem
) that has this index number in the ArrayList. Remember that we will start counting at “0”, not at “1” like we did in AMPscript.
Then, we will increase the index by one and repeat the process.
In JavaScript, the ++
notation is the increment operator, which means that i++
is exactly the same thing as i = i+1
. The script will stop looping once the index reaches the number defined in the counter (rows.length
). Here’s the script: [click here to see the code on Github]
Here’s the full script that we can now use on a CloudPage, with added exception handling that will show “No items to display” in case there are no matching records found in the Orders Data Extension: [click here to see the code on Github]
The is how the results will be displayed on a CloudPage:

Additional resources
Here is a list of additional resources to help you understand both the general concept of loops, as well as using loops in AMPscript and Server-Side JavaScript:
- Computer Programming – Loops
- AMPscript Process Loops
- AMPscript 401 – Using for loops as part of an email send
- JavaScript For Loop
- JavaScript Guide – Loops and iteration
- How to Make Your First JavaScript for Loop
Questions? Comments?
Leave a comment below or email me at zuzanna@sfmarketing.cloud.
Greatt read thankyou
LikeLike