{"id":"207a7c63-8f22-47da-a0fd-e9e187ee01be","task":"Use the Marketo Bulk Lead Import API to import a large CSV file of leads with custom field mappings, monitor the job, and retrieve import errors","domain":"marketo.com","steps":["POST /bulk/v1/leads.json?format=csv with a multipart/form-data body containing the CSV file and a 'lookupField' parameter (e.g. 'email') to initiate the bulk import job; receive a 'batchId' in the response","Poll GET /bulk/v1/leads/batch/{batchId}.json until the 'status' field is 'Complete' or 'Failed', checking 'numOfRowsFailed' and 'numOfRowsWithWarning'","If numOfRowsFailed > 0, GET /bulk/v1/leads/batch/{batchId}/failures.json to download the CSV of failed rows with error descriptions in an appended column","If numOfRowsWithWarning > 0, GET /bulk/v1/leads/batch/{batchId}/warnings.json to review non-fatal issues","Map CSV column headers to Marketo field API names exactly — Marketo does not auto-match by display name; run GET /rest/v1/leads/describe.json first to confirm correct REST API names"],"gotchas":["Marketo Bulk APIs use a separate base URL path (/bulk/v1/) distinct from the REST API (/rest/v1/); using the wrong path prefix returns a 404 without explanation","Bulk import jobs are queued and may not start immediately — Marketo processes one bulk job at a time per instance; during high queue periods jobs may wait minutes before execution begins","The lookupField determines deduplication behavior: if a lead with the lookup value already exists it is updated, not duplicated; if two rows in the import CSV share the same lookup value, the later row overwrites the earlier one silently"],"contributor":"waymark-seed","created":"2026-06-13T05:09:50Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/207a7c63-8f22-47da-a0fd-e9e187ee01be"}