Contact Address Validation Suite
One address validation framework, three world-class providers. Verify every contact address is real and deliverable with Google, PostGrid, or Smarty — same button, same dialog, same stored verdict, whichever provider you choose. Switch providers from Settings at any time; your users never notice the difference.
Product Overview
Contact Validation Suite brings professional address verification to Odoo Contacts through a single, provider-agnostic framework backed by three providers: the Google Address Validation API, PostGrid, and Smarty. Users verify, standardize, and geocode addresses with one click from the Contact form — the provider working behind the button is a Settings choice, not an architectural commitment.
The suite is built in two layers. The foundation layer provides everything the providers share: the verification fields and lifecycle, the Verify Address button and review dialog, provider-independent search filters, the chatter audit trail, and the provider registry with its selection setting. Three adapter modules then plug the providers into that framework, each handling its own API communication server-side — credentials never reach the browser. Install one adapter or all three; with several installed, switching the active provider is a dropdown in Settings.
Every provider's verdict is stored verbatim — Google's Valid / Needs Review / Invalid, PostGrid's Verified / Corrected / Failed, Smarty's delivery-point DPV statuses — while a shared severity (green / yellow / red) gives users and filters one consistent language across providers. Compliance is built in: adapters declare whether their terms allow storing standardized addresses, and the framework enforces it — PostGrid and Smarty results are kept on the record, while Google's standardized address is display-only per Google Maps Platform terms.
Who It's For
Any Odoo business where a wrong address costs money — returned shipments, failed deliveries, undeliverable mail, misplaced map markers — and any team that wants the freedom to choose or change its validation vendor.
Logistics & Delivery Teams
Verify delivery addresses before dispatch — down to the apartment or suite number with Smarty's delivery-point statuses. Catch incomplete or unrecognized addresses at data-entry time rather than at the warehouse door.
Marketing & Direct Mail Teams
Standardize and validate mailing lists with USPS DPV confirmation before printing labels. PostGrid and Smarty standardized addresses are stored on the record, ready for export and label printing.
Teams With International Data
PostGrid and Smarty route US/CA and international addresses to the right API automatically, and Google covers its supported countries worldwide — one workflow for a global contact database.
IT & Procurement
Evaluate providers on price, coverage, and terms — not on migration cost. Because the workflow, fields, and filters belong to the framework, changing the provider later is a Settings change, not a re-implementation project.
The Problem It Solves
Odoo's address fields are free-text: typos, incomplete streets, and non-existent postcodes are saved without warning and propagate to every downstream process — shipping labels, invoices, map views, territory assignment. And the usual fix, a single-vendor validation connector, creates a new problem of its own.
No Feedback at Entry Time
Bad addresses are discovered downstream — a returned shipment, a bounced mailer, a marker in the wrong city — when correcting them is most expensive. The suite moves verification to the moment of entry, with a stored, searchable verdict on every contact.
Vendor Lock-In by Architecture
Typical validation connectors hardwire one provider into fields, views, statuses, and code. Changing vendors means data migration and user retraining. Here the provider is an adapter: the button, dialog, fields, and filters are shared, and the active provider is a dropdown in Settings.
Compliance Is Easy to Get Wrong
Provider terms differ — Google's standardized addresses may not be stored permanently, while PostGrid's and Smarty's may. The framework encodes each provider's storage policy and enforces it automatically, in both fields and chatter, so compliance doesn't depend on user discipline.
No Visibility Into Data Quality
Without a stored verification status there is no way to filter or report on address quality. The suite stores the provider's verbatim status, a shared severity, the DPV code, and the verification date on every contact — with built-in filters to audit the database in bulk.
What's Inside
Five purpose-built modules — a two-module foundation layer shared by every provider, and three provider adapters. Install the foundation with one adapter, or all three adapters side by side.
Foundation Layer — Shared Framework
Base Address Validation
The provider-agnostic framework. Defines the provider registry and selection setting, the reusable verification mixin (status fields, automatic reset, verify and apply actions), and the generic Verify Address widget and review dialog. Provider statuses are stored verbatim; a shared severity (success / warning / danger) drives badges, filters, and the Apply guard. Compliance-aware storage is enforced here.
Why It Exists
Centralising the workflow in one framework means the button, dialog, stored fields, and filters are identical no matter which provider is active — and switching providers is a Settings change, not a data migration.
Contacts Address Validation
Applies the framework to Contacts. The Contact form gains the Verify Address button and severity-colored status badge; the Contacts list gains verification filters. Every verification is logged in the chatter — including old → new coordinates when they change — and editing any address field resets the status automatically.
Why It Exists
Contacts is where address data lives in
Odoo. This module wires the framework into
res.partner so every customer,
vendor, and delivery address gets the
verification workflow out of the box.
Provider Layer — Pick One or Install All Three
Address Validation: Google
The Google Address Validation API as a provider. Google's verdict becomes three clear statuses — Valid, Needs Review, Invalid — following Google's own accept / confirm / fix guidance. USPS CASS™ processing with DPV confirmation for US and Puerto Rico, component-level confirmation with inferred, replaced, and spell-corrected flags, and ToS-compliant display-only handling of Google's standardized address.
Address Validation: PostGrid
PostGrid's US/CA and International verification APIs, routed automatically by country. Verbatim statuses (Verified / Corrected / Failed plus the International vocabulary), USPS DPV-aware severity, delivery details (residential/commercial, vacancy, county), and a sandbox mode with test keys that return mock data — QA and training never spend verification credits.
Address Validation: Smarty
Smarty's US Street and International Street APIs, routed automatically by country. US addresses are confirmed to the delivery point with secondary-unit precision — "confirmed" vs. "confirmed, unit missing" — plus international verification statuses, delivery details, parsed address components, and geocoding with precision.
How It Works
From installation to a fully audited contact database — the flow is the same whichever provider you choose.
- Install and pick a provider. Install the Contacts module and enable one or more provider adapters directly from the Address Validation section in Settings — checking a box installs the adapter. With a single adapter installed it is used implicitly; with several, the active provider is a dropdown.
- Enter the provider's credentials. Google API key, PostGrid live/sandbox keys, or the Smarty secret key pair — each adapter has its own settings section. Credentials are stored in Odoo system parameters and used server-side only.
- Verify from the Contact form. Click Verify Address below the address block. Pending edits are saved automatically, the request runs server-side, and the review dialog opens with the provider's verdict, a severity banner, and a side-by-side comparison of entered vs. standardized address.
- Apply or keep. Apply Standardized Address writes the address and coordinates to the contact; Keep Current Address stores only the verdict; Discard writes nothing. Either way, the verification is logged in the chatter.
- Trust the badge. The severity-colored badge shows the provider's verbatim status and verification date. Editing any address field resets it automatically — a stale "verified" can never survive an address change.
- Audit in bulk. Use the built-in Contacts filters — verified, needs review, failed, not verified — to measure and clean address quality across the whole database, independently of which provider produced each verdict.
- Switch providers when needed. Change the active provider in Settings at any time. Stored verdicts keep their provider's vocabulary; new verifications use the new provider. No views, fields, or workflows change.
Key Features
A shared verification experience with the strengths of each provider — and the freedom to choose between them.
The Shared Framework
- One workflow, three providers — The same button, dialog, badge, filters, and chatter log regardless of the active provider; switching is a Settings change.
- Verbatim statuses + severity — Each provider's exact vocabulary is stored untouched, with a shared green / yellow / red severity as the one cross-provider language.
- Automatic status reset — Editing any address field resets the verification, so stale verdicts never persist.
- Chatter audit trail — Every verification logged with provider, status, DPV code, and old → new coordinates when they change.
- Compliance-aware storage — Each adapter declares whether standardized addresses may be stored; the framework enforces the policy in fields and chatter automatically.
- Secure by design — All provider communication is server-side; credentials live in system parameters and never reach the browser.
Google Adapter
- Verdict made actionable — Valid / Needs Review / Invalid derived from Google's accept / confirm / fix guidance.
- Component-level confirmation — Every address part with its confirmation level, plus inferred, replaced, and spell-corrected flags and missing-component callouts.
- USPS CASS™ for US & PR — DPV confirmation shown in the dialog and logged in the chatter.
- ToS-compliant by construction — Google's standardized address is display-only; what's saved is always the user-confirmed address.
PostGrid Adapter
- US/CA + International — Automatic routing by country between PostGrid's two verification APIs.
- DPV-aware severity — A street-level "verified" without USPS delivery-point confirmation is visibly different from a fully confirmed address.
- Sandbox mode — Test keys run the full workflow on mock data; QA and training cost nothing, and sandbox results are clearly marked.
- Storable results — PostGrid's standardized addresses are kept on the record, ready for labels and exports.
Smarty Adapter
- Delivery-point precision — US addresses confirmed to the unit level: "confirmed", "unit missing", "unit dropped", "not confirmed", "no match".
- US + International — Automatic routing between the US Street and International Street APIs.
- Delivery details — Residential/commercial indicator, vacancy flag, county, and parsed address components in the dialog.
- Storable results — Smarty's standardized addresses are kept on the record, ready for labels and exports.
Use Cases & Benefits
Choose the Right Provider for Your Data
US-heavy database with apartment addresses? Smarty's delivery-point precision. Global coverage with a QA budget in mind? PostGrid and its sandbox. Already on Google Maps Platform? Google slots into your existing billing. One suite covers all three answers.
No Vendor Lock-In, Ever
The workflow, fields, and filters belong to the framework, not the provider. Renegotiate, re-evaluate, or switch vendors with a dropdown — not a migration project.
Verified, Deliverable Addresses
Know before shipping, mailing, or visiting whether an address is real and deliverable — with USPS delivery-point confirmation for US contacts.
Geocoding Included
Coordinates come back with the verification and are written to the contact in the same step — map views and territory assignment work immediately, no separate geocoding pass.
Audit-Ready Data Quality
A stored, searchable verdict on every contact and a chatter entry for every verification — data quality becomes measurable, filterable, and reportable inside Odoo.
Compliance Without Discipline
Provider storage policies are enforced by the framework itself — Google results are display-only, PostGrid and Smarty results are stored — so terms-of-service compliance never depends on users remembering the rules.
What's in the Bundle
Five modules in install-dependency order — the two-module foundation followed by the three provider adapters. Available as the full suite or as single-provider bundles.
Foundation Modules
-
base_address_validation— Provider registry and selection setting, verification mixin, generic Verify Address widget and review dialog, severity model, compliance-aware storage -
contacts_address_validation— Verify Address button on the Contact form, severity badge, search filters, automatic status reset, chatter audit trail
Provider Adapters
-
address_validation_google— Google Address Validation API with USPS CASS™/DPV, component-level confirmation, and ToS-compliant display-only standardized addresses (requiresbase_google_map) -
address_validation_postgrid— PostGrid US/CA + International APIs with automatic country routing, DPV-aware severity, delivery details, and live/sandbox key management -
address_validation_smarty— Smarty US Street + International Street APIs with delivery-point DPV precision, delivery details, and parsed address components