Batch Result
Retrieves the enriched contact data for a previously submitted batch request from Dropcontact.
Common Properties
- Name - The custom name of the node.
- Color - The custom color of the node.
- Delay Before (sec) - Waits in seconds before executing the node.
- Delay After (sec) - Waits in seconds after executing node.
- Continue On Error - Automation will continue regardless of any error. The default value is false.
If the ContinueOnError property is true, no error is caught when the project is executed, even if a Catch node is used.
Inputs
- Request ID - The request ID string returned from the Batch Post node. This identifies which batch results to retrieve.
Options
- API Key - Dropcontact API key for authentication (credential type).
Output
- result - An object containing the enriched contact data returned by Dropcontact, including email addresses, phone numbers, company information, and other enriched fields.
How It Works
The Batch Result node retrieves enrichment results for a previously submitted batch. When executed, the node:
- Validates the request ID is not empty
- Constructs a GET request to the Dropcontact API endpoint
- Adds authentication headers with the API key
- Sends the request to
https://api.dropcontact.io/batch/{request_id} - Parses the JSON response containing enriched contact data
- Returns the complete result object
Requirements
- A valid Dropcontact account with API access
- API key configured in credentials
- A valid request ID from a previous Batch Post operation
- Sufficient time elapsed for Dropcontact to process the batch (typically 30-60 seconds)
Error Handling
The node will return specific errors in the following cases:
ErrInvalidArg- Request ID is empty or missingErrCredentials- Failed to retrieve API key from credentialsErrInternal- Failed to create HTTP requestErrRuntime- Failed to send request or parse response
Usage Notes
- Wait at least 30-60 seconds after submitting a batch before retrieving results
- The result object includes processing status information
- You can poll this node multiple times with the same request ID
- Results remain available for retrieval for a reasonable time period
- The API may return partial results if processing is still in progress
- Check the response status to determine if processing is complete
Result Object Structure
The result object contains comprehensive enriched data for all contacts in the batch:
{
"success": true,
"error": false,
"request_id": "abc123def456",
"total_count": 3,
"processed_count": 3,
"data": [
{
"civility": "M",
"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe",
"email": [
{
"email": "john.doe@acmecorp.com",
"qualification": "verified",
"is_the_most_complete_email": true
}
],
"phone": "+1234567890",
"mobile_phone": "+1987654321",
"company": "Acme Corp",
"website": "https://acmecorp.com",
"linkedin": "https://www.linkedin.com/in/johndoe/",
"company_linkedin": "https://www.linkedin.com/company/acme-corp/",
"nb_employees": "51-200",
"siren": "123456789",
"siret": "12345678900012",
"naf5_code": "6201Z",
"company_country": "United States",
"company_city": "New York",
"company_address": "123 Main Street",
"job_title": "Senior Product Manager"
}
]
}
Response Fields
Top-level Fields:
- success - Boolean indicating if the request was successful
- error - Boolean indicating if errors occurred
- request_id - The original request ID
- total_count - Total number of contacts in the batch
- processed_count - Number of contacts processed so far
- data - Array of enriched contact objects
Contact Object Fields:
- civility - Title (M, Ms, etc.)
- first_name - Verified first name
- last_name - Verified last name
- full_name - Complete name
- email - Array of email objects with qualification status
- phone - Company phone number
- mobile_phone - Mobile phone number
- company - Verified company name
- website - Company website URL
- linkedin - Contact's LinkedIn profile
- company_linkedin - Company's LinkedIn page
- nb_employees - Employee count range
- siren/siret - French company identifiers (if requested)
- naf5_code - French business activity code
- company_country - Company headquarters country
- company_city - Company city
- company_address - Company address
- job_title - Contact's job position
Example: Basic Result Retrieval
Input:
request_id: "abc123def456ghi789jkl"
Flow Setup:
- Batch Post node submits contacts and outputs request_id
- Delay node waits 45 seconds
- Batch Result node retrieves enriched data
- Log node displays the results
Output: The result object containing all enriched contact information for the submitted batch.
Example: Processing Loop with Status Check
This example shows how to poll for results until processing is complete:
1. Batch Post → Store request_id in variable
2. Delay 30 seconds
3. Loop Start (max 10 iterations)
├─ Batch Result → Get results
├─ Check if processed_count = total_count
├─ If complete → Break loop
└─ If not → Delay 15 seconds, continue loop
4. Process enriched data
Tips:
- Check
processed_countvstotal_countto verify completion - Implement exponential backoff for polling (e.g., 15s, 30s, 60s)
- Store partial results if needed before processing completes
Example: Enrich and Update CRM
This complete workflow enriches contacts and updates a CRM:
- Read CSV - Load contacts needing enrichment
- Loop - Process in batches of 250
- Object - Build batch data object
- Batch Post - Submit for enrichment
- Store - Save request_id to data table
- Delay - Wait 60 seconds
- Batch Result - Retrieve enriched data
- Loop Results - Iterate through enriched contacts
- Update CRM - Update contact records with enriched data
- Log - Record successful updates
Data Extraction Example:
// Extract verified emails from result
let contacts = $.result.data;
for (let contact of contacts) {
if (contact.email && contact.email.length > 0) {
let verifiedEmail = contact.email.find(e => e.qualification === "verified");
if (verifiedEmail) {
console.log(`Found email: ${verifiedEmail.email} for ${contact.full_name}`);
}
}
}
Example: Filter and Export Verified Contacts
This workflow filters contacts with verified emails and exports them:
- Batch Result - Retrieve enriched data
- JavaScript - Filter contacts with verified emails:
let verified = $.result.data.filter(contact => {
return contact.email && contact.email.some(e => e.qualification === "verified");
});
return { verified_contacts: verified };
- Excel - Export verified contacts to spreadsheet
- Mail - Send notification with export file
Understanding Email Qualification
Dropcontact returns email arrays with qualification statuses:
- verified - Email confirmed as valid and deliverable
- probable - Email likely valid but not verified
- impossible - Email structure valid but domain/mailbox doesn't exist
- catch-all - Server accepts all emails (cannot verify specific address)
Best Practice:
// Prioritize email selection
let bestEmail = null;
if (contact.email && contact.email.length > 0) {
// First try verified
bestEmail = contact.email.find(e => e.qualification === "verified");
// Fall back to most complete email
if (!bestEmail) {
bestEmail = contact.email.find(e => e.is_the_most_complete_email);
}
// Last resort: first email
if (!bestEmail) {
bestEmail = contact.email[0];
}
}
Common Errors and Solutions
Error: "Request ID cannot be empty"
Cause: The request ID input is missing or empty Solution:
- Verify the Batch Post node successfully executed and returned a request_id
- Check that the request_id variable is properly passed to this node
- Ensure the request_id value is stored in message scope
Error: "Failed to send request"
Cause: Network connectivity issues or API endpoint unreachable Solution:
- Verify internet connectivity
- Check firewall settings allow HTTPS requests to dropcontact.io
- Retry after a brief delay
Error: "Failed to parse response"
Cause: API returned invalid JSON or unexpected response format Solution:
- Verify the request ID is valid and from a real Batch Post operation
- Check that the batch request hasn't expired (results are kept for a limited time)
- Ensure you're using the correct API key that submitted the batch
No data or empty results
Cause: Processing not yet complete or contacts didn't match Solution:
- Wait longer before retrieving results (60+ seconds for large batches)
- Check that submitted contacts had valid data combinations
- Verify contacts exist in business databases (B2B focus)
- Review the input data quality from the original Batch Post
Best Practices
- Timing: Wait at least 30-60 seconds after Batch Post before retrieving results
- Polling Strategy: Use exponential backoff (30s, 60s, 120s) if implementing retry logic
- Status Checks: Always verify
processed_countequalstotal_countbefore final processing - Error Handling: Enable Continue On Error for resilient automation flows
- Email Selection: Implement logic to prioritize verified emails over probable ones
- Data Validation: Check for null/empty values before using enriched fields
- Result Storage: Save complete results to database or file for audit trails
- Partial Processing: Handle scenarios where some contacts enrich successfully and others don't
- Rate Limits: Don't poll too frequently - respect API rate limits (60 requests/second max)
- Credit Tracking: Monitor which contacts consumed credits (those with found/verified emails)
Processing Status Indicators
Monitor these fields to track batch processing:
// Check if processing is complete
if ($.result.processed_count === $.result.total_count) {
console.log("Batch processing complete!");
} else {
console.log(`Still processing: ${$.result.processed_count}/${$.result.total_count}`);
}
// Check for errors
if ($.result.error) {
console.log("Batch processing encountered errors");
}
Working with Large Batches
For processing large contact lists (1000+ contacts):
- Split into batches of 250 contacts
- Submit each batch with Batch Post (store all request_ids)
- Wait 60 seconds
- Retrieve results for all batches in parallel
- Merge results into single dataset
- Process consolidated enriched data
Example Structure:
For each batch of 250:
- Batch Post → request_id_1, request_id_2, ...
- Store in array: [request_id_1, request_id_2, ...]
Delay 60 seconds
For each request_id in array:
- Batch Result → Append to results array
Combine all results → Final enriched dataset