How to Install and Set Up the Zenmove Lead Generation Site

This guide walks through deploying and configuring the Zenmove-powered moving quote site so you can start collecting moving quote requests.


Requirements

Server

  • Apache or Nginx web hosting
  • PHP 7.4 or higher (PHP 8.x recommended)
  • cURL extension enabled
  • JSON extension enabled
  • Writable web root directory
  • FTP, cPanel, or SSH access

Credentials

  • Zenmove API token (from your Zenmove dashboard)
  • A domain or subdomain (e.g. quotes.yoursite.com)
  • SMTP credentials if using email lead routing
  • Cloudflare account for CAPTCHA (optional)

Step 1: Upload the Files

  1. Download and extract mymove.zip
  2. Upload all extracted files to your web root directory:
    • /public_html/
    • /www/
    • /htdocs/
  3. Confirm the following files and folders are present before continuing:
    • lang/en.php — English content strings
    • lang/fr.php — French content strings
    • install.php — setup wizard
    • index.php, quote.php, about.php, contact.php, how-it-works.php, privacy.php
    • header.php, footer.php, lang.php
    • custom.css

Note: Do not create config.php manually. The setup wizard generates it for you in the next step.


Step 2: Run the Setup Wizard

Open your browser and navigate to:

https://yourdomain.com/install.php

The wizard walks through all configuration in one form. Complete each section:

1. Core Settings

  • Company name
  • Site URL (must include https and no trailing slash)
  • Zenmove API token

2. Branding and Assets

  • Brand primary colour (used for buttons, headers, and gradients)
  • Logo URL and favicon URL
  • Homepage hero background image URL (optional)
  • Sub-page header background image URL (optional)
  • Footer background image URL (optional)
  • Toggle to show or hide the header strip on sub-pages

3. Lead Routing and Email

Choose how submitted quote requests are handled. See the Lead Routing section below for a full explanation of each mode.

SMTP settings are required when your routing mode sends email notifications.

4. Privacy

  • Enable or disable the privacy policy agreement checkbox on the quote form

5. Conversion Features

  • Announcement bar — a dismissible strip shown at the top of every page
  • Testimonials section — customer review cards on the homepage

6. Languages

  • English is always active and cannot be deselected
  • Enable French to show a language toggle on the site
  • Additional languages can be added manually after installation

7. Security (Cloudflare Turnstile)

  • Paste your Turnstile site key and secret key to enable CAPTCHA on the quote and contact forms
  • Leave both fields empty to disable CAPTCHA

8. Social Media and SEO

  • Enable Open Graph tags for social sharing previews
  • Set a custom title, description, and image URL

Click Install and Configure Site. The wizard writes config.php and creates installed.lock, then blocks further access automatically.

Note: To re-run the wizard, delete both config.php and installed.lock from the server first.


Lead Routing Options

The LEAD_MODE setting in config.php controls what happens when a visitor submits the quote form. There are four modes:

Marketplace Only — sell_all

define('LEAD_MODE', 'sell_all');

All leads — both domestic and international — are submitted directly to the Zenmove marketplace. Moving companies in the Zenmove network receive the request and contact the customer. No email is sent to you.

Use this mode if you want to operate purely as a Zenmove referral partner with no inbox management.

Hybrid — sell_international

define('LEAD_MODE', 'sell_international');

International move requests are submitted to the Zenmove marketplace. Domestic move requests (local and long distance) are sent to your inbox via SMTP instead.

Use this mode if you handle domestic leads yourself but want to pass international moves to Zenmove's specialist network.

SMTP configuration is required for this mode.

Email Only — email_only

define('LEAD_MODE', 'email_only');

All leads are sent to your inbox via SMTP. Nothing is submitted to the Zenmove marketplace. You manage all quote requests directly.

Use this mode if you are operating as an independent moving company and want all enquiries delivered to your own team.

SMTP configuration is required for this mode.

Both — both

define('LEAD_MODE', 'both');

All leads are submitted to the Zenmove marketplace and you also receive an email notification for every submission. The customer gets covered by the full mover network while you maintain visibility of every request in your inbox.

Use this mode if you want maximum coverage — leads are handled by Zenmove and you stay informed of every enquiry.

SMTP configuration is required for this mode.

SMTP Configuration

Required for sell_international, email_only, and both modes. Add the following to config.php or configure through the setup wizard:

define('SMTP_HOST',       'smtp.yourdomain.com');
define('SMTP_PORT',       587);
define('SMTP_ENCRYPTION', 'tls');
define('SMTP_USERNAME',   'you@yourdomain.com');
define('SMTP_PASSWORD',   'your_smtp_password');
define('SMTP_FROM_EMAIL', 'noreply@yourdomain.com');
define('SMTP_TO_EMAIL',   'leads@yourdomain.com');

Important: SMTP_FROM_EMAIL must be a verified sender address with your mail provider. Using an unverified address will cause delivery failures.


Step 3: Verify the Site

Visit your domain in a browser:

https://yourdomain.com

Check that each page loads without errors:

  • / — Homepage
  • /quote.php — Quote request form
  • /how-it-works.php — Process explainer
  • /about.php — About page
  • /contact.php — Contact form
  • /privacy.php — Privacy policy

Step 4: Test Lead Submission

  1. Go to /quote.php and fill in the form with test data
  2. Submit and confirm the success screen appears
  3. Verify the result based on your routing mode:
    • sell_all or both: lead appears in your Zenmove dashboard
    • email_only or both: notification email arrives at SMTP_TO_EMAIL

Turnstile note: Site keys are domain-locked. If testing on a local or staging domain, either add that domain to your Cloudflare Turnstile widget's allowed list, use Cloudflare's test keys (1x00000000000000000000AA / 1x0000000000000000000000000000000AA), or leave the keys empty to bypass CAPTCHA during testing.


Step 5: Customize Content and Branding

Site Text

All visible content is stored in language files, not in the page templates. Edit the files in the lang/ folder:

  • lang/en.php — all English content
  • lang/fr.php — all French content

Keys are grouped by page with comments. Update headlines, body copy, testimonials, and the privacy policy text in these files.

Testimonials

Replace the three placeholder reviews before going live. In lang/en.php, update the values for:

  • testimonial_1_name, testimonial_1_loc, testimonial_1_text
  • testimonial_2_name, testimonial_2_loc, testimonial_2_text
  • testimonial_3_name, testimonial_3_loc, testimonial_3_text

Privacy Policy

The included privacy.php contains a template policy. You must review and customize it to comply with the regulations that apply to your business — GDPR, PIPEDA, CCPA, or others. All policy content is editable in lang/en.php under the privacy_ keys. Once finalized, remove the template warning block from privacy.php.

Styling

All custom styles are in custom.css in the root directory. The brand primary colour is applied automatically from BRAND_COLOR in config.php and does not need to be changed in the CSS directly.

Adding a New Language

  1. Copy lang/fr.php to a new file, e.g. lang/es.php
  2. Translate every value — keep all array keys identical
  3. Set 'lang_name' to the native language name, e.g. 'Español'
  4. Add the language code to LANG_ENABLED in config.php:
define('LANG_ENABLED', ['en', 'fr', 'es']);

The language toggle appears automatically when more than one language is enabled.


Step 6: Secure the Installation

  • Enable HTTPS — an SSL certificate is required for form submissions and Cloudflare Turnstile
  • Confirm installed.lock exists in the root directory — this blocks the setup wizard from running again
  • Restrict direct browser access to config.php via your server configuration or .htaccess:
<Files "config.php">
  Require all denied
</Files>
  • Disable directory listing on your server
  • Set file permissions — files: 644, folders: 755

Warning: Never expose config.php publicly. It contains your API token and SMTP credentials.


Step 7: Add Tracking and Advertising

  • Add Google Analytics (GA4) or Google Tag Manager to header.php just before the closing </head> tag
  • Add Meta Pixel or other tracking scripts in the same location
  • Use UTM parameters on all paid traffic destination URLs:
https://yourdomain.com/quote.php?utm_source=google&utm_medium=cpc&utm_campaign=moving

Troubleshooting

Form not submitting

  • Verify the API token in config.php is correct
  • Confirm cURL and JSON PHP extensions are enabled
  • Check that outbound HTTPS connections are permitted on your server

Blank or broken page

  • Temporarily add ini_set('display_errors', 1); to the top of index.php to surface PHP errors
  • Check your server's PHP error log
  • Confirm PHP 7.4 or higher is active — some hosts default to older versions

Leads not appearing in Zenmove

  • Confirm LEAD_MODE is set to sell_all or both
  • Verify the API token and base URL are correct
  • Confirm ZM_API_VERIFY_SSL is set to true in production

Emails not arriving

  • Confirm LEAD_MODE is email_only or both
  • Verify all SMTP settings in config.php
  • Confirm SMTP_FROM_EMAIL is a verified sender address with your mail provider
  • Check spam and junk folders for the first few test deliveries

Turnstile CAPTCHA not loading

  • The site key is domain-locked — add your domain to the allowed list in the Cloudflare Turnstile dashboard
  • For testing, use Cloudflare's test keys or clear both key fields in config.php to disable CAPTCHA

Language toggle not appearing

  • The toggle only displays when two or more codes are listed in LANG_ENABLED
  • Confirm the matching lang/xx.php file exists for each language code in the array

Your Zenmove-powered site is ready to collect moving quote requests. Leads are routed according to your chosen mode, content is fully translatable through the language files, and the setup wizard can be re-run at any time by removing config.php and installed.lock.

  • 0 Notendur fundu þetta gagnlegt
Kom þetta að gagni?

Skyldar greinar

Installation and Configuration Guide for Sendy Auto Campaign WordPress Plugin

1. Upload and Install the Plugin Access your WordPress Dashboard: Start by logging into your...

Installation and Configuration Guide for Sendy and WHMCS Integration

Prerequisites Before you begin, ensure you have the following: A WHMCS installation. A Sendy...

Installation and Configuration Guide for WHMCS Mailcow Integration

This provisioning module for WHMCS utilizes the Mailcow API. The module allows offering email...

Configure the WHMCS Bulk Client Export Script

The WHMCS Client Export Script allows you to filter and export client data from your WHMCS...

Configure the WHMCS Bulk Client Import Script

Overview This guide will walk you through the steps to configure and use the WHMCS API...