SBLocal product documentation

Web Lead System
User & Installation Guide

A practical guide for installing, configuring, securing, and operating the Web Lead System—from the first server upload to daily lead management.

Self-hostedResponsive interfaceRole-based accessRevision 1.0
Read before installationThe Web Lead System handles business correspondence and employee activity records. Install it only on a domain and hosting account you control. Make a complete website and database backup before replacing or updating files.
Back to top

1. Server requirements

Confirm compatibility before uploading the system. Your exact release may specify a newer minimum version.

Web server

Apache or a compatible HTTPS web server with URL rewriting, sessions, and protected directories.

</>

PHP

A currently supported PHP 8.x release with PDO, JSON, mbstring, OpenSSL, and session support.

Database

MySQL 8.x or compatible MariaDB, plus one dedicated database user with only the required privileges.

  • A valid SSL certificate and forced HTTPS
  • Access to the hosting file manager, SFTP, or a deployment tool
  • Access to database creation and scheduled backups
  • A working mail service or authenticated SMTP provider
  • A private administrative email address for the primary owner
Do not install on obsolete PHPUnsupported server software may contain known vulnerabilities. “It loads” is not the same as “it is safe.” Confirm your hosting version before entering real business data.
Back to top

2. Installation: beginning to end

These steps describe a conventional self-hosted installation. Keep the supplied filenames and directory relationships intact.

Recommended file structure

public_html/ ├── index.html Existing public website ├── assets/ Existing public assets ├── api/ │ └── contact/ Public form receiver │ ├── contact.php │ └── contact-config.php └── web-lead-system/ Private application directory ├── index.php Application entry point ├── assets/ │ ├── css/ │ ├── js/ │ └── images/ ├── api/ Authenticated application actions ├── config/ Private configuration ├── storage/ Protected exports and logs └── documentation/ This guide (optional)
Keep the contact receiver separateThe public contact endpoint accepts website inquiries. The application API performs authenticated dashboard actions. Do not merge these responsibilities into one file.
  1. Back up the existing website

    Download the current website files and export its database. Record the PHP version and active DNS/mail settings.

  2. Create the application database

    In the hosting control panel, create a dedicated database and database user. Generate a unique password and grant that user access only to this database.

    Import the supplied schema file using the hosting database tool. Do not reuse a WordPress administrator password.

  3. Upload the application package

    Extract the release ZIP locally. Upload the complete application folder to /public_html/web-lead-system/ using SFTP or the hosting file manager.

  4. Protect private directories

    Prevent direct web access to configuration, storage, backups, and logs. Apply the server rules supplied with the release and confirm that opening a protected file URL returns 403 Forbidden.

  5. Enter the server configuration

    Set the database host, database name, username, password, application URL, organization name, timezone, mail transport, sender address, and reply address in the supplied configuration file or setup screen.

  6. Set production mode

    Disable visible PHP errors, enable secure session cookies, set the application environment to production, and confirm HTTPS is forced before login credentials are created.

  7. Connect the website form

    Point the public contact form to its installed receiver, normally /api/contact/contact.php. Match every HTML field name and allowed option to the server configuration.

    Use a honeypot, same-origin validation, rate limiting, and server-side validation. Never rely on browser validation alone.

  8. Test delivery without real customer data

    Submit a clearly labeled test lead. Confirm it appears once in the dashboard, reaches the intended notification mailbox, and sends a visitor confirmation only when that option is enabled.

  9. Create the primary owner

    Open the private application URL and complete first-run setup. The first authorized account becomes the Primary Owner. Use a unique password and record the recovery method securely.

  10. Add the initial team

    Invite users into available seats, assign job titles, and grant only the permissions each person needs. Confirm each invitation individually.

  11. Complete the launch checklist

    Test login, logout, password recovery, lead reply, internal message, transfer approval, export, archive, mobile layout, and backup restoration before announcing the system to employees.

Installation is complete only after restoration is testedA backup that has never been restored is an assumption, not a recovery plan.
Back to top

3. Users, roles & permissions

Titles describe people; permissions control actions. “Carpenter,” “Estimator,” or “Office Coordinator” can be customized without granting unrestricted authority.

Primary Owner

  • Controls organization settings and branding
  • Manages users and temporary authority
  • Approves sensitive account actions
  • Views reports and historical records

Lead Coordinator

  • Reviews and assigns incoming leads
  • Replies, follows up, and archives when permitted
  • Publishes announcements when authorized
  • Cannot take ownership from the Primary Owner

Team Member

  • Views leads assigned to the account
  • Replies and schedules follow-up
  • Sends private internal messages
  • Requests transfers rather than taking leads

Custom or Limited Role

  • Receives only explicitly granted capabilities
  • May be used for assistants, field staff, or observers
  • Should begin with the minimum necessary access
  • Can be revised after promotion or reassignment
Owner authority is not a job titleDo not make every manager an owner. Keep one accountable Primary Owner and use time-limited delegation when that person is unavailable.
Back to top

4. Reading the dashboard

The dashboard concentrates the work that needs attention. What appears depends on the logged-in user’s permissions.

Attention counts

Overdue, due today, upcoming, unassigned, and transfer counts identify immediate work.

Presence

Online, away, offline, or—when authorized—invisible indicates availability, not physical location.

Current view

My Leads and My Messages restrict information to the current user. Broader views require explicit permission.

Back to top

5. Managing leads

A lead should move through a deliberate lifecycle. Avoid leaving an inquiry unassigned or using archive as a substitute for answering it.

StatusMeaningRecommended action
NewReceived but not fully reviewed.Screen, verify, and assign.
AssignedA team member owns the next action.Contact the visitor promptly.
Awaiting ReplyYour business responded and is waiting.Schedule a reasonable follow-up.
Follow-UpA future action is scheduled.Complete, reschedule, or cancel with a note.
AnsweredThe inquiry received a substantive response.Continue the thread or close when resolved.
ClosedNo further action is expected.Retain the record; reopen if necessary.
ArchivedRemoved from active work without deletion.Use for preserved inactive records.

Daily lead workflow

  1. Open the lead and verify the contact information.
  2. Review screening indicators and previous activity.
  3. Assign the lead to the appropriate authorized user.
  4. Reply from the lead thread so the response remains recorded.
  5. Set a status and schedule the next action.
  6. Close or archive only when the outcome is understood.
Email copies and dashboard records are differentDeleting a notification in Gmail does not remove the dashboard record. Marking a dashboard inquiry as spam should not block your own website sender address in an external mailbox.
Back to top

6. Internal messages

Messages let authorized users coordinate without exposing private notes to the website visitor.

1

Choose a recipient

Open Team, confirm the person and presence indicator, then select Send Message.

2

Write a useful subject

Reference the lead, project, decision, or deadline. Avoid vague messages such as “Call me.”

3

Keep customer replies separate

Internal messages are for employees. Use the lead thread to communicate with the visitor.

4

Preserve context

Reply in the existing thread when continuing the same subject.

Back to top

7. Assignment & transfer requests

Users may request a reassignment, but sensitive transfers should remain subject to owner or delegated approval.

  1. Request

    The current assignee selects the proposed recipient and provides a business reason.

  2. Review

    The authorized decision-maker reviews workload, experience, history, and fairness.

  3. Approve or deny

    The system records the decision, decision-maker, time, and reason.

  4. Notify

    Affected users receive the outcome. The lead remains with the original assignee until approval succeeds.

Back to top

8. Company announcements

Announcements distribute organization-wide information and can request acknowledgement.

  • Use a clear title, publication time, expiration date, and priority
  • Request acknowledgement only when confirmation is genuinely needed
  • Review recipient and acknowledgement counts from the sender’s view
  • Use approved decorative images sparingly and provide accessible alternative text
  • Allow expired announcements to leave the active dashboard while preserving the record
Announcements are not emergency systemsDo not rely on a dashboard announcement for urgent life-safety instructions unless the installation has been formally integrated with an approved emergency notification process.
Back to top

9. User accounts

Add a user

  1. Open Team and select an available seat.
  2. Enter the person’s real name, company email, title, and access profile.
  3. Review permissions; remove anything unnecessary.
  4. Send the invitation. The seat remains pending until accepted.
  5. Confirm the user can log in and sees only the intended information.

Edit, suspend, or deactivate

Title and permissions may change as responsibilities change. Suspension temporarily blocks access. Deactivation permanently ends access without destroying historical records.

Never delete employment history to free a seatBefore deactivation, reassign open leads, record the effective date and reason, preserve account activity, and create an export when company policy requires it.

Temporary delegation

The Primary Owner may grant selected capabilities to an authorized user for a fixed period. Delegation should expire automatically and must not transfer ownership, billing control, or historical ownership records.

Back to top

10. Appearance & branding

Owner-only controls can coordinate the application with the business website without exposing arbitrary CSS or font changes.

Header mode

Show the branded header for a standalone installation, or hide the public header when the system is embedded beneath an existing website header.

Application title

Choose Web Lead System, Communications Dashboard, Inter-Office System, or an approved custom title.

Colors & buttons

Select accessible header, navigation, button, and status colors while preserving readable contrast.

Preview, then commitPreview branding changes in the owner’s browser, inspect desktop and mobile layouts, then explicitly commit. Discard should leave the published interface unchanged.
Back to top

11. Records, reports & exports

The system preserves operational history; it does not prove a person’s physical location or identity at a specific moment.

Lead reports

Received, assigned, answered, awaiting reply, closed, archived, and follow-up activity by date range.

User account history

Invitations, permission changes, suspensions, deactivations, assignments, messages, and decisions.

Former users

Search preserved accounts without reactivating them. Open leads should already have been reassigned.

Local exports

Download periodic CSV, text, or supported report formats and store encrypted copies according to company policy.

Accurate language mattersA record can show that credentials interacted with the system. It cannot establish who used those credentials, where that person was, or whether work occurred away from the application.
Back to top

12. Security checklist

  • Force HTTPS and secure session cookies
  • Use unique passwords and multi-factor authentication when supported
  • Hash passwords with PHP’s current password API; never store plain text
  • Use prepared database statements and server-side authorization on every action
  • Require CSRF tokens for state-changing requests
  • Validate, limit, and encode all visitor input
  • Disable file uploads unless a separately secured feature explicitly requires them
  • Keep configuration, logs, exports, and backups outside public reach
  • Rate-limit login and form submissions
  • Review active accounts and delegated authority regularly
  • Apply supported PHP, database, application, and server updates
  • Maintain off-server encrypted backups and test restoration
No internet-connected product is guaranteed unhackableThe responsible promise is layered protection, prompt maintenance, minimal retained data, reliable backups, and a documented response plan.
Back to top

13. Maintenance schedule

FrequencyAction
DailyReview failed mail, screening holds, overdue follow-ups, and backup status.
WeeklyReview unassigned leads, stale conversations, pending transfers, and pending invitations.
MonthlyExport reports, test a sample restore, review users and permissions, and inspect storage use.
QuarterlyInstall tested maintenance releases, audit configuration, and review retention policy.
When staff changesImmediately suspend access, reassign open work, then complete non-destructive deactivation.

Safe update procedure

  1. Read the release notes and confirm server compatibility.
  2. Back up files and database.
  3. Test the update in a staging copy with fictional data.
  4. Place production in maintenance mode if required.
  5. Upload only the documented changed files and run migrations once.
  6. Clear server/browser caches and complete the regression checklist.
  7. Roll back immediately if records, permissions, or mail behavior are inconsistent.
Back to top

14. Troubleshooting

The contact form says “Thank you,” but no lead appears
Verify the form action URL, honeypot value, field names, server log, WAF/ModSecurity result, database connection, and whether the request was held for screening. A generic bot response can intentionally say “Thank you” without creating a lead.
Email notification did not arrive
First confirm the dashboard record exists. Then check the recipient address, spam folder, mail logs, sender authentication, SPF/DKIM/DMARC alignment, and SMTP credentials. Dashboard capture and external email delivery are separate events.
A user sees information outside their role
Suspend the account if exposure is material. Review server-side permission checks, not only hidden navigation links. Removing a button from HTML does not revoke API authority.
A page returns 403 or a security challenge
Confirm the request path and inspect the hosting security log. Ask the host to identify the exact blocked rule for the exact endpoint. Whitelist narrowly; do not disable the web application firewall globally.
Branding preview works but changes disappear
Confirm Preview and Commit are separate actions, the owner has permission to commit, the settings request succeeds, and the saved configuration is loaded after refresh. Clear caches only after confirming the server saved the setting.
The interface works in one browser but not another
Test in a private window, clear the application cache, inspect JavaScript errors, and verify all CSS/JS asset paths and MIME types. Do not assume a browser-specific symptom proves the browser is at fault.
Back to top

15. Support information

Before requesting assistance, record what happened, the exact time, the signed-in role, browser, page address, and visible error. Remove passwords and customer-sensitive data from screenshots.

Include

  • Application version
  • PHP and database versions
  • Exact steps to reproduce
  • Error text and relevant sanitized log entry
  • Whether the issue occurs in a clean session

Do not send

  • Passwords or recovery codes
  • Database credentials
  • Unredacted customer correspondence
  • Complete private configuration files
  • Server backups through ordinary email
SBLocal installation assistanceThe Web Lead System may be installed and configured by the client’s authorized website provider or by SBLocal Creative. Integration details depend on the client’s server, website, mail provider, and approved requirements.