소개
Odoo에서 ‘모델’은 데이터가 데이터베이스에 어떻게 정리되고 저장되는지를 규정합니다. 영업 주문, 송장, 잠재 고객 등 비즈니스에서 다루는 모든 항목은 모델이라는 틀 안에 들어가 있고, 이 틀을 통해 화면 표시와 저장 방식이 결정됩니다.
Odoo 모델을 이해하는 것은 개발자와 기능 컨설턴트 모두에게 필수입니다. 모델은 필드 정의, 데이터 관계, 그리고 비즈니스 로직의 토대가 되어 시스템 동작과 확장 가능성을 좌우합니다.
이 글은 crm.lead 모델을 중심으로 설명합니다. 이 모델은 Odoo CRM의 파이프라인을 구성하며, 맞춤 모듈 개발, 외부 시스템 연동, 영업 플로우 설정 등에서 반드시 다루게 되는 핵심 모델입니다.
crm.lead 모델이란 무엇인가
crm.lead는 잠재 고객(리드)과 기회(오퍼튜니티)를 표현하는 모델입니다. 초기 문의부터 성사된 거래까지 파이프라인의 상태를 한 곳에서 관리하도록 설계되어 있어, 리드와 오퍼튜니티를 동일 모델로 처리합니다.
CRM 모듈을 중심으로 사용되며, 영업·마케팅·웹사이트 모듈이 이 모델을 확장하거나 참조합니다. 예컨대 웹사이트 문의, 영업 담당자 등록, 고객 전환 같은 모든 흐름에서 crm.lead 레코드가 생성·갱신됩니다.
기능은 Odoo의 모델 상속을 통해 추가됩니다. 기본 CRM 모듈이 핵심 구조를 제공하고, crm_iap_lead_enrich나 website_crm 같은 추가 모듈이 필요한 필드와 동작을 붙입니다. 핵심을 중복하지 않고 각 모듈이 역할을 덧붙이는 방식입니다.
모델의 핵심 필드
아래는 crm.lead에서 자주 쓰이는 주요 필드들입니다. 이들의 역할을 알고 있으면 리드·오퍼튜니티를 다루는 데 훨씬 수월합니다.
1. name
유형: Char. 리드나 오퍼튜니티의 제목을 저장합니다. 목록과 칸반에서 항목을 식별하는 대표 텍스트입니다. 예: “웹 문의”, “Acme사 엔터프라이즈 딜”처럼 간결한 레이블이 들어갑니다.
2. contact_name
유형: Char. 담당자 이름을 담는 필드로, 아직 res.partner에 연결되지 않은 초기 리드에서 사용됩니다. 리드가 고객으로 전환될 때 이 값이 파트너 레코드로 옮겨질 수 있습니다.
3. email_from
유형: Char. 주요 이메일 주소입니다. 전환 전 커뮤니케이션과 중복 체크에 주로 쓰이며, 이메일 기반 동기화나 자동화에서 핵심 식별자 역할을 합니다.
4. phone
유형: Char. 대표 전화번호로, 리드 폼에 표시되고 통화 기록이나 후속 활동에 사용됩니다.
5. mobile
유형: Char. 휴대전화 번호. SMS 발송이나 긴급 연락 등에서 별도로 활용될 수 있습니다.
6. partner_id
유형: Many2one (res.partner). 리드가 고객으로 전환되었을 때 연결되는 연락처/회사 레코드입니다. 전환 전엔 비어 있고, 전환 시 생성되거나 기존 파트너에 연결됩니다.
7. user_id
유형: Many2one (res.users). 해당 리드의 담당 영업 사용자입니다. 과제 할당, 리포팅, 활동 스케줄링에 쓰이며 개인 대시보드와 성과지표를 결정합니다.
8. team_id
유형: Many2one (crm.team). 소속 영업팀을 지정합니다. 라운드로빈 할당, 팀별 리포트 집계, 팀 기준 권한에 사용됩니다.
9. stage_id
유형: Many2one (crm.stage). 파이프라인 상의 현재 단계입니다. New, Qualified, Proposal, Negotiation, Won, Lost 등 단계 이동이 자동화와 보고를 트리거합니다.
10. type
유형: Selection. 이 레코드가 리드인지 오퍼튜니티인지 구분합니다. 리드는 초기 단계, 오퍼튜니티는 검증된 거래 후보로 기대 매출이 설정될 수 있습니다. 표시되는 뷰와 사용 가능한 단계에 영향을 줍니다.
11. expected_revenue
유형: Float. 성공 시 기대되는 매출액입니다. 파이프라인 가치와 예측에 쓰이며, 확률이나 거래 금액을 바탕으로 계산되기도 합니다.
12. probability
유형: Float. 승률 퍼센트(0~100). 가중 파이프라인 계산에 사용되며, 단계별 자동값이나 수동 입력으로 관리할 수 있습니다.
13. company_id
유형: Many2one (res.company). 멀티컴퍼니 환경에서 해당 리드가 속한 회사를 표시합니다. 가시성, 통화 설정 등 회사 범위에 영향을 줍니다.
14. description
유형: Text. 리드·오퍼튜니티에 대한 메모와 설명을 담는 곳입니다. 내부 노트, 미팅 요약, 후속 맥락 등 영업 활동에 필요한 정보를 기록합니다.
15. create_date
유형: Datetime. 레코드 생성 시각을 자동으로 저장합니다. 리드 수명 분석이나 전환 소요 시간 측정에 유용합니다.
16. write_date
유형: Datetime. 마지막 수정 시각을 자동 저장합니다. 최근 업데이트 시점을 추적할 때 사용합니다.
17. date_open
유형: Datetime. 리드가 처음 담당자에게 할당된 시점입니다(user_id가 설정될 때). 최초 연락까지 걸린 시간과 할당 속도 분석에 쓰입니다.
18. date_closed
유형: Datetime. 리드가 종료(성공/실패)된 시점입니다. 전환 분석과 영업 사이클 길이 측정에 사용됩니다.
19. date_deadline
유형: Date. 기대 마감일로, 예측과 활동 계획에 사용됩니다. 영업 담당자가 목표 종료 일자를 설정할 때 활용됩니다.
20. active
유형: Boolean. 소프트 삭제(아카이브) 플래그입니다. False면 기본 뷰에서 숨겨집니다. 실패하거나 병합된 리드는 보통 삭제하지 않고 비활성화합니다.
21. street, street2, city, zip
유형: Char. 주소 필드들로, 전환 전 리드에 주소가 있으면 이곳에 저장되고 전환 시 파트너로 복사됩니다.
22. country_id
유형: Many2one (res.country). 국가 정보로, 지역별 보고와 주소 형식에 사용됩니다. 영업 권역 기준 필터에 유용합니다.
23. state_id
유형: Many2one (res.country.state). 주/도 정보로 국가에 따라 도메인이 제한됩니다. 지역 세분화에 활용됩니다.
24. source_id
유형: Many2one (utm.source). 유입 경로를 추적하는 필드입니다. 웹사이트, 추천, 캠페인 등 마케팅 기여도를 파악하는 데 중요합니다.
25. campaign_id
유형: Many2one (utm.campaign). 특정 마케팅 캠페인과 연결합니다. 이메일·광고로 인한 리드를 캠페인 단위로 측정하여 ROI 분석에 사용됩니다.
26. activity_ids
유형: One2many (mail.activity). 리드에 예약된 활동들(할 일, 통화, 미팅)을 저장합니다. 활동 위젯과 후속 알림을 구동합니다.
27. color
유형: Integer. 칸반·목록 뷰에서 시각적으로 구분하기 위한 색 인덱스입니다. 우선순위나 소스별 구분에 쓰입니다.
28. message_ids
유형: One2many (mail.message). 채터(대화 기록)입니다. 내부 메모, 이메일 내역, 활동 히스토리가 전부 저장되어 상황 맥락을 제공합니다.
비즈니스 워크플로우에서의 활용 사례
1. 웹사이트 리드 수집
웹사이트 문의 폼이 제출되면 crm.lead 레코드가 자동 생성됩니다. 폼의 이메일, 연락처 이름, 메시지가 email_from, contact_name, description으로 채워지고 영업 파이프라인에 나타나 담당자가 후속 조치할 수 있게 됩니다.
2. 리드 검증 및 전환
영업 담당자는 리드를 단계별로 이동시키며 검증합니다. 검증 후에는 type을 Opportunity로 바꾸고 expected_revenue를 설정합니다. 거래가 성사되면 리드를 고객으로 전환하여 res.partner를 생성하거나 기존 파트너와 연결하고 필요시 판매 주문을 만듭니다.
3. 파이프라인 리포팅
관리자는 crm.lead 데이터를 바탕으로 파이프라인 리포트를 작성합니다. expected_revenue, probability, stage 정보로 가중치 매출을 계산하고 user_id나 team_id로 필터링해 개인·팀 성과를 분석합니다.
4. 마케팅 기여도 측정
source_id와 campaign_id로 마케팅 유입 경로를 추적합니다. 이메일 캠페인이나 광고에서 온 리드는 UTM 파라미터로 이 필드가 채워지고, 마케팅 팀은 이를 통해 캠페인 성과를 평가합니다.
5. 활동 및 후속 관리
영업 담당자는 리드에 활동을 예약하고 activity_ids에 통화·미팅·작업을 기록합니다. activity_date_deadline은 목록의 ‘다음 활동’ 열을 구동해 후속 알림을 제공합니다.
개발자가 이 모델을 확장하는 방법
개발자는 여러 패턴으로 crm.lead를 확장합니다. 핵심은 Odoo의 모델 상속 방식을 이용하는 것입니다.
모델 상속
_inherit = 'crm.lead'를 사용해 모델을 확장합니다. 새로운 필드를 추가하거나 메서드를 오버라이드하고, 제약을 걸 수 있습니다. 상속 방식으로 변경을 별도 모듈에 두면 향후 업그레이드가 쉬워집니다.
필드 추가
상속 모델에 필요한 필드를 선언합니다. Char, Many2one, Boolean, Integer, Text, Selection 등 적절한 타입을 선택하세요. 자주 추가되는 항목으로는 맞춤 유입경로, 관심 상품, 산업군 등이 있으며, 멀티컴퍼니 환경이라면 회사별 필드를 고려해야 합니다.
파이썬 확장
create, write, action_convert 같은 메서드를 오버라이드해 로직을 추가할 수 있습니다. 이때 super()로 원래 동작을 호출하는 것을 잊지 마세요. 단계 변경이나 전환 로직은 민감하기 때문에 Odoo의 @api 데코레이터(@api.depends, @api.onchange)를 활용해 계산 필드와 UI 동작을 구현합니다.
Odoo Studio
Odoo Studio는 코드 없이 필드를 추가할 수 있어 빠른 커스터마이징에 유리합니다. 하지만 복잡한 비즈니스 로직이나 단계 자동화, 장기 유지보수 측면에서는 커스텀 모듈이 더 안정적입니다.
권장 실무 방식
- 단계는 실제 영업 프로세스에 맞게 구성하세요. 리드와 오퍼튜니티에 대해 필요하면 별도 단계 시퀀스를 만드는 것이 좋습니다.
- 웹 폼에서 UTM 파라미터를 받아 source_id와 campaign_id에 설정하세요. 이렇게 하면 마케팅 기여도 추적이 자동화됩니다.
- team_id를 활용해 라운드로빈 할당이나 권역 기반 배분을 구현하세요. crm.team에서 할당 규칙을 정의할 수 있습니다.
- API 연동 시에는 XML-RPC나 JSON-RPC를 사용하세요. crm.lead 모델은 외부에 완전히 노출되어 있어 외부 CRM의 ID를 동기화하려면 ref 같은 커스텀 필드에 매핑하면 관리가 쉽습니다.
- 커스텀 필드는
x_접두어나 모듈 식별자를 붙여 버전 업 시 충돌을 피하세요.
자주 발생하는 실수
- 이메일(email_from)로 중복 체크를 하지 않아 같은 리드를 여러 번 생성하는 실수를 피하세요.
email_normalized나 사전 중복 검사 로직을 적용해 중복 생성을 막아야 합니다. - type(리드 vs 오퍼튜니티)과 stage_id를 혼동하지 마세요. type은 레코드의 분류를, stage_id는 깂퍼널 내 위치를 의미하며 둘 다 리포팅에 중요합니다.
- user_id나 team_id를 설정하지 않아 할당되지 않은 리드가 방치되는 일이 없게 하세요. 자동 할당 규칙을 만들거나 수동 할당 절차를 확립해야 합니다.
- conversion 관련 로직을 오버라이드할 때 반드시
super()를 호출하세요. action_convert는 핵심 작업을 수행하므로 무리하게 교체하지 말고 확장만 하십시오. - 필수 커스텀 필드를 추가할 때 기본값을 제공하지 않으면 기존 레코드가 유효성 검사에서 실패할 수 있습니다. 마이그레이션을 고려해 기본값을 설계하세요.
맺음말
crm.lead 모델은 Odoo CRM의 핵심입니다. 리드와 오퍼튜니티를 저장·관리하며 파이프라인을 움직이는 역할을 합니다. 필드 구조와 확장 방식을 이해하면 설정·커스터마이징·연동 작업을 더 안정적으로 수행할 수 있습니다.
영업 프로세스를 설계하는 기능 컨설턴트든, 맞춤형 CRM 모듈을 개발하는 엔지니어든 crm.lead에 대한 탄탄한 이해는 시간 절약과 오류 예방에 큰 도움이 됩니다.
Odoo 도입 지원이 필요하신가요?
Dasolo는 기업의 Odoo 도입, 커스터마이징, 최적화를 돕습니다. API 연동과 Odoo 개발을 전문으로 하며, crm.lead 같은 데이터 모델에 대한 깊은 실무 경험을 보유하고 있습니다.
Odoo 도입, 커스텀 CRM 개발 또는 연동 작업에 도움이 필요하시면 언제든 연락 주십시오. 데모 신청 프로젝트 상담을 위해 일정을 잡아보세요.