proxy.createBatch
Create multiple SFMC objects in a single SOAP API call — more efficient than calling proxy.create() in a loop.
Syntax
var result = proxy.createBatch(objectType, propertiesArray);
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
objectType |
string | Yes | SOAP API object type |
propertiesArray |
object[] | Yes | Array of property objects, one per item to create |
Return Value
{
Status: "OK",
RequestID: "...",
Results: [
{ StatusCode: "OK", StatusMessage: "...", Object: {...} },
...
]
}
Examples
Batch insert subscriber records
var proxy = new Script.Util.WSProxy();
var submissions = [
{ email: "alice@example.com", name: "Alice" },
{ email: "bob@example.com", name: "Bob" },
{ email: "carol@example.com", name: "Carol" }
];
var batch = [];
for (var i = 0; i < submissions.length; i++) {
batch.push({
EmailAddress: submissions[i].email,
SubscriberKey: submissions[i].email,
Status: "Active"
});
}
var result = proxy.createBatch("Subscriber", batch);
// Check results
var results = result.Results;
for (var j = 0; j < results.length; j++) {
if (results[j].StatusCode !== "OK") {
Write("Failed: " + results[j].StatusMessage + "<br>");
}
}
Notes
SFMC SOAP API batches are typically limited to 2,500 records per call. For larger datasets, split into chunks.
// Chunk helper for large batches
function chunkArray(arr, size) {
var chunks = [];
for (var i = 0; i < arr.length; i += size) {
chunks.push(arr.slice(i, i + size));
}
return chunks;
}
var proxy = new Script.Util.WSProxy();
var chunks = chunkArray(largeArray, 500);
for (var c = 0; c < chunks.length; c++) {
proxy.createBatch("Subscriber", chunks[c]);
}