Listings Accuracy | Yext Hitchhikers Platform
Yext Listings syncs facts about your business to 200+ publishers in our Publisher Network . This presents the common questions like “how can I check if my listings are actually accurate?” or “which listings need my attention?”. Up until now, the only way to understand if a given publisher listing is reflective of your data in the platform was to visit the listing on the publisher site and manually review each field. As you can imagine, tracking this at scale was not realistic.
In an effort to promote maximum transparency of the Listings product, we have built a new system known as the Verifier that is able to determine the accuracy of listings. The Verifier determines if data in the platform appears correctly on the corresponding listing data displayed to consumers. This accuracy calculation happens at the field-level for each entity across each publisher.
Here is an example of an entity in the platform and its corresponding Google listing:
In this example, the Verifier would determine the business name, address, phone number, hours of operation, and more appear correctly on Google. We’ll deep dive into how we calculate listings accuracy, where you can find this information in the platform, which publishers and fields are in scope, and what you can do when data does not appear correctly on a listing.
Automated Scanning
Keeping up with all of the potential data display changes on the publisher network is quite the task. Every publisher has their own unique method for receiving data from Yext and displaying it on their site. To ensure that we can provide transparency into the most up-to-date listings data possible, we use a process called “scanning” to constantly fetch the data the publisher is displaying on their listings. This is known as the scanning process.
We use a dual scanning process to not let changes slip though. First, we have a real-time scan initiated every time an entity is updated in the platform and that change is sent to the publisher. Second, we have a recurring backup scan to catch any changes that may have been missed. For high-trafficked publishers like Google, we scan very frequently. For publishers with less traffic, we’ll scan less frequently.
Both of these processes work together to pull in the latest snapshot of which data appears on a listing. Once we have that snapshot, we can compare what is displayed on the listing with what is expected to be displayed (which is what is in the platform!).
Publisher, Field, and Languages Supported
Not all publishers support real-time scanning or provide a time-of-receipt of the exact data they are showing on their listings. Because of this, we can only support listings accuracy verification on many but not all of our publishers.
Below is the list of Publishers, Fields, and Languages that support listings accuracy verification today. We expect this list to continuously grow over time.
Publisher and Fields
Apple | Yelp | MapQuest | AroundMe | Cylex | Gelbe Seiten | iGlobal | BundesTelefonbuch | Dialo | |||
---|---|---|---|---|---|---|---|---|---|---|---|
Name | |||||||||||
Address | |||||||||||
City | |||||||||||
Region | |||||||||||
Country | |||||||||||
Postal Code | |||||||||||
Lat/Long | |||||||||||
Phone | |||||||||||
Hours | |||||||||||
Closed Status | |||||||||||
Website URL |
Languages
Language | Status |
---|---|
English | Supported |
Spanish | Supported* |
Italian | Supported* |
French | Supported* |
German | Supported* |
Japanese | Supported* |
Other | Supported* |
*While the Verifier is supported globally, the system will have more difficulty with verifications in this language and may be prone to lower listings accuracy. This may occur for fields like Name, Address, City, etc. where the field standards and formatting typically vary by country.
Listing Detail Page
Now that we’ve scanned the publisher network for the latest snapshot of data displayed to consumers, we can display in the UI, for each field on each listing, if the displayed data is accurate. This requires us to compare the displayed publisher data to the corresponding data in the platform.
On the Listing Detail page you will see the following columns:
- Field: The display name of the field in the platform.
- Entity Data: The value of the current data stored in the platform for this field, even if we last verified the listings with a previous version of content.
- Publisher Data: The latest verified publisher data.
- Status: Processing, Data Mismatch, Verified, Field Not Synced
- If a field is not supported on the publisher site, it will not display in the table.
- Table will only appear if the listing is Synced. If the listing is Processing, Opted Out, or Not Synced it will display the corresponding status in a single row on the page.
Statuses
- Verified: The current data in the platform matches the data on the publisher site.
- Processing: The data was updated recently so we need to wait for another scan to occur. Then, we will show “Verified” or “Data Mismatch” based on the status of the scan.
- Field Not Synced: The data is not being synced based on the Field Syncing & Mappings settings (found in the Configuration tab of the Publisher Detail page)
- Data Mismatch: Data in the platform does not match the data on the publisher site.
Data Mismatch Details
- If the last verified data in the platform does not match the data on the publisher site, the publisher data will be in red text in the table.
- If data in the platform is blank, and the publisher data is not, you will see
in the Entity data column. - If data in the platform is filled out, and the publisher data is blank, you will see
in the Publisher Data column.
Actions on the Page
- Force Sync: Resend data from the platform to the publisher.
- View Listing: View the listing on the publisher site.
- Scan: Fetch the publisher data and re-verify.
- Opt In: Opt into this listing - only appears for listings that are currently opted out.
Handling Mismatches
Data Mismatches occur when the data in the platform and the data on the listing do not match. There are many reasons this may happen, and we’ll review what actions can be taken in each case.
Mismatch | Details | Action(s) |
---|---|---|
Missing Data on Publisher | Data is filled out for a given field in the platform, but that data field is empty on the publisher. The most common reason for this mismatch is the last listing sync failed for the missing field. | Force Sync |
Missing Data in Yext | Data appears on the publisher listing, but that data field is empty in the platform. Note: Listings will not delete existing publisher fields if that corresponding field is blank in the platform. |
Fill out entity data in Yext |
Data is Similar, but Formatted Differently | Publisher field data is similar and overall representative of your data in the platform, despite not being an exact match. This occurs frequently due to Publisher Transformations | |
Data is Wrong on Publisher | Publisher field data is wrong and not representative of your data in the platform. The most common reason for this mismatch is the last listing sync failed for the incorrect field. | |
Data is Wrong in Yext | Publisher field data is correct, but not representative of your data in the platform. The most common reason this occurs is due to human error when filling out your data in the platform. | Update entity data in Yext |
Listings Accuracy in Report Builder
Metrics
Listings Accuracy: The percent of fields with accurate data on Listings.
How metric is calculated: The number of fields (within the given filtered and dimensioned set of data) with accurate data divided by the total number of fields (within the given filtered and dimensioned set of data).
Use cases
Over Time
By Field
Applicable Dimensions
- Time > Days of Week / Days / Hours / Months / Week Number / Weeks
- Entities > Country / Entity / Entity Groups / Entity Types / Folder / Labels
- Listings > Sites / Listing Field
Applicable Filters
- Entities > Country / Entity / Entity Groups / Entity Types / Folder / Labels
- Listings > Sites / Listing Field
Verifier Comparison Logic
Verifications will either be determined as either a Match or No Match. At first glance, this is a seemingly simple problem that the Verifier is solving – “why not just check if the strings match up?” However, verification becomes much more complicated due to Publisher Transformations.
Publisher Transformations
Often publishers will slightly transform data before they publish it to the end user. One example of this is when publishers remove the “Inc” suffix:
Pat’s Pizza Inc ➡️ Pat’s Pizza
In this example, the publisher removed “Inc” from the business’ name. While these two values would fail a literal string comparison, we still want the Verifier to count this as a match, seeing as there’s no way to surface “Inc” in our business’ name - the publisher will inevitably remove it. In this case, the Listings product is executing its job properly, but the data in Yext and Publisher systems will never exactly match.
That being said, there are many other scenarios where the business names are slightly different, but are not caused by a publisher transformation. Instead, these scenarios occur when a publisher is using the wrong data to display to consumers. Here is an example:
Pat’s Pizza Inc ➡️ Pats Pizza Inc
These scenarios require some investigation since we know that publishers don’t really strip the possessive apostrophe (‘) from business names, and it’s likely that something failed along the way. The new Verifier should identify these scenarios so we can:
- Raise it to the user’s attention
- Determine if the issue is Yext-actionable or client-actionable
We would count the first example to be a Match and the second example to be a No Match. As you can imagine, these Publisher Transformations can be very nuanced and pretty tricky, which is why we built the specialized Verifier system to consistently identify them. Additionally, publishers do not provide an explicit list of transformations - we are only aware of the ones that we’ve encountered before, which may also change over time. So while we can always discover emerging examples, we built the Verifier system to handle quick iterations to keep up with the pace of our findings.
Below are a set of lists outlining publisher and field verification logic which we’ve built into the Verifier.
Note: we will continuously iterate this list as we encounter new edge cases
Publisher Specific Logic
Apple
- May remove geomodifiers from business names
- Does not allow tracking parameters on URLs
- Does not accept Name field from Yext and any desired changes need to be updated directly on the listing
Yelp
- Frequently interchanges “http” and “https” in the Website field
Field Specific Logic
Name
Entity Data | Publisher | Label | Notes |
---|---|---|---|
Pat’s Pizza | Pat’s Pizza | Match | Exact match |
Pat’s Pizza Inc | Pat’s Pizza | Match | Removed corporate extension (e.g., LLC, LP, Corp, Inc, etc.) |
Pat’s Pizza Incorporated | Pat’s Pizza Inc | Match | Abbreviated corporate extension (e.g., LLC, LP, Corp, Inc, etc.) |
Pat’s Pizza Inc | Pat’s Pizza Incorporated | Match | Elongated corporate extension (e.g., LLC, LP, Corp, Inc, etc.) |
Pat’s Pizza Inc. | Pat’s Pizza Inc | Match | Removed punctuation |
GOAT Pizza, by Pat | GOAT Pizza by Pat | Match | Removed punctuation |
Pat’s Pizza, Pretzels, and Paella | Pat’s Pizza Pretzels and Paella | Match | Removed punctuation |
Pat’s Pizza - CLOSED | Pat’s Pizza | Match | Removed closed status |
Pat’s Pizza - PERMANENTLY CLOSED | Pat’s Pizza | Match | Removed closed status |
Pat’s Pizza - TEMPORARILY CLOSED | Pat’s Pizza | Match | Removed closed status |
Pat’s Pizza Park Slope | Pat’s Pizza | Match | Removed geo-modifier |
Pat’s Pizza | Pat’s Pizza Park Slope | Match | Added geo-modifier; publisher may have pulled this from the address field |
The Pizza Shop | Pizza Shop | Match | Removed preposition |
Pizza and Co. | Pizza Co. | Match | Removed preposition |
Pat’s Pizza of Greenwich | Pat’s Pizza Greenwich | Match | Removed preposition |
Pat’s Pizza at Bleecker | Pat’s Pizza Bleecker | Match | Removed preposition |
Pat’s Pizza in NYC | Pat’s Pizza NYC | Match | Removed preposition |
Pat’s Pizza | Pat’s Pizza | Match | Removed trailing spaces, leading spaces, and in-between spaces (if 2+) |
Pat’s PIZZA | Pat’s Pizza | Match | Decapitalized text |
Pat’s Pizza - Best NYC Slice | Pat’s Pizza-Best NYC Slice | Match | Str cleaning |
Pat’s Pizza - Best NYC Slice | Pat’s Pizza & Best NYC Slice | Match | Replaced “-” with “&” |
Holiday Resort | Holiday Resorts | Match | Pluralized “Resort” → “Resorts” |
Casalino, Riker & Huang | Casalino Riker & Huang | Match | Removed punctuation |
Pat’s Pub | Calvin’s Pub | No Match | Data mismatch |
Pat’s Pub | Pats Pub | No Match | Removed possessive apostrophe |
Pat’s Pub | No Match | Data mismatch | |
Pats Pub | No Match | Missing in Yext: Verifier flags as an error and recommends client to add data to Yext |
Address (address + address2)
Entity Data | Publisher | Label | Notes |
---|---|---|---|
52 Deerfield Rd | 52 Deerfield Rd | Match | Exact match |
52 Deerfield Road | 52 Deerfield Rd | Match | Abbreviated street suffix (e.g., St, Rd, Dr, Ave, etc. ) |
52 Deerfield Rd | 52 Deerfield Road | Match | Elongated street suffix (e.g., St, Rd, Dr, Ave, etc. ) |
52 Deerfield Rd Suite 100 | 52 Deerfield Rd Ste 100 | Match | Abbreviated secondary address unit designator (e.g., Apt, Ste, Fl, etc.) |
52 Deerfield Rd Ste 100 | 52 Deerfield Rd Suite 100 | Match | Elongated secondary address unit designator (e.g., Apt, Ste, Fl, etc.) |
52 Deerfield Rd Suite 100 | 52 Deerfield Rd #100 | Match | Replaced secondary address unit designator (e.g., Apt, Ste, Fl, etc.) |
52 Deerfield Rd #100 | 52 Deerfield Rd Suite 100 | Match | Replaced # with a secondary address unit designator (e.g., Apt, Ste, Fl, etc.) |
52 Deerfield Rd Apt #5A | 52 Deerfield Rd Apt 5A | Match | Removed # from address2 |
52 Deerfield Rd Apt A-15 | 52 Deerfield Rd Apt A15 | Match | Removed - from address2 |
52 DEERFIELD RD APT 5A | 52 Deerfield Rd Apt 5a | Match | Decapitalized text |
52 East Deerfield Rd | 52 E Deerfield Rd | Match | Abbreviated cardinal direction |
52 E Deerfield Rd | 52 East Deerfield Rd | Match | Elongated cardinal direction |
52 E Deerfield Rd 2nd FL | 52 E Deerfield Rd Fl 2 or 52 E Deerfield Rd Second Floor |
Match | Ordinals |
52 E 3rd Ave | 52 E Third Ave | Match | Ordinals |
52 St. Deerfield Rd | 52 St Deerfield Rd | Match | Removed punctuation |
52 Deerfield Rd | 52 Charles Rd | No Match | Data mismatch – street name |
52 Deerfield Rd | 48 Charles Rd | No Match | Data mismatch – street number |
52 Deerfield Rd | 52 Deerfield Blvd | No Match | Data mismatch – street suffix |
52 Deerfield Rd Suite 100 | 52 Deerfield Rd | No Match | Data mismatch – missing secondary address unit designator |
52 Deerfield Rd | No Match | Data mismatch – missing data on publisher | |
52 Deerfield Rd | No Match | Data mismatch – missing data in Yext |
Hours
Note: for Hours, our goal is to check if the hours match conceptually – not text based. As such, we disregard various display nuances like 12 vs. 24 hour formatting, open 24 hr representations, closed representations, etc. A good rule of thumb is: “if a consumer showed up during the listed hours, would your business be open?”
Entity Data | Publisher | Label | Notes |
---|---|---|---|
M-Su 8am-5pm | M-Su 8am-5pm | Match | Exact match |
M-Su Closed | M-Su 12am-12:01am | Match | Different representation of closed |
M-Su 24hr | M-Su 12am-12am | Match | Different representation of open 24 hrs |
M 8am-4am | M 8am-12am, Tu 12am-4am | Match | Different representation of past midnight hrs |
W 8am-4pm, 6PM-11PM | W 8am-12pm, 2pm-5pm, 6pm-11pm | Match | Yext limitation - we only support up to 1 split. Compare only earliest and latest windows |
M-Th 10am-11pm, F-Su 10am-11:59pm | M-Th 10am-11pm, F-Su 10am-midnight | Match | midnight = 11:59pm (round up to 1min) = 12am |
M-Su 24hr | M-Su 12am-11:59pm | Match | 24hr representations |
W 8am-4pm, 6PM-11PM | W 8am-12pm, 2pm-5pm, 7pm-11pm | No Match | Yext limitation - we only support up to 1 split. Compare only earliest and latest windows |
M-Su 8am-5pm | M-Su 8am-2pm | No Match | Data mismatch |
M-Su 8am-5pm | No Match | Data mismatch – missing data on publisher | |
M-Su 24hr | No Match | Data mismatch – missing data in Yext |
Country Code
Entity Data | Publisher | Label | Notes |
---|---|---|---|
US | US | Match | Exact match |
US | JP | No Match | Data mismatch – wrong country code |
US | No Match | Data mismatch – missing data on publisher | |
US | No Match | Data mismatch – missing data in Yext |
Phone
Note: for Phone, our goal is to check if the phone numbers match conceptually – not text based. As such, we can disregard various phone formatting representations. A good rule of thumb is: “if a consumer called both phone numbers, would they arrive at the same phone line?”
Entity Data | Publisher | Label | Notes |
---|---|---|---|
8006097657 | 8006097657 | Match | Exact match |
8006097657 | (800) 609 7657 | Match | Formatted differently |
8006097657 | (800) 609-7657 | Match | Formatted differently |
8006097657 | 800-609-7657 | Match | Formatted differently |
8006097657 | 800.609.7657 | Match | Formatted differently |
8006097657 | +18006097657 | Match | Added country calling code |
18006097657 | 8006097657 | Match | Removed area code |
0 820 12 38 00 | 820123800 | Match | International number - leading 0 with spaces |
0120-003-200 | 120003200 | Match | International number - leading 0 with hyphens |
(02) 9272 6888 | 292726888 | Match | International number - leading 0 with parentheses |
18006097657 | +448006097657 | No Match | Data mismatch – compare area codes if included in both Yext and Pub. +1 (US) != +44 (UK) |
8006097657 | 8006097658 | No Match | Data mismatch – wrong number |
8006097657 | No Match | Data mismatch – missing data on publisher | |
8006097657 | No Match | Data mismatch – missing data in Yext |
Website URL
Note: for Website, our goal is to check if the URLs match conceptually – not always text based. However, in some scenarios formatting actually is important (e.g., case sensitivity after the domain). A good rule of thumb is: “if a consumer clicked on both URLs, would they land at the same webpage?”
Entity Data | Publisher | Label | Notes |
---|---|---|---|
http://www.patspizza.com/parkslope |
http://www.patspizza.com/parkslope |
Match | Exact match |
http://www.patspizza.com/parkslope |
http://patspizza.com/parkslope |
Match | Removed www. |
http://patspizza.com/parkslope |
http://www.patspizza.com/parkslope |
Match | Added www. |
http://patspizza.com/parkslope |
http://patspizza.com/parkslope/ |
Match | Added trailing backslash |
http://patspizza.com/parkslope/ |
http://patspizza.com/parkslope |
Match | Removed trailing backslash |
http://www.patspizza.com/parkslope |
https://www.patspizza.com/parkslope |
Match | Replaced http with https (Yelp-only) |
https://www.patspizza.com/parkslope |
http://www.patspizza.com/parkslope |
Match | Replaced https with http (Yelp-only) |
http://patspizza.com/parkslope/?utm_source=google&utm_medium=organic&utm_campaign=fall-2022&utm_term=car-insurance&utm_content=cta1 |
http://patspizza.com/parkslope/ |
Match | Removed UTM tracking tag |
http://patspizza.com/parkslope/? |
http://patspizza.com/parkslope/ |
Match | Removed blank UTM tracking tag (trailing question mark) |
http://patspizza.com/parkslope/ |
http://patspizza.com/parkslope/?utm_source=google&utm_medium=organic&utm_campaign=fall-2022&utm_term=car-insurance&utm_content=cta1 |
No Match | Missing tracking tag in Yext: Verifier flags as an error and recommends you to add the tracking tag to the field in the platform |
http://patspizza.com/parkslope/?utm_source=google&utm_medium=organic&utm_campaign=fall-2022&utm_term=car-insurance&utm_content=cta1 |
http://patspizza.com/parkslope/?utm_source=yext&utm_medium=organic |
No Match | Tracking tag exists on both sides, but is different |
http://patspizza.com/NY |
http://patspizza.com/ny |
No Match | URLs parts, after the domain, are case sensitive (e.g., arbys.com/menu vs. arbys.com/MENU) |
http://patspizza.com/ny |
http://patspizza.com/NY |
No Match | URLs parts, after the domain, are case sensitive (e.g., arbys.com/menu vs. arbys.com/MENU) |
http://www.patspizza.com/parkslope |
http://www.calvinspizza.com/parkslope |
No Match | Data mismatch |
http://www.patspizza.com/parkslope |
No Match | Data mismatch – missing data on publisher | |
http://www.patspizza.com/parkslope |
No Match | Data mismatch – missing data in Yext |
Lat/Long
The Lat/Long field is unique as we only check for the distance between the two sets of coordinates. We’ll use the below guidelines:
- If the business address is VISIBLE in Yext (e.g. non service area business) → confirm they are less than 500 meters apart
- If the business address is HIDDEN in Yext (e.g., service area business) → confirm they are less than 5000 meters apart
Entity Data | Publisher | Label | Notes |
---|---|---|---|
"{"latitude": 29.734, "longitude": -95.500}" |
"{"latitude": 29.734,"longitude": -95500}" |
Match | Exact match |
"{"latitude": 29.73435530690116,"longitude": -95.50055118614733}" |
"{"latitude": 29.734,"longitude": -95.500}" |
Match | For visible addresses, “Match” if lat/long are < 500 meters apart |
"{"latitude": 29.75,"longitude": -95.52}" |
"{"latitude": 29.734,"longitude": -95.500}" |
Match | For hidden addresses, “Match” if lat/long are < 5000 meters apart |
"{"latitude": 30.0,"longitude": -95.421025}" |
"{"latitude": 29.734,"longitude": -95.500}" |
No Match | For visible addresses, “No Match” if lat/long are > 500 meters apart |
"{"latitude": 30.0,"longitude": -96.4}" |
"{"latitude": 29.734, "longitude": -95.500}" |
No Match | For hidden addresses, “No Match” if lat/long are > 5000 meters apart |
"{"latitude": 29.734, "longitude": -95.500}" |
No Match | Data mismatch – missing data on publisher | |
"{"latitude": 29.734,"longitude": -95.500}" |
No Match | Data mismatch – missing data in Yext |
City
Entity Data | Publisher | Label | Notes |
---|---|---|---|
Brooklyn | Brooklyn | Match | Exact match |
Brooklyn NY | Brooklyn | Match | Removed geomodifier |
santa monica | Santa Monica | Match | Capitalized text |
Santa Monica | Santa monica | Match | Decapitalized text |
Castleton On Hudson | Castleton-On-Hudson | Match | Added hyphens |
Lees Summit | Lee’s Summit | Match | Added possessive apostrophe |
Lee’s Summit | Lees Summit | Match | Removed possessive apostrophe |
Bridgewater | E Bridgewater | Match | Added cardinal direction |
N Bridgewater | North Bridgewater | Match | Elongated cardinal direction |
Winston-Salem | Winston Salem | Match | Removed hyphen |
Winston Salem | Winston-Salem | Match | Added hyphen |
Saint Charles | St. Charles St Charles |
Match | Saint = St = St. |
Mount Charles | Mt. Charles Mt Charles |
Match | Mount = Mt = Mt. |
Fort Charles | Ft. Charles Ft Charles |
Match | Fort = Ft = Ft. |
Charles Township | Charles Township Charles Twp Charles Twp. Charles Twsp Charles Twsp. |
Match | Township = Twp = Twp. = Twsp = Twsp. |
Geneve | Geneva | Match | Corrected spelling – resolve with fuzzy match |
Chicago | Denver | No Match | Data mismatch |
Chicago | No Match | Data mismatch – missing data on publisher | |
Chicago | No Match | Data mismatch – missing data in Yext |
Region
Entity Data | Publisher | Label | Notes |
---|---|---|---|
NY | NY | Match | Exact match |
NY | New York | Match | Elongated region code |
NY | NJ | No Match | Data mismatch |
NY | No Match | Data mismatch – missing data on publisher | |
NY | No Match | Data mismatch – missing data in Yext |
Postal Code
Entity Data | Publisher | Label | Notes |
---|---|---|---|
10011 | 10011 | Match | Exact match |
10011-#### | 10011 | Match | Removed +4 code |
10011 | 10011-#### | Match | Added +4 code |
PL15 7PF | PL15 7PF | Match | Exact match (international) |
PL15 7PF | PL157PF | Match | Removed “ “ (international) |
10011 | 10012 | No Match | Data mismatch |
10011 | No Match | Data mismatch – missing data on publisher | |
10011 | No Match | Data mismatch – missing data in Yext |
Closed Status
Entity Data | Publisher | Label | Notes |
---|---|---|---|
Open | Open | Match | Exact match |
Temporarily closed | Temporarily closed | Match | Exact match |
Permanently closed | Permanently closed | Match | Exact match |
Open | Temporarily closed | No Match | Data mismatch |
Open | No Match | Data mismatch – missing data on publisher | |
Open | No Match | Data mismatch – missing data in Yext |