Good morning.
Operating overview for Awesome Construction Corp. Loading metricsβ¦
Recent Activity
- Loading activity
Needs Your Attention
Email Activity Β· 30 Days
Contract Status
πΌ Project Media Gallery
Controls what happens when a visitor clicks View All in the OUR WORK section after the 12-item limit is reached.
Drop Images Here
or click to browse
JPG Β· PNG Β· WEBP Β· GIF Β· HEIC β max 500 MB | MP4 Β· MOV Β· WEBM β max 2 GB
Images
0 itemsNo media yet β drop files above to get started.
Add New Service
βΌAll Services β drag to reorder
0 servicesEdit Service
β Ώ dragShown full-width when hovering this service on the site.
Blog Posts
New Post
Reviews
Direct Review Links
Enable each platform individually. Only platforms with a URL and the toggle ON will show on the website.
Google, Yelp, HomeAdvisor, and Thumbtack do not allow automated review posting via API. The links above let visitors click through to leave reviews themselves.
Pending Reviews
No pending reviews.
Approved Reviews
No approved reviews yet.
Rejected Reviews
No rejected reviews.
Messages
Add Admin User
Admin Users
0 users| Username | Created | Password | Remove |
|---|---|---|---|
| Loading⦠| |||
π Change My Password
Update your current admin login password.
Slideshow Manager
Control all slideshows and background images across the site.
Drop slides for: Hero Slider
or click to browse
JPG Β· PNG Β· WEBP Β· GIF Β· HEIC β max 500 MB | MP4 Β· MOV Β· WEBM β max 2 GB
Hero Slides
No slides yet β drop files above or pick from gallery.
π Blog Analytics
Post Performance
| Post Title | Status | π Views | β€ Likes | π Shares | π Score |
|---|---|---|---|---|---|
| Loading⦠| |||||
π Trending Score = (Views Γ 1) + (Likes Γ 5) + (Shares Γ 10) + recency bonus (100β0 over 30 days)
π‘ Live Social Media Stats
Fetched from APIs Β· cached 15 minOpen the Analytics panel to load live stats.
π Social Media
π Social Profile Links
Your public social media page URLs. These appear as Follow buttons on the frontend and power the share links across the site.
π API Credentials
Enter your social media API keys to enable one-click posting and real-time analytics. Keys are stored securely on the server and never exposed to visitors.
pages_manage_posts
π£ One-Click Broadcast
Select a published blog post and broadcast it to all connected platforms simultaneously.
π¨ Multimedia Asset Hub
Images, videos, and graphics dedicated to blog and social content. Upload assets here to reuse them across posts without re-uploading.
No assets yet β upload images and videos for blog posts.
π SEO & Discoverability
π·οΈ Site basics
The default page title and description that Google shows in search results. Keep the title under 60 characters and the description under 160 β Google truncates anything longer. Include "Worcester, MA" and your top service for local rankings.
ποΈ Business info for Google
These fields populate the structured-data card Google shows in search and Maps. Every field is optional, but the more you fill in, the more prominent your listing.
π Verification & analytics
Connect your site to Google Search Console (free analytics + indexing reports) and Bing. Optional but strongly recommended β they let you see exactly which queries bring traffic.
content value.
You can paste the whole <meta> tag or just the content string.
G-. Loads the GA4 tracking script on every page.
π« Search-engine visibility
Toggle on while you're iterating on the site or running test content. Tells Google and Bing to not index any page. Turn OFF for launch.
π§ Email routing
Where contact-form notifications get delivered, and what name/address shows on outgoing mail.
Change these any time β no file edits needed. Leave any field empty to fall back to the
default in includes/config.php.
admin@awesomeconstructioncorp.com (your cPanel mailbox) or
contact@awesomeconstructioncorp.com (your M365 mailbox).
πΎ Save
Changes take effect immediately on the live site. Google may take 1β7 days to pick them up.
β Validate your changes with Google's Rich Results Test and Search Console.
ποΈ Database
Manage which database engine the site uses. The site supports both MySQL (production, on GoDaddy) and SQLite (a single file, great for local development). Switch between them safely β the test runs first and warns you if anything's off.
π’ Current connection
Live driver in use right now
π Alternate driver
The other engine you can switch to. We test the connection first so you'll know if it's safe before flipping the switch.
ποΈ Manual driver control
Force a specific database driver, or let the site auto-detect.
This writes includes/db_active.php (or deletes it).
The choice persists across page loads until you change it here again.
πΎ Backup current database
Download every table and row in the active database. Two formats: SQL for restoring to another database, or Excel for reviewing the data in a spreadsheet.
backup_<db>_<timestamp>.sql β phpMyAdmin / DBeaver / Navicat
Excel file:
backup_<db>_<timestamp>.xlsx β one sheet per table + summary tab
π§° Update / Repair Schema
The site uses 12 tables. If a table is missing on the current driver
(often the case for newly-added features like clients, subscribers,
email_campaigns, email_sends), this button creates only the missing ones.
Existing data is never touched.
Click below to scan the current database and create any missing tables.
π Sync data between drivers
Copy every row from the current database to the alternate one.
Uses INSERT IGNORE (MySQL) or INSERT OR IGNORE (SQLite)
to keep existing rows safe β only missing rows are copied.
Loading current connection infoβ¦
π How database switching works (read once)
The site uses PDO (PHP Data Objects). Both database engines speak the same query language, so the application code doesn't change β only the connection details do.
What "switch" actually does:
Writes a tiny file: includes/db_active.php
<?php
define('DB_ACTIVE', 'sqlite'); // or 'mysql'
config.php reads this file and honors your choice
over the default MySQL credentials.
Reset to default: Click "Reset to config.php default" β that deletes db_active.php and the site uses whatever config.php says.
Data safety: Switching does not copy data between engines. If you switch from MySQL (production data) to SQLite (empty file), the site will look empty. Always backup first.
Typical workflows:
- Local dev: Use SQLite. No setup, single file, easy to wipe.
- Production: Use MySQL. Scales better, supports concurrent users.
- Migration: Export from one as SQL, import into the other.
π₯ Clients
Manage clients here. From any client you can launch a new contract with their info pre-filled.
β Add Client
π Client Directory
Loadingβ¦
β Edit Client
π Import Clients from CSV
CSV must have a header row. Supported columns: name, email, phone, address, city, state, zip, company, notes (case-insensitive). Duplicate emails are skipped automatically.
β¬ Download CSV TemplateClick to browse or drag & drop your CSV
No file selected
π§ Email Campaign
Compose an HTML email and send it to your active mailing list. Personalize each email
with {{name}} and {{email}} placeholders.
π¬ Mailing List
βοΈ Compose
Use {{name}} and {{email}} to personalize each email.
π€ Sending in progressβ¦
π Past Campaigns
Loadingβ¦
π Import Subscribers from CSV
CSV must have a header row. Supported columns: name, email, phone, address, city, state, zip, company, notes (case-insensitive). Only email is required for the mailing list β other columns are ignored here. Duplicate emails are skipped automatically.
β¬ Download CSV TemplateClick to browse or drag & drop your CSV
No file selected
β Help & Instructions
Common questions, integration guides, and how-tos. Click any topic to expand.
How to get Facebook Page API info
To pull posts or stats from your Facebook Page into the site, you need a Page Access Token. Here's the safest path:
- Go to developers.facebook.com/apps and create a new app (type: Business).
- In the app dashboard, add the Facebook Login and Pages API products.
- Open the Graph API Explorer, select your app, then your Page in the dropdown.
- Add the permissions
pages_show_list,pages_read_engagement, andpages_manage_posts. - Click Generate Access Token β copy the token.
- Exchange that short-lived token for a never-expiring page token using the Access Token Debugger.
- Paste the long-lived token into Admin β SEO β Social Profiles.
Switching between MySQL and SQLite
The site can run on either MySQL (production) or SQLite (local file). You can switch any time without losing data.
- Auto-detect β localhost uses SQLite, production uses MySQL. No manual setup.
- Force a driver β go to Database β ποΈ Manual driver control and pick MySQL or SQLite.
- Sync between them β the π Sync data between drivers button copies every row from the active database to the alternate one, skipping duplicates.
The override is stored in includes/db_active.php β delete that file to revert to auto-detect.
Backups: SQL vs Excel β which to use
| Format | Best for | Opens with |
|---|---|---|
| SQL | Restoring to a database β disaster recovery, moving between servers | phpMyAdmin, DBeaver, Navicat, MySQL CLI |
| Excel (.xlsx) | Reviewing the data, sharing with non-technical staff, light editing | Microsoft Excel, Google Sheets, LibreOffice Calc, Numbers |
The Excel export includes a _Summary tab with row counts plus one tab per table.
Maintenance mode & admin preview
When you toggle maintenance mode ON, the public site shows the branded maintenance page. The admin panel and the API stay accessible.
To preview the live site while maintenance is ON β append ?preview=1 to the URL:
http://yoursite.com/?preview=1
This sets a 1-hour cookie that bypasses the maintenance page for you. Visitors still see the maintenance page.
Email setup (Microsoft 365 + cPanel backup)
The site sends notification emails through Microsoft 365 SMTP. Setup:
- In the M365 Admin Center, enable Authenticated SMTP for the sending mailbox (
contact@awesomeconstructioncorp.com). - Copy the mailbox password into
includes/config.phpβSMTP_PASS. - Go to Admin β SEO β π§ Email routing and set the three address fields (notification, display, from name).
- Submit the contact form once on the public site β confirm the email arrives at
admin@awesomeconstructioncorp.com.
SEO basics for ranking on Google
Google ranks pages on three big things: content quality, technical health, and trust signals. The admin panel handles the technical bits β content quality is on you.
- Page title (50β60 chars) β include the keyword + location: "Kitchen Remodel in Worcester, MA β Awesome Construction".
- Meta description (150β160 chars) β write for humans, not robots. Should answer "what is this page about?"
- One H1 per page β match the search intent of your target keyword.
- Internal linking β every blog post should link to at least 2 service pages.
- JSON-LD structured data β already in place. Lets Google understand you're a GeneralContractor in Worcester.
Set the SEO fields in Admin β SEO. The JSON-LD updates automatically.
Forgot the admin password? Reset it
If you can still log in: Admin β Users β π Change my password.
If you can't log in, you'll need direct database access:
- Open phpMyAdmin (cPanel) or DBeaver / Navicat.
- Find the
admin_userstable. - Run this SQL β replace NEW_BCRYPT_HASH with a hash generated at bcrypt.online:
UPDATE admin_users SET password = 'NEW_BCRYPT_HASH' WHERE username = 'admin';
Then log in with the new password and rotate it again from the admin panel.
SSL / HTTPS β make the site secure
SSL is required for: contact-form email, OAuth flows, and Google ranking.
On GoDaddy shared hosting:
- Log into cPanel β SSL/TLS Status.
- Check the box next to your domain.
- Click Run AutoSSL. Wait 1β2 minutes.
- Verify in browser β the padlock should appear next to the URL.
Run for both awesomeconstructioncorp.com AND www.awesomeconstructioncorp.com.
π§ Debug Console
Shows the red error badge on the admin and public site. Turn OFF on a live site so visitors don't see errors.
Runs live checks on every API, the database, auth, and the debug console itself.
π§ Maintenance Mode
When ON, visitors see a maintenance page instead of the site. You can still access the admin panel normally.
πΌοΈ Site Logo
The logo used everywhere β admin sidebar, login screen, and the public website (navbar, about section, and footer). Upload PNG, JPG, WEBP, SVG, or GIF β max 5 MB. Changes apply live after saving.
Pick from Gallery
Click items to select. Already in Hero Slides shown with β.
Edit Item
Delete Item?
This will permanently remove the file. This cannot be undone.
User Action
Rename Work Type
Delete Post?
This will permanently delete this blog post. This cannot be undone.