How to Validate Addresses on a monday.com Board with the Google Address Validation API

Check the addresses on a monday.com board (deliveries, installs, site visits or new customers) with the Google Address Validation API, mark each item valid or needing a fix, and write the corrected address back to the board.

What This Integration Does

monday.com has no built-in address validation, so boards that drive deliveries or field visits fill up with addresses nobody has checked. This Spojit workflow adds it. On a schedule, it reads the board's new items, sends each address to Google's Address Validation API, sets a status column to Valid or Check address, fills a "Verified address" column with Google's standardised version, and posts an update on the item explaining any problem. Your team works from the status column; nobody copies addresses into Google Maps by hand.

The workflow only processes items whose status is still New, and it changes that status as it goes, so each item is validated exactly once. Editing an address and setting the status back to New puts it through the check again on the next run.

Prerequisites

  • A monday.com connection in Spojit (a personal API token from your monday.com profile, Developers -> My access tokens).
  • A board with text columns for the address (for example Street, City, Postcode, Country), a Status column with the labels New, Valid and Check address, and a text column Verified address.
  • The board ID (the number in the board's URL) and each column's ID. Use the Monday.com connector's get-board tool once to list them.
  • A Google Cloud API key with the Address Validation API enabled and billing on.

Step 1: Schedule Trigger

Add a Trigger node with type Schedule. Every 30 minutes (*/30 * * * *) suits most boards; use every 5 minutes if items are created minutes before a visit.

Step 2: Read the Board's Items

Add a Connector node on Monday.com in Direct Mode with list-items. Set boardId to your board and limit to 100, and name the output board. Each item carries its column_values, an array of { id, text } entries. Run the step once and copy the path to the items from the output panel; with more than 100 items, pass the returned cursor back in to page through.

Step 3: Keep Only New Items

Add a Transform node with Iterate over set to the items, shaping each into a flat object and keeping the status text:

{
  "id": "{{ item.id }}",
  "status": "(text of the status column)",
  "street": "(text of the Street column)",
  "city": "(text of the City column)",
  "postcode": "(text of the Postcode column)",
  "country": "(text of the Country column)"
}

Then add a Loop in ForEach mode over that list, with a Condition inside that continues only when {{ item.status }} equals New. If picking column values out of the array by ID is awkward in a Transform, use the JSON Tools connector's query tool on column_values instead.

Step 4: Validate the Address

Inside the loop, add a Connector node on HTTP Requests with http-post:

  • url: https://addressvalidation.googleapis.com/v1:validateAddress
  • headers: { "Content-Type": "application/json", "X-Goog-Api-Key": "YOUR_API_KEY" }
  • body:
    {
      "address": {
        "regionCode": "{{ item.country }}",
        "addressLines": ["{{ item.street }}"],
        "locality": "{{ item.city }}",
        "postalCode": "{{ item.postcode }}"
      }
    }

Name the output validation. regionCode takes a two-letter country code such as AU or US, so use codes in the Country column (or a dropdown with codes as labels).

Step 5: Write the Result Back to monday.com

Add a Condition on {{ validation.data.result.verdict.possibleNextAction }} equal to ACCEPT. On both branches add a Monday.com step with update-item, with boardId your board, itemId {{ item.id }} and columnValues:

{
  "status": { "label": "Valid" },
  "verified_address": "{{ validation.data.result.address.formattedAddress }}"
}

On the not-accepted branch use the label Check address, then add a second Monday.com step with create-update on the item: "Google could not confirm this address ({{ validation.data.result.verdict.possibleNextAction }}). Suggested: {{ validation.data.result.address.formattedAddress }}". Replace status and verified_address with your real column IDs.

Tips

  • Automate the next step: once an item is Valid, a monday.com automation can move it to a "Ready to schedule" group, so validation becomes part of the board's own flow.
  • Units and apartments: CONFIRM_ADD_SUBPREMISES means the building was found but a unit number is missing; say so in the update so whoever calls the customer knows exactly what to ask.
  • Geocode for routing: Google also returns geocode.location (latitude and longitude). Store it in two number columns if you plan routes or map visits.
  • Agent Mode: the Monday.com connector also works in Agent Mode, where a prompt such as "set the status to Valid and fill Verified address" replaces the column IDs. Direct Mode is cheaper and fully predictable for a fixed board.

Common Pitfalls

  • Column IDs are not titles: update-item needs IDs such as text4 or status, not "Verified address". Get them from get-board.
  • Status labels must exist: setting a label the column does not have fails the step. Create Valid and Check address on the column first.
  • Full country names: "Australia" in regionCode fails; use AU.
  • Billing: each validation is a billed Google call. The New status filter is what keeps the workflow from re-checking the whole board every run.

Testing

Add two items to the board with the status New: one real address and one with a wrong postcode. Run the workflow manually, then check that the first shows Valid with a verified address and the second shows Check address with an update. Then switch the schedule on.

Learn More

Ready to build this?

Start on the free plan: 500 AI credits a month, no card needed.

Start free

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.