Add and manage listings — properties, photos, foreign quota เพิ่มและจัดการประกาศ — ทรัพย์ รูปภาพ โควต้าต่างชาติ
How to structure your inventory in DevProp so every listing carries the right metadata for Thai-market search, portal sync, and foreign-quota enforcement. วิธีจัดโครงสร้างสต็อกใน DevProp ให้ประกาศทุกรายการมี metadata ที่ถูกต้องสำหรับค้นหาตลาดไทย ซิงค์พอร์ทัล และบังคับโควต้าต่างชาติ
Listing model — what a record actually contains
Every DevProp listing has 24 mandatory fields and ~30 optional ones. The mandatory set is designed to match what DDproperty and Hipflat require for clean publish, plus what foreign buyers ask for inside the first 3 LINE messages. Filling them properly once saves 8-12 minutes per listing downstream.
Mandatory fields, in form order:
- Property type — condo, house, townhouse, commercial, land. Determines which other fields appear.
- Transaction type — for sale, for rent, both. Both = single listing with two price fields.
- Title (TH + EN) — auto-translates one to the other (you can override).
- Location — Google Place ID + your zone tag (Sukhumvit, Silom, Thonglor, Bang Tao, etc.).
- Bedrooms / bathrooms / sqm / parking — numbers only, integer for bed/bath/parking.
- Floor (if condo) — important for foreign quota cross-reference.
- Price — THB (you can show MM by toggling display unit per page).
- Foreign quota % (condos only) — see below, this is the field that prevents disasters.
- Photos — min 4, max 30 (we recommend 8-15). 1280px+ wide.
- Building / project entity — link to a parent building record (created automatically if it doesn't exist).
Foreign quota — the rule that breaks half the deals
Thailand's Condominium Act B.E. 2522 (1979) caps foreign ownership of each condo building at 49% of total saleable area. Every individual unit listing inherits the building's current %.
When you create a building entity in DevProp, you set its foreign_owned_pct. As foreign buyers close on units in that building, the % auto-increments. When the building hits 49%, all unsold units in that building have their foreign_eligible flag flipped to false.
What this means for you:
- Your agent filters inventory for a Chinese buyer → only foreign-eligible units appear.
- You can't accidentally take a reservation for a foreigner on a full building.
- When a Thai buyer closes on a foreign-held unit, the quota drops; affected units flip back to eligible.
- The CRM logs the quota change with timestamp + transaction reference for audit.
Bulk import (CSV)
For agencies migrating from another CRM or Excel: Listings → Import → CSV. Template at devprop.io/templates/listings-import.csv. Map your columns to ours during the wizard (50+ aliases are auto-detected: "Bedrooms" / "Beds" / "BR" / "ห้องนอน" all map to bedrooms).
Import speed: ~100 listings/minute. The system pre-validates each row and flags issues (missing photos, invalid foreign quota, malformed coords). You decide whether to fix-and-retry or import-with-warnings.
Photo handling
Upload photos directly (max 30 per listing) or paste URLs (we re-host them on Cloudflare R2 so the source URL going down doesn't kill your listing). The system auto-generates 3 sizes (thumbnail 400px, gallery 1280px, full 2400px). Photos are EXIF-stripped (privacy + smaller size).
Drag-reorder by clicking and dragging the thumbnail. The first photo is the hero (used on portal sync, public website cards, LINE message previews).
Status lifecycle
A listing moves through: Draft → Active → Reserved → Under contract → Closed → Archived. Only Active listings appear on portal sync and the public website. Closed is searchable internally (for sold-comp analysis) but invisible to public crawlers.
Auto-archive: listings older than 180 days with no activity (no enquiry, no price change, no photo update) are moved to Stale. You confirm archive or refresh. This keeps your portal listings looking actively-managed (DDproperty downranks stale ads).
Cross-listing same unit (with parent project)
For developer-direct or new-project agencies, you'll often have multiple units in the same building. Best practice: create the Project entity first (Settings → Projects → New), then create individual unit listings linked to the project. Project-level fields (developer, completion date, common-area fees) are shared; unit-level fields (floor, view, price) are individual.
Why this matters: the public SEO website surfaces the project page (e.g. /projects/the-esse-sukhumvit-36) with all linked units below it. Google ranks project pages higher than individual unit listings for searches like "The Esse Sukhumvit 36 price".
โมเดลประกาศ — record มีอะไรจริง
ประกาศ DevProp ทุกรายการมี 24 ฟิลด์บังคับและ ~30 ฟิลด์เลือกได้ ชุดบังคับออกแบบให้ตรงกับสิ่งที่ DDproperty และ Hipflat ต้องการสำหรับ publish ที่สะอาด รวมกับสิ่งที่ผู้ซื้อต่างชาติถามในข้อความ LINE 3 ข้อความแรก กรอกถูกต้องครั้งเดียวประหยัด 8-12 นาทีต่อประกาศใน downstream
ฟิลด์บังคับ ตามลำดับฟอร์ม:
- ประเภททรัพย์ — คอนโด บ้าน ทาวน์โฮม พาณิชย์ ที่ดิน กำหนดว่าฟิลด์อื่นใดปรากฏ
- ประเภทธุรกรรม — ขาย เช่า ทั้งสองอย่าง ทั้งสองอย่าง = ประกาศเดียวกับสองฟิลด์ราคา
- Title (TH + EN) — แปลอัตโนมัติจากอันหนึ่งไปอีกอันหนึ่ง (override ได้)
- ตำแหน่ง — Google Place ID + tag โซน (สุขุมวิท สีลม ทองหล่อ บางเทา ฯลฯ)
- ห้องนอน / ห้องน้ำ / ตร.ม. / ที่จอด — ตัวเลขเท่านั้น จำนวนเต็มสำหรับ bed/bath/parking
- ชั้น (ถ้าคอนโด) — สำคัญสำหรับการ cross-reference โควต้าต่างชาติ
- ราคา — THB (แสดงเป็น MM ได้โดยสลับ display unit ต่อหน้า)
- % โควต้าต่างชาติ (เฉพาะคอนโด) — ดูด้านล่าง นี่คือฟิลด์ที่ป้องกันหายนะ
- รูปภาพ — ขั้นต่ำ 4, สูงสุด 30 (แนะนำ 8-15) กว้าง 1280px+
- Building / project entity — link กับ parent building record (สร้างอัตโนมัติถ้าไม่มี)
โควต้าต่างชาติ — กฎที่ทำให้ครึ่งของดีลล่ม
พ.ร.บ. อาคารชุด พ.ศ. 2522 ของไทยจำกัดการถือครองต่างชาติของอาคารคอนโดแต่ละแห่งที่ 49% ของพื้นที่ขายได้รวม ประกาศยูนิตแต่ละรายการรับ % ปัจจุบันของอาคาร
เมื่อคุณสร้าง building entity ใน DevProp คุณตั้ง foreign_owned_pct เมื่อผู้ซื้อต่างชาติปิดยูนิตในอาคารนั้น % จะเพิ่มขึ้นอัตโนมัติ เมื่ออาคารถึง 49% ยูนิตที่ยังขายไม่ได้ทั้งหมดในอาคารนั้นจะ flip foreign_eligible flag เป็น false
ความหมายสำหรับคุณ:
- เอเจนต์กรอง inventory ให้ผู้ซื้อจีน → เฉพาะยูนิตที่ต่างชาติได้เท่านั้น
- ไม่สามารถจองให้ต่างชาติบนอาคารที่เต็มได้โดยบังเอิญ
- เมื่อผู้ซื้อไทยปิดยูนิตที่ต่างชาติถือ โควต้าลด ยูนิตที่ได้รับผลกลับ flip กลับเป็น eligible
- CRM บันทึกการเปลี่ยน quota พร้อม timestamp + transaction reference สำหรับ audit
Bulk import (CSV)
สำหรับเอเจนซี่ที่ย้ายจาก CRM อื่นหรือ Excel: Listings → Import → CSV Template ที่ devprop.io/templates/listings-import.csv Map column ของคุณกับของเราใน wizard (alias 50+ ตรวจจับอัตโนมัติ: "Bedrooms" / "Beds" / "BR" / "ห้องนอน" ทั้งหมด map เป็น bedrooms)
ความเร็ว import: ~100 ประกาศ/นาที ระบบ pre-validate แต่ละแถวและ flag ปัญหา (รูปขาด โควต้าต่างชาติไม่ถูกต้อง coord ผิดรูปแบบ) คุณตัดสินใจว่าจะแก้แล้วลองใหม่หรือ import พร้อม warning
การจัดการรูปภาพ
อัปโหลดรูปโดยตรง (สูงสุด 30 ต่อประกาศ) หรือวาง URL (เรา re-host ใน Cloudflare R2 เพื่อให้ source URL ดับไม่ฆ่าประกาศของคุณ) ระบบสร้าง 3 ขนาดอัตโนมัติ (thumbnail 400px, gallery 1280px, full 2400px) รูป EXIF-stripped (privacy + ขนาดเล็กกว่า)
ลากเรียงโดยคลิกและลาก thumbnail รูปแรกคือ hero (ใช้บน portal sync, public website card, LINE message preview)
วงจรชีวิตสถานะ
ประกาศเคลื่อนผ่าน: Draft → Active → Reserved → Under contract → Closed → Archived เฉพาะประกาศ Active ปรากฏบน portal sync และ public website Closed ค้นหาภายในได้ (สำหรับการวิเคราะห์ sold-comp) แต่ไม่เห็น public crawler
Auto-archive: ประกาศเก่ากว่า 180 วันโดยไม่มีกิจกรรม (ไม่มีคำถาม ไม่มีการเปลี่ยนราคา ไม่มีการอัปเดตรูป) ย้ายไป Stale คุณยืนยัน archive หรือ refresh ทำให้ประกาศ portal ของคุณดูมีการจัดการอยู่ (DDproperty downrank ประกาศเก่า)
Cross-listing ยูนิตเดียวกัน (กับ parent project)
สำหรับเอเจนซี่ developer-direct หรือ new-project คุณจะมีหลายยูนิตในอาคารเดียวกันบ่อย แนวปฏิบัติที่ดี: สร้าง Project entity ก่อน (Settings → Projects → New) แล้วสร้างประกาศยูนิตที่ link กับ project ฟิลด์ระดับ project (developer, วันสร้างเสร็จ, ค่าส่วนกลาง) แชร์ ฟิลด์ระดับยูนิต (ชั้น วิว ราคา) ของแต่ละยูนิต
ทำไมสำคัญ: public SEO website แสดงหน้า project (เช่น /projects/the-esse-sukhumvit-36) พร้อมยูนิตที่ link ทั้งหมดด้านล่าง Google จัดอันดับหน้า project สูงกว่าประกาศยูนิตแต่ละรายการสำหรับการค้นหาเช่น "The Esse Sukhumvit 36 ราคา"
Stuck on this step?
Book a free 20-minute call. We'll walk through it on screen-share.
Book diagnostic