You want a visitor on your WordPress site to pick their move size, see a real price range, and book a date — not fill in a contact form and wait for you to call back between jobs. That is a booking widget, and on WordPress it is a snippet you paste once.
Below is the whole job: the four steps, the actual snippet, what the page should look like afterwards, and the four things that go wrong.
Before you start
- A MoversQ account with your move sizes and rates filled in. The widget quotes from your tiers, so set those first — an empty rate table has nothing to show.
- WordPress admin access (you need to be able to install a plugin).
- Five minutes. This is not a developer job and you do not need to touch your theme files.
The four steps
- Install "Insert Headers and Footers". In WordPress: Plugins → Add New → search Insert Headers and Footers → Install Now → Activate. It is free and it exists so you never have to edit
header.php. Any equivalent code-injection plugin works the same way. - Open Settings → Insert Headers and Footers. You will see three empty boxes: Scripts in Header, Scripts in Body, Scripts in Footer.
- Paste your snippet into "Scripts in Header". Grab it from your MoversQ dashboard under Setup — it already has your widget ID in it. Header, not Footer. Footer is the single most common reason a widget never shows up.
- Click Save. That is the install finished. Open your site in a private window and look at it as a customer would.
The snippet
This is the shape of it. Replace YOUR-WIDGET-ID with your own — the copy button in the dashboard gives you the filled-in version, which is safer than typing an ID by hand.
<iframe
src="https://getmoversq.com/widget/YOUR-WIDGET-ID"
width="100%"
height="600"
frameborder="0"
style="border:none; max-width:420px;"
></iframe>What you should see after saving
- The booking widget rendered on the page, using your business name and your move sizes.
- A price range when you click a move size — the same range you set in your dashboard, not a placeholder.
- A request landing in your Leads inbox after you submit a test booking, plus the email alert to the number and address on your account.
Run exactly one test booking with your own name and phone number, confirm the alert reaches your phone, then delete that lead. If the alert does not arrive, check the phone number and email on your account before you assume the widget is broken.
Putting it on one page instead of the whole site
Header injection puts the widget everywhere. If you would rather have a dedicated /get-a-quote page — usually the right call, because you can then point ads and your Google Business Profile straight at it — skip the plugin and do this instead:
- Pages → Add New, title it "Get a Quote".
- Add a block, choose Custom HTML.
- Paste the same snippet into that block.
- Publish, then link that page from your main menu and from your homepage hero button.
You can do both: the quote page for campaigns, the site-wide install so a visitor can book from whatever page they landed on.
Troubleshooting
The widget is not appearing at all
- Check the plugin is activated, not just installed.
- Check the snippet went into Scripts in Header. If it is in the Footer box, move it and save again.
- Right-click the page → View Page Source → search for
widget. If the snippet is not in the source, the save did not take. If it is in the source but nothing renders, it is being stripped or blocked — see the last two sections.
It appears, but in the wrong place or squashed
The snippet sets max-width:420px, which keeps it looking like a quote card rather than stretching across a wide page. If it is landing in a narrow sidebar column, move it into a Custom HTML block on a full-width page template. If it looks cut off at the bottom, raise height from 600 to 700 — the iframe does not grow on its own.
A caching plugin is serving the old page
WP Rocket, LiteSpeed Cache, W3 Total Cache and most host-level caches will keep handing visitors the version of the page from before your edit. Purge all caches after saving, then load the site in a private window. If your host has its own CDN cache (SiteGround, Kinsta, WP Engine), purge that too — it sits in front of the plugin.
Your theme or a security plugin is stripping the code
Some security plugins and locked-down themes remove iframes and inline scripts from post content. If the snippet vanishes from the page source after saving, temporarily deactivate the security plugin, save again, and re-enable it. If it still strips out, use the header-injection route instead of a Custom HTML block — plugin-injected header code is usually left alone.
Using a different platform?
- Wix has no plugin step and its own set of gotchas — page scope and the "load once" setting — so it gets its own walkthrough: adding a booking widget to a Wix moving company website.
- Squarespace: Settings → Advanced → Code Injection → Header.
- GoDaddy Website Builder: Add Section → HTML / Custom Code, paste the snippet, leave "Force full width" off, then Publish.
Every step above is also in the setup guide inside your dashboard, with the copy button for your own snippet.
Next
Once bookings are coming in, the thing that decides whether they turn into paid jobs is the number the widget shows. That is a separate problem, and we wrote it up here: how to price a 2-bedroom move and set flat-rate tiers that hold up.
MoversQ is one plan at $79 a month — unlimited bookings, your own rates, email lead alerts, no cut of the job. Seven-day free trial, and the embed above is the entire install.
See pricing and start a free trial