crm.team: fields, relations and API
The crm.team model ("Sales Team") is a persistent model declared by the Sales Teams module, then extended by 5 other modules. It exposes 59 fields, 36 of them declared directly on the model; 26 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 20 JSON-2 API call.
Model identity
- Technical name
crm.team- Label
- Sales Team
- Type
- Persistent (models.Model)
- SQL table
crm_team- Origin module
- Sales Teams (
sales_team) - Extended by
- crm, sale, sale_crm, pos_sale, website_sale
- Default order (_order)
sequence ASC, create_date DESC, id DESC- Inherits from (mixins)
- mail.threadmail.alias.mixin
Model fields
36 own fields, 17 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.
59 of 59 fields shown
| Technical name | Label | Type | Details |
|---|---|---|---|
| abandoned_carts_amount | Amount of Abandoned Carts | integer | computed added by eCommerce ( |
| abandoned_carts_count | Number of Abandoned Carts | integer | computed added by eCommerce ( |
| active | Active If the active field is set to false, it will allow you to hide the Sales Team without removing it. | boolean | |
| alias_full_name | Alias Full Name | char | related: added by CRM ( |
| alias_id | Alias The email address associated with this channel. New emails received will automatically create new leads assigned to the channel. | many2one | added by CRM ( |
| assignment_auto_enabled | Auto Assignment | boolean | computed added by CRM ( |
| assignment_domain | Assignment Domain Additional filter domain when fetching unassigned leads to allocate to the team. | char | added by CRM ( |
| assignment_enabled | Lead Assign | boolean | computed added by CRM ( |
| assignment_max | Lead Average Capacity Monthly average leads capacity for all salesmen belonging to the team | integer | computed added by CRM ( |
| assignment_optout | Pause auto assignment | boolean | added by CRM ( |
| color | Color Index The color of the channel | integer | |
| company_id | Company | many2one | |
| crm_team_member_all_ids | Sales Team Members (incl. inactive) | one2many | inverse: |
| crm_team_member_ids | Sales Team Members Add members to automatically assign their documents to this sales team. | one2many | inverse: |
| currency_id | Currency | many2one | read-only related: |
| dashboard_button_name | Dashboard Button | char | computed |
| favorite_user_ids | Favorite Members | many2many | |
| is_favorite | Show on dashboard Favorite teams to display them in the dashboard and access them easily. | boolean | computed |
| is_membership_multi | Multiple Memberships Allowed If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team. | boolean | computed |
| lead_all_assigned_month_count | # Leads/Opps assigned this month Number of leads and opportunities assigned this last month. | integer | computed added by CRM ( |
| lead_all_assigned_month_exceeded | Maximum Leads To Assign True if the monthly lead assignment count is greater than the maximum assignment limit, false otherwise. | boolean | computed added by CRM ( |
| lead_properties_definition | Lead Properties | properties_definition | added by CRM ( |
| lead_unassigned_count | # Unassigned Leads | integer | computed added by CRM ( |
| member_company_ids | Member Company UX: Limit to team company or all if no company | many2many | computed |
| member_ids | Salespersons Users assigned to this team. | many2many | computed |
| member_warning | Membership Issue Warning | text | computed |
| name | Sales Team | char | requiredtranslatable |
| opportunity_count | Number of assigned opportunities | integer | computed added by CRM ( |
| pos_config_ids | Point of Sales | one2many | inverse: added by POS - Sales ( |
| sale_order_count | # Sale Orders | integer | computed added by Sales ( |
| sequence | Sequence | integer | |
| show_assignment_max | Show Assignment Max | boolean | computed added by CRM ( |
| use_leads | Leads Check this box to filter and qualify incoming requests as leads before converting them into opportunities and assigning them to a salesperson. | boolean | added by CRM ( |
| use_opportunities | Pipeline Check this box to manage a presales process with opportunities. | boolean | added by CRM ( |
| user_id | Team Leader | many2one | |
| website_ids | Websites | one2many→ website | inverse: added by eCommerce ( |
| alias_defaults | Alias Defaults | text | inherited from mail.alias.mixin |
| alias_domain | Alias Domain Name | char | related: inherited from mail.alias.mixin.optional |
| alias_domain_id | Alias Domain | many2one | related: inherited from mail.alias.mixin.optional |
| alias_email | Email Alias | char | computed inherited from mail.alias.mixin.optional |
| alias_name | Alias Name | char | inherited from mail.alias.mixin |
| has_message | Has Message | boolean | computed inherited from mail.thread |
| message_attachment_count | Attachment Count | integer | computed inherited from mail.thread |
| message_follower_ids | Followers | one2many | inverse: inherited from mail.thread |
| message_has_error | Message Delivery error If checked, some messages have a delivery error. | boolean | computed inherited from mail.thread |
| message_has_error_counter | Number of errors Number of messages with delivery error | integer | computed inherited from mail.thread |
| message_has_sms_error | SMS Delivery error If checked, some messages have a delivery error. | boolean | computed inherited from mail.thread |
| message_ids | Messages | one2many | inverse: inherited from mail.thread |
| message_is_follower | Is Follower | boolean | computed inherited from mail.thread |
| message_needaction | Action Needed If checked, new messages require your attention. | boolean | computed inherited from mail.thread |
| message_needaction_counter | Number of Actions Number of messages requiring action | integer | computed inherited from mail.thread |
| message_partner_ids | Followers (Partners) | many2many | computed inherited from mail.thread |
| rating_ids | Ratings | one2many | inverse: inherited from mail.thread |
| create_date | Created on | datetime | read-onlyautomatic |
| create_uid | Created by | many2one | read-onlyautomatic |
| display_name | Display Name | char | read-onlycomputedautomatic |
| id | ID | integer | read-onlyautomatic |
| write_date | Last Updated on | datetime | read-onlyautomatic |
| write_uid | Last Updated by | many2one | read-onlyautomatic |
Relations
Models linked from this model
- crm.team.member: crm_team_member_all_ids, crm_team_member_ids
- mail.alias: alias_id
- pos.config: pos_config_ids
- res.company: company_id, member_company_ids
- res.currency: currency_id
- res.users: favorite_user_ids, member_ids, user_id
- website: website_ids
Fields of other models pointing here
- account.invoice.report: team_id
- account.move: team_id
- chatbot.script.step: crm_team_id
- crm.activity.report: team_id
- crm.iap.lead.mining.request: team_id
- crm.lead: team_id
- crm.lead.scoring.frequency: team_id
- crm.lead2opportunity.partner.mass: team_id
- crm.merge.opportunity: team_id
- crm.reveal.rule: team_id
- crm.stage: team_ids
- crm.team.member: crm_team_id
- event.lead.rule: lead_sales_team_id
- pos.config: crm_team_id
- pos.order: crm_team_id
- pos.session: crm_team_id
- res.config.settings: pos_crm_team_id, salesteam_id
- res.users: crm_team_ids, sale_team_id
- sale.order: team_id
- sale.order.template: team_ids
- sale.report: team_id
- survey.survey: team_id
- website: crm_default_team_id, salesteam_id
Reading this model through the API
Odoo 20 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 -X POST "https://your-instance.odoo.com/json/2/crm.team/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: your-db" \
-H "Content-Type: application/json" \
-d '{"domain":[],"fields":["name","alias_id","company_id","currency_id","user_id"],"limit":5}'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.team/search_read",
headers=headers,
json={"domain": [], "fields": ["name","alias_id","company_id","currency_id","user_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-team">crm.team (Odoo 20.0)</a>Sources
Data verified on September 25, 2026 · Odoo 20.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.