Covers the account contact model and data extensions, AMPscript and server-side JavaScript, API objects, methods and OAuth, import activities and SQL queries, and data security.
20 free sample questions203 in the full practice test
Programmatic Languages · SSJS and AMPscript for Performance
A financial services company needs to generate a highly personalized email containing a complex data table built from three different data extensions: Customers, Accounts, and Transactions. Due to performance concerns with nested LookupRows calls within a FOR loop during the send context, an architect has recommended pre-processing the data. The goal is to aggregate transaction data into a single JSON object and store it in a staging Data Extension before the send.
Answer and explanation
Correct answer: A
This approach represents a best practice by separating the heavy data processing from the presentation layer. SSJS is more powerful and better suited for complex data manipulation, array handling, and JSON creation in a Script Activity. This pre-processing step ensures that the email rendering context only needs to perform a simple lookup and use the efficient BuildRowsetFromJSON function, leading to faster send times and avoiding timeouts.
Q2Question 2
Intermediate
API · SOAP vs REST API for Transactional Sends
A retail company's e-commerce platform needs to trigger a transactional 'Order Confirmation' email immediately after a purchase. The development team is deciding between the SOAP API's TriggeredSend object and the REST API's Transactional Messaging endpoint (/messaging/v1/email/messages/). The payload contains customer details, order line items, and a unique promotional code for their next purchase.
Answer and explanation
Correct answer: B
The REST Transactional Messaging API is the correct choice. It is designed for high-priority, non-promotional messages like order confirmations and password resets. It uses separate infrastructure from the bulk marketing send queues to ensure the lowest possible latency and highest delivery speed.
Q3Question 3
Intermediate
Data Management · SQL Query Optimization
A marketing team at a large university uses a SQL Query Activity to segment students for a new scholarship announcement. The query joins the Student_Master DE (containing StudentID, GPA, Major) with the Course_Enrollment DE (containing StudentID, CourseCode). The goal is to find all students with a GPA over 3.5 who are enrolled in any 'CS' prefixed course. The query is timing out.
Query Snippet:
SELECT
s.StudentID,
s.GPA,
s.Major
FROM
Student_Master s
INNER JOIN
Course_Enrollment c ON s.StudentID = c.StudentID
WHERE
s.GPA > 3.5 AND c.CourseCode LIKE 'CS%'
Assuming StudentID is the primary key on Student_Master and a sendable relationship exists, what is the most effective optimization to prevent the query from timing out?
Answer and explanation
Correct answer: C
This is the most effective solution. The query is filtering on GPA and CourseCode. Adding indexes to these columns allows the database engine to quickly find the matching rows without performing a full table scan, which is the most common cause of timeouts in queries like this.
Q4Question 4
Beginner
Data Modeling · Contact Delete Process
True or False: When a contact is deleted from Contact Builder through the official Contact Delete process, their corresponding records in all Sendable Data Extensions are automatically removed, but records in Non-sendable Data Extensions remain untouched.
Answer and explanation
Correct answer: A
This statement is true. The Contact Delete process targets the contact record and its associated data in sendable contexts to comply with privacy regulations like GDPR. Non-sendable data extensions, which are often used for relational data, logging, or analytics, are not part of the automated deletion cascade.
Q5Question 5
IntermediateMultiple answers
Programmatic Languages · AMPscript for CloudPages
A developer is building a CloudPage that functions as a custom preference center. The page needs to retrieve a subscriber's current preferences from a Data Extension named Preferences_DE upon loading, and then update them when the subscriber submits a form. The form submission is handled by the same CloudPage.
Answer and explanation
Correct answers: B, C
This function is essential for retrieving values from the form submission. It reads the data passed in the HTTP request (either from the query string or the form body), which is necessary to know what the subscriber's new preferences are.
This function (or its counterpart, UpsertData) is essential for persisting the changes. After retrieving the new preferences from the form using RequestParameter(), UpdateData() is used to write those new values to the correct row in the Preferences_DE.
Q6Question 6
Advanced
Security · Secure CloudPage Development
Northern Trail Outfitters (NTO) is launching a 'Track Your Order' CloudPage for customers. The page will accept an Order ID from a URL parameter (.../track?order=12345) and display sensitive order details, including the customer's shipping address and the items purchased. The development team is concerned about security, specifically preventing unauthorized users from guessing Order IDs and viewing other customers' data.
The initial plan is to use RequestParameter("order") to get the Order ID, then use LookupRows() on the Orders_DE to retrieve the details. The Orders_DE contains OrderID, CustomerID, ShippingAddress, and OrderDetails. To ensure the page is only viewed by the intended recipient, the links are sent in a transactional email and contain the subscriber's SubscriberKey as another parameter (...&subKey=XYZ).
The security team has mandated that a user accessing the page must be the actual customer associated with the order. They have also flagged potential Cross-Site Scripting (XSS) vulnerabilities if order details are displayed directly.
Answer and explanation
Correct answer: D
This is the most secure and efficient solution. It validates authorization by including both the OrderID and the CustomerID in the lookup criteria, ensuring only the correct owner can view the data. It also prevents XSS by using AttributeValue() to safely encode all data before rendering it as HTML.
Q7Question 7
Intermediate
Programmatic Languages · Programmatic Exclusions
A developer needs to prevent an email from being sent to a subscriber if their Status field in the sendable data extension is 'Inactive'. The check must be performed at send time.
To accomplish this, the developer should use the _____(1, "Subscriber status is inactive") function in an AMPscript block within the email body.
Answer and explanation
Correct answer: C
RaiseError() is the correct AMPscript function used to halt processing for an individual subscriber and prevent the email from being sent to them. The first parameter is a boolean that indicates whether to log the error as a send error, and the second is the error message.
Q8Question 8
Intermediate
Data Modeling · Shared Data Extensions
A company has a multi-brand architecture using separate Marketing Cloud Business Units (BUs) for each brand. They need to maintain a single, centralized data extension of all customers who have opted out of communications across all brands. This 'Global Unsubscribe' list must be accessible for suppression in sends from every BU.
Answer and explanation
Correct answer: A
This is the standard and best practice for this use case. Shared Data Extensions are specifically designed to allow data to be accessed and utilized across all Business Units in an Enterprise 2.0 account. This allows for centralized management of suppression lists.
Q9Question 9
Advanced
API · REST API Bulk Operations
A developer is building an integration that programmatically creates and updates hundreds of assets (emails, templates, content blocks) in Content Builder. After implementing the logic using the REST API, they notice the process is slow and occasionally fails with 429 Too Many Requests errors. The current implementation sends one API request per asset.
Answer and explanation
Correct answer: D
This is the correct solution. The batch endpoint is specifically designed to handle bulk create/update operations on assets. By bundling up to 25 asset payloads into a single API call, the developer can drastically reduce the number of requests, improve overall performance, and avoid hitting rate limits.
Q10Question 10
Beginner
Programmatic Languages · AMPscript Conditional Logic
A marketing email needs to display a personalized greeting, "Hi [FirstName]," but must fall back to "Hi Valued Customer," if the FirstName attribute is empty or does not exist for a subscriber.
Answer and explanation
Correct answer: B
This is the most concise and robust solution. AttributeValue("FirstName") correctly retrieves the attribute. Empty() checks for both NULL and empty string values. The IIF() function provides a clean, inline way to specify the output for both the true and false conditions.
Register free for 10 more questions
Or unlock all 203 certified-marketing-cloud-developer questions with explanations, timed mode and flashcards.