<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Offer Ben-Saadon</title>
    <description>The latest articles on DEV Community by Offer Ben-Saadon (@optymizer).</description>
    <link>https://dev.to/optymizer</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4206276%2F03569aea-5fb9-4b0b-b486-961597b11263.jpg</url>
      <title>DEV Community: Offer Ben-Saadon</title>
      <link>https://dev.to/optymizer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/optymizer"/>
    <language>en</language>
    <item>
      <title>Why a 20 minute arrival promise needs a qualifier</title>
      <dc:creator>Offer Ben-Saadon</dc:creator>
      <pubDate>Mon, 09 Nov 2026 14:04:52 +0000</pubDate>
      <link>https://dev.to/optymizer/why-a-20-minute-arrival-promise-needs-a-qualifier-115n</link>
      <guid>https://dev.to/optymizer/why-a-20-minute-arrival-promise-needs-a-qualifier-115n</guid>
      <description>&lt;p&gt;Your ad says there in 20 minutes. One slow night makes it false.&lt;/p&gt;

&lt;p&gt;Furnace season is about to send heating repair calls up, and you are staring at an ad draft that says "There in 20 minutes or less." It looks like the line that makes a cold house dial your number first, and you want it running tonight.&lt;/p&gt;

&lt;p&gt;In our view, you can advertise an arrival time, but only in a form your own records can back. An absolute promise needs proof for every single call. An average or a typical time needs only your dispatch logs.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Absolute promise&lt;/th&gt;
&lt;th&gt;Qualified average&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;The ad line&lt;/td&gt;
&lt;td&gt;There in 20 minutes or less&lt;/td&gt;
&lt;td&gt;Average arrival is about 20 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The record it needs&lt;/td&gt;
&lt;td&gt;A log showing each call met 20 minutes&lt;/td&gt;
&lt;td&gt;Call and arrival times for a run of past jobs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One slow night&lt;/td&gt;
&lt;td&gt;Makes the line false&lt;/td&gt;
&lt;td&gt;Moves the average a little&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keeping it true&lt;/td&gt;
&lt;td&gt;Hard through storms, traffic or a second job&lt;/td&gt;
&lt;td&gt;Easy to check against your own dispatch log&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Example lines only. Same stopwatch, different weight: notice which side can survive a bad night.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What an absolute time promise really says
&lt;/h2&gt;

&lt;p&gt;A line like "20 minutes or less" tells the customer that no call will take longer. That covers the night with a closed road, a second emergency and a technician stuck on a long job. Our view: an absolute time promise is a claim, and you should be able to prove a claim before it runs.&lt;/p&gt;

&lt;p&gt;The words you put into &lt;a href="https://ads.google.com/home/" rel="noopener noreferrer"&gt;Google Ads&lt;/a&gt; are a statement about your service. A stranger reads them at midnight and decides who to call. If the truck shows up late, the line was wrong for that person, and a promise with no qualifier has no room for a bad night.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: who reads the same line&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Customer, midnight:&lt;/strong&gt; Reads 20 minutes or less as a promise for this call (The one who holds you to it)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You, drafting the ad:&lt;/strong&gt; Reads it as a goal on a good night&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your technician:&lt;/strong&gt; Reads it as a clock already running&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When we looked at live competitor sites, we saw three phrasings: an average 20 minute response time, usually arriving within 20 to 30 minutes depending on traffic, and can usually respond within 20 minutes. Every one carries a qualifier. The qualifier is the load-bearing word, and the table shows what each phrasing asks of your records.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Our paraphrase of phrasings seen on live competitor sites, with the absolute form added for contrast.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phrasing&lt;/th&gt;
&lt;th&gt;Qualifier&lt;/th&gt;
&lt;th&gt;Record behind it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Average 20 minute response&lt;/td&gt;
&lt;td&gt;Average&lt;/td&gt;
&lt;td&gt;Call and arrival times, job by job&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Usually 20 to 30 minutes, depending on traffic&lt;/td&gt;
&lt;td&gt;Usually, plus a range&lt;/td&gt;
&lt;td&gt;The spread of recent arrival times&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can usually respond within 20 minutes&lt;/td&gt;
&lt;td&gt;Can usually&lt;/td&gt;
&lt;td&gt;Share of jobs that met 20 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20 minutes or less&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Proof for each call, each night&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The records that would back a time promise
&lt;/h2&gt;

&lt;p&gt;Three timestamps do most of the work: when the call came in, when a technician was dispatched, and when that technician arrived. With those three, you can measure a real arrival time for each job instead of remembering the good ones. The method is the same for a furnace repair crew and a lockout team.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Call comes in: Log the ring.&lt;/strong&gt; Write down when the phone rang, not when someone called back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tech dispatched: Log the send.&lt;/strong&gt; Record the moment a technician is assigned and leaves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tech arrives: Log the arrival.&lt;/strong&gt; Record the arrival at the door, not the estimate given by phone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Job closes: Keep the row.&lt;/strong&gt; Store all three times on the same job so they can be compared later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pick the clock before you pick the number. Call to arrival and dispatch to arrival are different measurements, and the ad has to say which one it means. A customer counts from the moment the phone rang, so we lean toward that clock.&lt;/p&gt;

&lt;p&gt;Then take a run of recent jobs, work out the average and the spread, and write the line from what the logs say. Anything you cannot pull from a log is a guess, and a guess does not belong in an ad. That is how we &lt;a href="https://optymizer.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=arrival-qualifier" rel="noopener noreferrer"&gt;Optymize&lt;/a&gt; a time promise: records first, wording second.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Records first, wording second&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pull call and arrival times&lt;/li&gt;
&lt;li&gt;Pick one clock&lt;/li&gt;
&lt;li&gt;Work out the average and spread&lt;/li&gt;
&lt;li&gt;Write the line from the logs&lt;/li&gt;
&lt;li&gt;Run the ad&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A run of recent jobs beats your best memory. If the logs show nights that are slower than days, you have two honest choices. Quote the slower case, or split the line by time of day and give each part its own wording. Either way, the line should describe what a customer will meet on a bad night, not only on a good one.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No number runs until the records exist.&lt;/p&gt;

&lt;p&gt;Our rule at Optymizer&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Rewriting the line without losing the pull
&lt;/h2&gt;

&lt;p&gt;A qualified line can still persuade. The trick is swapping the word that makes it absolute for a word your records can carry: average, typical, usually, or a range with a reason. The customer still hears fast. You still get to defend it.&lt;/p&gt;

&lt;p&gt;Once the logs agree, word the line in three steps. First, name the clock, so the customer knows what is being counted. Second, add the qualifier, such as average, typical or usually. Third, keep the range honest: if your records show a spread, show the spread instead of the best end of it. A range that hides the slow end is an absolute promise in disguise, and it breaks the same way on the same bad night.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: as drafted&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There in 20 minutes or less&lt;/li&gt;
&lt;li&gt;Applies to any call, any hour, any weather&lt;/li&gt;
&lt;li&gt;Nothing to check it against&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example: once the logs agree&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Typical arrival is 20 to 30 minutes, depending on traffic&lt;/li&gt;
&lt;li&gt;Names the range and the reason&lt;/li&gt;
&lt;li&gt;Checked against recent dispatch records&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The right side is only an example. Run that wording only if your own logs show it. If they show something slower, the honest line says so, or says nothing about time at all.&lt;/p&gt;

&lt;p&gt;What if you cannot name the record yet? Then say nothing about time until you can. A line with no stopwatch in it can still sell on skilled work and a real person answering the phone. Or offer a callback promise you can keep without a number, such as calling the customer back and telling them when the technician expects to arrive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example lines and the record behind each&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Absolute.&lt;/strong&gt; The line as written: There in 20 minutes or less. The record that would back it: A log showing each call met it, with no gaps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Average.&lt;/strong&gt; The line as written: Average arrival about 20 minutes. The record that would back it: Call and arrival times for a run of past jobs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Range.&lt;/strong&gt; The line as written: Usually 20 to 30 minutes, depending on traffic. The record that would back it: The spread of recent arrivals, plus a note on traffic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Window.&lt;/strong&gt; The line as written: Arrival between two agreed times. The record that would back it: The booking record showing the customer agreed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notice what the back of each card asks for. Each one is a record, not an opinion. If you cannot name the record, you cannot name the promise.&lt;/p&gt;

&lt;h2&gt;
  
  
  A window you can promise
&lt;/h2&gt;

&lt;p&gt;If you want a firm promise, build it around an appointment window instead of an emergency clock. The customer agrees to the window in advance, which is structurally different from an open-ended race against a stopwatch. You promise to be there between two times that both sides accepted, and a booking record can show it.&lt;/p&gt;

&lt;p&gt;That fits scheduled work well, such as a maintenance visit or a quoted repair. It fits an emergency less well. For &lt;a href="https://optymizer.com/industries/locksmiths?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=arrival-qualifier" rel="noopener noreferrer"&gt;locksmiths&lt;/a&gt; and other emergency trades, we would pair a qualified average on the urgent line with a booked appointment window on follow-up work.&lt;/p&gt;

&lt;p&gt;Keep the claim the same everywhere it appears. If the ad says one thing and the description on your &lt;a href="https://www.google.com/business/" rel="noopener noreferrer"&gt;Google Business Profile&lt;/a&gt; says another, a customer can quote whichever one is stricter.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A window both sides agreed to is a promise a booking record can prove.&lt;/p&gt;

&lt;p&gt;Our view at Optymizer&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A fast arrival also depends on someone answering the phone, which we covered in our post on &lt;a href="https://optymizer.com/blog/unanswered-calls-and-local-ranking?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=arrival-qualifier" rel="noopener noreferrer"&gt;unanswered calls and local ranking&lt;/a&gt;. Once the wording is settled, check that the campaign is serving at all. Our post on &lt;a href="https://optymizer.com/blog/relaunched-campaign-not-serving-three-pause-layers?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=arrival-qualifier" rel="noopener noreferrer"&gt;a relaunched campaign that was not serving&lt;/a&gt; covers that. For another part of running an emergency trade, see &lt;a href="https://optymizer.com/blog/locksmith-insurance-2026?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=arrival-qualifier" rel="noopener noreferrer"&gt;locksmith insurance in 2026&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The checklist below is a starting point for your own records, not a finished policy. This is general information, not legal advice, for rules that apply to your trade and market, ask a qualified advisor.&lt;/p&gt;

&lt;p&gt;If you want a second set of eyes on the time lines in your ads, look at how we handle &lt;a href="https://optymizer.com/services/ppc-management?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=arrival-qualifier" rel="noopener noreferrer"&gt;paid search for service businesses&lt;/a&gt; and tell us what you plan to run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before a time line goes live&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pull call, dispatch and arrival times for a run of recent jobs.&lt;/li&gt;
&lt;li&gt;Choose one clock to quote and name it in the line.&lt;/li&gt;
&lt;li&gt;Work out the average and the spread from your own logs.&lt;/li&gt;
&lt;li&gt;Swap any absolute wording for average, typical or a range.&lt;/li&gt;
&lt;li&gt;Keep the ad, site and listing lines the same.&lt;/li&gt;
&lt;li&gt;Offer a booked window for scheduled work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://optymizer.com/blog/arrival-time-promise-needs-a-qualifier" rel="noopener noreferrer"&gt;optymizer.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Want a second set of eyes on this for your business? &lt;a href="https://optymizer.com/contact?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=arrival-qualifier" rel="noopener noreferrer"&gt;Talk to Offer&lt;/a&gt;. Optymizer was founded in 2011, and I take the first call myself.&lt;/p&gt;

&lt;p&gt;Human intelligence, assisted by AI. Offer has run digital marketing for 20 years. AI just helps him say it faster.&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>smallbusiness</category>
      <category>advertising</category>
      <category>business</category>
    </item>
    <item>
      <title>Three doors into a hacked WordPress site</title>
      <dc:creator>Offer Ben-Saadon</dc:creator>
      <pubDate>Mon, 09 Nov 2026 14:04:03 +0000</pubDate>
      <link>https://dev.to/optymizer/three-doors-into-a-hacked-wordpress-site-oh3</link>
      <guid>https://dev.to/optymizer/three-doors-into-a-hacked-wordpress-site-oh3</guid>
      <description>&lt;p&gt;They said your site is a risk. Nobody told you why.&lt;/p&gt;

&lt;p&gt;Someone told you the WordPress site is a risk, and nobody explained why. You are between calls, the phone is the whole business, and now you wonder whether the site that rings it is the next one on somebody's list.&lt;/p&gt;

&lt;p&gt;In our view, sites like that get hacked because they expose more moving parts than a finished page does. There are plugins that need updates, a database behind the forms, and code that builds each page on each visit. Each part is a door.&lt;/p&gt;

&lt;h2&gt;
  
  
  The myth says someone was careless
&lt;/h2&gt;

&lt;p&gt;The myth is that a site gets hacked because its owner was careless. We think the design matters more. A site with plugins, a database and code running on each visit gives an attacker three places to try, no matter how careful the owner is. Careful owners shrink the odds. They cannot shrink the number of doors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three common myths about a hacked site&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plugins.&lt;/strong&gt; The myth: Careless owners skip the updates. The reality: Updates matter, but a plugin is someone else's code, and its fixes arrive on its author's schedule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database.&lt;/strong&gt; The myth: A contact form is a harmless box on a page. The reality: A form hands what a visitor types to code and a database behind it. That path is open to anyone who finds the form.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server code.&lt;/strong&gt; The myth: A page is just a page. The reality: On a site like this, code runs to build each page when someone asks. Running code is something an attacker can aim at.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The careless owner explanation fails a simple test. Hand the same site to the most careful person you know and the same three doors are still there. Care helps with each one, and we will get to how. It does not remove them.&lt;/p&gt;

&lt;p&gt;Notice what the myth does. It puts the problem on the person who can least see it. An owner cannot read plugin code or inspect a database. Blaming habits is easy. Counting doors is more useful. So the first question is not who was careless. It is how many doors this site has, and who is watching each.&lt;/p&gt;

&lt;h2&gt;
  
  
  Door one: plugins written by outsiders
&lt;/h2&gt;

&lt;p&gt;A plugin is add-on code that gives a site a feature, such as a booking form or a photo gallery. Usually someone outside your business wrote it, and that person decides when fixes ship. We think each plugin is another party's code you have to trust and keep updated.&lt;/p&gt;

&lt;p&gt;That arrangement is normal. A booking form from a careful author can be a good choice. Each plugin still adds a party to the chain, and the chain is only as current as its slowest link.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Step 1: A flaw is found in a plugin.&lt;/strong&gt; Someone spots a mistake in the plugin's code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 2: The author ships a fix.&lt;/strong&gt; The author, not you, decides when.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 3: The fix is public.&lt;/strong&gt; The fix and its notes can show what was wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 4: Your site waits.&lt;/strong&gt; Until someone installs the update on your site, the old code is still there.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Step four is the gap. It is where owners get blamed, yet closing it takes a person with access and a schedule, and the fix itself arrives on a stranger's schedule. If we were asking questions of any site with plugins, we would start with who checks for updates, and how often. A plugin that nobody owns is a door that nobody watches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Doors two and three: the database and the server code
&lt;/h2&gt;

&lt;p&gt;The database is where a site stores what visitors send it, such as names, phone numbers and messages. The server code is the program that reads that data and builds each page on each visit. A site with both has more places an attacker can aim at, and each one needs updates.&lt;/p&gt;

&lt;p&gt;Think of the database as the filing cabinet behind your contact form. The form is the handle, the code is the lock, and the cabinet holds what your customers typed. A mistake in the lock is the whole problem. That is why a form is more than a box on a page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One request, two designs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A site that builds each page&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visitor: Asks for a page&lt;/li&gt;
&lt;li&gt;Server code: Runs for the request (A mistake here is a way in)&lt;/li&gt;
&lt;li&gt;Database: Looks up the content (Form input reaches it)&lt;/li&gt;
&lt;li&gt;Page: Built, then sent&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Code runs on each visit.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A site of finished pages&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visitor: Asks for a page&lt;/li&gt;
&lt;li&gt;Host: Finds the saved file and sends it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A saved file is sent.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Count the red rings. Each one is a part that needs updates and a place to aim at.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the first lane, a visitor's request wakes up code and a database before a page exists. Each of those is a part that can have a flaw and a part that needs updates. For one named flaw in server software, read &lt;a href="https://optymizer.com/blog/php2shell-is-not-a-wordpress-bug?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=three-doors" rel="noopener noreferrer"&gt;our post on a flaw in the server software WordPress runs on&lt;/a&gt;. That post covers a single flaw. This one is the map.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a site of finished pages leaves out
&lt;/h2&gt;

&lt;p&gt;A site of finished pages is built ahead of time and served as saved files. It has no plugin layer, no database on the page host and no code running per visit. That does not make it perfect, since hosting and logins still need care. In our view, it removes three places an attacker would look. If it has a contact form, the form posts to a service that stores the message, so that service is one more party to ask about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built on each visit&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plugins: Fixes arrive on the author's schedule (Needs updates)&lt;/li&gt;
&lt;li&gt;Database: Holds what visitors send (Runs on request)&lt;/li&gt;
&lt;li&gt;Page-building code: Runs on each visit (Runs on request)&lt;/li&gt;
&lt;li&gt;The page: Built fresh for the request&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plugins, a database and page code to keep current.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finished pages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finished page files: Built ahead of time (Nothing to run)&lt;/li&gt;
&lt;li&gt;Hosting and logins: Still need care (Needs updates)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Saved files on a host.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Count the flagged layers in each window. Fewer layers means fewer things to forget.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A site of finished pages, such as one built with &lt;a href="https://astro.build/" rel="noopener noreferrer"&gt;Astro&lt;/a&gt; and served from &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;, sends a saved file when someone asks for a page. We keep permanent measurement in the site code, where each build can check it, and we leave the tag manager only short-lived ad tags, checked each quarter, as we explained in &lt;a href="https://optymizer.com/blog/permanent-analytics-belongs-in-the-code?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=three-doors" rel="noopener noreferrer"&gt;our post on keeping permanent analytics in the code&lt;/a&gt;. We think a tag container is the same kind of door as a plugin: code someone else can change on your page. The longer story is on the page about &lt;a href="https://optymizer.com/services/web-design?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=three-doors" rel="noopener noreferrer"&gt;how we build service sites&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Our view of the parts you carry. Ask your web person to fill in the middle column for your own site.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Part&lt;/th&gt;
&lt;th&gt;Plugin-based site&lt;/th&gt;
&lt;th&gt;Finished pages&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Plugins&lt;/td&gt;
&lt;td&gt;Outside code to update&lt;/td&gt;
&lt;td&gt;None to update&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;Holds what forms collect&lt;/td&gt;
&lt;td&gt;None on the page host&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code per visit&lt;/td&gt;
&lt;td&gt;Builds each page on request&lt;/td&gt;
&lt;td&gt;A saved file is sent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What to keep current&lt;/td&gt;
&lt;td&gt;Plugins, code, database&lt;/td&gt;
&lt;td&gt;Hosting and logins&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Read the table as a list of chores, not a scoreboard. Fewer parts to keep current means fewer chances to forget one.&lt;/p&gt;

&lt;p&gt;Here is our rule of thumb, and you can borrow it: count the moving parts a site exposes. Plugins, a database and per-visit code each count. A parts count will not tell you whether a site is safe, but it shows how much there is to watch. We think that count is the right first step when you &lt;a href="https://optymizer.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=three-doors" rel="noopener noreferrer"&gt;Optymize&lt;/a&gt; a site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three questions to ask your web person
&lt;/h2&gt;

&lt;p&gt;Ask your web person which plugins run on the site and who updates them, what database sits behind your forms, and what code runs each time a page loads. Clear answers name a person and a schedule. Vague answers often mean nobody is watching the doors, and that is the first thing to fix.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three questions, three doors&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Plugins: who updates them?&lt;/li&gt;
&lt;li&gt;Database: what sits behind forms?&lt;/li&gt;
&lt;li&gt;Server code: what runs per visit?&lt;/li&gt;
&lt;li&gt;Know your doors&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You do not need to be technical to ask, and you do not need to catch anyone out. You are looking for a short answer from a person who knows. If the answer takes a week, that delay is your answer.&lt;/p&gt;

&lt;p&gt;If you run a locksmith company and want a site with fewer doors to watch, see &lt;a href="https://optymizer.com/industries/locksmiths?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=three-doors" rel="noopener noreferrer"&gt;what we build for locksmith companies&lt;/a&gt;. The habit behind it is the one from &lt;a href="https://optymizer.com/blog/test-your-site-on-phones-before-it-ships?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=three-doors" rel="noopener noreferrer"&gt;our post on testing a site on phones before it ships&lt;/a&gt;: look at the real thing instead of trusting the promise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do this week&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask your web person to list the plugins on your site.&lt;/li&gt;
&lt;li&gt;Ask who updates each plugin, and how often.&lt;/li&gt;
&lt;li&gt;Ask what database sits behind your contact form.&lt;/li&gt;
&lt;li&gt;Ask what code runs when a page loads.&lt;/li&gt;
&lt;li&gt;Write the answers down and keep the note.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://optymizer.com/blog/three-doors-into-a-hacked-wordpress-site" rel="noopener noreferrer"&gt;optymizer.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Want a second set of eyes on this for your business? &lt;a href="https://optymizer.com/contact?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=three-doors" rel="noopener noreferrer"&gt;Talk to Offer&lt;/a&gt;. Optymizer was founded in 2011, and I take the first call myself.&lt;/p&gt;

&lt;p&gt;Human intelligence, assisted by AI. Offer has run digital marketing for 20 years. AI just helps him say it faster.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>security</category>
      <category>webdev</category>
      <category>smallbusiness</category>
    </item>
    <item>
      <title>What to fill in first on a service area Business Profile</title>
      <dc:creator>Offer Ben-Saadon</dc:creator>
      <pubDate>Mon, 09 Nov 2026 14:03:57 +0000</pubDate>
      <link>https://dev.to/optymizer/what-to-fill-in-first-on-a-service-area-business-profile-2fn</link>
      <guid>https://dev.to/optymizer/what-to-fill-in-first-on-a-service-area-business-profile-2fn</guid>
      <description>&lt;p&gt;You drive to the customer. So why is your street on Google?&lt;/p&gt;

&lt;p&gt;Do you show your street address on Google, or hide it? A street address on a map pin tells the customer where you sleep, not where you work, so if you go to the customer's house, the choice matters more than it looks.&lt;/p&gt;

&lt;p&gt;If customers never visit you, hide the street address and name the places you serve. Then fill in the business name and primary category, then phone and hours, and grade what is live afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the listing decides the call
&lt;/h2&gt;

&lt;p&gt;We treat &lt;a href="https://www.google.com/business/" rel="noopener noreferrer"&gt;Google Business Profile&lt;/a&gt; as the map listing that drives most local calls before a website ever loads. For a service business, that makes the listing the first sales conversation, and it happens at a glance, while the customer compares a few names.&lt;/p&gt;

&lt;p&gt;Hold your phone at arm's length and look at your own listing. In our view, whatever does not fit there is a bonus.&lt;/p&gt;

&lt;p&gt;The owner and the customer see two different listings. You know what every field means. Edit with that second reader in mind.&lt;/p&gt;

&lt;p&gt;We wrote a trade by trade version of this list in &lt;a href="https://optymizer.com/blog/google-business-profile-checklist-by-trade?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=gbp-service-area" rel="noopener noreferrer"&gt;our Business Profile checklist by trade&lt;/a&gt;. This post is the shorter cut for an owner who goes to the customer and wants to know what to fill in first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shop or service area: where does the customer stand?
&lt;/h2&gt;

&lt;p&gt;A storefront listing says customers come to your address. A service area listing tells customers you go to them, so we recommend hiding the street address and letting the places you serve do the talking. In our view the deciding question is simple: do customers ever walk through your door? If the answer is no, you are a service area business.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A shop customers visit&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customers come to your address&lt;/li&gt;
&lt;li&gt;The address is the headline&lt;/li&gt;
&lt;li&gt;Fits a shop with a counter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A business that travels&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You travel to the customer&lt;/li&gt;
&lt;li&gt;The places you serve do the talking&lt;/li&gt;
&lt;li&gt;Fits a van and a dispatch phone&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;If customers never walk through your door, your address is not the thing they are shopping for.&lt;/p&gt;

&lt;p&gt;Our rule of thumb&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The obvious move is to show your address so the listing looks established. For a business that works out of a van, that is the wrong call. A pin on a quiet street tells a customer nothing about whether you will come to them.&lt;/p&gt;

&lt;p&gt;The setting to check is the one that shows or hides your address. Open your own listing on a phone, search your business name, and read what a stranger sees. If your street shows and you never meet customers there, fix that before anything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  The order we fill it in
&lt;/h2&gt;

&lt;p&gt;We recommend this order, from the items that move calls down to the housekeeping: the address choice, business name and primary category, phone and hours, service areas, then services, photos and the review habit. Written for your trade and repeated on a schedule, that order works better than a random tour of every field.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fill-in order&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Address shown or hidden&lt;/li&gt;
&lt;li&gt;Name and category&lt;/li&gt;
&lt;li&gt;Phone and hours&lt;/li&gt;
&lt;li&gt;Service areas&lt;/li&gt;
&lt;li&gt;Services and photos&lt;/li&gt;
&lt;li&gt;Listing ready&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Phone and hours sit early because silence costs money there. After any hour shift, we put the ad schedule, the phone hours and the listing hours side by side, as we describe in &lt;a href="https://optymizer.com/blog/ad-schedule-call-hours-listing-hours-agree?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=gbp-service-area" rel="noopener noreferrer"&gt;our post on matching call hours&lt;/a&gt;. The hour where one disagrees is the hour you pay for silence or turn away calls.&lt;/p&gt;

&lt;p&gt;Name and category follow the address choice because they decide whether the customer sees you as the right kind of business at all. Write the order for the trade, since a locksmith and a mover need different services and photos, and repeat the pass on a schedule.&lt;/p&gt;

&lt;p&gt;Service areas come next. List the towns you would drive to, and nothing wider. A list you would not honor is worse than a short one.&lt;/p&gt;

&lt;p&gt;Write the list of towns on paper first. Next to each one, note how long the drive takes on a normal afternoon, and cross out any you would hesitate to take. Our rule is that a short honest list beats a long hopeful one.&lt;/p&gt;

&lt;p&gt;Photos work the same way. Use a few real ones of your van, your crew at work and finished jobs, and skip anything that looks like stock. Ask for a review right after a job, while the customer is still happy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What breaks and how to check it&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Address.&lt;/strong&gt; On a small phone: Shows when you wanted it hidden. Check it yourself: Search your business name on your phone and read what a stranger sees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service areas.&lt;/strong&gt; On a small phone: Names places you no longer cover. Check it yourself: Read the list aloud and cross out any town you would turn down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hours.&lt;/strong&gt; On a small phone: Disagree with the phone and the ads. Check it yourself: Compare all three after every hour change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Category.&lt;/strong&gt; On a small phone: Names a trade you do not run. Check it yourself: Read the primary category and ask if it names your main job.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to grade what is already live
&lt;/h2&gt;

&lt;p&gt;Grade the live listing against the same order, top to bottom, and write down each gap before changing anything. Start with the address, since a wrong answer there changes everything below it. Then repeat the pass on a schedule, because a listing drifts as hours, areas and services change. You can &lt;a href="https://optymizer.com/profile-score?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=gbp-service-area" rel="noopener noreferrer"&gt;grade the listing you already have&lt;/a&gt; with our listing grader.&lt;/p&gt;

&lt;p&gt;For each gap, write down three things: what the listing says now, what it should say, and who changes it. Do the pass on your phone, not at a desk, so you see what the customer sees. A gap with no name next to it tends to stay open.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Today: Grade what is live.&lt;/strong&gt; Walk the listing in order and note each gap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;After any hour change: Compare three hours.&lt;/strong&gt; Ad schedule, phone hours and listing hours, side by side.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Each quarter: Repeat the pass.&lt;/strong&gt; Re-grade the listing and spot check whether AI assistants name you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the website half, we read &lt;a href="https://search.google.com/search-console/about" rel="noopener noreferrer"&gt;Search Console&lt;/a&gt; on a regular cadence, and once a quarter we check whether AI assistants name the business, each wrong answer maps to one change on the site or the listing.&lt;/p&gt;

&lt;p&gt;Missed calls are a separate leak, and we wrote about them in &lt;a href="https://optymizer.com/blog/unanswered-calls-and-local-ranking?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=gbp-service-area" rel="noopener noreferrer"&gt;our post on unanswered calls&lt;/a&gt;. Every tool we lean on has one setting that bites, and we wrote about another tool's in &lt;a href="https://optymizer.com/blog/bing-webmaster-tools-second-index?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=gbp-service-area" rel="noopener noreferrer"&gt;our Bing Webmaster Tools post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The rule we use&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fill the listing in order, from the items that move calls to the housekeeping.&lt;/li&gt;
&lt;li&gt;Hide an address customers never visit, and name the places you serve.&lt;/li&gt;
&lt;li&gt;Repeat the pass on a schedule, and again after any hour change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you would rather hand the setup over, our &lt;a href="https://optymizer.com/services/google-business-profile?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=gbp-service-area" rel="noopener noreferrer"&gt;Google Business Profile service&lt;/a&gt; covers it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do this week&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search your business name on your phone and read what a stranger sees.&lt;/li&gt;
&lt;li&gt;Decide if customers ever walk through your door.&lt;/li&gt;
&lt;li&gt;Hide the street address if they never do, and list the towns you serve.&lt;/li&gt;
&lt;li&gt;Compare the ad schedule, phone hours and listing hours.&lt;/li&gt;
&lt;li&gt;Grade the live listing and write down each gap.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://optymizer.com/blog/google-business-profile-service-area-business-setup" rel="noopener noreferrer"&gt;optymizer.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Want a second set of eyes on this for your business? &lt;a href="https://optymizer.com/contact?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=gbp-service-area" rel="noopener noreferrer"&gt;Talk to Offer&lt;/a&gt;. Optymizer was founded in 2011, and I take the first call myself.&lt;/p&gt;

&lt;p&gt;Human intelligence, assisted by AI. Offer has run digital marketing for 20 years. AI just helps him say it faster.&lt;/p&gt;

</description>
      <category>seo</category>
      <category>smallbusiness</category>
      <category>marketing</category>
      <category>google</category>
    </item>
  </channel>
</rss>
