4 fields. Under a minute. Your listing goes live immediately.
Your property code
Type address above
Auto-generated
Agents text this ↑
Shared Drive folder containing all media files
🏡
Tap to upload listing photo
JPG or PNG · Landscape works best
🔍
Public
Shows in library + SMS
🔒
Code Only
SMS only, hidden from library
✨
Make it stand out
Your listing is already queued. These details make your card look sharper.
All optional — skip anytime
Agents will be asked to tag you when they post
Agent contact info is captured automatically on every download — no extra work needed.
🎉
Listing Dropped!
Share your code anywhere — Facebook groups, stories, emails, texts.
Your Property Code
WILLOW
Agents text this for instant media access
// ── 2-STEP SUBMIT MODAL ──
var subCurrentStep=1;
var subPrivacy='public';
var subGeneratedCode='';
function openSubmit(){
subCurrentStep=1;
document.getElementById('subOverlay').classList.add('open');
document.getElementById('subStep1').classList.add('active');
document.getElementById('subStep2').classList.remove('active');
document.getElementById('subSuccess').classList.remove('show');
document.getElementById('subFooter').style.display='flex';
document.getElementById('subProgress').style.width='50%';
document.getElementById('subStepLabel').textContent='Step 1 of 2';
var btn=document.getElementById('subBtnNext');
btn.innerHTML='Continue ';
btn.onclick=subNext;btn.disabled=false;
document.getElementById('subBtnSkip').style.display='none';
document.getElementById('subFooterLeft').textContent='Free to submit';
}
function closeSubmit(){document.getElementById('subOverlay').classList.remove('open')}
function updateCodePreview(addr){
var val=document.getElementById('codePreviewVal');
if(!addr||addr.trim().length<3){val.textContent='Type address above';val.className='code-preview-val empty';subGeneratedCode='';return;}
var parts=addr.trim().split(' ');
var word='';
for(var i=0;i1&&isNaN(parts[i])){word=parts[i];break;}}
if(!word)word=parts[parts.length-1];
subGeneratedCode=word.toUpperCase().replace(/[^A-Z]/g,'').substring(0,8);
val.textContent=subGeneratedCode;val.className='code-preview-val';
}
function formatPrice(input){
var raw=input.value.replace(/[^0-9]/g,'');
if(raw)input.value='$'+parseInt(raw).toLocaleString();
}
function setPrivacy(val){
subPrivacy=val;document.getElementById('fPrivacy').value=val;
document.getElementById('privPublic').classList.toggle('selected',val==='public');
document.getElementById('privCode').classList.toggle('selected',val==='code_only');
}
function handleFileDrop(e){
e.preventDefault();document.getElementById('uploadZone').classList.remove('dragover');
var file=e.dataTransfer.files[0];
if(file&&file.type.startsWith('image/'))uploadToCloud(file);
}
function handleUpload(input){var file=input.files[0];if(file)uploadToCloud(file);}
function uploadToCloud(file){
var title=document.getElementById('uploadTitle');
var zone=document.getElementById('uploadZone');
title.textContent='Uploading...';zone.style.borderColor='var(--sky)';
var fd=new FormData();
fd.append('file',file);fd.append('upload_preset',CLD_PRESET);fd.append('folder','acmh-heroes');
fetch('https://api.cloudinary.com/v1_1/'+CLD_CLOUD+'/image/upload',{method:'POST',body:fd})
.then(function(r){return r.json()})
.then(function(d){
document.getElementById('fThumbURL').value=d.secure_url;
var img=document.getElementById('thumbImg');img.src=d.secure_url;img.classList.add('show');
title.textContent='Photo uploaded';zone.style.borderColor='#16A34A';zone.style.background='rgba(22,163,74,.04)';
})
.catch(function(){title.textContent='Upload failed — try again';zone.style.borderColor='#DC2626';});
}
function subNext(){
if(subCurrentStep===1){
var addr=document.getElementById('fAddr').value.trim();
var price=document.getElementById('fPrice').value.trim();
var drive=document.getElementById('fDrive').value.trim();
var photo=document.getElementById('fThumbURL').value.trim();
if(!addr){toast('Please enter the property address');return;}
if(!price){toast('Please enter the list price');return;}
if(!drive){toast('Please paste your Google Drive link');return;}
if(!photo){toast('Please upload a hero photo');return;}
subCurrentStep=2;
document.getElementById('subStep1').classList.remove('active');
document.getElementById('subStep2').classList.add('active');
document.getElementById('subProgress').style.width='90%';
document.getElementById('subStepLabel').textContent='Step 2 of 2';
var btn=document.getElementById('subBtnNext');
btn.textContent='Submit Listing';btn.onclick=submitListing;
document.getElementById('subBtnSkip').style.display='block';
document.getElementById('subFooterLeft').textContent='These details are optional';
}
}
function skipToSubmit(){submitListing();}
function submitListing(){
var btn=document.getElementById('subBtnNext');
btn.disabled=true;btn.textContent='Submitting...';
var addr=document.getElementById('fAddr').value.trim();
var price=document.getElementById('fPrice').value.trim();
var drive=document.getElementById('fDrive').value.trim();
var photo=document.getElementById('fThumbURL').value.trim();
var code=subGeneratedCode||(addr.split(' ').find(function(w){return w.length>1&&isNaN(w);})||'LIST').toUpperCase().replace(/[^A-Z]/g,'').substring(0,8);
var payload={
address:addr,
full_address:addr+(document.getElementById('fArea').value.trim()?', '+document.getElementById('fArea').value.trim():'')+', San Antonio TX',
price:parseInt(price.replace(/[^0-9]/g,''))||0,
price_display:price,
property_code:code,
hero_photo_url:photo,
drive_link:drive,
media_type:document.getElementById('fMedia').value,
area:document.getElementById('fArea').value.trim()||null,
beds:document.getElementById('fBeds').value?parseInt(document.getElementById('fBeds').value):null,
baths:document.getElementById('fBaths').value?parseInt(document.getElementById('fBaths').value):null,
sqft:document.getElementById('fSqft').value.trim()||null,
attribution_required:document.getElementById('fAttrName').value.trim().length>0,
agent_name:'Dustin Losoya',
agent_brokerage:'REAL Broker LLC',
is_public:document.getElementById('fPrivacy').value==='public',
status:'pending'
};
fetch(SUPA_URL+'/rest/v1/listings',{method:'POST',headers:{...sbHeaders(),'Prefer':'return=minimal'},body:JSON.stringify(payload)})
.then(function(r){
if(!r.ok)throw new Error(r.status);
document.getElementById('subStep2').classList.remove('active');
document.getElementById('subSuccess').classList.add('show');
document.getElementById('subFooter').style.display='none';
document.getElementById('successCode').textContent=code;
document.getElementById('subProgress').style.width='100%';
document.getElementById('subStepLabel').textContent='Live ✓';
setTimeout(function(){loadListings();},800);
})
.catch(function(){
toast('Something went wrong — please try again');
btn.disabled=false;btn.textContent='Submit Listing';
});
}
function copyShareText(){
var code=document.getElementById('successCode').textContent;
var addr=document.getElementById('fAddr').value.trim();
var price=document.getElementById('fPrice').value.trim();
var text='New listing just dropped!\n\n'+addr+' | '+price+'\n\nProfessional photos, video & drone footage available.\n\nText '+code+' to (210) 555-0100 for instant access. Free to use — no watermarks, post as your own!\n\n#SanAntonio #RealEstate #ListingDrop';
if(navigator.clipboard){navigator.clipboard.writeText(text).then(function(){toast('Post text copied to clipboard!')});}
else{var ta=document.createElement('textarea');ta.value=text;document.body.appendChild(ta);ta.select();document.execCommand('copy');document.body.removeChild(ta);toast('Copied!');}
}
Access Media
Enter your info to unlock this listing's media
Your info is shared with the listing agent so they know who's marketing their property. It's never sold or spammed.
Attribution Required
The listing agent has requested that you credit them when using this media. Please include the following when you post:
Drop a Listing
Property Info
Cover Photo
Click to upload hero photo
JPG, PNG \u00b7 Max 10MB
Privacy
Your listing won't appear in the public library. Only agents who text the property code will receive a link. Good for seller privacy or pre-MLS distribution.