Introduktion
I Odoo beskriver modeller hvordan forretningsdata er organiseret og gemt i databasen. Alle centrale forretningsobjekter — fra ordrer til fakturaer og kundeemner — er repræsenteret af modeller, som styrer felter, relationer og hvordan data opbevares.
At have styr på Odoo-modeller er vigtigt både for udviklere og konsulenter. Modeller udgør fundamentet i Odos datalandskab: de definerer felttyper, sammenhænge mellem poster og hvor forretningslogikken ligger.
Denne tekst tager udgangspunkt i crm.lead-modellen, som er kernen i Odoo CRM's salgspipeline. Uanset om du sætter brugerdefinerede moduler op, integrerer eksterne systemer eller bare konfigurerer salgsprocesser, kommer du til at arbejde med denne model.
Hvad er crm.lead-modellen
Crm.lead står for leads og muligheder i CRM'et — altså den centrale post hvor salgsdata placeres. Én model håndterer både tidlige, uafklarede leads og viderebehandlede, kvalificerede salgsmuligheder.
Modellen bruges primært af CRM-modulet, men også af salg, marketing og website-moduler, som udvider eller refererer til den. Når en besøgende udfylder en kontaktformular, når en sælger opretter en mulighed, eller når et lead konverteres til kunde, er det crm.lead der ligger bag.
Udvidelser bygges typisk via Odoos arve-mekanismer: basis-CRM definerer kernefelterne, mens ekstra moduler som lead-enrichment eller website-integration tilføjer felter og adfærd. Hver udvidelse bygger ovenpå kernen uden at gentage grundlogikken.
Vigtige felter i modellen
Nedenfor finder du de centrale felter i crm.lead. At kende dem hjælper dig med rapportering, automation og de fleste integrationsscenarier.
1. name
Type: Char. Feltet indeholder leadets eller mulighedens titel — det, brugere ser i lister og kanban. Typisk korte tekster som "Kontakt via hjemmeside" eller "Stor aftale – Nordisk kunde".
2. contact_name
Type: Char. Navn på kontaktpersonen, især når leadet endnu ikke er koblet til en res.partner. Ved konvertering kopieres denne ofte til den nye kontakt.
3. email_from
Type: Char. Primær e-mailadresse til kommunikationen. Bruges til e-mailtræv og til at finde eller flette dubletter før konvertering.
4. phone
Type: Char. Fastnettelefon eller primært nummer, der vises på lead-formen og bruges ved opkaldslogning og opfølgningsaktiviteter.
5. mobile
Type: Char. Mobilnummer, som ofte bruges til SMS eller hurtigere kontakt, hvis det adskiller sig fra hovednummeret.
6. partner_id
Type: Many2one (res.partner). Link til den kontakt eller virksomhed, som leadet bliver til efter kvalificering. Er tomt før konvertering og peger på oprettet eller matchet partner efterfølgende.
7. user_id
Type: Many2one (res.users). Den ansvarlige sælger. Bruges til tildeling, rapporter og planlægning af aktiviteter — og til at populere oversigter som "Mine muligheder".
8. team_id
Type: Many2one (crm.team). Salgsteamet. Hjælper med at organisere tildeling (fx round-robin) og gruppering af rapporter pr. team.
9. stage_id
Type: Many2one (crm.stage). Den aktuelle pipeline-stage. Stager definerer salgstragten (fx Ny, Kvalificeret, Tilbud, Forhandling, Vundet, Tabt) og styrer automatisering og rapportering.
10. type
Type: Selection. Angiver om posten er et Lead eller en Opportunity. Leads er uafklarede; Opportunities er kvalificerede og har ofte forventet værdi. Feltet påvirker hvilke views og stager der er relevante.
11. expected_revenue
Type: Float. Forventet omsætning ved en vundet aftale. Bruges i pipeline-værdiberegninger og forecast. Ofte baseret på sandsynlighed og estimeret beløb.
12. probability
Type: Float. Sandsynligheden for succes i procent (0–100). Indgår i vægtede pipelines og kan være manuel eller styret af stage.
13. company_id
Type: Many2one (res.company). Angiver hvilken virksomhed i en multi-company opsætning leadet tilhører. Påvirker synlighed og valuta.
14. description
Type: Text. Noter og beskrivelse af leadet — interne kommentarer, mødeopsummeringer og kontekst som hjælper sælgere ved opfølgning.
15. create_date
Type: Datetime. Tidspunkt for oprettelse. Styrer rapporter om leadets alder og hjælper med at analysere responstid.
16. write_date
Type: Datetime. Sidste ændringstidspunkt. Bruges til at se hvornår en post sidst blev opdateret.
17. date_open
Type: Datetime. Tidspunkt for første tildeling til en bruger. Sættes når user_id får en værdi og bruges til måling af time-to-first-contact.
18. date_closed
Type: Datetime. Når leadet lukkes som vundet eller tabt. Sættes ved flytning til lukket stage og bruges i salgscykel-analyser.
19. date_deadline
Type: Date. Forventet afslutningsdato. Hjælper med forecasting og planlagte aktiviteter — sælgere bruger den til at holde styr på forventet lukketidspunkt.
20. active
Type: Boolean. Arkiveringsflag. Når False er posten skjult i standardviews — foretrukket frem for decideret sletning ved tab eller sammenlægning.
21. street, street2, city, zip
Type: Char. Adressefelter. Bruges hvis leadet har en adresse før konvertering og kopieres til partner ved oprettelse.
22. country_id
Type: Many2one (res.country). Landefelt, relevant for rapportering og korrekt adresseformat. Filtrering på land hjælper ved geografisk territory management.
23. state_id
Type: Many2one (res.country.state). Region eller stat. Domænet filtreres ofte af valgt land til regional segmentering.
24. source_id
Type: Many2one (utm.source). Lead-kilde. Angiver hvor leadet kommer fra (fx hjemmeside, henvisning, kampagne) og er vigtigt for marketing-tilskriveren.
25. campaign_id
Type: Many2one (utm.campaign). Tilknytter leadet til en konkret marketingkampagne for ROI-analyse — fx e-mail eller annoncekampagner.
26. activity_ids
Type: One2many (mail.activity). Planlagte aktiviteter: opkald, møder og opgaver knyttet til leadet. Driver aktivitet-widgetten og påmindelser.
27. color
Type: Integer. Farveindeks til kanban og lister — nyttigt til visuel prioritering eller kategorisering af leads.
28. message_ids
Type: One2many (mail.message). Chatteren: e-mails, interne noter og historik. Al kommunikation samles her for fuld kontekst.
Hvordan modellen bruges i forretningsprocesser
1. Website-fangst af leads
Når en besøgende udfylder en kontaktformular på din hjemmeside, oprettes der automatisk et crm.lead. Formularfelter som e-mail, kontaktperson og besked overføres til leadet, så salgsteamet kan følge op fra CRM-pipelinen.
2. Kvalificering og konvertering
Sælgere flytter leads gennem stagerne. Når et lead betragtes som kvalificeret, skifter man typisk typen til Opportunity og angiver forventet omsætning. Ved vundet aftale konverteres leadet — Odoo opretter eller linker til en res.partner og kan samtidig skabe en salgsordre.
3. Pipeline-rapportering
Ledere bygger rapporter på crm.lead: forventet omsætning, sandsynlighed og stage anvendes til vægtede pipelines. Filtre på user_id og team_id viser præstationer pr. sælger og team.
4. Marketing-tilskrivning
Felterne source_id og campaign_id binder leads til marketingindsatser. UTM-parametre fra kampagner udfylder ofte disse felter, så marketing kan måle hvilke kampagner der skaber mest værdi.
5. Aktivitetsstyring og opfølgning
Sælgere planlægger opgaver direkte på leads — activity_ids holder styr på kald, møder og opgaver. Forfaldsdatoen for næste aktivitet vises i lister og minder brugerne om at følge op.
Hvordan udviklere udvider modellen
Udviklere bygger videre på crm.lead vha. flere mønstre, hvor arve- og udvidelsesmekanismer er centrale.
Modelarv
Brug _inherit = 'crm.lead' i dit modul for at udvide modellen. Her kan du tilføje felter, overskrive metoder eller tilføje constraints. At arve holder ændringerne i et separat modul og gør opgraderinger nemmere.
Tilføje felter
Definér nye felter i din udvidelse med passende typer: Char, Many2one, Boolean, Integer, Text, Selection. Typiske udvidelser er ekstra kildefelter, produktinteresse eller branchefelter. Overvej company-afhængige felter i multi-company scenarier.
Python-udvidelser
Overskriv create, write eller action_convert for at tilføje logik — husk at kalde super(). Vær varsom med stage-ændringer og konverteringslogik. @api-dekoratorer som @api.depends og @api.onchange hjælper med beregnede felter og UI-opførsel.
Odoo Studio
Odoo Studio gør det muligt at tilføje felter uden at kode. Godt til hurtige og simple ændringer, men til kompleks logik eller driftssikre løsninger er et egentligt modul ofte mere holdbart.
Bedste fremgangsmåder
- Tilpas stagerne, så de afspejler jeres salgsproces. Du kan adskille stager for leads og opportunities hvis det giver mening.
- Sørg for at udfylde source_id og campaign_id fra UTM-parametre på website-formularer — det åbner for meningsfuld marketing-rapportering.
- Brug team_id til rundbords-tildeling eller geografisk opdeling. Definér tildelingsregler i crm.team for automatisk fordeling.
- Ved API-integrationer benyt XML-RPC eller JSON-RPC — crm.lead er tilgængelig. Map eksterne CRM-id'er til et dedikeret felt (fx ref) for at holde synkronisering stabil.
- Navngiv dine brugerdefinerede felter med modul- eller "x_"-prefix for at undgå navnekonflikter ved fremtidige Odoo-opgraderinger.
Almindelige fejl
- At oprette dubletter i stedet for at genbruge eksisterende leads baseret på e-mail. Implementér normalisering eller en deduplikationskontrol (fx på email_normalized) før oprettelse.
- At forveksle type (Lead vs Opportunity) med stage_id. Begge påvirker rapporter og visninger — type angiver posten, stage position i tragten.
- At glemme at sætte user_id eller team_id. Uden ansvarlig går leads tabt — sæt automatiske regler eller kræv manuel tildeling.
- At overskrive konverteringslogik uden at kalde super(). action_convert udfører centrale opgaver — udvid i stedet for at erstatte den.
- At tilføje krævede felter uden standardværdier. Eksisterende poster kan fejle validering ved opgradering, så sørg for migration eller defaults.
Konklusion
Crm.lead er selve rygraden i Odoo CRM: den gemmer leads og muligheder og driver pipelines, rapporter og automatisering. At kende modellens felter og udvidelsesmuligheder gør det langt nemmere at konfigurere, tilpasse og integrere Odoo korrekt.
Uanset om du arbejder som konsulent der kortlægger salgsprocesser, eller som udvikler der bygger CRM-udvidelser, sparer et solidt kendskab til crm.lead både tid og fejl.
Brug for hjælp til din Odoo-implementering?
Dasolo hjælper virksomheder med at implementere, tilpasse og optimere Odoo. Vi specialiserer os i API-integrationer og udvikling, og vores team har stor erfaring med Odoos datamodeller som crm.lead.
Har du brug for hjælp til Odoo-implementering, skræddersyede CRM-moduler eller integrationer, står vi klar til at assistere. Book en demo for at tale om dit projekt.