PayXip Lead

Cold Call Management System

PayXip Lead

Cold Call Management
Uploading...
Store / URL
Contact
Status
Action

Call Log

Store
Call Outcome
Remarks
function filterBy(v){document.getElementById('filter').value=v;renderAll()} function esc(s){return String(s).replace(//g,'>')} function getF(){ var s=(document.getElementById('search').value||'').toLowerCase(); var st=document.getElementById('filter').value||''; return leads.filter(function(l){ if(st&&l.status!==st)return false; if(s&&l.name.toLowerCase().indexOf(s)===-1&&l.phone.indexOf(s)===-1&&l.email.toLowerCase().indexOf(s)===-1&&l.url.toLowerCase().indexOf(s)===-1)return false; return true; }); } function renderStats(){ var t=leads.length; var intr=leads.filter(function(l){return l.status==='interested'}).length; var ni=leads.filter(function(l){return l.status==='not-interested'}).length; var na=leads.filter(function(l){return l.status==='no-answer'}).length; var pend=leads.filter(function(l){return l.status==='new'}).length; var called=intr+ni+na; document.getElementById('statsRow').innerHTML= '
Total Leads
'+t+'
'+pend+' pending to call
'+ '
Interested
'+intr+'
'+(called?Math.round(intr/called*100):0)+'% conversion
'+ '
Not Interested
'+ni+'
'+(t?Math.round(ni/t*100):0)+'% of total
'+ '
No Answer
'+na+'
'+(t?Math.round(na/t*100):0)+'% of total
'; } function badge(s){ var m={new:['badge-new','New'],interested:['badge-interested','Interested'],'not-interested':['badge-not-interested','Not Interested'],'no-answer':['badge-no-answer','No Answer'],'follow-up':['badge-follow-up','Follow-up']}; var b=m[s]||['badge-new','New']; return ''+b[1]+''; } function renderList(){ var f=getF(),el=document.getElementById('tbody'); if(!leads.length){ el.innerHTML='

No leads yet

Import your CSV file with Shopify store data to begin cold calling

';return; } if(!f.length){el.innerHTML='

No matching leads

Try adjusting your search or filters

';return} el.innerHTML=f.map(function(l){ var idx=leads.indexOf(l),dim=l.status!=='new'?'dim':''; return'
'+ '
'+esc(l.name)+'
'+esc(l.url)+'
'+ '
'+(l.phone?''+esc(l.phone)+'':'')+'
'+(l.email?''+esc(l.email)+'':'')+'
'+ '
'+badge(l.status)+'
'+ '
'+ '
'; }).join(''); document.getElementById('resultBar').innerHTML=''+f.length+' of '+leads.length+' leads · '+(leads.filter(function(l){return l.status!=='new'}).length)+' contacted'; } function openDlg(idx){ var l=leads[idx]; document.getElementById('dIdx').value=idx; document.getElementById('dStore').textContent=l.name; document.getElementById('dPhone').textContent=l.phone; document.getElementById('dPhoneLink').href='tel:'+l.phone; document.getElementById('dRemarks').value=l.remarks||''; dialStatus=l.status==='new'?'':l.status; document.querySelectorAll('#dOpts .so').forEach(function(b){b.classList.toggle('sel',b.dataset.s===dialStatus)}); document.getElementById('dlg').classList.add('on'); } function closeDlg(){document.getElementById('dlg').classList.remove('on');dialStatus=''} function pickStatus(s){dialStatus=s;document.querySelectorAll('#dOpts .so').forEach(function(b){b.classList.toggle('sel',b.dataset.s===s)})} async function saveDlg(){ var idx=parseInt(document.getElementById('dIdx').value);if(isNaN(idx))return; var l=leads[idx];var r=document.getElementById('dRemarks').value.trim(); l.status=dialStatus||'called';l.remarks=r;l.calledAt=new Date().toISOString(); closeDlg();renderAll();toast('Call logged','ok'); try{await api('/leads/update',{method:'POST',body:JSON.stringify({url:l.url,status:l.status,notes:r})})}catch(e){toast('Sync failed','err')} } async function qc(idx){ var l=leads[idx];if(l.status!=='new'){openDlg(idx);return} l.status='called';l.calledAt=new Date().toISOString();renderAll(); try{await api('/leads/update',{method:'POST',body:JSON.stringify({url:l.url,status:'called',notes:l.remarks||''})})}catch(e){} } function parseCSV(l){var r=[],c='',q=false;for(var i=0;i