A custom CRM with AI: every customer in one record
Invoices and orders sit in the ERP, conversations in WhatsApp and Instagram, Facebook form leads in another tab and the rest in email and spreadsheets. We build a custom CRM that brings it together in one record per customer, the single customer view nobody on your team has today, without replacing the software you already use.
On top of it sit email and WhatsApp automations that a person approves, and an analytics and AI layer that answers questions about your own data and prepares the work. The AI does not decide on its own.
Each system knows one part of the customer
This is what usually happens in a company with customers on several channels:
- The ERP knows what each customer has bought and what they still owe, but not what they asked on WhatsApp yesterday.
- WhatsApp, Instagram and Facebook conversations stay on a phone or in the inbox of whoever answered them.
- Leads from Facebook and Instagram forms (Lead Ads) are downloaded by hand when someone remembers, and Meta only keeps them available for download for 90 days after they are submitted (Meta Business Help Center, checked 15 October 2026).
- Email is spread across several inboxes, and the spreadsheets across several versions.
- The same follow-ups (a quote with no reply, an order ready, a renewal) are done by hand, whenever someone has a moment.
Nobody sees the whole customer. Every reply starts with a search in three places, and follow-ups depend on one person's memory.
What we build: the record, the automations and the AI
Three pieces, in this order. Each with what the system does and what stays with your team.
One record per customer
- What it is
- One record per customer with what your systems know: contact details, orders and invoices from the ERP, WhatsApp, Instagram and Facebook conversations, Lead Ads leads, emails and what lives in spreadsheets today. It updates itself, as things happen or at set intervals, depending on what each system allows.
- How it is fed
- From the software you already use, by whatever route each one allows: an API (the connection the software itself offers for reading and writing data), database access or exports. We start by reading, and only write back into your ERP once that has been tested.
- What a person decides
- Which data goes in and what for, and what to do with the customers the system cannot match.
Email and WhatsApp automations
- What they do
- Operational messages (order ready, appointment, documents missing, invoice overdue) and marketing messages to people who have agreed to receive them, triggered by what happens in the record.
- How they work
- Each automation follows a written rule. On WhatsApp, anything sent more than 24 hours after the customer's last message goes out as a template approved by Meta. Step by step: how to automate WhatsApp Business with AI.
- What a person decides
- They approve the texts and the rules before anything is switched on, and the messages that matter, such as a payment reminder or an offer to a large customer, wait for their sign-off.
Analytics and AI to decide better
- What it does
- A dashboard with what your team looks at every week (sales, new, returning and lost customers, pending follow-ups) and an AI you ask about your own data in plain language, for example which customers have not bought again this quarter.
- What it prepares
- It summarises the record before a call, sorts incoming messages and drafts the next step.
- What a person decides
- Everything that has an effect. The AI prepares and suggests; it does not send, change prices or terms, or touch the ERP on its own.
How the same customer is recognised on WhatsApp, email and the ERP
This is the hard part, and the least visible one. Someone who writes on WhatsApp shows up with their number; in email, with their address; in the ERP, with their tax ID (the NIF in Spain) and sometimes a different phone. To build a unified customer view you have to decide what counts as the same customer, and we do it with written rules agreed with you:
- Certain matches. The same tax ID, the same email or the same phone number, written the same way (with or without the country code, with or without spaces). These merge on their own.
- Likely matches. For example, the same company name in the same town with a different phone. These do not merge on their own: they go on a list for someone on your team to confirm.
- No match. A new record is created, and if the detail that links it to another one turns up later, the system suggests merging them.
Before switching it on, we test the rules on your real data and show you how many duplicates they find and which ones they cannot resolve. It is the same kind of cross-check Odysi Reach for retail runs: every store it finds is checked against the brand's own sales history and tagged as active, lost or a new prospect.
Which ERPs can be connected, and how
It depends on the software, the version and sometimes the plan you pay for, so the first step is to check what yours allows. This is what each vendor publishes for ERPs common among small and mid-sized companies in Spain (checked 15 October 2026):
- HoldedAPI included on every plan, with a monthly request limit that depends on the plan, and automatic notifications (webhooks) when, for example, an invoice or a contact changes. Source: Holded, API and developers
- OdooThe external API is only available on Odoo's Custom plans, not on One App Free or Standard. Odoo 19 adds a new API (JSON-2), and the old one (XML-RPC and JSON-RPC) is removed in Odoo Online 21.1 (winter 2027) and Odoo 22 (autumn 2028), so anything connected today uses the new one. Source: Odoo documentation
- Sage 200Needs the Advanced edition, the Sage Soluciones Conectadas licence and version 2020.87 or later. Source: Sage 200 help
- a3innuva and a3facturaA REST API with the product's Conectia subscription (and, for a3innuva Contabilidad, an OAuth client, which is the registration of the app that connects). Source: a3developers, a3innuva Contabilidad and a3factura
- Business CentralIn the online version of Microsoft Dynamics 365 Business Central the APIs are enabled by default, with notifications (webhooks) when a customer, an order or an invoice changes. Source: Microsoft Learn, API and webhooks
- Sage 50 and a3ERPNeither appears on Sage's or Wolters Kluwer's developer portals. Data usually leaves them by export or through a partner's connector; we check it against your version. Sources: Sage Developer, a3developers
This is not a list of integrations we have built: it is what each vendor says. Where there is an API, we read from it; where there is none, we work from scheduled exports or, if the software runs on your own server and you give us permission, from read access to its database. If it turns out it cannot be connected, we tell you before we start.
WhatsApp, Instagram and Facebook: what Meta allows
Connecting Meta's channels to the record is possible, but each one has its own rules, and they are worth knowing before you plan a single automation. What Meta's pages say, checked 15 October 2026:
- Connection
- Any CRM WhatsApp integration goes through the WhatsApp Business API; with the free app, whatever a customer tells you has to be copied by hand. We explain it in what the WhatsApp Business API is.
- Writing first
- Meta requires a person's opt-in before a business messages them (Meta, opt-in), and more than 24 hours after their last message only approved templates can be sent (Meta, templates).
- Cost
- Meta charges per message. Since 1 October 2026 that includes service replies, after 1,000 free per number per month (Meta pricing, updated 30 September 2026). Details in WhatsApp Business API pricing in 2026.
- AI
- Since 15 January 2026, Meta's terms restrict general-purpose AI assistants on the API. An assistant your business uses to serve its own customers is a different case: what is and is not allowed.
Instagram and Messenger
- Connection
- With an Instagram professional account or a Facebook Page, messages reach the record through Meta's API. This is what an Instagram CRM connection amounts to.
- Writing first
- On Instagram, a business can only reply after the person has written (Meta, Instagram messaging API).
- Window
- On both channels, there are generally 24 hours to reply from when the person writes (up to 7 days if they first write from a Facebook or Instagram ad that opens the conversation); if a person replies rather than an automation, Meta lets the reply be tagged for a separate 7-day window (Messenger and Instagram policy).
Lead Ads forms
- Connection
- Leads from Facebook and Instagram forms can reach the record on their own through Meta's API, with a delay of a few minutes at most (Meta, retrieving leads).
- Limit
- Meta only keeps them available for download for 90 days after they are submitted, and recommends downloading them often or using a CRM (Meta, expired leads). Connecting today does not bring back what has already expired.
When you do not need a custom CRM
If your sales process is simple and your team works well in a standard tool, do not build anything. The well-known CRMs already connect many of these channels without development, although some only on their higher plans:
- HubSpot connects email and syncs Facebook Lead Ads leads on every plan. WhatsApp in its inbox needs Marketing Hub or Service Hub at Professional or Enterprise, and Instagram messages need Marketing Hub Professional or Enterprise (HubSpot, email; WhatsApp; Instagram; Lead Ads).
- Zoho CRM has its own WhatsApp integration and captures leads from social media from the Standard edition up (Zoho, WhatsApp; editions).
- For the ERP, HubSpot's marketplace has an Odoo data sync built by HubSpot and third-party apps for Business Central, SAP Business One and several Sage products (HubSpot marketplace). Before building, we check whether one of them does the job.
A custom (or bespoke) CRM is worth it when the way you sell does not fit a standard tool, when the data that matters lives in your ERP and no connector brings it across properly, or when you want the record, the rules and the data to sit where you decide. If you already have a CRM that works, we build only the missing piece around it.
Sometimes the answer is to build less. On Odysi Reach for retail three problems came up, and we deliberately parked the third, a larger CRM-style build, to ship what paid for itself sooner. How to decide in your case: build, buy or wait and no-code vs custom code for internal tools.
How we do it: in phases
A call and a written proposal
In half an hour we look at which systems you use and what each one allows. Then we send you a written proposal with the scope, the price and the assumptions behind it.
The record and one or two connections
We start with the sources that matter most, for example the ERP and WhatsApp, reading only. We agree the rules for matching customers and test them on your data.
The automations
The email and WhatsApp messages that are sent by hand today, with a person approving what matters before it goes out.
Analytics and AI
The dashboard and the questions about your data, once the record is reliable. AI on top of duplicated data gives wrong answers with great confidence.
Each phase ends in something your team uses, and if the first one already gives you what you needed, we stop there. We do not give timelines before we have seen your systems: they depend on how many sources there are, whether your ERP has an API and the state of the data, and they go in the proposal. What moves the price is explained in how much a custom AI tool costs.
None of these is a full CRM. They are the pieces of one.
Fixlab
A WhatsApp assistant in production since June 2026 that identifies the customer against the Fixlab platform and opens requests through its API. Between 26 June and 24 September 2026 it handled 279 conversations from 218 people and opened 20 reform requests end to end.
Read the caseSaint Charles Hardwoods
A custom catalog system the new owners manage themselves, live since August 2026. Permissions apply record by record and decide who can read and change what, and every relevant admin action is written to an audit log.
Read the caseOdysi Reach for retail
A sales dashboard that reads a brand's sales sheet: revenue, active accounts, campaign over campaign, a per-agent view and new, returning and lost accounts, with the figures audited against the original file.
Read the caseWe will not tell you we have connected a particular ERP if we have not. What we have done is read from and write to a client's system through its API, build a system the client runs itself, with access control, and turn a sales spreadsheet into a dashboard with the figures checked against the source.
The data, GDPR and what is yours
You are the controller of your customers' data and we are the processor, under a data processing agreement, as Article 28 of the GDPR requires. Bringing data together does not mean keeping everything: each field in the record needs a purpose, and we document where each component processes and stores data.
Marketing messages by email or WhatsApp need the customer's consent. In Spain, article 21 of the LSSI makes an exception for existing customers: only for your own products or services similar to what they bought, with their contact details obtained lawfully, and with a simple, free way to opt out both when the details are collected and in every message. On WhatsApp, Meta asks for its own opt-in as well.
The system is built on your criteria and your data, which are yours, and they are not shared with other clients. At handover we document everything, and the documentation is fully yours, so your team can change the rules without us.