Docs navigation

Database CRM templates

When customer data lives in your own database — a bespoke line-of-business app, an ERP, a data warehouse — the database templates give you CRM-grade caller identification with a SQL query instead of a vendor API. Templates exist for PostgreSQL, MySQL, SQL Server and MongoDB.

Configuration

Pick the matching template on Admin → Integrations → CRM and fill in the connection: host, port, database, username and password (encrypted at rest, like all integration secrets). Then provide the lookup query that turns a phone number into a contact, using placeholders for the searched values:

SELECT id, first_name, last_name, company, phone, email
FROM   customers
WHERE  phone LIKE '%[Number]%'

[Number] (and the other placeholders the template documents) are bound as query parameters — the engine rewrites placeholder patterns into parameterized SQL, so a caller's number is data, never SQL. Statements outside a safe read shape are refused.

Map the query's result columns to contact fields (name, company, email…) in the template's response section, and use the test panel with a real number to see exactly what comes back.

What you get

Caller-ID lookup with the same cache-first pipeline as the API CRMs: repeat callers label instantly from cache, new numbers query your database in the background. Phonebook sync works when you provide a list-contacts query. Journaling is possible if you point the template's write scenario at a suitable table, but most database integrations run lookup-only.

Practical notes

  • Reachability — the database must accept connections from the Exovo host; a read-only account scoped to the contacts view is the right-sized credential.
  • Number formats — match on the tail of the number (LIKE '%[Number]%' on the last digits, or normalize in a view) so +15551230123, 15551230123 and 555-123-0123 all hit.
  • Views are your friend — point the query at a view that joins/formats exactly what phones should display, and the integration never needs touching when the schema evolves.