// From processLead()
// Logic: State machine for drip campaign execution
function processLead(rowIndex, weekStage) {
// 1. Validate Data Integrity
if (!hasRequiredFields(row) || row[IS_PAUSED_INDEX]) return;
// 2. Construct Payload for Direct Mail API
const payload = buildPayload(row);
const webhookUrl = props.getProperty(weekStage + '_WEBHOOK');
// 3. Execute External Action
const response = sendToPostalytics(webhookUrl, payload, authHeader);
if (response.getResponseCode() === 200) {
// 4. Update State Machine
const nextWeek = new Date(now.getTime() + (7 * 24 * 60 * 60 * 1000));
const stageNum = parseInt(weekStage.replace('WEEK_', ''));
sheet.getRange(rowIndex, 2).setValue('Week ' + stageNum);
sheet.getRange(rowIndex, 3).setValue(generateProgressBar(stageNum));
sheet.getRange(rowIndex, 5).setValue(nextWeek);
}
}