Skip to Content
Menu
This question has been flagged
2 Replies
2453 Rodiniai

Hello,

I'm reaching out to see if it is possible to integrate an external website's contact form with Odoo. Specifically, I want to link the contact form of a website to our Odoo instance. I want to know if this is possible.



Here's the scenario: We have a website where potential clients can reach out to us through a contact form or submission form. We want to ensure that whenever someone submits a query or fills out the contact form or submission form from that external website, the information is automatically captured as a new opportunity in our Odoo CRM.


Can someone confirm if this is possible and how it can be done please?


Thank you in advance for your time and assistance.


Portretas
Atmesti

yes, but you need to use odoo external api.

Autorius

Hello Manish,

Can you please elaborate on this please?

Best Answer

Hello Zuhair, 


There are two kind of solutions: 


Solution 1

import xmlrpc.client

# Odoo XML-RPC parameters
url = 'http://your-odoo-instance'
db = 'database_name'
username = 'user'
password = 'password'

# Connect to Odoo XML-RPC server
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})

# Create a proxy object for the CRM module
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))

# Create a lead in Odoo
lead_data = {
    'name': 'John Doe',
    'contact_name': 'John Doe',
    'email_from': 'john@example.com',
    'description': 'Interested in your products',
    # Add more fields as needed
}
lead_id = models.execute_kw(db, uid, password, 'crm.lead', 'create', [lead_data])

Solution 2

from odoo import http
from odoo.http import request

class ExternalFormController(http.Controller):
   
    @http.route('/your/endpoint', type='http', auth='public', methods=['POST'])
    def handle_contact_form(self, **post):
        # Extract data from the incoming request
        name = post.get('name')
        email = post.get('email')
        message = post.get('message')
       
        # Create a lead/contact in Odoo
        Lead = request.env['crm.lead']
        lead_vals = {
            'name': name,
            'contact_name': name,
            'email_from': email,
            'description': message,
            # Add more fields as needed
        }
        lead = Lead.create(lead_vals)
       
        # You may want to return a response to the external form indicating success or failure
        return "Success"  # Or you can return JSON/XML response

Thanks

Portretas
Atmesti
Autorius Best Answer

Hello,

Thank you for your reponse but i don't think it is possible on Odoo Online.

Portretas
Atmesti

Okay, In that case, odoo online solution 1 is possible and it's tested from my side as well.

Autorius

Hello Manish,

Can you tell me where this code needs to be inserted and the steps, I need to follow to complete this development?

Related Posts Replies Rodiniai Veikla
1
vas. 25
2258
1
gruod. 24
2662
1
birž. 24
3437
2
bal. 24
4045
2
bal. 24
5468