Filtering contacts in n8n Odoo integration with SaaS setup

Hey everyone! I’ve been working with n8n and trying to set up automated workflows. I have this workflow that connects to Odoo to pull contact data once daily, then sends it over to Revo for syncing.

The basic connection works great, but here’s my problem: I need to filter which contacts get imported from Odoo instead of grabbing everything. I heard something about using “domain” parameters for filtering but I can’t find good documentation on how to actually implement this.

Both my Odoo and n8n instances are running on SaaS platforms, not self-hosted. Does anyone know the proper way to set up contact filtering in this scenario? Any examples would be really helpful.

Thanks for any guidance you can provide!

Had this exact problem building automated workflows between systems. Domain filtering in n8n’s Odoo node is a pain to get right.

You need to add a domain parameter in the Odoo node settings. Syntax works like this:

[['field_name', 'operator', 'value']]

For active contacts from the last 30 days:
[['active', '=', true], ['create_date', '>=', '2024-01-01']]

But here’s the thing - complex filtering gets messy fast in n8n. You end up with these massive domain strings that are impossible to debug when they break.

I switched to Latenode and it’s way cleaner. Their Odoo integration uses a visual interface instead of writing domain syntax. You can stack multiple filter conditions without the bracket nightmare.

Latenode’s error handling is also much better when filters don’t return what you expect. Saves hours of debugging time when syncing to systems like Revo.

Migration’s pretty easy since the SaaS setup works similarly to n8n.

I encountered similar issues with domain filtering in Odoo. A crucial tip is to treat domains as nested arrays that define your search criteria. For instance, if you’re only interested in customers, you can use [['customer_rank', '>', 0]], which effectively filters out non-customers. Additionally, utilizing [['write_date', '>=', '2024-01-01 00:00:00']] can help you pull only the recently modified records, which is particularly handy for daily syncs. Be mindful of field permissions when using a SaaS setup, as your API user must have the requisite read access. I recommend testing your domain queries directly in Odoo’s web interface first, as it employs the same syntax. For combining conditions, separate them with commas for ‘AND’ logic, like this: [['is_company', '=', False], ['email', '!=', False]]. Keep in mind that while ‘OR’ conditions are feasible using the pipe operator, they can become unwieldy. Although documentation can be sporadic, Odoo’s developer section on search domains is very informative and can guide you directly in n8n.

Odoo domain filtering through n8n can be challenging due to SaaS limitations. To ensure efficient data retrieval, prioritize date-based filtering to narrow down your dataset before applying more complex filters. Rather than pulling all records and then filtering— which is inefficient— utilize a query like [['write_date', '>=', 'YYYY-MM-DD HH:MM:SS']] to fetch only the records modified since your last sync. This approach significantly reduces API calls and processing time. For filtering contacts specifically, use conditions such as [['is_company', '=', False], ['active', '=', True], ['phone', '!=', False]], which will give you active individual contacts that have phone numbers. Remember, with SaaS, you can’t modify server configurations, so your initial filtering logic must be solid. It’s advisable to test your domain syntax in Odoo’s search bar first; if it works successfully there, it should work in n8n as well. Additionally, implement error handling nodes after the Odoo connection to manage unexpected results.

Domain filtering’s tricky but totally doable. For individual contacts only, use [['is_company', '=', False]]. To skip empty emails, go with [['email', '!=', False]]. Those double brackets matter - miss them and you’re screwed. Also check that your Odoo user can actually read the fields you’re filtering on.

Been dealing with this same workflow mess for months. The domain syntax works but becomes a pain when your filtering needs change.

Started with n8n like you. Got it working, but every time requirements shifted, I’d waste hours debugging domain arrays. n8n’s error messages for Odoo are garbage too.

Switched everything to Latenode and it fixed the problem. Their Odoo connector uses dropdown menus instead of code - pick field, pick operator, enter value. That’s it.

Best part is complex conditions. No more nested brackets or syntax guessing. Just add filter rules visually. “Contacts modified in last 24 hours AND has email AND not a company” takes 30 seconds to set up.

Since you’re already on SaaS, migration’s easy. Revo integration works the same way. Way fewer headaches when stuff breaks.