Monadops
Audit and plan
Prepared for Dmitry Cook · A+ Roofing Supply · 16 October 2026
Mikhail Navitskiy, Monadops
RUEN

Audit: 12 problems at A+ Roofing Supply and what I would do in your place

I read all of your site (332 products, 35 pages, the public store API), the Google profile, Facebook and Instagram, directories, the Georgia corporate register, 20 competitors within 30 miles, and what AI assistants answer to 20 questions about roofing supply in Gwinnett. In short: the business is better than its website. Below are 12 problems, each with a fix and the menu path. Not one guess: every number was read from a live page on 15 October 2026, sources at the bottom.

6
versions of the delivery promise on your own site
14.6 s
before the main image shows on a phone; 1.7 s on desktop
7 of 20
AI-assistant answers that never name A+
0
ads on Google and Meta; ABC runs 68, Preferred 21

12 problems, 12 fixes

Google positions came through a proxy with no local pack, so they are directional. Speed is from PageSpeed Insights (lab test). Search Console, GA4, ad accounts and bookkeeping are invisible from outside. The full data tables are below, under "Data".

Problem 1

Six versions of one delivery promise

Home: "same or next-day, 50 miles". /delivery/: terms with no fee, "$70" only in the header and footer. Product pages: "Georgia-wide delivery". Sale: "$70, call to schedule, 100% prepaid". FAQ: "confirm charges with the team". The card: "throughout Metro Atlanta". Each line is true. Together they make a contractor call to learn what should be written once.

FixOne text on every page: "Our trucks. Same or next day within 50 miles of Sugar Hill. $70. $1,000 minimum. We confirm the window by phone". Remove "Georgia-wide delivery" from product copy and "Metro Atlanta" from the card.
WordPress → Pages → Home, Delivery, Service Areas, FAQs, Sale → Edit with Elementor. WooCommerce → Products → Export → replace the phrase in the Description column → Import (Update existing). OneTap → Edit card → About.
No developer · free
Problem 2

Your hours and numbers contradict each other

Site: "8 AM-6 PM" with no weekdays and "76 Google reviews" hard-coded. Google: 80 reviews, 8-6 daily. Facebook: "Always open". agreatertown: 6:00-20:00, "formed 2025". YellowPages: "1 Year in Business", although the LLC dates from November 2022. Under Google's "open Saturday" filter in Buford you are missing from 16 results.

FixOne set of hours everywhere: "Mon-Sun 8 AM-6 PM", with markup for Google and AI. In the header, "5.0 on Google" with no number, so it cannot go stale. Claim YellowPages and showmelocal, fix the year and hours on agreatertown.
Google Business Profile → Edit profile → Hours (check each day separately). Facebook → Page → Edit details → Hours. Elementor → Theme Builder → Header. Markup: Plugins → Add New → WPCode (free) → a LocalBusiness block with openingHoursSpecification.
No developer · free
Problem 3

A sale nobody can buy

MEGA SALE: 23 lines, every one "Call to order". No product in the store is flagged on sale, the price feed shows no discounts. Equipter: $250 a day on the page, $1.00 in the store API. Dumpster: "Request a rate" on the page, $420 in the API.

FixEither a sale price on the product with "Add to cart", or an honest "phone orders only, full systems, prepaid" note on the product itself. Equipter: $250 on the product, not $1.00.
WooCommerce → Products → product → General → Sale price (Schedule for an end date). For "Call to order": Advanced → Purchase note. Equipter → General → Regular price.
No developer · free
Problem 4

A 332-product catalog that is half empty

25 products with no image, 87 with no description, 234 with no brand in the name, 1 priced $0, 0 reviews. Duplicate categories: 8 "pipe boot", 3 "ice and water", 3 "ridge cap", three pages with the identical title "Hip & Ridge Cap Shingles". The Atlas brand page returns 404. Product names end in " | A+ Roofing Supply Atlanta", and Yoast adds that suffix again: it is doubled in the title.

FixOne spreadsheet: export the catalog, fill in image, description and brand, import it back. Keep one category of each, 301 from the old URLs. Strip the suffix from the names, Yoast adds it itself. Restore the Atlas page.
WooCommerce → Products → Export → Import (Update existing). Products → Categories → move products, delete the empty ones. Redirects: Hostinger hPanel → Websites → Redirects. Yoast SEO → Settings → Content types → Products → SEO title.
No developer · free
Problem 5

You handed Lawrenceville and Gainesville to BRS

On Google for "roofing supply lawrenceville ga" and "roofing supply gainesville ga" your site is absent, for "cumming ga" it is tenth. The first line in both towns: the BRS "Lawrenceville" and "Gainesville" pages. Your own URLs for those three town pages return 404. In Maps you are third, first and seventh: the customers are there, the page is not. Of 18 queries you are top 10 on 12 and first on 5. You lose exactly where the query names a town.

FixSix town pages: Lawrenceville, Cumming, Gainesville, Dacula, Duluth, Alpharetta. Each with drive time from the yard, $70, what is in stock today, two reviews, the phone. A Sitemap line in robots.txt.
WordPress → Pages → Add New → Edit with Elementor. Yoast SEO → Tools → File editor → robots.txt.
No developer · free
Problem 6

On a phone the home page takes 14.6 seconds

PageSpeed Insights, 15 October: Performance 61 on phone, 88 on desktop. The main image (the Onyx Black banner) shows after 14.6 s against 1.7 s on desktop. Causes per the report: images (1,699 KiB to save), render-blocking scripts (750 ms), static cache (654 KiB), unused JavaScript (403 KiB). The server answers in 49 ms: hosting is not the problem.

FixCompress and resize the home page images, load the Onyx Black banner first and not lazy, a one-year static cache, defer scripts not needed above the fold.
If the LiteSpeed Cache plugin is installed: Image Optimization; Page Optimization → JS Settings → Load JS Deferred; Cache → Browser Cache.
No developer · free
Problem 7

One in four county residents is Hispanic, and your /es/ returns 404

Gwinnett: 25.5% Hispanic, 38.1% of residents speak a language other than English at home (Census). Not one page on the site is in Spanish. Preferred Roofing Supply has run Spanish Meta ads since October 2025 and ranks first for "materiales para techo atlanta". On the same question Perplexity lists you sixth, as "A Roofing Supply" with the plus dropped.

FixOne /es/ page: hours, delivery, price per square for 5 fast movers, a number for texts. If someone on the team speaks Spanish, say so in the Google description. The whole site does not need translating.
WordPress → Pages → Add New → slug es → Edit with Elementor. Google Business Profile → Edit profile → Description.
No developer · free
Problem 8

AI assistants think you are an online store with no yard

Perplexity, 20 questions: A+ is not named in 7. On walk-in pickup: "online supplier; local walk-in location not established". Hours: "6 a.m.-8 p.m." from the directories. The pages /delivery/, /service-areas/, /contractors/ and /faqs/ are never cited. Causes on the site: the home H1 is hidden, the quote builder runs only in JavaScript, the "how many bundles per square" answer sits in a blog post, the 8 FAQ questions carry no FAQPage markup. Blog: 8 posts in three days, 5 to 7 September, by "Daniel Levyi" at /author/clickboostpro/.

FixPages that answer the question in the first paragraph: delivery, hours, price per square, bundles per square (3 per square for architectural shingles), for contractors. An "About" page with facts: 2022, family-run, veteran-owned, own trucks, 50 miles, 7 days. A visible H1. LocalBusiness, FAQPage and Product markup with price and stock. Blog author = A+, then one post every two weeks on a contractor question.
Pages: Edit with Elementor. Markup: WPCode → Code Snippets → Add → HTML, Header. Utility pages (cart, account, wishlist, search): Yoast → Advanced → noindex.
No developer · free
Problem 9

A phone order ends in silence

No written confirmation, no "truck has left" text, no drop photo. ABC, SRS and QXO have all of it in an app, and that is exactly what contractors praise: "I love seeing my delivery pictures", "don't have to call dispatch when I can directly check where my order is". The most common homeowner complaint about ABC on BBB: driveway damage and a waiver refusal (3 of 8). Before-and-after drop photos protect you too.

FixEvery order, phone orders included, is entered in WooCommerce: the email with items, total and window goes out by itself. A text on status change: "truck has left, expect it by 9:30". The driver sends a drop photo to the order chat. Two days later, a review request with the Google link.
WooCommerce → Orders → Add order → customer, items, status Processing. Settings → Emails → Processing order → a line about the window. Extensions → Twilio SMS Notifications ($49 a year); 10DLC registration for the business number ($4 + $15 once).
No developer · $49 a year plus texts by the message
Problem 10

The manufacturers you sell do not list you

In the dealer locators of GAF, Owens Corning, CertainTeed, IKO, Atlas, TAMKO and VELUX I found no A+ entry. Mentions of the domain outside your own social accounts: geebo, showmelocal (unclaimed), theroofingbrief.com quoting your HDZ price. Zero press. For "velux skylight supplier atlanta" you are absent, although you carry 14 VELUX items and have no page about them. The Google for WooCommerce plugin is installed, yet stock by color does not show in Google or Maps.

FixSeven "list my location" applications with the manufacturers. A VELUX page with the 14 items and prices. Claim showmelocal. Link Merchant Center to the Google profile and switch on "pickup today": free local product listings with live stock.
The dealer form on each manufacturer's site. WordPress → Pages → Add New. Google for WooCommerce → Merchant Center → link to the Business Profile. The manufacturers' and Google's review may have to wait.
No developer · free
Problem 11

Contractors are promised financing the site does not have

YellowPages: "financing available". On the site /financing/ and /credit-application/ return 404. The /contractors/ page has no prices, tiers or terms, and Perplexity never cites it. From contractor threads: the counter must not quote their price to a homeowner. Right now everyone sees one price, which is at once your advantage (homeowners) and your problem (contractors).

FixA contractor login: tiered prices after sign-in, a trade-account application instead of the 404. A /contractors/ page with specifics: tiers, minimum, delivery window, what is in stock by color today. Credit limits and any year-end rebate are your call.
Wholesale Suite ($99 a year) or B2B for WooCommerce ($149 a year). WordPress → Pages → Contractors → Edit with Elementor.
No developer · $99-149 a year
Problem 12

Zero ads while ABC runs 68

Google Ads Transparency Center: 0 ads. Meta Ad Library: the page has never run ads. ABC 68, Preferred 21. The only ad that mentions your name is VanBoxel Building Supply's, running since 28 March 2026. Meanwhile the Meta pixel and GA4 with 21 events are already in place: retargeting of site visitors is ready, nobody has switched it on.

FixOnly after problems 1 to 3, otherwise a paid click lands on six versions of the promise. Google Ads on the queries where you are missing: "roofing supply lawrenceville", "shingles delivery gwinnett", "roofing supply open saturday". One Meta ad in English and one in Spanish: "own trucks, $70, 50 miles, 7 days", to roofers in the radius. Budget is yours.
Google Ads → New campaign → Search. Meta Ads Manager → the pixel is already connected.
Your budget · start after 1 to 3

Small things, also in the admin: redirects in a circle between /product-category/roofing-materials/ and /shingles/ plus 5 more 301 chains; images with no alt (9 shared in the header and footer, 28 on the home page); og:image missing on /shop/, /sale/, /quote-builder/, /delivery/; the ?in_stock=1 filters are indexable with the same title. All of it is Yoast → Settings and Media → Library.

What already works: leave it alone

Your advantages

  • The only distributor within 30 miles with public prices and live stock. GAF HDZ $36.66 vs $47.97 at Home Depot, OC Duration $37.33 vs $43.48 at Lowe's, FeltBuster $90 vs $119, coil nails $30 vs $49.98.
  • Google 5.0 from 80 reviews, a Veteran-owned badge, 228 photos. In the 14 reviews read: price 9 times, delivery speed 8, family-run and personal 8, Dmitry by name 8.
  • The only supplier in the set open on Sunday. ABC, QXO and SRS close at 4-4:30 PM and are shut on weekends.
  • The only one with a published delivery fee: $70, own trucks. The chains show prices and delivery only after login.
  • Own-label Onyx Black at $90.01 per square against $110-114 for brands. No other independent supplier in Atlanta has a private label that I could find.

The technical base

  • WordPress + WooCommerce, LiteSpeed cache, HTTP/3. The server answers in 49 ms.
  • GA4, Clarity and the Meta pixel behind consent, 21 analytics events: product view, purchase, phone click, quote start.
  • A 445-URL sitemap, the Google for WooCommerce plugin already installed.
  • First on Google for "roofing supply sugar hill", "roofing supply buford", "roofing materials delivered to jobsite atlanta", "equipter rental atlanta". Perplexity names A+ in 13 of 20 questions.
  • Facebook Marketplace already brings customers: "Found them on the FB Marketplace… within 3-4 hours they were pulling up to deliver" (your customer).

The four-week order

WhenWhatHow to tell it worked
Week 1Problems 1, 2, 3: one promise, one set of hours, an honest saleGoogle Business Profile → Performance: calls, directions, website clicks
Week 2Problems 4, 6, 8: catalog, speed, fact pages and markupPageSpeed Insights again; Google Analytics → Events: phone_click, quote_start, purchase before and after
Weeks 2-3Problems 5, 7, 10: town pages, /es/, manufacturers and Merchant CenterSearch Console (set up or confirm access) → Pages: impressions for the town pages and /es/
Weeks 3-4Problems 9, 11: confirmations and texts, the contractor loginThe number of "where is the truck" calls; trade-account applications
AfterProblem 12: adsOnce a month the same 20 questions in Perplexity and ChatGPT, write down the answers

Data

Positions on 18 queries

QueryGoogleMapsWho is ahead or instead of you
roofing supply sugar hill ga#1your panelnobody
roofing supply buford ga#1#1 of 20Maps: Norcross 4.7 (103), BRS 4.5 (104) below you
roofing supply lawrenceville gaabsent#3Google: the BRS "Lawrenceville" page #1, Preferred #3. Maps: Supreme Supply, Norcross
roofing supply cumming ga#10#1Google: QXO Cumming #1, Lowe's #2, Builders FirstSource #4
roofing supply gainesville gaabsent#7Google: the BRS "Gainesville" page #1. Maps: Preferred / PRS Tools 5.0 (367), ABC 4.7 (70)
roofing supply atlantasite absent, FB #10#5Preferred, Norcross, ABC, BRS, QXO
where to buy shingles in atlantaabsent·ABC, Preferred, Builders Liquidators, BRS
gaf timberline hdz price per bundle atlanta#3·Home Depot, Lowe's
cheap architectural shingles atlanta#2·Builders Liquidators
same day roofing delivery atlanta#3·two contractors, not suppliers
roofing materials delivered to jobsite atlanta#1·nobody
equipter rental atlanta#1·nobody
velux skylight supplier atlantaabsent·veluxusa.com, installers; you carry 14 VELUX items with no page about them
roofing supply open saturday atlanta#7 (Instagram #6)absent under the Saturday filterABC (with Mon-Fri hours), Preferred Smyrna, Preferred Tucker
cheapest shingles per square georgia#6 (blog post)·contractors' cost articles
buy roofing materials online atlanta pickup#4·Mid-Am (marsupply), Builders Liquidators, Preferred
materiales para techo atlantaabsent·preferredroofingsupply.com/es/ #1, Owens Corning es-us
A+ Roofing Supply#1 with sitelinksyour panel7 of 10 results are yours; BRS #9

In total: top 10 on 12 queries of 18, first on 5, absent on 6. Who shows instead of you most often (number of the 18 queries where they are in the top 10): brssupply.us 13, preferredroofingsupply.com 11, abcsupply.com 7, marsupply.com 6, norcross-materials.com 5, buildersliquidators.com 5. Google was read through a proxy with no local pack and no ads, so positions are directional. Bing and DuckDuckGo blocked the queries. A "·" in the Maps column means the query is not a "near me" type. Search volumes and the backlink profile are not shown: without Search Console access they would be guesses, and there are no guesses on this page.

Speed (PageSpeed Insights, lab test 15 October 2026)

Home pagePhoneDesktop
Performance score6188
Main image visible after (LCP)14.6 s1.7 s
First text (FCP)3.9 s0.4 s
Layout shift (CLS)00.009
Accessibility / Best Practices / SEO93 / 100 / 10093 / 100 / 100

The Lighthouse SEO score of 100 checks only the basics (title, viewport, indexability) and says nothing about positions. Google shows no real-user data (CrUX) for the page: "not enough data".

What AI assistants answer (Perplexity, 20 questions)

QuestionAnswer
A+ opening hours"6 a.m.-8 p.m.", citing the superpages and showmelocal directories
Can I walk in and pick up"Online supplier; local walk-in location not established"
Jobsite delivery in GwinnettNames only Preferred Roofing Supply (Tucker). No A+.
HDZ cost per square in GeorgiaHome Depot and theroofingbrief.com. Your own Georgia cost page is not cited.
Materiales para techo (in Spanish)Sixth item, "A Roofing Supply" with the plus dropped
Equipter rentalFinds the page but labels it "rent a dumpster"

The delivery promise: where and what it says

WhereText
Home"Same or next-day delivery. Our trucks. Your jobsite. Within 50 miles of Sugar Hill" and next to it "Need it today? Call the warehouse to confirm your route"
/delivery/Terms without a fee; "$70 · Orders from $1,000 · Within 50 miles" appears only in the header and footer
Service areas and product pages"Confirm delivery window"; product descriptions say "Georgia-wide delivery"
Sale page"Delivery $70 · call to schedule", "Full roofing systems only", "100% prepaid"
FAQ"Confirm delivery charges with the team"
OneTap card"Same-day delivery throughout Metro Atlanta"

What not to do

No ads before problems 1 to 3

A paid click lands on "confirm delivery window" and hours without weekdays. First one promise and an order confirmation, then traffic.

No texts without consent

Order texts (confirmation, departure, photo) are fine. Promotions and "new prices" only to those who opted in, with 10DLC registration and a STOP word. Otherwise fines and a blocked number.

Do not buy "SEO packages" and links

You already hold first place for your town and 5.0 on Google. The gaps close with fact pages and a clean catalog, not links. An agency retainer is worth discussing only after problems 1 to 8.

No automatic translation of the whole site

One good Spanish page and a person or AI replying in Spanish do more than 332 machine-translated products with wrong material names.

Tools and prices

The third-party tools the plan above needs. Prices from the vendors' sites on 15 October 2026. None of it is mandatory: WordPress, WooCommerce, Google and Meta you already have.

ToolWhat forPrice
WPCodeHours and business markup without touching the themefree
Google Business Profile, Merchant CenterProfile, Q&A, posts, free local product listingsfree
Twilio SMS Notifications (WooCommerce)Text on order status change$49 a year
Twilio SMSThe messages themselves; plus 10DLC registration $4 + $15 once and $1.50-10 a month$0.0083 per segment + about $0.004 carrier fee
Local Delivery Drivers for WooCommerceDriver app: photo and signature at the drop, a tracking map for the customer$159 a year
DetrackThe same as a separate service, with live tracking$29 per driver a month
Tyche Order Delivery DateDelivery day and window picker at checkout$119 a year
Wholesale SuiteContractor prices after login$99 a year
B2B for WooCommerceTrade account, request a quote, hidden prices$149 a year
Roofr / EagleView / GAF QuickMeasureA roof report by address, to count materials without a site visit$19 / $24.25-32.75 / $18-20 per report
TranslatePress / WPMLIf more than one page gets translated€99 a year / €99
BrevoEmails to contractors: stock, promotionsfree, then $9 a month
Retell / Smith.aiIf you want AI on the phone after 6 PM: per minute or a managed service$0.07-0.31 per minute / $150 a month

What I can do

Problems 1 to 11 I can close for you. The first working pieces (the promise, hours, badge, sale, order confirmation) within the first week after access, the rest in about four weeks. Firmer once I see what you have inside: the contractor price list, how you count orders now, who answers messages.

The thing no supplier in your radius has is an AI employee. Not a bot with canned lines, but a worker that runs 24/7 with no days off, knows your business from a knowledge base (prices, stock, delivery rules, minimums, answers to common questions, how you talk to customers) and has access to WooCommerce, the Google profile and Meta. It answers texts, Messenger, Instagram and email in English and Spanish, counts materials from a photo or an address, enters orders, sends confirmations and "truck has left", drafts review replies and posts, compiles a morning brief and checks your prices against Home Depot and Lowe's once a week. Anything it has data for. In the first week it works in drafts only and you approve every answer. After that, the easy answers go out on their own. The one-time setup is mine, the daily routine is its, and calls, below-list prices and credit decisions stay with you.

Customershow they reach you
Phone
Text line
Messenger · Instagram
Email
Site and cart
WhatsApp (optional)
everything except calls lands in one queue
Your dataas they are
WooCommerce: stock, prices, orders
Google Business Profile
Meta page
Authorize.net: payment as now
Knowledge base: price list, rules, your tone
three doors
Answers itself
Prepares a draft
Asks you
AI employee24/7
Answers itselfstock, prices, hours, delivery, minimum, order status, in English and Spanish
Prepares a drafta material list from a photo or address, a review reply, a post, catalog edits, a contractor email
Asks youbelow-list price, credit, a return, a dispute, an unusually large order
Never touchescards, payments, the bank, your passwords

Every morning at 7:00 a text report to you: yesterday's orders and totals, today's deliveries, what is running low, what waits for your answer.

Example: a Tuesday evening

21:40
A contractor writes on Messenger in Spanish: "¿Tienen HDZ Charcoal, 40 squares, entrega mañana a Lawrenceville?"
21:40
The AI employee reads WooCommerce stock (949 bundles on 15 October) and the price ($36.66): 120 bundles, $4,399.20, delivery $70, Lawrenceville is in the radius. Replies in Spanish, asks for the address and a window.
21:46
Address received. The order is entered in WooCommerce as a draft, the customer gets a confirmation with items and total. Into your morning report: "confirm the 7:30 route".
07:05
You reply "ok". The customer gets "truck has left, expect it by 8:15". After the drop the driver sends a photo, it goes to the customer. Two days later, a review request.

The numbers in the example are from your site on 15 October. Third-party tools (texts, roof reports, the driver app) are paid directly per the table above.

Safety

  • Card data stays in Authorize.net. The AI employee never sees card numbers and never takes payments.
  • No price below the list and no credit decision without your "ok".
  • No mass messaging. Only replies to inbound and order texts; marketing only to those who opted in.
  • The words "in stock" only after reading WooCommerce stock that same minute.
  • The first week is drafts only. The accounts stay yours: staff access, not passwords.

What I would need from you

  • Staff access: WordPress and WooCommerce (Shop manager role), the Google profile (Manager), the Meta page. Not passwords.
  • A Google Drive or Dropbox folder: the contractor price list, yard photos, how you count an order, a couple of voice notes on how you answer customers. The AI employee is capable but needs context.
  • Be available when questions come up, especially in the first week.
  • We will pull the common questions from your messages ourselves once there is access. Price tiers and margins we go over at the start.

In short

The twelve problems above are what I would close in your place, in the order given. Each one you can do yourselves by the paths shown, and the page stays useful even if we never speak again.

If the audit matches how you see the business, tell me what you want help with: just the site and catalog, just orders and delivery, or all of it with the AI employee. I will prepare a quote for that.

Sources. aroofingsupply.com (every page, the sitemap, the public store API wc/store/v1 and the aplus-qb price feed), Google Maps and Business Profile, Facebook, Instagram, YellowPages, agreatertown, the Georgia Secretary of State register, FMCSA, Google Ads Transparency Center, Meta Ad Library, PageSpeed Insights, Perplexity (20 questions), pages and price lists at Home Depot, Lowe's, ABC Supply, QXO, SRS, Preferred Roofing Supply, BRS, Norcross Roofing Materials, roofer reviews and threads (Reddit, Roofing Contractor, BBB), Census (Gwinnett), Twilio, Detrack, Tyche, Wholesale Suite, Addify, Roofr, EagleView, GAF, TranslatePress, WPML, Brevo, Retell, Smith.ai. All read on 15 October 2026.

Monadops · Mikhail Navitskiy · Data on A+ Roofing Supply comes from public sources read on 15 October 2026. Third-party prices are from the vendors' sites on the same date.