# Connect Gmail to Odoo using Google OAuth

Odoo is compatible with Googleâs OAuth for Gmail. In order to send secure emails from a custom
domain, all that is required is to configure a few settings on Googleâs Workspace platform, as
well as on the back end of the Odoo database. This configuration works by using either a personal
email address or an address created by a custom domain.
For more information, visit Googleâs documentation on setting up OAuth.
- Google Sign-In Authentication
Google Sign-In Authentication
- Google Calendar synchronization
Google Calendar synchronization

## Setup in Google

### Create a new project

To get started, go to the Google API Console . Log in
with your Google Workspace account if you have one, otherwise log in with your personal Gmail
account (this should match the email address you want to configure in Odoo).
After that, click on Create Project , located on the far right of the OAuth
consent screen . If a project has already been created in this account, then the New
Project option will be located on the top right under the Select a project drop-down
menu.
On the New Project screen, rename the Project name to Odoo and
browse for the Location . Set the Location as the Google Workspace
organization . If you are using a personal Gmail account, then leave the Location as No Organization .
`Odoo`
Click on Create to finish this step.

### OAuth consent screen

If the page doesnât redirect to the User Type options, click on OAuth
consent screen in the left menu.
Under User Type options, select the appropriate User Type , and then click on Create again, which will finally navigate to the Edit app registration page.
Personal Gmail Accounts are only allowed to be External User Type, which means Google may
require an approval, or for Scopes to be added on. However, using a Google WorkSpace account
allows for Internal User Type to be used.
Note, as well, that while the API connection is in the External testing mode, then no approval is
necessary from Google. User limits in this testing mode is set to 100 users.

### Edit app registration

Next we will configure the app registration of the project.
On the OAuth consent screen step, under the App information section, enter Odoo in the App name field. Select the organizationâs email address under the User support email field.
`Odoo`
Next, under App Domain â£ Authorized domains , click on Add Domain and
enter odoo.com .
`odoo.com`
After that, under the Developer contact information section, enter the organizationâs
email address. Google uses this email address to notify the organization about any changes to your
project.
Next, click on the Save and Continue button. Then, skip the Scopes page
by scrolling to the bottom and clicking on Save and Continue .
If continuing in testing mode (External), add the email addresses being configured under the Test users step, by clicking on Add Users , and then the Save and
Continue button. A summary of the app registration appears.
Finally, scroll to the bottom and click on Back to Dashboard to finish setting up the
project.

### Create Credentials

Now that the project is set up, credentials should be created, which includes the Client ID and Client Secret . First, click on Credentials in the left sidebar menu.
Then, click on Create Credentials in the top menu and select OAuth client ID from the dropdown menu.
- Under Application Type , select Web Application from the dropdown menu.
Under Application Type , select Web Application from the dropdown menu.
- In the Name field, enter Odoo .
In the Name field, enter Odoo .
`Odoo`
- Under the Authorized redirect URIs label, click the button ADD URI , and
then input https://yourdbname.odoo.com/google_gmail/confirm in the URIs 1 field.
Be sure to replace the yourdbname part of the URL with the actual Odoo database name.
Under the Authorized redirect URIs label, click the button ADD URI , and
then input https://yourdbname.odoo.com/google_gmail/confirm in the URIs 1 field.
Be sure to replace the yourdbname part of the URL with the actual Odoo database name.
`https://yourdbname.odoo.com/google_gmail/confirm`
- Next, click on Create to generate an OAuth Client ID and Client
Secret . Finally, copy each generated value for later use when configuring in Odoo, and then
navigate to the Odoo database.
Next, click on Create to generate an OAuth Client ID and Client
Secret . Finally, copy each generated value for later use when configuring in Odoo, and then
navigate to the Odoo database.

## Setup in Odoo

### Enter Google Credentials

First, open Odoo and navigate to the Apps module. Then, remove the Apps filter from the search bar and type in Google . Install the module called Google
Gmail .
`Google`
Next, navigate to Settings â£ General Settings , and under the Discuss section, ensure that the checkbox for Custom Email Servers or External Email
Servers is checked. This populates a new option for Gmail Credentials or Use
a Gmail Sever . Then, copy and paste the respective values into the Client ID and Client Secret fields and Save the settings.

### Configure outgoing email server

To configure the external Gmail account, return to the top of the Custom Email Servers setting and then click the Outgoing Email Servers link.
Then, click on New or Create to create a new email server, and fill in the Name , Description , and the email Username (if required).
Next, click on Gmail OAuth Authentication or Gmail (under the Authenticate with or Connection section). Finally, click on Connect your Gmail Account .
A new window labeled Google opens to complete the authorization process. Select the
appropriate email address that is being configured in Odoo.
If the email address is a personal account, then an extra step pops up, so click Continue to allow the verification and connect the Gmail account to Odoo.
Then, allow Odoo to access the Google account by clicking on Continue or Allow . After that, the page navigates back to the newly configured outgoing email
server in Odoo. The configuration automatically loads the token in Odoo, and a tag stating Gmail Token Valid appears in green.
Finally, Test the Connection . A confirmation message should appear. The Odoo database
can now send safe, secure emails through Google using OAuth authentication.

## Google OAuth FAQ

### Production VS Testing Publishing Status

Choosing Production as the Publishing Status (instead of Testing ) will display the following warning message:
To correct this warning, navigate to the Google API Platform . If the Publishing status is In Production , click Back to Testing to correct the issue.

### No Test Users Added

If no test users are added to the OAuth consent screen, then a 403 access denied error will
populate.
To correct this error, return to the OAuth consent screen under APIs &
Services and add test user(s) to the app. Add the email that you are configuring in Odoo.

### Gmail Module not updated

If the Google Gmail module in Odoo has not been updated to the latest version, then a Forbidden error message populates.
To correct this error, go to the Apps module and clear out the search terms. Then,
search for Gmail or Google and upgrade the Google Gmail module. Finally, click
on the three dots on the upper right of the module and select Upgrade .
`Gmail`
`Google`

### Application Type

When creating the credentials (OAuth Client ID and Client Secret ), if Desktop App is
selected for the Application Type , an Authorization Error appears.
To correct this error, delete the credentials already created and create new credentials, selecting Web Application for the Application Type . Then, under Authorized
redirect URIs , click ADD URI and type: https://yourdbname.odoo.com/google_gmail/confirm in the field, being sure to replace yourdbname in the URL with the Odoo database name.
`https://yourdbname.odoo.com/google_gmail/confirm`

Setup in Google
Create a new project
OAuth consent screen
Edit app registration
Create Credentials
Setup in Odoo
Enter Google Credentials
Configure outgoing email server
Google OAuth FAQ
Production VS Testing Publishing Status
No Test Users Added
Gmail Module not updated
Application Type


Mailjet API

# Mailjet API

Odoo is compatible with Mailjetâs API for mass mailing.
Set up a dedicated mass mailing server through Mailjet by configuring settings in the Mailjet
account and the Odoo database. In some circumstances, settings need to be configured on the custom
domainâs DNS settings as well.

## Set up in Mailjet

### Create API credentials

To get started, sign in to the Mailjet Account Information page. Next, navigate to the Senders & Domains section and click on SMTP and
SEND API Settings .
Then, copy the SMTP configuration settings onto a notepad.
They can be found under the Configuration (SMTP only) section. The SMTP configuration settings include the server address, the security option
needed (Use SSL / TLS ), and the port
number. The settings are needed to configure Mailjet in Odoo, which is covered in the last
section .
Mailjet: How can I configure my SMTP parameters?
Odoo blocks port 25 on Odoo Online and Odoo.sh
databases.
Next, click on the button labeled Retrieve your API credentials to retrieve the Mailjet
API credentials.
Then, click on the eye icon to reveal the API key . Copy this key to a notepad, as this
serves as the Username in the Odoo configuration. Next, click on the Generate
Secret Key button to generate the Secret Key . Copy this key to a notepad, as this
serves as the Password in the Odoo configuration.

### Add verified sender address(es)

The next step is to add a sender address or a domain to the Mailjet account settings so that the
email address or domain is approved to send emails using Mailjetâs servers. First, navigate to the Mailjet Account Information page. Next, click on the Add a Sender Domain or Address link under the Senders & Domains section.
Determine if a senderâs email address or the entire domain needs to be added to the Mailjet
settings. It may be easier to configure the domain as a whole if DNS access is available. Jump to the Add a domain section for
steps on adding the domain.
Either all email addresses of the Odoo database users who are sending emails using Mailjetâs
servers need to be configured or the domain(s) of the usersâ email addresses can be configured.
By default, the email address originally set up in the Mailjet account is added as a trusted sender.
To add another email address, click on the button labeled Add a sender address . Then,
add the email address that is configured to send from the custom domain.
At minimum the following email addresses should be set up in the provider and verified in Mailjet:
- notifications@yourdomain.com
notifications@yourdomain.com
- bounce@yourdomain.com
bounce@yourdomain.com
- catchall@yourdomain.com
catchall@yourdomain.com
Replace yourdomain with the custom domain for the Odoo database. If there isnât one, then use
the mail.catchall.domain system parameter.
`yourdomain`
After that, fill out the Email Information form, making sure to select the appropriate
email type: transactional email or mass emails. After completing the form, an activation email is
sent to the email address and the trusted sender can be activated.
To prevent emails from being marked as spam, set up a custom domain . Using the Odoo-provided subdomain ( dbname.odoo.com ) with the Mailjet
server may lead to email deliverability issues, because the email authentication protocols
( SPF , DKIM , and DMARC ) cannot be
configured on that subdomain.
- Mailjetâs SPF/DKIM documentation
Mailjetâs SPF/DKIM documentation
- Mailjetâs DMARC documentation
Mailjetâs DMARC documentation

### Add a domain

By adding an entire domain to the Mailjet account, all the sender addresses related to that domain
are automatically validated for sending emails using Mailjet servers. First, navigate to the Mailjet Account Information page. Next, click on Add
a Sender Domain or Address link under the Senders & Domains section. Then, click on Add domain to add the custom domain.
The domain needs to be added to the Mailjet account and then validated through the DNS .
After that, fill out the Add a new Domain page on Mailjet and click Continue .
After adding the domain, a validation page will populate. Unless the Odoo database is on-premise (in
which case, choose Option 1 ), choose Option 2: Create a DNS Record . Copy the
TXT record information to a notepad and then navigate to the domainâs DNS provider to complete validation.

#### Setup in the domainâs DNS

After getting the TXT record information from the Mailjet account, add a TXT record to the domainâs DNS . This process varies depending on the DNS provider. Consult the provider for specific configuration processes. The TXT record
information consists of the Host and Value . Paste these into the
corresponding fields in the TXT record.

#### Return to Mailjet account information

After adding the TXT record to the domainâs DNS , navigate back to the
Mailjet account. Then, navigate to Account Information â£ Add a Sender Domain or
Address , click the gear icon next to Domain , and select Validate .
This action can also be done by going to the Sender domains & addresses page on the Mailjet account information and clicking on Manage .
Next, click Check Now to validate the TXT record that was added on the domain. A success
screen will appear if the domain is configured correctly.
After successfully setting up the domain, there is an option to Authenticate this domain
(SPF/DKIM) . This button populates SPF & DKIM provider.
Mailjetâs SPF/DKIM/DMARC documentation

## Set up in Odoo

To complete the setup, navigate to the Odoo database and go to the Settings . With Developer mode (debug mode) turned on, go to the Technical Menu â£ Email â£ Outgoing
Mail Servers . Then, create a new outgoing server configuration by clicking on the Create button.
Next, input the SMTP server (in-v3.mailjet.com), port number (587 or 465), and Security (SSL/TLS) that was copied earlier from the Mailjet account. They can also be found here . It is recommended to use SSL / TLS even though Mailjet may not require it.
`SMTPserver`
`portnumber`
`Security(SSL/TLS)`
For the Username , input the API KEY . For the Password , input the SECRET KEY that was copied from the Mailjet account to the notepad earlier. These
settings can be found on Mailjet â£  Account Settings â£ SMTP and SEND API
Settings .
Then, if the Mailjet server is used for mass emailing, set the Priority value higher
than that of any transactional email server(s). Finally, save the settings and Test the
Connection .

Set up in Mailjet
Create API credentials
Add verified sender address(es)
Add a domain
Set up in Odoo


Cloud Storage

# Cloud Storage

The cloud storage integration allows to store chatter and email attachments on the Google Cloud or Microsoft Azure platform instead of the databaseâs server.
The module can be used to prevent large files from being uploaded to and downloaded from a
databaseâs server or when a database requires more data storage.
- Files generated by Odoo (e.g., sales orders) and Documents/Sign app files are always stored on
the databaseâs server.
Files generated by Odoo (e.g., sales orders) and Documents/Sign app files are always stored on
the databaseâs server.
- A databaseâs storage limit depends on its hosting solution: Odoo Online: 100 GB Odoo.sh: Shared hosting: 512 GB Dedicated hosting: 4 TB On-premise: limited by the infrastructure in place.
A databaseâs storage limit depends on its hosting solution:
- Odoo Online: 100 GB
- Odoo.sh: Shared hosting: 512 GB Dedicated hosting: 4 TB
- Shared hosting: 512 GB
Shared hosting: 512 GB
- Dedicated hosting: 4 TB
Dedicated hosting: 4 TB
- On-premise: limited by the infrastructure in place.
On-premise: limited by the infrastructure in place.

## Google Cloud

First, register and sign in to Google Cloud .

### Service account

- Open the navigation sidebar on the Google Cloud console, then go to IAM & Admin
â£ Service Accounts â£ Create service account .
Open the navigation sidebar on the Google Cloud console, then go to IAM & Admin
â£ Service Accounts â£ Create service account .
- Define a Service account name , click Create and continue , then Done .
Define a Service account name , click Create and continue , then Done .
- Note down the service accountâs Email as it will be used during the cloud
storage bucket configuration .
Note down the service accountâs Email as it will be used during the cloud
storage bucket configuration .
- Click the ( Actions ) button, then select Manage
keys .
Click the ( Actions ) button, then select Manage
keys .
- Go to Add key â£ Create new key , select JSON as the Key
type , and click Create . Store the downloaded JSON file containing the key securely.
It will be used when configuring Odoo .
Go to Add key â£ Create new key , select JSON as the Key
type , and click Create . Store the downloaded JSON file containing the key securely.
It will be used when configuring Odoo .

### Cloud storage bucket

- Open the navigation sidebar on the Google Cloud console, then go to Cloud
Storage â£ Buckets â£ Create .
Open the navigation sidebar on the Google Cloud console, then go to Cloud
Storage â£ Buckets â£ Create .
- Enter a bucket name following the bucket naming guidelines and note it down as it will be used when configuring Odoo .
Enter a bucket name following the bucket naming guidelines and note it down as it will be used when configuring Odoo .
- Configure the bucket as desired and click Create when done.
Configure the bucket as desired and click Create when done.
- Click the ( More actions ) button, then select Edit
access .
Click the ( More actions ) button, then select Edit
access .
- Click Add principal and paste the service accountâs email in the New
principals field.
Click Add principal and paste the service accountâs email in the New
principals field.
- Select Storage Admin as Role under the Cloud Storage section
and click Save .
Select Storage Admin as Role under the Cloud Storage section
and click Save .

### Odoo configuration

- Install the Cloud Storage Google module.
Install the Cloud Storage Google module.
- Open the Settings app and select Cloud Storage in the navigation sidebar.
Open the Settings app and select Cloud Storage in the navigation sidebar.
- Select Google Cloud Storage as the Cloud Storage Provider for new
attachments .
Select Google Cloud Storage as the Cloud Storage Provider for new
attachments .
- Enter the Google Bucket Name as previously set .
Enter the Google Bucket Name as previously set .
- Click Upload your file next to Google Service Account Key and select the downloaded JSON file .
Click Upload your file next to Google Service Account Key and select the downloaded JSON file .
- Set a Minimum File Size (bytes) for attachments to be stored on Google Cloud.
Set a Minimum File Size (bytes) for attachments to be stored on Google Cloud.

## Microsoft Azure

First, register and sign it to Microsoft Azure .

### App registration

- On the Microsoft Azure portal, search for the App registrations service and open it.
On the Microsoft Azure portal, search for the App registrations service and open it.
- Click New registration , enter an application Name , select Accounts in any organizational directory (Any Microsoft Entra ID tenant -
Multitenant) under Supported account types , and click Register .
Click New registration , enter an application Name , select Accounts in any organizational directory (Any Microsoft Entra ID tenant -
Multitenant) under Supported account types , and click Register .
- Note down the Application (client) ID and Directory (tenant) ID as they
will be used when configuring Odoo .
Note down the Application (client) ID and Directory (tenant) ID as they
will be used when configuring Odoo .
- Click Add a certificate or secret next to Client credentials , click New client secret , then Add . Important For security reasons, leave the Expires field on 180 days (6 months) or choose a
shorter expiration interval. Before the secret expires, adding a new client secret and
updating Odooâs configuration with the new value is
necessary.
Click Add a certificate or secret next to Client credentials , click New client secret , then Add .
For security reasons, leave the Expires field on 180 days (6 months) or choose a
shorter expiration interval. Before the secret expires, adding a new client secret and
updating Odooâs configuration with the new value is
necessary.
`180days(6months)`
- Copy the client secretâs Value and store it securely. It will be used when configuring Odoo .
Copy the client secretâs Value and store it securely. It will be used when configuring Odoo .

### Storage account

- Search for the Storage accounts service, open it, and click Create .
Search for the Storage accounts service, open it, and click Create .
- Click Create new below the Resource group field, enter a Name , and click OK .
Click Create new below the Resource group field, enter a Name , and click OK .
- Enter a unique Storage account name and note it down as it will be used when configuring Odoo .
Enter a unique Storage account name and note it down as it will be used when configuring Odoo .
- Configure the storage account as desired, and, when done, click Review + create , then Create .
Configure the storage account as desired, and, when done, click Review + create , then Create .

#### Container

- Open your storage account resource, for example by searching for its name, and select Containers under Data storage in the navigation sidebar.
Open your storage account resource, for example by searching for its name, and select Containers under Data storage in the navigation sidebar.
- Enter a Name , note it down as it will be used when configuring Odoo , and click Create .
Enter a Name , note it down as it will be used when configuring Odoo , and click Create .

#### Resource sharing

- Select Resource sharing (CORS) under Settings on the storage accountâs
navigation sidebar.
Select Resource sharing (CORS) under Settings on the storage accountâs
navigation sidebar.
- Create a first CORS blob service rule: Allowed origins : * Allowed methods : GET Allowed headers : Content-Type Exposed headers : Content-Type Max age : 0
Create a first CORS blob service rule:
- Allowed origins : *
`*`
- Allowed methods : GET
Allowed methods : GET
`GET`
- Allowed headers : Content-Type
Allowed headers : Content-Type
`Content-Type`
- Exposed headers : Content-Type
Exposed headers : Content-Type
`Content-Type`
- Max age : 0
`0`
- Create a second CORS blob service rule and click Save : Allowed origins : * Allowed methods : PUT Allowed headers : content-type,x-ms-blob-type Exposed headers : content-type,x-ms-blob-type Max age : 0
Create a second CORS blob service rule and click Save :
- Allowed origins : *
`*`
- Allowed methods : PUT
Allowed methods : PUT
`PUT`
- Allowed headers : content-type,x-ms-blob-type
Allowed headers : content-type,x-ms-blob-type
`content-type,x-ms-blob-type`
- Exposed headers : content-type,x-ms-blob-type
Exposed headers : content-type,x-ms-blob-type
`content-type,x-ms-blob-type`
- Max age : 0
`0`

#### Role assignment

- Select Access control (IAM) on the storage accountâs navigation sidebar, then click Add and select Add role assignment .
Select Access control (IAM) on the storage accountâs navigation sidebar, then click Add and select Add role assignment .
- Search for Storage Blobs Data Contributor and click Next . Note To remove the unnecessary delete permission, create a custom role and search for the custom roleâs name instead.
Search for Storage Blobs Data Contributor and click Next .
To remove the unnecessary delete permission, create a custom role and search for the custom roleâs name instead.
`delete`
- Click Select members , enter the name of the previously registered application , select it, and click Select .
Click Select members , enter the name of the previously registered application , select it, and click Select .
- Click Review + assign twice.
Click Review + assign twice.
This step is optional . However, removing the delete permission would prevent anyone
managing to access the cloud storageâs credentials from deleting files.
`delete`
- Open your subscription resource, for example by searching for its name, select Access
control (IAM) in the navigation sidebar, click Add and select Add custom
role .
Open your subscription resource, for example by searching for its name, select Access
control (IAM) in the navigation sidebar, click Add and select Add custom
role .
- Select the JSON tab and click Edit . Copy the code below, add your subscription-id under assignableScopes and change the roleName ( Custom role ) if desired,
paste it, and click Save .
Select the JSON tab and click Edit . Copy the code below, add your subscription-id under assignableScopes and change the roleName ( Custom role ) if desired,
paste it, and click Save .
`subscription-id`
`assignableScopes`
`roleName`
`Customrole`

### Odoo configuration

- Install the Cloud Storage Azure module.
Install the Cloud Storage Azure module.
- Open the Settings app and select Cloud Storage in the navigation sidebar.
Open the Settings app and select Cloud Storage in the navigation sidebar.
- Select Azure Cloud Azure as the Cloud Storage Provider for new
attachments .
Select Azure Cloud Azure as the Cloud Storage Provider for new
attachments .
- Enter: the storage account name in the Azure
Account Name field; the container name in the Azure Container
Name field; the directory (tenant) ID in the Azure Tenant
ID field; the application (client) ID in the Azure Client
ID field; and the client secretâs value in the Azure Client
Secret field.
- the storage account name in the Azure
Account Name field;
the storage account name in the Azure
Account Name field;
- the container name in the Azure Container
Name field;
the container name in the Azure Container
Name field;
- the directory (tenant) ID in the Azure Tenant
ID field;
the directory (tenant) ID in the Azure Tenant
ID field;
- the application (client) ID in the Azure Client
ID field; and
the application (client) ID in the Azure Client
ID field; and
- the client secretâs value in the Azure Client
Secret field.
the client secretâs value in the Azure Client
Secret field.
- Set a Minimum File Size (bytes) for attachments to be stored on Microsoft Azure.
Set a Minimum File Size (bytes) for attachments to be stored on Microsoft Azure.

Google Cloud
Service account
Cloud storage bucket
Odoo configuration
Microsoft Azure
App registration
Storage account
Odoo configuration


Geolocation

# Geolocation

You can locate contacts or places and generate routes on a map in Odoo.
To use the feature, open the Settings app, and, under the Integrations ,
section, activate Geo Localization . Then, choose between using the OpenStreetMap or
Google Places API.
OpenStreetMap is a free, open geographic database updated and maintained by volunteers. To use it,
select Open Street Map .
OpenStreetMap might not always be accurate. You can join the OpenStreetMap community to fix any issues encountered.
Google Places API map
The Google Places API map provides detailed info on places, businesses, and points of interest. It
supports location-based features like search, navigation, and recommendations.
Using the Google Places API could require payment to Google .
To use it, select Google Place Map and enter your API Key .


Google Translate

# Google Translate

Google Translate can be used to translate user generated text in the Odoo chatter.

## Google API console

A majority of the setup for integrating Google Translate into Odoo is done with the Google API
console . Once the following processes are complete, an API key is created to input in Odoo.
Google Translate setup on Google

### Create a new project

To get started, go to the Google API Console . Then, log
in with a Google Workspace account, if there is one. If not, log in with a personal Gmail account
(this should match the email address that has billing attached to it).
Next, click Create Project on the far-right of the OAuth consent screen .
If the Google API Console has existing projects, click the drop-down menu next to the Google Cloud icon, and a pop-over window appears. Next, click New Project top-right of the pop-over window.
On the New Project screen, rename the Project name to Odoo Translate , and
browse for the Location . Set the Location as the Google Workspace
organization . If a personal Gmail account is being used, leave the Location as No Organization .
`OdooTranslate`
Click on Create to finish this step.

### API library

Next, the Cloud Translation API needs to be installed on this newly-created project. To do that,
click Library in the left menu. Then, search the term Cloud Translation API , and
click into the result. This should be a Google Enterprise API labeled Cloud Translation
API .
`CloudTranslationAPI`
Click Enable to install the library on this project.
Using the Google Translate API requires a current billing account with Google .
Once a billing account is setup with Google and the library is enabled, click Manage to finish configuration on the API.

### Create credentials

Now that the project is set up, and the Cloud Translation API is enabled, credentials must be
created. This includes the API key .
To begin this process, click Credentials in the left sidebar menu.
Then, click Create Credentials in the top menu, and select API key from the
drop-down menu.
Copy the API key for use in the next section.
For security purposes, the usage of the API key can be restricted.
To do that, go to the API restrictions by clicking on Edit API key in the pop-over
window, or by clicking on the listed API key on the Credentials page. From here, key
restrictions can be set. This includes setting an application to restrict the use of the API key,
and whether this API key can call any API.
It is recommended that the Odoo Translate API be restricted to only allow requests from the
configured Odoo database and to the Cloud Translation API .
To add the website restriction, click Websites , under the Set an
application restriction . Then, enter the address of the database Google Translate is being
used in, by clicking on Add . Lastly, add the URL ,
and click Done .
To restrict use of the key to a selected API, first, select Restrict key , under the API restrictions section. Then use the drop-down menu to choose the API being
configured ( Cloud Translation API ).
- Save the API key: copy the API key and store it somewhere secure.
Save the API key: copy the API key and store it somewhere secure.
- Do not share the API key publicly or expose it in client-side code.
Do not share the API key publicly or expose it in client-side code.

## Odoo configuration

To access the integration in Odoo, navigate to the Settings app â£ Discuss
section . Enter the API key into the field labeled Message Translation . Then, Save the settings, and Google Translate can be used in any chatter throughout the
database.

## Translate chatter

To translate a userâs text from another language, click the â¦ (three dot) icon menu to
the right of the chatter. Then, select Translate . The content translates to the language set on the userâs preferences.

Google API console
Create a new project
API library
Create credentials
Odoo configuration
Translate chatter


Mail Plugins

# Mail Plugins

Mail Plugins are connectors that bridge your mailbox with your Odoo database. With them, you can
interact with your Odoo database directly from your mailbox by:
- Creating leads and centralizing prospectsâ emails into the CRM app.
Creating leads and centralizing prospectsâ emails into the CRM app.
- Generating tasks in any Odoo project.
Generating tasks in any Odoo project.
- Creating tickets in the Helpdesk app.
Creating tickets in the Helpdesk app.
- Searching and storing insights on your contacts.
Searching and storing insights on your contacts.
Mail Plugins are available for Outlook and Gmail .

## Pricing

Mail Plugins are free to install and use.
However, they can provide Lead Enrichment , which is part of a paid service known as Lead
Generation .
Mail plugins allow you to test Lead Enrichment for free, whether you connect the plugins to a
database or not. After a while, the plugins ask you to buy In-app purchases (IAP) credits if you would like to keep using this service.

### Lead Generation IAP service

Lead Enrichment uses the Lead Generation IAP service . Each request consumes one Lead Generation
credit .
To buy credits, go to Settings â£ CRM â£ Lead Enrichment â£ Buy credits and
select a package.
- If you are out of credits, the only information populated when clicking on the suggested
company is its website link and logo.
If you are out of credits, the only information populated when clicking on the suggested
company is its website link and logo.
- Check out the Lead Generation IAP service Privacy Policy .
Check out the Lead Generation IAP service Privacy Policy .
- In-app purchases (IAP)
In-app purchases (IAP)
- Odoo Tutorials: Lead Enrichment
Odoo Tutorials: Lead Enrichment


Gmail Plugin

# Gmail Plugin

The Gmail Plugin integrates an Odoo database with a Gmail inbox, so users can keep track of all
their work between Gmail and Odoo, without losing any information.
Make sure to check the database version in the Settings app â£ General Settings , at
the bottom of the page.
For database versions 19.2 and later, see the latest documentation for installation instructions.

## Odoo Online users

For databases hosted on Odoo Online (or Odoo.sh), follow the steps below to configure the Gmail
Plugin.

### Install the Gmail Plugin

First, log in to the Gmail account that the user wishes to connect to Odoo.
From the Gmail inbox, click the plus sign icon on the right side panel to get add-ons. If the side
panel is not visible, click on the arrow icon at the bottom right corner of the inbox to reveal it.
Then, use the search bar to search for Odoo and locate the Odoo Inbox Addin .
`Odoo`
Or, go directly to the Odoo Inbox Addin page on the Google Workspace Marketplace .
Once the plugin is located, click Install . Then, click Continue to start
the installation.
Next, select which Gmail account the user wishes to connect to Odoo. Then click Allow to let Odoo access the Google account. Google will then show a pop-up window confirming that the
installation was successful.

### Configure the Odoo database

The Mail Plugin feature must be enabled in the Odoo database in order to use the Gmail
Plugin. To enable the feature, go to Settings â£ General Settings . Under the Integrations section, activate Mail Plugin , and then click Save .

### Configure the Gmail inbox

In the Gmail inbox, a purple Odoo icon is now visible on the right side panel. Click on the Odoo
icon to open up the Odoo plugin window. Then, click on any email in the inbox. Click Authorize Access in the plugin window to grant Odoo access to the Gmail inbox.
Next, click Login . Then, enter the URL of the Odoo database that the user wishes to
connect to the Gmail inbox, and log in to the database.
Use the general URL for the database, not the URL of a specific page in the database. For
example, use https://mycompany.odoo.com , not https://mycompany.odoo.com/web#cids=1&action=menu .
`https://mycompany.odoo.com`
`https://mycompany.odoo.com/web#cids=1&action=menu`
Finally, click Allow to let Gmail access the Odoo database. The browser will then show
a Success! message. After that, close the window. The Gmail inbox and Odoo database are
now connected.

## Odoo On-Premise users

For databases hosted on servers other than Odoo Online (or Odoo.sh), follow the steps below to
configure the Gmail Plugin.
As part of their security guidelines, Google requires add-on creators to provide a list of URLs
that can be used in actions and redirections launched by the add-on. This protects users by
ensuring, for example, that no add-on redirects users toward a malicious website. (Read more on Google Apps Script .)
Since Odoo can only list the odoo.com domain and not every on-premise customerâs unique server
domain, on-premise customers cannot install the Gmail Plugin from the Google Workspace
Marketplace.
`odoo.com`

### Install the Gmail Plugin

First, access the GitHub repository for the
Odoo Mail Plugins. Next, click on the green Code button. Then, click Download ZIP to download the Mail Plugin files onto the userâs computer.
Open the ZIP file on the computer. Then, go to mail-client-extensions-master â£
gmail â£ src â£ views , and open the login.ts file using any text editor software,
such as Notepad (Windows), TextEdit (Mac), or Visual Studio Code.
`login.ts`
Delete the following three lines of text from the login.ts file:
`login.ts`
This removes the odoo.com domain constraint from the Gmail Plugin program.
`odoo.com`
Next, in the ZIP file, go to mail-client-extensions-master â£ gmail , and open the
file called appsscript.json . In the urlFetchWhitelist section, replace all
the references to odoo.com with the Odoo customerâs unique server domain.
`odoo.com`
Then, in the same gmail folder, open the file called README.md . Follow the
instructions in the README.md file to push the Gmail Plugin files as a Google Project.
The computer must be able to run Linux commands in order to follow the instructions on the README.md file.
After that, share the Google Project with the Gmail account that the user wishes to connect to Odoo.
Then, click Publish and Deploy from manifest . Lastly, click Install the add-on to install the Gmail Plugin.

### Configure the Odoo database

The Mail Plugin feature must be enabled in the Odoo database in order to use the Gmail
Plugin. To enable the feature, go to Settings â£ General Settings . Under the Integrations section, activate Mail Plugin , and then click Save .

### Configure the Gmail inbox

In the Gmail inbox, a purple Odoo icon is now visible on the right side panel. Click on the Odoo
icon to open up the Odoo plugin window. Then, click on any email in the inbox. Click Authorize Access in the plugin window to grant Odoo access to the Gmail inbox.
Next, click Login . Then, enter the URL of the Odoo database that the user wishes to
connect to the Gmail inbox, and log in to the database.
Use the general URL for the database, not the URL of a specific page in the database. For
example, use https://mycompany.odoo.com , not https://mycompany.odoo.com/web#cids=1&action=menu .
`https://mycompany.odoo.com`
`https://mycompany.odoo.com/web#cids=1&action=menu`
Finally, click Allow to let Gmail access the Odoo database. The browser will then show
a Success! message. After that, close the window. The Gmail inbox and Odoo database are
now connected.

Odoo Online users
Install the Gmail Plugin
Configure the Odoo database
Configure the Gmail inbox
Odoo On-Premise users
Install the Gmail Plugin
Configure the Odoo database
Configure the Gmail inbox


Outlook Plugin

# Outlook Plugin

Outlook allows for third-party applications to connect in order to execute database actions from
emails. Odoo has a plugin for Outlook that allows for the creation of an opportunity from the email
panel.
The Outlook plugin is available for both the desktop and web versions of Outlook. See Microsoftâs add-in article .

## Configuration

The Outlook Mail Plugin needs to be configured both on Odoo and Outlook.
Make sure to check the database version in the Settings app â> General Settings , at
the bottom of the page.
For database versions 19.2 and later, see the latest documentation for installation instructions.

### Enable Mail Plugin

First, enable the Mail Plugin feature in the database. Go to Settings â£ General
Settings â£ Integrations , enable Mail Plugin , and Save the configuration.

### Install the Outlook Plugin

Download ( Save Page As â£ Web Page XML only ) the following XML file to upload
later: https://download.odoocdn.com/plugins/outlook/manifest.xml .
Next, open the Outlook mailbox, and select any email. After completing this, click on the More actions button in the upper right-side and select Get Add-ins .
For locally installed versions of Microsoft Outlook, access the Get Add-ins menu item
while in preview mode ( not with a message open). First, click on the â¦
(ellipsis) icon in the upper right of the previewed message, then scroll down, and click on Get Add-ins .
Following this step, select the My add-ins tab on the left-side.
Under Custom add-ins towards the bottom, click on + Add a custom add-in , and
then on Add from fileâ¦
For the next step, attach the manifest.xml file downloaded above, and press OK . Next,
read the warning and click on Install .
`manifest.xml`

### Connect the database

Now, Outlook will be connected to the Odoo database. First, open any email in the Outlook mailbox,
click on the More actions button in the upper right-side, and select Odoo for
Outlook .
The right-side panel can now display Company Insights . At the bottom, click on Login .
Only a limited amount of Company Insights ( Lead Enrichment ) requests are available as a
trial database. This feature requires prepaid credits .
If, after a short while, the panel is still empty, it is possible that the browser cookie
settings prevented it from loading. Note that these settings also change if the browser is in
âIncognitoâ mode.
To fix this issue, configure the browser to always allow cookies on Odooâs plugin page.
For Google Chrome, change the browser cookie settings by following the guide at: https://support.google.com/chrome/answer/95647 and adding download.odoo.com to the list of Sites that can always use cookies .
`download.odoo.com`
Once this is complete, the Outlook panel needs to be opened again.
Now, enter the Odoo database URL and click on Login .
Next, click on Allow to open the pop-up window.
If the user isnât logged into the database, enter the credentials. Click on Allow to let
the Outlook Plugin connect to the database.

### Add a shortcut to the plugin

By default, the Outlook Plugin can be opened from the More actions menu. However, to save time,
itâs possible to add it next to the other default actions.
In the Outlook mailbox, click on Settings , then on View all Outlook
settings .
Now, select Customize actions under Mail , click on Odoo for
Outlook , and then Save .
Following this step, open any email; the shortcut should be displayed.

### Using the plugin

Now that the plug-in is installed and operational, all that needs to be done to create a lead is to
click on the O [Odoo icon] or navigate to More actions and click on Odoo
for Outlook . The side panel will appear on the right-side, and under Opportunities click on New . A new window with the created opportunity in the Odoo database will
populate.
`O`

Configuration
Enable Mail Plugin
Install the Outlook Plugin
Connect the database
Add a shortcut to the plugin
Using the plugin


Unsplash

# Unsplash

Unsplash is a recognized stock photography library integrated with Odoo.
If your database is hosted on Odoo Online , you can access Unsplash pictures without
configuration.
If your database is hosted on Odoo.sh or on-premise , proceed as follows:
- To generate an Unsplash access key , create or sign in to an Unsplash account .
To generate an Unsplash access key , create or sign in to an Unsplash account .
- Access your applications dashboard , click New Application , select all checkboxes, and click Accept terms .
Access your applications dashboard , click New Application , select all checkboxes, and click Accept terms .
- In the pop-up window, enter your Application Name , starting with the
prefix Odoo: (e.g., Odoo: connection ), so Unsplash recognizes it as an Odoo instance. Then,
add a Description and click Create application .
In the pop-up window, enter your Application Name , starting with the
prefix Odoo: (e.g., Odoo: connection ), so Unsplash recognizes it as an Odoo instance. Then,
add a Description and click Create application .
`Odoo:`
`Odoo:connection`
- On the application details page, scroll down to the Keys section and copy the Access Key and Application ID .
On the application details page, scroll down to the Keys section and copy the Access Key and Application ID .
- In Odoo, go to General Settings and enable the Unsplash Image
Library feature. Then, enter the Unsplash Access Key and Application ID .
In Odoo, go to General Settings and enable the Unsplash Image
Library feature. Then, enter the Unsplash Access Key and Application ID .
As a non-Odoo Online user, you are limited to a test key with a maximum of 50 Unsplash requests
per hour.


Internet of Things (IoT)

# Internet of Things (IoT)

Odoo Internet of Things (IoT) allows to connect physical devices such as barcode scanners, receipt
printers, payment terminals, measurement tools, etc. to an Odoo database using an IoT system.
The following IoT systems are supported:
- IoT box : micro-computer, plug-and-play device (i.e., the Odoo IoT program is
pre-installed);
IoT box : micro-computer, plug-and-play device (i.e., the Odoo IoT program is
pre-installed);
- Windows virtual IoT : Odoo IoT program for Windows that can be installed
on a Windows computer.
Windows virtual IoT : Odoo IoT program for Windows that can be installed
on a Windows computer.
- MRP devices, including cameras and measurement tools,
are not compatible with Windows virtual IoT.
MRP devices, including cameras and measurement tools,
are not compatible with Windows virtual IoT.
- Multiple IoT systems can be used at the same time.
Multiple IoT systems can be used at the same time.
- It is also possible to create a Windows Virtual Machine on a MacOS/Linux computer. However,
this option is not supported by Odoo, and no troubleshooting assistance will be provided.
It is also possible to create a Windows Virtual Machine on a MacOS/Linux computer. However,
this option is not supported by Odoo, and no troubleshooting assistance will be provided.

## IoT box subscription

An IoT box subscription is required for production use of IoT systems. If you have issues related
to your subscription, contact the databaseâs account manager or Odoo partner for assistance.
If the subscription is linked to an Odoo.com portal user, check the
information on the portalâs subscription page.
- Odooâs compatible IoT devices
Odooâs compatible IoT devices
- Odoo Tutorials: Internet of Things (IoT) Tutorials
Odoo Tutorials: Internet of Things (IoT) Tutorials
- IoT system FAQ
- Magic Sheet - Odoo Internet of Things [PDF]
Magic Sheet - Odoo Internet of Things [PDF]

#### IoT box

#### Windows virtual IoT

Set up Windows virtual IoT.

#### IoT system connection to Odoo

Connect the IoT system to your Odoo database and troubleshoot potential connection issues.

#### Devices

Connect devices such as printers, screens, measurement tools, etc., to the IoT system.

#### HTTPS certificate

Verify your IoT system and database meet the eligibility requirements for HTTPS certificate
generation and address any related issues.

#### IoT system updates

Update your IoT systemâs image, core code, and handlers to benefit from the latest IoT fixes
and features or reset the IoT system if needed.


IoT system connection to Odoo

# IoT system connection to Odoo

## Prerequisites

To connect the IoT system to an Odoo database, the following prerequisites must be met:
- The Internet of Things (IoT) app must be installed .
The Internet of Things (IoT) app must be installed .
- The IoT system must be connected to the network.
The IoT system must be connected to the network.
- The computer connecting to Odoo must be on the same network as the IoT system.
The computer connecting to Odoo must be on the same network as the IoT system.
It is recommended to connect the IoT system to a production instance, as other types of
environments may cause issues (e.g., with HTTPS certificate generation ).
- IoT box
- Windows virtual IoT

## Connection

The IoT system can be connected to the Odoo database using a pairing code or a connection token .

### Connection using a pairing code

- The pairing code is displayed for up to 5 minutes after the IoT system starts. If the code is
no longer visible, reboot the IoT box or restart the Windows virtual IoT service to display the pairing code again. Alternatively, connect the IoT
system to the database using a connection token .
The pairing code is displayed for up to 5 minutes after the IoT system starts. If the code is
no longer visible, reboot the IoT box or restart the Windows virtual IoT service to display the pairing code again. Alternatively, connect the IoT
system to the database using a connection token .
- The pairing code is not displayed if the IoT system is already connected to a database (e.g.,
a test database).
The pairing code is not displayed if the IoT system is already connected to a database (e.g.,
a test database).
- Retrieve the IoTâs system pairing code: IoT box Windows virtual IoT Connect the IoT box to an external monitor or printer. If the IoT box was already plugged
prior to this, reboot it by unplugging it for a few seconds and replugging it. External monitor: The pairing code should be displayed on the screen a few minutes after
rebooting the IoT box. Printer: The pairing code should be printed automatically. Tip If no external monitor or printer is connected to the IoT box, access the IoT
boxâs homepage ; the code is displayed in the Pairing
Code section. On the computer with the Windows virtual IoT installed, open the IoT systemâs homepage
in a web browser by navigating to the URL http://localhost:8069 . Then, scroll to the Pairing Code section.
Retrieve the IoTâs system pairing code:
Connect the IoT box to an external monitor or printer. If the IoT box was already plugged
prior to this, reboot it by unplugging it for a few seconds and replugging it.
- External monitor: The pairing code should be displayed on the screen a few minutes after
rebooting the IoT box.
External monitor: The pairing code should be displayed on the screen a few minutes after
rebooting the IoT box.
- Printer: The pairing code should be printed automatically.
Printer: The pairing code should be printed automatically.
If no external monitor or printer is connected to the IoT box, access the IoT
boxâs homepage ; the code is displayed in the Pairing
Code section.
On the computer with the Windows virtual IoT installed, open the IoT systemâs homepage
in a web browser by navigating to the URL http://localhost:8069 . Then, scroll to the Pairing Code section.
`http://localhost:8069`
- In Odoo, open the IoT app and click Connect .
In Odoo, open the IoT app and click Connect .
- In the Connect an IoT Box popup that opens, enter the Pairing code .
In the Connect an IoT Box popup that opens, enter the Pairing code .
- Click Pair .

### Connection using a connection token

- In Odoo, open the IoT app and click Connect .
In Odoo, open the IoT app and click Connect .
- In the Connect an IoT Box popup that opens, copy the Token .
In the Connect an IoT Box popup that opens, copy the Token .
- Access the IoT boxâs or Windows virtual IoTâs homepage.
Access the IoT boxâs or Windows virtual IoTâs homepage.
- In the Odoo database connected section, click Configure .
In the Odoo database connected section, click Configure .
- Paste the token into the Server Token field and click Connect .
Paste the token into the Server Token field and click Connect .

## IoT system form

Once the IoT system is connected to the Odoo database, it is displayed as a card in the IoT app.
Click the IP address on the card to access the IoT boxâs or Windows virtual IoTâs homepage. Click the card to access the
list of devices connected to the IoT system.
Enable the developer mode to access the IoT systemâs Technical Information , such as its Identifier , Domain
address , and Image version .
By default, drivers are automatically updated every time the
IoT system is restarted. To disable automatic updates, uncheck the Automatic drivers
update option.

## Troubleshooting

### The pairing code does not appear or does not work

The pairing code might not be displayed or printed under the
following circumstances:
- The IoT system is not connected to the Internet.
The IoT system is not connected to the Internet.
- The IoT system is already connected to an Odoo database.
The IoT system is already connected to an Odoo database.
- The pairing code display time has expired. Reboot the IoT box
or restart the Windows virtual IoT service to display the pairing
code again.
The pairing code display time has expired. Reboot the IoT box
or restart the Windows virtual IoT service to display the pairing
code again.
- The IoT systemâs image version is too old and needs to be updated .
The IoT systemâs image version is too old and needs to be updated .

### The IoT system is connected but does not appear in the database

The IoT system might take a few minutes to restart when it connects to a database. If it still does
not appear after a few minutes:
- Verify that the IoT system can reach the database and the server does not use a multi-database
environment.
Verify that the IoT system can reach the database and the server does not use a multi-database
environment.
- Reboot the IoT box or restart the Windows virtual IoT service .
Reboot the IoT box or restart the Windows virtual IoT service .

### The IoT box is connected to the Odoo database but cannot be reached

Verify that the IoT system and the computer running the Odoo database are connected to the same
network.

### The Windows virtual IoTâs homepage cannot be accessed from another device

Check the Windows Firewall configuration .

### The IoT system is disconnected from the database after an Odoo upgrade

Update the IoT systemâs image by flashing the IoT boxâs card or uninstalling the Windows virtual IoT program and reinstalling the latest package for Windows matching your
databaseâs version .


Devices

# Devices

- Connect a Worldline payment terminal
Connect a Worldline payment terminal
- Connect an Ingenico payment terminal
Connect an Ingenico payment terminal


Connect a camera

# Connect a camera

A camera can be connected to an IoT box with an Odoo database in just a
few steps. Once a camera is connected to an IoT box, it can be used in
a manufacturing process, or it can be linked to a quality control point/quality check. Doing so
allows for the taking of pictures when a chosen quality control point/check has been reached, or
when a specific key is pressed during manufacturing.

## Connection

To connect a camera to an IoT box, simply connect the two via cable.
This is usually done with a USB cable of some sort.
If the camera is supported , there is no need to set up
anything, as itâll be detected as soon as itâs connected.

## Link camera to quality control point in manufacturing process

In the Quality app , a device can be set up on a Quality Control Point .
To do that, navigate to the Quality app â£ Quality Control â£ Control Points and
open the desired Control Point thatâll be linked to the camera.
On the control point form, edit the control point by selecting the Type field, and
clicking on Take a Picture from the drop-down menu. Doing so reveals a field called Device , wherein the attached device can be selected. Save the changes, if
required.
The camera is now useable with the selected quality control point. When the quality control point
is reached during the manufacturing process, the database prompts the operator to take a picture.
Quality control points can also be accessed by navigating to IoT App â£
Devices . From here, select the device. There is a Quality Control Points tab, where
they can be added with the device.
On a quality check form, the Type of check can also be specified to Take a
Picture . Navigate to Quality app â£ Quality Control â£ Quality Checks â£ New to create a new quality check from the Quality Checks page.
- Quality control points
Quality control points
- Quality alerts

## Link camera to a work center in the Manufacturing app

To link a camera to an action, it first needs to be configured on a work center. Navigate to Manufacturing app â£ Configuration â£ Work Centers . Next, go to the desired Work Center in which a camera will be used to reveal that specific work centerâs detail
form. From here, add the device in the IoT Triggers tab, in the Device column, by clicking Add a Line .
Now, the camera device can be linked to the Action column drop-down option labeled Take a Picture . A key can also be added to trigger the action.
The first trigger listed is chosen first. The order of triggers matters, and they can be dragged
into any desired order.
On the Work Order screen, a status graphic indicates whether the database is
correctly connected to the camera.
Integrate IoT devices


Connect a footswitch

# Connect a footswitch

When working in a manufacturing environment, itâs always better for an operator to have both hands
available at all times. Odooâs IoT box makes this possible when using a
footswitch.
In fact, with a footswitch, the operator is able to go from one screen to another, and perform
actions using their foot. This can be configured in just a few steps on the work center in the Manufacturing app.

## Connection

To connect a footswitch to the IoT box, connect the two devices via
cable. More often than not, this is done with a USB cable.
If the footswitch is a supported device , there is no
need to take further action, since itâll be automatically detected when connected.

## Link a footswitch to a work center in the Odoo Manufacturing app

To link a footswitch to an action, it first needs to be configured on a work center. Navigate to Manufacturing app â£ Configuration â£ Work Centers . From here, go to the desired Work Center in which the footswitch will be used, and add the device in the IoT Triggers tab, under the Device column, by selecting Add a
Line . Doing so means the footswitch can be linked to an option in the Action column
drop-down, and optionally, a key can be added to trigger it. An example of an Action in
the Manufacturing app could be the Validate or Mark as Done buttons on a
manufacturing work order.
It should be noted that the first listed trigger is chosen first. So, the order matters, and
these triggers can be dragged into any order. In the picture above, using the footswitch
automatically skips the part of the process thatâs currently being worked on.
On the Work Order screen, a status graphic indicates whether the database is
correctly connected to the footswitch.
Integrate IoT devices


Connect a measurement tool

# Connect a measurement tool

With Odooâs IoT box, it is possible to connect measurement tools to the
Odoo database for use in the Quality app on a quality control point/quality check, or for use in a
work center during the manufacturing process.
Find the list of supported devices here: Supported devices .

## Connect with universal serial bus (USB)

To add a device connected by USB , plug the USB cable into the IoT box, and the device appears in the Odoo
database.

## Connect with bluetooth

Activate the Bluetooth functionality on the device (see the device manual for further explanation),
and the IoT box automatically connects to the device.

## Link a measurement tool to a quality control point in the manufacturing process

In the Quality app , a device can be set up on a quality control point. To do that, navigate to Quality app â£ Quality Control â£ Control Points , and open the desired control
point to which the measurement tool should be linked.
From here, edit the control point, by selecting the Type field, and clicking Measure from the drop-down menu. Doing so reveals a field called Device ,
where the attached device can be selected.
Additionally, Norm and Tolerance can be configured. Save the
changes, if required.
At this point, the measurement tool is linked to the chosen quality control point. The value, which
usually needs to be changed manually, is automatically updated while the tool is being used.
Quality control points can also be accessed by navigating to IoT App â£
Devices , then select the device. There is a Quality Control Points tab, where they
can be added with the device.
On a quality check detail form, the Type of check can also be specified to Measure . Access a new quality check detail page, by navigating to Quality app â£ Quality Control â£ Quality Checks â£ New .
- Quality control points
Quality control points
- Quality alerts

## Link a measurement tool to a work center in the Manufacturing app

To link a measurement tool to an action, it first needs to be configured on a work center. To do
that, navigate to Manufacturing app â£ Configuration â£ Work Centers . Then,
select the desired work center in which the measurement tool will be used.
On the work center page, add the device in the IoT Triggers tab, under the Device column, by selecting Add a Line . Then, the measurement tool can be
linked to the Action drop-down menu option labeled Take Measure . A key can
be added to trigger the action.
It should be noted that the first listed trigger is chosen first. The order matters, and these
triggers can be dragged into any order.
On the Work Order screen, a status graphic indicates whether the database is
correctly connected to the measurement tool.
Integrate IoT devices


Connect a printer

# Connect a printer

Printer installation can be done in a few easy steps. The printer can be used to print receipts,
labels, orders, or even reports from the different Odoo apps. In addition, printer actions can be
assigned as an action on a trigger during the manufacturing process, or added onto a quality
control point or a quality check.
The only way to connect a printer directly to an Odoo database is through the use of an IoT
system. Without an IoT system, printing can still occur, but it is managed through the printer
itself, which is not the recommended process.

## Connection

IoT systems support printers connected through USB or network connection. Supported printers are detected automatically, and
appear in the Devices list of the IoT app.
Printers can take up to two minutes to appear in the IoT app Devices list.

## Link a printer

### Link work orders to a printer

Work orders can be linked to printers, via a quality control point, to print labels for
manufactured products.
In the Quality app , a device can be set up on a
quality control point. To do so, go to the Quality â£ Quality Control â£ Control
Points , and open the desired control point.
A manufacturing operation and work order operation need to be attached to a quality control
point before the Type field allows for the Print Label option to be
selected.
From here, edit the control point by selecting the Type field, and selecting Print Label from the dropdown menu of options. Doing so reveals the Device field, where the attached device can be selected.
The printer can now be used with the selected quality control point. When the quality control point
is reached during the manufacturing process, the database presents the option to print labels for a
specific product.
Quality control points can also be accessed by navigating to IoT â£
Devices , then selecting the device. Go to the Quality Control Points tab to add them
to the device.
On a quality check form , the Type of check can also be set to Print Label .
- Quality control points
Quality control points
- Quality alerts

### Link reports to a printer

It is possible to link report types to a specific printer. To do so:
- Go to IoT â£ Devices and select the desired printer.
Go to IoT â£ Devices and select the desired printer.
- Go to the Printer Reports tab and click Add a line .
Go to the Printer Reports tab and click Add a line .
- In the pop-up that opens, select the types of reports to be linked to the printer and click Select .
In the pop-up that opens, select the types of reports to be linked to the printer and click Select .
Reports can also be configured by enabling the developer mode and going
to Settings â£ Technical â£ Reports . Select the desired report from the list
and set an IoT Device .
The first time a linked report is selected to print, a Select Printers pop-up window
appears. Tick the checkbox next to the correct printer for the report, and click Print .
At that point, the report is linked to the printer.

#### Clear device printer cache

After a printer is linked to print a report, the setting is saved in a browserâs cache. This means
a user can have different devices saved in their cache for different reports, based on the device
they use to access Odoo. It also means different users can have a report automatically printed from
different printers, based on their preferences.
To unlink a report from a printer, navigate to IoT â£ Configuration â£ Reset
Linked Printers . This generates a list of reports that are linked to a printer on the current
device. Click the Unlink button next to each report to remove the link.
This step only prevents the report from automatically printing to the listed printer from
the current browser. The report is still linked on the device, under
the Printer Reports tab.

## Potential issues

### The printer is not detected

If a printer does not appear in the devices list, go to the IoT boxâs or Windows virtual IoTâs homepage, click Show in
the Devices section, and make sure the printer is listed.
If the printer does not appear on the IoT systemâs homepage, click Printer Server , then Administration , and Add Printer . If the printer is not in the list, it is
likely not connected properly.

### The printer outputs random text

For most printers, the correct driver should be automatically detected and selected. However, in
some cases, the automatic detection mechanism might not be enough, and if no driver is found, the
printer might print random characters.
The solution is to manually select the corresponding driver. On the IoT systemâs homepage, click Printer Server , then Printers , and select the printer in the list.
In the Administration dropdown menu, click Modify Printer . Follow the steps
and select the printerâs make and model .
Epson receipt printers and Zebra label printers do not need a driver to work. Make sure that no
driver is selected for those printers.

### The printer is detected but is not recognized correctly

If Odoo and the IoT system do not recognize the printer correctly, go to IoT
â£ Devices , click the deviceâs card to access its form, and set the Subtype field to
the appropriate option: Receipt Printer , Label Printer , or Office
Printer .

#### Epson configuration special case

Most Epson printers support printing receipts in Odoo Point of Sale using the GS v 0 command.
However, the following Epson printer models do not support this command:
`GSv0`
- TM-U220
- TM-U230
- TM-P60
- TMP-P60II
To bypass this issue, you can configure the printer to use the ESC * command.
`ESC*`
First, review Epsonâs website for compatibility for both the GS v 0 and ESC * commands.
If the printer is incompatible with GS v 0 but supports ESC * , configure the IoT system to use
the ESC * command as follows:
`GSv0`
`ESC*`
`ESC*`
- Access the IoT boxâs or Windows virtual IoTâs homepage.
Access the IoT boxâs or Windows virtual IoTâs homepage.
- Click the Printer server button, then click Administration on the CUPS
page.
Click the Printer server button, then click Administration on the CUPS
page.
- Click Add Printer in the Printers section, select the printer, and click Continue . Tip If the printerâs name is still uncertain, take the following steps: Take note of the listed printers on the CUPS page. Turn the printer off and refresh the page. Compare the difference with the first list to see which printer disappeared. Turn the printer back on and refresh the page again. Double-check the list again to see if the printer re-appears. The printer that disappeared and reappears again on the listed printers is the name of the
printer in question. It can be Unknown under Local printers .
Click Add Printer in the Printers section, select the printer, and click Continue .
If the printerâs name is still uncertain, take the following steps:
- Take note of the listed printers on the CUPS page.
Take note of the listed printers on the CUPS page.
- Turn the printer off and refresh the page.
Turn the printer off and refresh the page.
- Compare the difference with the first list to see which printer disappeared.
Compare the difference with the first list to see which printer disappeared.
- Turn the printer back on and refresh the page again.
Turn the printer back on and refresh the page again.
- Double-check the list again to see if the printer re-appears.
Double-check the list again to see if the printer re-appears.
- The printer that disappeared and reappears again on the listed printers is the name of the
printer in question. It can be Unknown under Local printers .
The printer that disappeared and reappears again on the listed printers is the name of the
printer in question. It can be Unknown under Local printers .
- On the Add Printer page, specify the printerâs Name using the following
convention: <printer_name>__IMC_<param_1>_<param_2>_..._<param_n>__ , where: printer_name is the printerâs name. It can contain any character except _ , / , # , or ` `
(space character). IMC : This stands for Image Mode Column (the simplified name for ESC * ). param_1 : This stands for the specific parameter: SCALE<X> : Scale of the picture (with the same aspect ratio). X should be an integer
describing the scale percentage that should be used. For example, 100 is the original size, 50 is half the size, and 200 is twice the size. LDV : Low Density Vertical (will be set to High Density Vertical if not specified). LDH : Low Density Horizontal (will be set to High Density Horizontal if not specified). Note Density parameters might need to be configured in a particular way, depending on the
printer model. Refer to Epsonâs ESC * documentation to determine if the printer requires these parameters to be set. Example The following are examples of proper and improper name formatting: Proper name formatting: EPSONTMm30II__IMC__ EPSON_TM_U220__IMC_LDV_LDH_SCALE80__ Improper name formatting (this will not prevent printing, but the result might not have the
expected printed output): EPSON TMm 30II : The name cannot contain spaces. EPSONTMm30II : The name itself is correct, but it will not use ESC * . EPSONTMm30II__IMC : This name is missing the end __ . EPSONTMm30II__IMC_XDV__ : The parameter XDV does not match any existing parameters. EPSONTMm30II__IMC_SCALE__ : The parameter SCALE is missing the scale value.
On the Add Printer page, specify the printerâs Name using the following
convention: <printer_name>__IMC_<param_1>_<param_2>_..._<param_n>__ , where:
`<printer_name>__IMC_<param_1>_<param_2>_..._<param_n>__`
- printer_name is the printerâs name. It can contain any character except _ , / , # , or ` `
(space character).
printer_name is the printerâs name. It can contain any character except _ , / , # , or ` `
(space character).
`printer_name`
`_`
`/`
`#`
- IMC : This stands for Image Mode Column (the simplified name for ESC * ).
IMC : This stands for Image Mode Column (the simplified name for ESC * ).
`IMC`
`ESC*`
- param_1 : This stands for the specific parameter: SCALE<X> : Scale of the picture (with the same aspect ratio). X should be an integer
describing the scale percentage that should be used. For example, 100 is the original size, 50 is half the size, and 200 is twice the size. LDV : Low Density Vertical (will be set to High Density Vertical if not specified). LDH : Low Density Horizontal (will be set to High Density Horizontal if not specified). Note Density parameters might need to be configured in a particular way, depending on the
printer model. Refer to Epsonâs ESC * documentation to determine if the printer requires these parameters to be set.
param_1 : This stands for the specific parameter:
`param_1`
- SCALE<X> : Scale of the picture (with the same aspect ratio). X should be an integer
describing the scale percentage that should be used. For example, 100 is the original size, 50 is half the size, and 200 is twice the size.
SCALE<X> : Scale of the picture (with the same aspect ratio). X should be an integer
describing the scale percentage that should be used. For example, 100 is the original size, 50 is half the size, and 200 is twice the size.
`SCALE<X>`
`X`
`100`
`50`
`200`
- LDV : Low Density Vertical (will be set to High Density Vertical if not specified).
LDV : Low Density Vertical (will be set to High Density Vertical if not specified).
`LDV`
- LDH : Low Density Horizontal (will be set to High Density Horizontal if not specified).
LDH : Low Density Horizontal (will be set to High Density Horizontal if not specified).
`LDH`
- Density parameters might need to be configured in a particular way, depending on the
printer model.
Density parameters might need to be configured in a particular way, depending on the
printer model.
- Refer to Epsonâs ESC * documentation to determine if the printer requires these parameters to be set.
Refer to Epsonâs ESC * documentation to determine if the printer requires these parameters to be set.
The following are examples of proper and improper name formatting:
Proper name formatting:
- EPSONTMm30II__IMC__
`EPSONTMm30II__IMC__`
- EPSON_TM_U220__IMC_LDV_LDH_SCALE80__
EPSON_TM_U220__IMC_LDV_LDH_SCALE80__
`EPSON_TM_U220__IMC_LDV_LDH_SCALE80__`
Improper name formatting (this will not prevent printing, but the result might not have the
expected printed output):
- EPSON TMm 30II : The name cannot contain spaces.
EPSON TMm 30II : The name cannot contain spaces.
`EPSONTMm30II`
- EPSONTMm30II : The name itself is correct, but it will not use ESC * .
EPSONTMm30II : The name itself is correct, but it will not use ESC * .
`EPSONTMm30II`
`ESC*`
- EPSONTMm30II__IMC : This name is missing the end __ .
EPSONTMm30II__IMC : This name is missing the end __ .
`EPSONTMm30II__IMC`
`__`
- EPSONTMm30II__IMC_XDV__ : The parameter XDV does not match any existing parameters.
EPSONTMm30II__IMC_XDV__ : The parameter XDV does not match any existing parameters.
`EPSONTMm30II__IMC_XDV__`
`XDV`
- EPSONTMm30II__IMC_SCALE__ : The parameter SCALE is missing the scale value.
EPSONTMm30II__IMC_SCALE__ : The parameter SCALE is missing the scale value.
`EPSONTMm30II__IMC_SCALE__`
`SCALE`
- Once the printerâs name has been defined using the appropriate naming convention, click Continue .
Once the printerâs name has been defined using the appropriate naming convention, click Continue .
- Set the Make value to Raw and the Model value to Raw Queue (en) .
Set the Make value to Raw and the Model value to Raw Queue (en) .
- Click Add Printer . If everything was done correctly, the page should redirect to the Banners page.
Click Add Printer . If everything was done correctly, the page should redirect to the Banners page.
- Wait a few minutes for the IoT system to detect the printer and sync to Odooâs server.
Wait a few minutes for the IoT system to detect the printer and sync to Odooâs server.
- Access the POS settings and select your POS, or click the
vertical ellipsis button ( â® ) on a POS card and click Edit . Scroll down
to the Connected Devices section, enable IoT Box , and select the printer
in the Receipt Printer field. Click Save .
Access the POS settings and select your POS, or click the
vertical ellipsis button ( â® ) on a POS card and click Edit . Scroll down
to the Connected Devices section, enable IoT Box , and select the printer
in the Receipt Printer field. Click Save .
If the printer was set up incorrectly (e.g., it continues to print random text, or the printed
receipt is too large or too small), it cannot be modified via the printerâs name in CUPS.
Instead, configure a new printer from scratch with modified parameters, following the steps
above.
The following is an example of the troubleshooting process for a TM-U220B printer model using the ESC * command. The receipt pictured below is an example of a receipt that is printing correctly
due to proper formatting (in theory):
`ESC*`
Printing this receipt immediately without proper formatting will not work, as the TM-U220B
printer model does not support the GS v 0 command. Instead, random characters will be printed:
`GSv0`
To properly configure formatting for the Epson TM-U220B printer model, follow these steps:
- After checking Epsonâs website for compatibility with both the GS v 0 and ESC * commands,
the TM-U220B printer is indeed incompatible with GS v 0 but supports ESC * .
After checking Epsonâs website for compatibility with both the GS v 0 and ESC * commands,
the TM-U220B printer is indeed incompatible with GS v 0 but supports ESC * .
`GSv0`
`ESC*`
- When adding the printer, CUPS displays the list of available printers: In this case, the printer is connected via USB, so it is not part of the Discovered Network Printers . Instead, it is likely part of the Unknown selection under Local Printers . By unplugging the printerâs USB cable from the IoT
system and refreshing the page, the Unknown printer disappears. By plugging it
back in, the printer reappears.
When adding the printer, CUPS displays the list of available printers:
In this case, the printer is connected via USB, so it is not part of the Discovered Network Printers . Instead, it is likely part of the Unknown selection under Local Printers . By unplugging the printerâs USB cable from the IoT
system and refreshing the page, the Unknown printer disappears. By plugging it
back in, the printer reappears.
- For the naming convention, since the printer must print using the ESC * command, it is
imperative to add __IMC . For this particular model (TM-U220) m should be equal to 0 or 1. While referencing the Description table on Epsonâs ESC * website , the m values could be 0, 1, 32, or 33. So, in this case, the m value cannot be 32 or 33
(otherwise, random characters will be printed). The table includes the numeric values 32 and 33; they both occur if the Number of
bits for vertical data is set to 24, i.e. it has a High Vertical Density . In the case of
configuring the Epson TM-U220, the Low Vertical Density will need to be forced, as
this printer model does not support High Vertical Density for this command ESC * . To add a Low Vertical Density , add the LDV parameter to the naming convention.
For the naming convention, since the printer must print using the ESC * command, it is
imperative to add __IMC .
`ESC*`
`__IMC`
For this particular model (TM-U220) m should be equal to 0 or 1. While referencing the Description table on Epsonâs ESC * website , the m values could be 0, 1, 32, or 33. So, in this case, the m value cannot be 32 or 33
(otherwise, random characters will be printed).
`m`
`m`
`m`
The table includes the numeric values 32 and 33; they both occur if the Number of
bits for vertical data is set to 24, i.e. it has a High Vertical Density . In the case of
configuring the Epson TM-U220, the Low Vertical Density will need to be forced, as
this printer model does not support High Vertical Density for this command ESC * .
`ESC*`
To add a Low Vertical Density , add the LDV parameter to the naming convention.
`LDV`
- Click Continue to proceed. Next, set the Make value to Raw and the Model value to Raw Queue (en) . However, when trying to print with the naming convention EpsonTMU220B__IMC_LDV__ , the
receipt is printed, but it is too large and outside the margin. To resolve this, add a new
printer (and naming convention) with the SCALE<X> parameter to adapt to the receiptâs size. Here are some examples: Printer Naming Convention EpsonTMU220B__IMC_LDV__ EpsonTMU220B__IMC_LDV_SCALE75__ EpsonTMU220B__IMC_LDV_LDH__ EpsonTMU220B__IMC_LDV_LDH_SCALE35__
Click Continue to proceed. Next, set the Make value to Raw and the Model value to Raw Queue (en) .
However, when trying to print with the naming convention EpsonTMU220B__IMC_LDV__ , the
receipt is printed, but it is too large and outside the margin. To resolve this, add a new
printer (and naming convention) with the SCALE<X> parameter to adapt to the receiptâs size.
`EpsonTMU220B__IMC_LDV__`
`SCALE<X>`
Here are some examples:
Printer Naming Convention
EpsonTMU220B__IMC_LDV__
`EpsonTMU220B__IMC_LDV__`
EpsonTMU220B__IMC_LDV_SCALE75__
`EpsonTMU220B__IMC_LDV_SCALE75__`
EpsonTMU220B__IMC_LDV_LDH__
`EpsonTMU220B__IMC_LDV_LDH__`
EpsonTMU220B__IMC_LDV_LDH_SCALE35__
`EpsonTMU220B__IMC_LDV_LDH_SCALE35__`

### DYMO LabelWriter print issue

The DYMO LabelWriter has a known issue in printing with IoT systems. The OpenPrinting CUPS server
installs the printer using Local RAW Printer drivers. In order to print anything, the
correct Make and Model needs to be set to reference the correct driver when using the
device.
Additionally, a new printer needs to be added to reduce the print delay that occurs after updating
the driver.
The DYMO LabelWriter 450 DUO printer is the recommended DYMO printer for use with Odoo and IoT
systems. This device combines two printers: a label printer and a tape printer. When configuring
the following processes, it is essential to select the correct model (either DYMO LabelWriter 450
DUO Label (en) or DYMO LabelWriter 450 DUO Tape (en)). For consistency, the following processes
outline configuration steps for the DYMO LabelWriter 450 DUO Label (en) model. Adjust the model
selections as needed.

#### DYMO LabelWriter not printing

If the DYMO LabelWriter fails to print, install a new driver:
- Access the IoT systemâs homepage and click Printer server to open the
OpenPrinting CUPS console.
Access the IoT systemâs homepage and click Printer server to open the
OpenPrinting CUPS console.
- Click Printers in the top menu, then click the printer in the list.
Click Printers in the top menu, then click the printer in the list.
- Select Maintenance in the first dropdown menu.
Select Maintenance in the first dropdown menu.
- Select Modify Printer in the second dropdown menu.
Select Modify Printer in the second dropdown menu.
- Select the specific network connection/printer on which the modification should be made and
click Continue .
Select the specific network connection/printer on which the modification should be made and
click Continue .
- On the next page, click Continue , then select DYMO from the Make dropdown list.
On the next page, click Continue , then select DYMO from the Make dropdown list.
- Click on Continue and set the Model to DYMO LabelWriter 450
DUO Label (en) (or whichever DYMO printer model is being used).
Click on Continue and set the Model to DYMO LabelWriter 450
DUO Label (en) (or whichever DYMO printer model is being used).
- Click Modify Printer to set the new driver; a confirmation page appears.
Click Modify Printer to set the new driver; a confirmation page appears.
- Click Printers in the top menu; all printers installed on the OpenPrinting CUPS
server appear, including the newly updated DYMO LabelWriter 450 DUO Label (or
whichever DYMO printer model is being used).
Click Printers in the top menu; all printers installed on the OpenPrinting CUPS
server appear, including the newly updated DYMO LabelWriter 450 DUO Label (or
whichever DYMO printer model is being used).
- Click the newly updated printer, then click the Maintenance dropdown menu and
select Print Test Page to print a test label. The test label is printed after a few
seconds if the driver update was successful.
Click the newly updated printer, then click the Maintenance dropdown menu and
select Print Test Page to print a test label. The test label is printed after a few
seconds if the driver update was successful.
To reduce this delay, add a new printer using the steps below.

#### DYMO LabelWriter print delay

If the DYMO LabelWriter 450 DUO printer is not printing at all, or is not recognized (i.e., it
has a RAW driver type), then update the drivers on the device .
To resolve the delay issue after modifying the driver, reinstall the printer:
- Access the IoT systemâs homepage and click Printer server to open the
OpenPrinting CUPS console.
Access the IoT systemâs homepage and click Printer server to open the
OpenPrinting CUPS console.
- Click Administration in the top menu, then click Add a Printer .
Click Administration in the top menu, then click Add a Printer .
- On the next page, in the Local Printers section, select DYMO
LabelWriter 450 DUO Label (DYMO LabelWriter 450 DUO Label) (or whichever DYMO printer model is
being used) pre-installed printer. Click Continue .
On the next page, in the Local Printers section, select DYMO
LabelWriter 450 DUO Label (DYMO LabelWriter 450 DUO Label) (or whichever DYMO printer model is
being used) pre-installed printer. Click Continue .
- On the following screen, update the Name to something easily identifiable, as the
original printer will remain in the list. Then, click Continue .
On the following screen, update the Name to something easily identifiable, as the
original printer will remain in the list. Then, click Continue .
- Set the Model field to DYMO LabelWriter 450 DUO Label (en) (or
whichever DYMO printer model is being used), then click Add Printer to complete
the installation.
Set the Model field to DYMO LabelWriter 450 DUO Label (en) (or
whichever DYMO printer model is being used), then click Add Printer to complete
the installation.
- Click Printers in the top menu and click the newly installed printer DYMO LabelWriter 450 DUO Label (or whichever DYMO printer model is being used) from
in the list.
Click Printers in the top menu and click the newly installed printer DYMO LabelWriter 450 DUO Label (or whichever DYMO printer model is being used) from
in the list.
- Click the Maintenance dropdown list and select Print Test Page to print
a test label. The test label should print out immediately, or after one or two seconds.
Click the Maintenance dropdown list and select Print Test Page to print
a test label. The test label should print out immediately, or after one or two seconds.

### The Zebra printer does not print anything

Zebra printers are quite sensitive to the format of the printed Zebra Programming Language (ZPL)
code. If nothing comes out of the printer or blank labels are printed, try changing the format
of the report sent to the printer. To do so, activate the developer mode , go
to Settings â£ Technical â£ User Interface â£ Views , and search for the
corresponding template.
Zebraâs instructions on printing ZPL files

### The printer appears multiple times

If the printer appears multiple times on the IoT boxâs or Windows virtual IoTâs homepage and/or in the list of Devices on the IoT systemâs form , the cause is usually the
CUPS auto-discovery feature. This feature allows to list all detected printers together with all
available drivers, creating one entry for each printerâdriver pair.
Simply select the entry that works best and ignore the others.
Workarounds exist to disable the CUPS auto-discovery feature.

## Barcode scanner issues

### The characters read by the barcode scanner do not match the barcode

By default, most barcode scanners are configured in the US QWERTY format. If the barcode scanner
uses a different layout, go to IoT â£ Devices and click the barcode deviceâs card.
Then, select the correct language in the Keyboard Layout field.
The Keyboard Layout is language-specific, with available options varying based on
the device and the language of the database (e.g., English (UK) , English
(US) , etc.).

### Nothing happens when a barcode is scanned

Make sure the correct device is selected in the Point of Sale settings (when applicable) and the barcode is
configured to send an ENTER character (keycode 28) at the end of every barcode.
`ENTER`

### The barcode scanner is detected as a keyboard

Some barcode scanners are identified as USB keyboards rather than barcode scanners and are not
recognized by IoT systems.
To change the device type manually, go to IoT â£ Devices and click the barcode
deviceâs card. Then, enable Is scanner .

### The barcode scanner processes barcode characters individually

When accessing the mobile version of Odoo from a mobile device or tablet paired with a barcode
scanner via the IoT system, the scanner might interpret each character in a barcode as a separate
scan. To resolve this, go to IoT â£ Devices and click the barcode deviceâs
card. Then, select the correct language in the Keyboard Layout field.
The Keyboard Layout is language-specific, with available options varying based on
the device and the language of the database (e.g., English (UK) , English
(US) , etc.).


Connect a scale

# Connect a scale

In EU member states, certification is legally required to use a scale as an integrated device.
To connect a scale to the IoT system, use a USB cable. In some cases, you may need a serial-to-USB
adapter to complete the connection. If the scale is compatible with an IoT system , no additional setup is required; the scale is
automatically detected as soon as it is connected. If the scale is not detected, reboot the IoT box
or restart the Windows virtual IoT service and update the
scaleâs drivers .
If the scale still does not function after updating the drivers, it might not be compatible with
the Odoo IoT system . In such cases, a different scale
must be used.
Once the scale is connected to the IoT system, configure it in the POS settings .
Connect an IoT system to a POS

## Ariva S scales

For Ariva S series scales (manufactured by Mettler-Toledo, LLC.) to function with IoT systems, a
specific setting must be modified, and a dedicated Mettler USB-to-proprietary RJ45 cable is required.
The official Mettler USB-to-RJ45 cable (Mettler part number 72256236) must be used. Contact
Mettler or a partner to purchase an authentic cable. No other cable works for this
configuration.
To configure the Ariva S scale for IoT system recognition, refer to page 17 of Mettlerâs Setup
Guide for Ariva S series scales and follow these steps:
- Hold the >T< button for eight seconds, or until CONF appears.
Hold the >T< button for eight seconds, or until CONF appears.
- Press >T< until GRP 3 appears, then press >0< to confirm.
Press >T< until GRP 3 appears, then press >0< to confirm.
- At step 3.1 , make sure the value is set to 1 (USB Virtual COM ports) by
pressing >T< to cycle through the options.
At step 3.1 , make sure the value is set to 1 (USB Virtual COM ports) by
pressing >T< to cycle through the options.
- Press >0< until 3.6 (if available, otherwise skip the next step).
Press >0< until 3.6 (if available, otherwise skip the next step).
- At step 3.6 , make sure the value is set to 3 (8217 Mettler-Toledo (WO))
by pressing >T< to cycle through the options.
At step 3.6 , make sure the value is set to 3 (8217 Mettler-Toledo (WO))
by pressing >T< to cycle through the options.
- Press >0< (multiple times if necessary) until GRP 4 appears.
Press >0< (multiple times if necessary) until GRP 4 appears.
- Press >T< until EXIT appears. Important Do not make any other changes unless otherwise needed.
Press >T< until EXIT appears.
Do not make any other changes unless otherwise needed.
- Press >0< .
- Press >0< again to SAVE ; the scale restarts.
Press >0< again to SAVE ; the scale restarts.
- Reboot the IoT box or restart the Windows virtual IoT service .
The scale should then appear as Toledo 8217 , as opposed to the previous display, where it
appeared as Adam Equipment Serial .
Reboot the IoT box or restart the Windows virtual IoT service .
The scale should then appear as Toledo 8217 , as opposed to the previous display, where it
appeared as Adam Equipment Serial .
`Toledo8217`
`AdamEquipmentSerial`


Connect a screen

# Connect a screen

In Odoo, an IoT box can be connected to a screen display. After being
configured, the screen can be used to display a Point of Sale (PoS) order to a client.
An example of a PoS (point of sale) order on a screen display.
Access the customer display by going to the IoT box homepage and
clicking on the PoS Display button. To get to the IoT box
homepage, navigate to IoT app â£ IoT Boxes and click on the IoT box homepage link.

## Connection

The way to connect the screen display to the IoT box differs depending
on the model.
Connect up to two screens with micro-HDMI cables on the side of the IoT box. If two screens are connected, they can display distinct content (see Screen Usage ).
Connect the screen with an HDMI cable on the side of the IoT box.
See the Raspberry Pi Schema .
Screen(s) should be connected before the IoT box is switched on. If
it is already on, connect the screen(s), and then restart the IoT box by unplugging it for ten seconds and plugging it back into its power source.
The usage of HDMI/micro-HDMI adapters may cause issues which will result in a blank, black screen
on the screen display. Using the specific cable for the display connection is recommended.
If the connection was successful, the screen should display the POS Client display screen.
The screen should also appear in the list of Displays on the IoT box homepage. Alternatively, the display can be seen by accessing IoT app
â£ Devices .
If no screen is detected, a default display named Distant Display will be displayed
instead. This indicates that there is no hardware screen connected.

## Usage

### Show Point of Sale orders to customers

To use the screen in the Point of Sale app , go to Point of Sale â£
Configuration â£ Point of Sale , select a PoS , click Edit if
necessary, and enable the IoT Box feature.
Next, select the screen from the Customer Display drop-down menu. Then click Save , if required.
The screen is now available for PoS sessions. A screen icon will appear in
the menu at the top of the screen to indicate the screenâs connection status.
The screen will automatically show the PoS orders and update when changes
are made to the order.

### Display a website on the screen

Open the screen form view by accessing IoT app â£ Devices â£ Customer Display .
This allows the user to choose a particular website URL to display on the screen using the Display URL field.

Connection
Usage
Show Point of Sale orders to customers
Display a website on the screen