Odoo 19.0 Community · Persistent

crm.lead: fields, relations and API

The crm.lead model ("Lead") is a persistent model declared by the CRM module, then extended by 13 other modules. It exposes 134 fields, 95 of them declared directly on the model; 15 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 19 JSON-2 API call.

Model identity

Technical name
crm.lead
Label
Lead
Type
Persistent (models.Model)
SQL table
crm_lead
Origin module
CRM (crm)
Extended by
iap_crm, crm_iap_enrich, crm_iap_mine, crm_livechat, crm_mail_plugin, event_crm, sale_crm, mass_mailing_crm, survey_crm, website_crm, website_crm_iap_reveal, website_crm_livechat, website_crm_partner_assign
Default order (_order)
priority desc, id desc
Inherits from (mixins)
mail.thread.ccmail.thread.blacklistmail.thread.phonemail.activity.mixinutm.mixinformat.address.mixinmail.tracking.duration.mixin

Model fields

95 own fields, 33 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.

134 of 134 fields shown

Technical nameLabelTypeDetails
activeActiveboolean
automated_probabilityAutomated Probabilityfloat
read-onlycomputed, stored
calendar_event_idsMeetingsone2many

inverse: opportunity_id

campaign_idCampaignmany2one
cityCitychar
computed, stored
colorColor Indexinteger
commercial_partner_idCustomer Companymany2one
computed
company_currencyCurrencymany2one
computed
company_idCompanymany2one
computed, stored
contact_nameContact Namechar
computed, stored
country_idCountrymany2one
computed, stored
date_automation_lastLast Actiondatetime
read-only
date_closedClosed Datedatetime
read-only
date_conversionConversion Datedatetime
read-only
date_deadlineExpected Closing

Estimate of the date on which the opportunity will be won.

date
date_last_stage_updateLast Stage Updatedatetime
read-onlycomputed, stored
date_openAssignment Datedatetime
read-onlycomputed, stored
date_partner_assignPartner Assignment Date

Last date this case was forwarded/assigned to a partner

date
computed, stored

added by Resellers (website_crm_partner_assign)

day_closeDays to Closefloat
computed, stored
day_openDays to Assignfloat
computed, stored
descriptionNoteshtml
duplicate_lead_countPotential Duplicate Lead Countinteger
computed
duplicate_lead_idsPotential Duplicate Leadmany2many
computed
email_domain_criterionEmail Domain Criterionchar
computed, stored
email_fromEmailchar
computed, stored
email_normalizedEmail Normalizedchar
email_stateEmail Qualityselection
computed, stored

Values: correct (Correct), incorrect (Incorrect)

event_idSource Event

Event triggering the rule that created this lead

many2one

added by Event CRM (event_crm)

event_lead_rule_idRegistration Rule

Rule that created this lead

many2one

added by Event CRM (event_crm)

expected_revenueExpected Revenuemonetary
functionJob Positionchar
computed, stored
iap_enrich_doneEnrichment done

Whether IAP service for lead enrichment based on email has been performed on this lead.

boolean

added by Lead Enrichment (crm_iap_enrich)

is_automated_probabilityIs automated probability?boolean
computed
is_partner_visibleIs Partner Visibleboolean
computed
lang_active_countLang Active Countinteger
computed
lang_codeLang Codechar

related: lang_id.code

lang_idLanguagemany2one
computed, stored
lead_mining_request_idLead Mining Requestmany2one

added by Lead Generation (crm_iap_mine)

lead_propertiesPropertiesproperties
lost_reason_idLost Reasonmany2one
medium_idMediummany2one
meeting_display_dateMeeting Display Datedate
computed
meeting_display_labelMeeting Display Labelchar
computed
nameOpportunitychar
requiredcomputed, stored
order_idsOrdersone2many

inverse: opportunity_id

added by Opportunity to Quotation (sale_crm)

origin_channel_idLive chat from which the lead was createdmany2one
read-only

added by CRM Livechat (crm_livechat)

origin_survey_idSurveymany2one

added by Survey CRM (survey_crm)

partner_assigned_idAssigned Partnermany2one

added by Resellers (website_crm_partner_assign)

partner_declined_idsPartner not interestedmany2many

added by Resellers (website_crm_partner_assign)

partner_email_updatePartner Email will Updateboolean
computed
partner_idContact

Linked partner (optional). Usually created when converting the lead. You can find a partner by its Name, TIN, Email or Internal Reference.

many2one
partner_is_blacklistedPartner is blacklistedboolean
read-only

related: partner_id.is_blacklisted

partner_latitudeGeo Latitudefloat

added by Resellers (website_crm_partner_assign)

partner_longitudeGeo Longitudefloat

added by Resellers (website_crm_partner_assign)

partner_nameCompany Name

The name of the future partner company that will be created while converting the lead into opportunity

char
computed, stored
partner_phone_updatePartner Phone will Updateboolean
computed
phonePhonechar
computed, stored
phone_sanitizedPhone Sanitizedchar
phone_statePhone Qualityselection
computed, stored

Values: correct (Correct), incorrect (Incorrect)

priorityPriorityselection

Values: 0 (Low), 1 (Medium), 2 (High), 3 (Very High)

probabilityProbabilityfloat
computed, stored
prorated_revenueProrated Revenuemonetary
computed, stored
quotation_countNumber of Quotationsinteger
computed

added by Opportunity to Quotation (sale_crm)

recurring_planRecurring Planmany2one
recurring_revenueRecurring Revenuesmonetary
recurring_revenue_monthlyExpected MRRmonetary
computed, stored
recurring_revenue_monthly_proratedProrated MRRmonetary
computed, stored
recurring_revenue_proratedProrated Recurring Revenuesmonetary
computed, stored
referredReferred Bychar
registration_count# Registrations

Counter for the registrations linked to this lead

integer
computed

added by Event CRM (event_crm)

registration_idsSource Registrations

Registrations triggering the rule that created this lead

many2many

added by Event CRM (event_crm)

reveal_iap_creditsIAP Creditsinteger

added by Lead Generation From Website Visits (website_crm_iap_reveal)

reveal_idReveal IDchar

added by IAP / CRM (iap_crm)

reveal_ipIP Addresschar

added by Lead Generation From Website Visits (website_crm_iap_reveal)

reveal_rule_idLead Generation Rulemany2one

added by Lead Generation From Website Visits (website_crm_iap_reveal)

sale_amount_totalSum of Orders

Untaxed Total of Confirmed Orders

monetary
computed

added by Opportunity to Quotation (sale_crm)

sale_order_countNumber of Sale Ordersinteger
computed

added by Opportunity to Quotation (sale_crm)

show_enrich_buttonAllow manual enrichboolean
computed

added by Lead Enrichment (crm_iap_enrich)

source_idSourcemany2one
stage_idStagemany2one
computed, stored
stage_id_colorStage Colorinteger

related: stage_id.color

state_idStatemany2one
computed, stored
streetStreetchar
computed, stored
street2Street2char
computed, stored
tag_idsTags

Classify and analyze your lead/opportunity categories like: Training, Service

many2many
team_idSales Teammany2one
computed, stored
typeTypeselection
required

Values: lead (Lead), opportunity (Opportunity)

user_company_idsUser Company

UX: Limit to lead company or all if no company

many2many
computed
user_idSalespersonmany2one
visitor_idsWeb Visitorsmany2many

added by Contact Form (website_crm)

visitor_page_count# Page Viewsinteger
computed

added by Contact Form (website_crm)

visitor_sessions_count# Sessionsinteger
computed

added by Lead Livechat Sessions (website_crm_livechat)

websiteWebsite

Website of the contact

char
computed, stored
won_statusWon/Lostselection
computed, stored

Values: won (Won), lost (Lost), pending (Pending)

zipZipchar
computed, stored
activity_calendar_event_idNext Activity Calendar Eventmany2one
computed

inherited from mail.activity.mixin

activity_date_deadlineNext Activity Deadlinedate
read-onlycomputed

inherited from mail.activity.mixin

activity_exception_decorationActivity Exception Decoration

Type of the exception activity on record.

selection
computed

Values: warning (Alert), danger (Error)

inherited from mail.activity.mixin

activity_exception_iconIcon

Icon to indicate an exception activity.

char
computed

inherited from mail.activity.mixin

activity_idsActivitiesone2many

inverse: res_id

inherited from mail.activity.mixin

activity_stateActivity State

Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities.

selection
computed

Values: overdue (Overdue), today (Today), planned (Planned)

inherited from mail.activity.mixin

activity_summaryNext Activity Summarychar

related: activity_ids.summary

inherited from mail.activity.mixin

activity_type_iconActivity Type Iconchar

related: activity_ids.icon

inherited from mail.activity.mixin

activity_type_idNext Activity Typemany2one

related: activity_ids.activity_type_id

inherited from mail.activity.mixin

activity_user_idResponsible Usermany2one
read-onlycomputed

inherited from mail.activity.mixin

duration_trackingStatus time

JSON that maps ids from a many2one field to seconds spent

json
computed

inherited from mail.tracking.duration.mixin

email_ccEmail ccchar

inherited from mail.thread.cc

has_messageHas Messageboolean
computed

inherited from mail.thread

is_blacklistedBlacklist

If the email address is on the blacklist, the contact won't receive mass mailing anymore, from any list

boolean
computed

inherited from mail.thread.blacklist

is_rottingRottingboolean
computed

inherited from mail.tracking.duration.mixin

message_attachment_countAttachment Countinteger
computed

inherited from mail.thread

message_bounceBounce

Counter of the number of bounced emails for this contact

integer

inherited from mail.thread.blacklist

message_follower_idsFollowersone2many

inverse: res_id

inherited from mail.thread

message_has_errorMessage Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_has_error_counterNumber of errors

Number of messages with delivery error

integer
computed

inherited from mail.thread

message_has_sms_errorSMS Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_idsMessagesone2many

inverse: res_id

inherited from mail.thread

message_is_followerIs Followerboolean
computed

inherited from mail.thread

message_needactionAction Needed

If checked, new messages require your attention.

boolean
computed

inherited from mail.thread

message_needaction_counterNumber of Actions

Number of messages requiring action

integer
computed

inherited from mail.thread

message_partner_idsFollowers (Partners)many2many
computed

inherited from mail.thread

my_activity_date_deadlineMy Activity Deadlinedate
read-onlycomputed

inherited from mail.activity.mixin

phone_blacklistedBlacklisted Phone is Phone

Indicates if a blacklisted sanitized phone number is a phone number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.

boolean
computed

inherited from mail.thread.phone

phone_sanitized_blacklistedPhone Blacklisted

If the sanitized phone number is on the blacklist, the contact won't receive mass mailing sms anymore, from any list

boolean
computed

inherited from mail.thread.phone

rating_idsRatingsone2many

inverse: res_id

inherited from mail.thread

rotting_daysDays Rotting

Day count since this resource was last updated

integer
computed

inherited from mail.tracking.duration.mixin

website_message_idsWebsite Messages

Website communication history

one2many

inverse: res_id

inherited from mail.thread

create_dateCreated ondatetime
read-onlyautomatic
create_uidCreated bymany2one
read-onlyautomatic
display_nameDisplay Namechar
read-onlycomputedautomatic
idIDinteger
read-onlyautomatic
write_dateLast Updated ondatetime
read-onlyautomatic
write_uidLast Updated bymany2one
read-onlyautomatic

Relations

Models linked from this model

Fields of other models pointing here

Reading this model through the API

Odoo 19 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.

curl
curl -X POST "https://your-instance.odoo.com/json/2/crm.lead/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","type","campaign_id","company_id","country_id"],"limit":5}'
Python (requests)
import requests

BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}

res = requests.post(
    f"{BASE_URL}/crm.lead/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","type","campaign_id","company_id","country_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())
  • External API access requires Odoo's Custom plan.
  • XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
  • The access rights and record rules of the key's user apply.

Cite this tool

Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.

<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/crm-lead">crm.lead (Odoo 19.0)</a>

Sources

Data verified on September 23, 2026 · Odoo 19.0 Community

Have an Odoo project, or want to put your ERP to work with AI? Let's talk

Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.