Twilio SMS

sms_twilio
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/sms_twilio
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSOdoo Translation Bot, Thibault Delavallée, Tiffany Chang (tic), Miquel Raïch, Dylan Kiss (dyki)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sms
    - base
    - iap_mail
    - iap
    - web
    - base_setup
    - mail
    - bus
    - web_tour
    - html_editor
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows using Twilio as a provider for SMS messaging.
The user has to create an account on twilio.com and top
up their account to start sending SMS messages.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings.view.form.inherit.sms.twilio res.config.settings xpath Inherits sms.res_config_settings_view_form
sms_sms_view_form sms.sms.view.form.inherit.twilio sms.sms xpath Inherits sms.sms_tsms_view_form
sms_twilio_account_manage_view_form sms.twilio.account.manage.view.form sms.twilio.account.manage form New
Models touched (8)

New fields (1)
  • failure_type Selection
    selection_add=[('twilio_authentication', 'Authentication Error"'), ('twilio_callback', 'Incorrect callback URL'), ('twilio_from_missing', 'Missing From Number'), ('twilio_from_to', 'From / To identic')]
Public methods (1)
  • fields_get(self, allfields=None, attributes=None)
    @api.model

New fields (4)
  • sms_provider Selection
    default='iap' selection=[('iap', 'Send via Odoo'), ('twilio', 'Send via Twilio')] string='SMS Provider'
  • sms_twilio_account_sid Char
    groups='base.group_system' args: 'Account SID'
  • sms_twilio_auth_token Char
    groups='base.group_system' args: 'Auth Token'
  • sms_twilio_number_ids One2many → sms.twilio.number
    args: 'sms.twilio.number', 'company_id', 'Numbers'
Public methods (0)

No public methods.

New fields (1)
  • sms_provider Selection
    readonly=False related='company_id.sms_provider' required=True
Public methods (1)
  • action_open_sms_twilio_account_manage(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • failure_type Selection
    selection_add=[('twilio_authentication', 'Authentication Error"'), ('twilio_callback', 'Incorrect callback URL'), ('twilio_from_missing', 'Missing From Number'), ('twilio_from_to', 'From / To identic')]
  • record_company_id Many2one → res.company
    ondelete='set null' args: 'res.company', 'Company'
  • sms_twilio_sid Char
    depends=['sms_tracker_id'] related='sms_tracker_id.sms_twilio_sid'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • fields_get(self, allfields=None, attributes=None)
    @api.model

New fields (1)
  • sms_twilio_sid Char
    readonly=True string='Twilio SMS SID'
Public methods (0)

No public methods.

New fields (6)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True
  • sms_provider Selection
    readonly=False related='company_id.sms_provider'
  • sms_twilio_account_sid Char
    readonly=False related='company_id.sms_twilio_account_sid'
  • sms_twilio_auth_token Char
    readonly=False related='company_id.sms_twilio_auth_token'
  • sms_twilio_number_ids One2many
    readonly=False related='company_id.sms_twilio_number_ids'
  • test_number Char
    args: 'Test Number'
Public methods (3)
  • action_reload_numbers(self)
    Fetch the available numbers from Twilio account
  • action_save(self)
  • action_send_test(self)

New fields (5)
  • company_id Many2one → res.company
    default=<expr> index='btree' ondelete='cascade' required=True string='Company' args: 'res.company'
  • country_code Char
    related='country_id.code' string='Country Code'
  • country_id Many2one → res.country
    required=True string='Country' args: 'res.country'
  • number Char
    required=True string='Twilio Number'
  • sequence Integer
    default=1
Public methods (1)
  • action_unlink(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/sms_twilio
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Thibault Delavallée, Dylan Kiss (dyki)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sms
    - base
    - iap_mail
    - iap
    - web
    - base_setup
    - mail
    - bus
    - web_tour
    - html_editor
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows using Twilio as a provider for SMS messaging.
The user has to create an account on twilio.com and top
up their account to start sending SMS messages.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings.view.form.inherit.sms.twilio res.config.settings xpath Inherits sms.res_config_settings_view_form
sms_sms_view_form sms.sms.view.form.inherit.twilio sms.sms xpath Inherits sms.sms_tsms_view_form
sms_twilio_account_manage_view_form sms.twilio.account.manage.view.form sms.twilio.account.manage form New
Models touched (8)

New fields (1)
  • failure_type Selection
    selection_add=[('twilio_authentication', 'Authentication Error"'), ('twilio_callback', 'Incorrect callback URL'), ('twilio_from_missing', 'Missing From Number'), ('twilio_from_to', 'From / To identic')]
Public methods (1)
  • fields_get(self, allfields=None, attributes=None)
    @api.model

New fields (4)
  • sms_provider Selection
    default='iap' selection=[('iap', 'Send via Odoo'), ('twilio', 'Send via Twilio')] string='SMS Provider'
  • sms_twilio_account_sid Char
    groups='base.group_system' args: 'Account SID'
  • sms_twilio_auth_token Char
    groups='base.group_system' args: 'Auth Token'
  • sms_twilio_number_ids One2many → sms.twilio.number
    args: 'sms.twilio.number', 'company_id', 'Numbers'
Public methods (0)

No public methods.

New fields (1)
  • sms_provider Selection
    readonly=False related='company_id.sms_provider' required=True
Public methods (1)
  • action_open_sms_twilio_account_manage(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • failure_type Selection
    selection_add=[('twilio_authentication', 'Authentication Error"'), ('twilio_callback', 'Incorrect callback URL'), ('twilio_from_missing', 'Missing From Number'), ('twilio_from_to', 'From / To identic')]
  • record_company_id Many2one → res.company
    ondelete='set null' args: 'res.company', 'Company'
  • sms_twilio_sid Char
    depends=['sms_tracker_id'] related='sms_tracker_id.sms_twilio_sid'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • fields_get(self, allfields=None, attributes=None)
    @api.model

New fields (1)
  • sms_twilio_sid Char
    readonly=True string='Twilio SMS SID'
Public methods (0)

No public methods.

New fields (6)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True
  • sms_provider Selection
    readonly=False related='company_id.sms_provider'
  • sms_twilio_account_sid Char
    readonly=False related='company_id.sms_twilio_account_sid'
  • sms_twilio_auth_token Char
    readonly=False related='company_id.sms_twilio_auth_token'
  • sms_twilio_number_ids One2many
    readonly=False related='company_id.sms_twilio_number_ids'
  • test_number Char
    args: 'Test Number'
Public methods (3)
  • action_reload_numbers(self)
    Fetch the available numbers from Twilio account
  • action_save(self)
  • action_send_test(self)

New fields (5)
  • company_id Many2one → res.company
    default=<expr> ondelete='cascade' required=True string='Company' args: 'res.company'
  • country_code Char
    related='country_id.code' string='Country Code'
  • country_id Many2one → res.country
    required=True string='Country' args: 'res.country'
  • number Char
    required=True string='Twilio Number'
  • sequence Integer
    default=1
Public methods (1)
  • action_unlink(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/sms_twilio
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Thibault Delavallée, Dylan Kiss (dyki)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sms
    - base
    - iap_mail
    - iap
    - web
    - base_setup
    - mail
    - bus
    - web_tour
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows using Twilio as a provider for SMS messaging.
The user has to create an account on twilio.com and top
up their account to start sending SMS messages.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings.view.form.inherit.sms.twilio res.config.settings xpath Inherits sms.res_config_settings_view_form
sms_sms_view_form sms.sms.view.form.inherit.twilio sms.sms xpath Inherits sms.sms_tsms_view_form
sms_twilio_account_manage_view_form sms.twilio.account.manage.view.form sms.twilio.account.manage form New
Models touched (8)

New fields (1)
  • failure_type Selection
    selection_add=[('twilio_authentication', 'Authentication Error"'), ('twilio_callback', 'Incorrect callback URL'), ('twilio_from_missing', 'Missing From Number'), ('twilio_from_to', 'From / To identic')]
Public methods (1)
  • fields_get(self, allfields=None, attributes=None)
    @api.model

New fields (4)
  • sms_provider Selection
    default='iap' selection=[('iap', 'Send via Odoo'), ('twilio', 'Send via Twilio')] string='SMS Provider'
  • sms_twilio_account_sid Char
    groups='base.group_system' args: 'Account SID'
  • sms_twilio_auth_token Char
    groups='base.group_system' args: 'Auth Token'
  • sms_twilio_number_ids One2many → sms.twilio.number
    args: 'sms.twilio.number', 'company_id', 'Numbers'
Public methods (0)

No public methods.

New fields (1)
  • sms_provider Selection
    readonly=False related='company_id.sms_provider' required=True
Public methods (1)
  • action_open_sms_twilio_account_manage(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • failure_type Selection
    selection_add=[('twilio_authentication', 'Authentication Error"'), ('twilio_callback', 'Incorrect callback URL'), ('twilio_from_missing', 'Missing From Number'), ('twilio_from_to', 'From / To identic')]
  • record_company_id Many2one → res.company
    ondelete='set null' args: 'res.company', 'Company'
  • sms_twilio_sid Char
    depends=['sms_tracker_id'] related='sms_tracker_id.sms_twilio_sid'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • fields_get(self, allfields=None, attributes=None)
    @api.model

New fields (1)
  • sms_twilio_sid Char
    readonly=True string='Twilio SMS SID'
Public methods (0)

No public methods.

New fields (6)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True
  • sms_provider Selection
    readonly=False related='company_id.sms_provider'
  • sms_twilio_account_sid Char
    readonly=False related='company_id.sms_twilio_account_sid'
  • sms_twilio_auth_token Char
    readonly=False related='company_id.sms_twilio_auth_token'
  • sms_twilio_number_ids One2many
    readonly=False related='company_id.sms_twilio_number_ids'
  • test_number Char
    args: 'Test Number'
Public methods (3)
  • action_reload_numbers(self)
    Fetch the available numbers from Twilio account
  • action_save(self)
  • action_send_test(self)

New fields (5)
  • company_id Many2one → res.company
    default=<expr> ondelete='cascade' required=True string='Company' args: 'res.company'
  • country_code Char
    related='country_id.code' string='Country Code'
  • country_id Many2one → res.country
    required=True string='Country' args: 'res.country'
  • number Char
    required=True string='Twilio Number'
  • sequence Integer
    default=1
Public methods (1)
  • action_unlink(self)