Audit Checklist for Published vs. Actual Business Hours: What to Compare, How to Measure the Gap, and What to Record
Almost every business has two sets of opening hours: the one it publishes and the one it actually keeps. The published one is on the website, on Google, on the WhatsApp Business profile, on the sign on the door. The real one is what you get from looking at when the first and last answered message of each day comes in and goes out. Between the two there is a gap, and that gap costs money: messages left unanswered at the edge of the schedule, customers who write on a Saturday because the profile says you're open, reviews that say "I wrote and they never answered." This page is a checklist to measure that gap with numbers and decide what to do about it.
Before you start: gather the sources of your published hours
The most common mistake in this audit is comparing your real hours against a single source. Published hours are not one thing: they are several, and they are usually out of sync with each other. If you compare against the sign on the door and the problem was on Google, you will "fix" what was not broken. First, inventory all the sources where your hours are published.
- Google Business Profile listing (the hours someone sees when they find you on the map).
- WhatsApp Business profile: away message and business hours, if you have them set up.
- Website: contact page, footer and any "hours" block.
- Social media: Instagram bio, Facebook description, saved replies.
- Physical sign on the door or window.
- Email signature and automatic email replies.
- Contract or quote you send the customer, if it states business hours.
Write down each source with the exact hours it states, day by day. If two sources already contradict each other, that is the first finding: before looking at your real hours, your published hours are already inconsistent. That case is recorded separately, because the problem is not the operation but the communication.
Define what "answered" means for this audit
It is not enough to look at when someone was online. You need a single, written criterion, because otherwise each person on the team will interpret it differently and the measurement is useless. Define "answered message" as a message that got a human reply or an automatic reply configured by the business, within the same conversation. A message that only received the platform's automatic acknowledgment does not count as answered. A message that was answered three days later does not count either: it counts as answered late, and it is recorded with its delay.
Write the definition in the same document where you will record the findings. If the criterion changes in the next audit, the numbers cannot be compared with each other.
Checklist: what to compare on each channel
Each channel has its own way of displaying hours and its own way of failing. This is the checklist, grouped by channel. Check off each item and note the result in the observations column.
- Google Business Profile: does the declared schedule match the one on your website? Have you entered holidays and exceptions? Is the special schedule for a specific day set, or is the generic one still there?
- WhatsApp Business: is the away message active and does it say the same thing as the profile? Does the schedule configured in the profile match the one published on the website? What happens to messages that come in outside those hours: do they go unanswered or receive an automated reply?
- Website: are the hours in one place or repeated on three different pages? If repeated, do they say the same thing? Is there text like "Monday to Friday from 9 to 18" that is no longer true?
- Social media: do the bio and saved replies mention hours? Do the Instagram hours match the Google ones?
- Physical sign: does it match what is published online? Is last season's old sign still up?
- Contact channels: do the email signature and automatic replies promise hours that the team does not cover?
- Holidays and exceptions: is it defined what happens on holidays, vacations and training days? Or does each person decide on the spot?
| Stage | What is reviewed | Signal that it is OK |
|---|---|---|
| Source inventory | All sources where the hours are published | There is a closed, dated list; no new source appears mid-audit |
| Consistency between sources | That all of them declare the same hours, day by day | No two sources contradict each other; exceptions are declared in all of them |
| Definition of "attended" | The single, written criterion for what counts as a reply | Anyone on the team can apply it and reach the same result |
| Measurement of actual hours | First and last message replied to each day, on the timestamp column | At least 10 business days are measured and the pattern repeats |
| Gap calculation | Minutes of difference between published and actual, per edge | The gap is expressed in minutes, not in "more or less" |
| Findings log | Each gap with its source, its magnitude and its date | Each finding has an assigned owner and a review date |
| Closure and verification | That the correction has been applied across all sources | It was measured again after correcting and the gap decreased |
How to measure actual hours without making up data
Actual hours are measured with messages, not with the team's memory. You need, for each day, the time of the first message replied to and the time of the last. The key is which time column you use. In the database of a messaging platform, two timestamps coexist: the one the source platform assigns to the message (the one that reflects when it actually happened) and the insertion timestamp in the platform's own table (when the row was saved). The second one is useless for this: if there was a history import, almost all messages will appear inserted on the same day and at the same time, and the measurement will give a false schedule. For any schedule analysis, you must use the source timestamp, not the insertion one.
With that clear, the procedure is simple and requires no special tools:
- 1Choose a measurement window: at least ten consecutive business days, with no holidays in between. If your business opens on Saturdays, include Saturdays and treat them as a separate series.
- 2For each day, take the time of the first message replied to and the time of the last. If there were no messages, that day is marked as no data, not as zero.
- 3Convert each time to minutes from midnight. This avoids errors when the schedule crosses midnight or when you need to subtract.
- 4Calculate the opening gap: actual minutes of the first message minus published opening minutes. If the result is positive, you opened later than you say.
- 5Calculate the closing gap: published closing minutes minus actual minutes of the last message. If the result is positive, you closed earlier than you say.
- 6Average the gaps of the measured days. An average gap of 20 minutes is different from a two-hour gap on a single day.
- 7Separate days with atypical behavior and explain them: a holiday entered incorrectly, a training session, a connection failure. Do not mix them into the average.
- 8Also note the messages that came in outside the published hours and never received a reply. That number is the direct cost of the gap.
If your team works in shifts, measure by shift and not by day. A day can open on time and close late because the afternoon shift ran long: averaged by day, that problem disappears.
Gap Log Table
This is the table you should fill in during the audit. One row per source and per edge of the schedule. The goal is not to have the longest table but to be able to show, with numbers, which source lies the most and at which edge.
| Source | Edge | Published | Actual (average) | Gap | Unanswered messages at the edge |
|---|---|---|---|---|---|
| Google Business Profile | Opening | 09:00 | 09:24 | +24 min | — |
| Google Business Profile | Closing | 18:00 | 17:31 | -29 min | — |
| WhatsApp (profile) | Opening | 09:00 | 09:24 | +24 min | 6 |
| WhatsApp (profile) | Closing | 18:00 | 17:31 | -29 min | 11 |
| Website | Opening | 08:30 | 09:24 | +54 min | — |
| Website | Closing | 19:00 | 17:31 | -89 min | — |
| Sign on the door | Opening | 09:00 | 09:24 | +24 min | — |
The values in the Published and Actual columns are examples of how the table is filled in; each business replaces them with its own. The unanswered messages column only applies to channels where they can be counted.
Read the table by column, not by row. The gap column tells you the magnitude. The unanswered messages column tells you the cost. And the comparison between rows tells you which source to fix first: if the website states an opening time half an hour earlier than all the others, there is an outdated text that needs updating, not an operational problem.
How to interpret the gap (and when it is not a problem)
Not every gap is an error. There are gaps that are noise and gaps that are a real problem, and confusing them makes the audit lose credibility. A gap of a few minutes at opening is normal: the first message of the day does not come in exactly when someone sits down to answer. A closing gap of one hour, repeated every day, is no longer noise: it means the published schedule promises something the operation does not deliver.
| Gap type | How it looks in the data | What it suggests |
|---|---|---|
| Edge noise | A few minutes, variable, no fixed pattern | No action required; it is logged and measurement continues |
| Sustained opening gap | Every day it opens later than published | Either the published schedule is wrong or the team starts later than it thinks |
| Sustained closing gap | Every day it closes earlier than published | Check whether the closing schedule includes the last actual service hour or not |
| Weekend gap | Matches on weekdays, fails Saturday and Sunday | The weekend schedule is published but not covered |
| Source gap | Only one source states a different schedule | It is a publication problem, not an operation problem: the text is corrected |
| Exception gap | Appears on specific days and has an explanation | The exception is missing from the sources or no advance notice was given |
The classification is a guide: what defines the type is the pattern across the days measured, not an isolated day.
There is one case worth looking at separately: the negative opening gap, meaning the business serves before what it publishes. It is not a broken-promise problem, but it is useful information: it means there is demand before the stated schedule and that the published schedule may be leaving out customers who are already writing.
What to log and how (so the next audit is useful)
An audit without a log starts from scratch next time. The minimum log must allow three things: knowing what was measured, with what criteria, and what was decided. With those three elements, the next measurement is compared against the previous one instead of starting over.
- Date of the measurement and the window of days included.
- Sources surveyed, with the date each one was checked (published schedules change).
- Definition of "served" used in this measurement.
- Number of business days measured and number of days discarded, with the reason.
- Average opening and closing gap, by source.
- Number of out-of-hours messages without a response, by channel.
- Findings ordered by magnitude, not by order of appearance.
- Person responsible for each correction and committed date.
- Date of the next measurement.
If you use a messaging platform, save the query or filter you used to pull the data. Repeating the same query in the next audit is what makes the numbers comparable.
What to do when the gap appears
The finding is not resolved just by correcting the text. First you have to decide which of the two schedules is correct: whether the published one is wrong or whether the operation is not delivering what it promises. That decision is made by the business, not by the audit. From there, the order of actions is as follows.
- 1Define the correct schedule: do you change what is published so that it reflects the real operation, or do you change the operation so that it complies with what is published? Without this decision, any correction is temporary.
- 2Correct first the source that the most people see. If the mismatch is on Google, that is the first one, because that is where most new customers search.
- 3Update all sources on the same day. Correcting Google and leaving the website outdated moves the problem instead of solving it.
- 4If the mismatch is in the operation, adjust the after-hours message configuration so that the customer receives a response consistent with the real schedule, not with the published one.
- 5Review the messages that went unanswered at the edge of the schedule and respond to them, even if late. An unanswered message is a lost customer, not a data point.
- 6Measure again two weeks later, with the same criteria and the same window. If the mismatch has not decreased, the problem was not a publishing problem.
- 7If the mismatch repeats after two corrections, escalate: it may be a shift coverage problem, not a schedule problem.
Regarding timing: how long it takes to resolve a mismatch depends on each case. A wrongly published text is corrected the same day; a shift coverage problem can take weeks because it involves reorganizing the team. What can be stated is which signals indicate that you need to escalate: the mismatch does not decrease after two measurements, it appears in all sources at once, or it coincides with a drop in the number of answered conversations.
Frequent mistakes when doing this audit
- Measuring against a single source. The published schedule is a set, not a single data point.
- Using the insertion date of the messages instead of the origin date. If there was a history import, the measurement gives a false and uniform schedule.
- Averaging atypical days with normal days. A holiday loaded incorrectly contaminates the average for the entire week.
- Counting as attended any message that received an automatic response. That measures configuration, not attention.
- Correcting one source and not the others. The mismatch moves, it does not disappear.
- Not recording the criteria used. The next measurement cannot be compared with the previous one.
- Confusing a publishing mismatch with an operation mismatch. They are different problems and they are fixed differently.
Frequently asked questions
How often should this audit be done?+
A quarterly measurement is enough for most businesses, plus an extra measurement after any change in hours, high season, or restructuring of the customer service team. If the business changes hours often, measure after every change.
How many days should be measured for the result to be reliable?+
At least ten consecutive business days with no holidays in between. Fewer days are enough to detect a gross problem, but not to calculate an average that can be compared with the next measurement.
What do I do if the business doesn't have messages every day?+
Days without messages are marked as no data and are not included in the average. They are not zero: they are absence of information. If most days have no messages, measuring by inbox doesn't work and another record must be used, such as the team's shift spreadsheet.
Is the gap measured the same way on all channels?+
The logic is the same, but the data source changes. On WhatsApp and messaging channels, it's measured with message timestamps. On the phone, with the call log. In the store, with the sign's hours against the actual opening. What doesn't change is the criterion for what counts as answered.
What do I do if the actual hours are wider than the published ones?+
It's not a problem of a broken promise, but it is an opportunity: there is demand before or after the declared hours. Check whether it makes sense to extend the published hours to capture those messages, or whether that off-hours service is informal and can't be sustained over time.
Can I do this audit without analytics tools?+
Yes. The message inbox and a spreadsheet are enough. The only thing you can't skip is using the message's origin timestamp and not the database insertion one, because that invalidates the hours measurement.
What does this have to do with time-based auto-replies?+
A direct connection: time-based auto-replies are configured against the published hours. If those hours don't match the actual ones, the auto-reply triggers at the wrong time: it answers when people are working or leaves messages unanswered when no one is there. The audit is the step before configuring them properly.
How do I know if the problem is publishing or operations?+
If all sources declare the same hours and the actual ones are different, the problem is operational. If one source declares hours different from the others and the actual ones match the majority, the problem is publishing: there's an old text to update.
Answer WhatsApp with AI
Try Wando free. No credit card required.