Your website
Shortcodes
Every HaulHQ shortcode on one page. The essentials are [haulhq_booking], [haulhq_products], [haulhq_product] and [haulhq_form]; the extras are [haulhq_zip_cta], [haulhq_services], [haulhq_reviews], [haulhq_service_area], [haulhq_gallery] and [haulhq_gallery_page]. Open one for its attributes, setup steps and common mistakes.
This applies to both workflows
What are the two workflows?A shortcode is a tag you paste into a WordPress page, and the plugin turns it into the real thing -- a booking widget, a quote form, your reviews. Every one of them is below; open the one you need. Each panel carries its own attributes, setup steps and common mistakes.
If you do not know which one you want
This page is the reference -- it answers how does this tag work. The question which tag do I need is answered by Which shortcodes, and where, which walks from what you are trying to achieve to the tag that does it. Start there if you are setting a site up for the first time.
Essential
Four tags carry the work. Dumpster rental needs haulhq_products to list your sizes and haulhq_booking to take the booking, plus haulhq_product to give each size a page of its own -- that last one is what ranks in search, which is why it sits here rather than under Extras. Junk removal needs haulhq_form, which quotes and books in one step.
Embed the booking widget as a responsive iframe.
This is the dumpster checkout, not the junk form
If you do junk removal, the shortcode you want is haulhq_form. It already books pickups. Reaching for this one because you want customers to "book" is the most expensive wrong turn in setup.
Where it goes. Your book-online / checkout page. This is the page your product links point at.
[haulhq_booking height="600"]Copy this to get started
Set it up
- 1Create a page called Book Online, or similar.
- 2Paste
[haulhq_booking]into it and publish. - 3Confirm your Equipment screen has a container size with at least one unit, or the widget has nothing to offer.
- 4Test a real booking from your phone on the live page.
Attributes
| Attribute | Default | Values | What it does |
|---|---|---|---|
width | empty | blank, wide, full, content | How wide this block renders on a block theme. Blank uses the sensible default for this shortcode; "content" keeps it at your theme's text width; "wide" and "full" use your theme's wide and full widths. Ignored by classic themes and page builders, which have no such widths. |
height | 600 | Pixels | Initial iframe height |
service | empty | service slug | Pre-select a service |
product | empty | product slug | Pre-select a product. A ?haulhq_product= parameter in the page URL OVERRIDES this attribute, so a link from a product page wins over the value set here. The older ?product= name is still read, but do not publish new links with it: WooCommerce reserves that parameter and returns a 404 on sites running it. |
Generated from the same definition that drives the plugin's Shortcodes tab, and checked against the plugin code on every build.
Common mistakes
"The widget shows no availability."
Check the number of units on the equipment item, then your business hours and blocked dates, then Earliest a customer can book and How far out customers can book under Pricing > Load Tiers. In that order.
"I set product but a different size is pre-selected."
A ?haulhq_product= parameter in the page URL overrides the attribute, so a link from a product page wins. That is intended. (The older ?product= name still works but 404s on sites running WooCommerce, so do not publish new links with it.)
"The iframe is cut off at the bottom."
Raise height. It is only the initial height -- the widget resizes itself after load, so this matters most on slow connections.
Display products/equipment in a grid or list layout.
Where it goes. Your "our dumpsters" / rentals page.
[haulhq_products type="equipment"]Copy this to get started
Set it up
- 1Create a page listing what you rent, e.g. "Our Dumpsters".
- 2Paste
[haulhq_products type="equipment"]. - 3Set
columnsto suit your theme width -- 3 is right for most. - 4Leave the CTA on
bookingand a click opens the booking widget right there, with that size pre-selected. Set your booking page on the WordPress tab of Settings > Website so the link also works as a plain link.
Attributes
| Attribute | Default | Values | What it does |
|---|---|---|---|
width | empty | blank, wide, full, content | How wide this block renders on a block theme. Blank uses the sensible default for this shortcode; "content" keeps it at your theme's text width; "wide" and "full" use your theme's wide and full widths. Ignored by classic themes and page builders, which have no such widths. |
type | empty | equipment, service, addon | Filter by category |
layout | grid | grid, list | Display layout |
columns | 3 | 1-4 | Number of grid columns |
show_specs | true | true, false | Show product specifications |
show_pricing | true | true, false | Show pricing information |
featured | empty | true | Only show featured products |
cta_text | Book Now | Any text | CTA button label |
cta_action | booking | chatbot, booking, link | CTA click behavior |
cta_url | empty | URL | URL when cta_action=link |
Generated from the same definition that drives the plugin's Shortcodes tab, and checked against the plugin code on every build.
Common mistakes
"The grid is empty."
An item shows only if it exists, is active, has Show on website on, and belongs to your vertical. If you are logged in to WordPress you see a notice naming the cause; visitors see nothing. type="equipment" shows equipment only -- drop the attribute to show everything.
"Prices are showing and I do not want them public."
Set show_pricing="false".
Display a single product detail page with specs and gallery.
These are your search pages
One page per size, each with the city in the title, is what ranks for "20 yard dumpster <city>". A single combined page competes for nothing in particular.
Where it goes. One page per dumpster size. This is what ranks for "20 yard dumpster <city>".
[haulhq_product slug="10-yard-dumpster"]Copy this to get started
Set it up
- 1Copy the ready-made
[haulhq_product slug="..."]from the item on your Equipment screen, or from the WordPress tab of Settings > Website. Do not type the slug by hand. - 2Create one WordPress page per container size.
- 3Paste
[haulhq_product slug="your-slug"]. - 4Give the page a local title -- "20 Yard Dumpster Rental in <your city>".
Attributes
| Attribute | Default | Values | What it does |
|---|---|---|---|
width | empty | blank, wide, full, content | How wide this block renders on a block theme. Blank uses the sensible default for this shortcode; "content" keeps it at your theme's text width; "wide" and "full" use your theme's wide and full widths. Ignored by classic themes and page builders, which have no such widths. |
slug | empty | product slug | Product slug from catalog |
show_specs | true | true, false | Show product specifications |
show_pricing | true | true, false | Show pricing information |
cta_text | Book Now | Any text | CTA button label |
cta_action | booking | chatbot, booking | CTA click behavior |
Generated from the same definition that drives the plugin's Shortcodes tab, and checked against the plugin code on every build.
Common mistakes
"The page is blank."
The slug does not match an item. Copy it from the Equipment screen rather than typing it. If you are logged in to WordPress the page shows a notice naming the bad slug and listing the ones that exist; visitors see nothing.
The main lead form for junk removal: the visitor checks their zip, picks a load size for an instant price, then either books a pickup (date/time) or requests a written estimate. Captures the lead, photos, and details. This is the form to use on your quote/booking page.
This is the junk removal form, and it books as well as quotes
You do not need [haulhq_booking] as well. This form takes the customer from zip, to load size, to an instant price, to either a booked pickup time or an estimate request.
Where it goes. Your quote or booking page. One per site is normal.
[haulhq_form height="700"]Copy this to get started
Set it up
- 1Create your quote or booking page.
- 2Paste
[haulhq_form]and publish. - 3Configure the fields in Settings > Quote Form.
- 4Test a real submission from your phone on the live page.
Attributes
| Attribute | Default | Values | What it does |
|---|---|---|---|
width | empty | blank, wide, full, content | How wide this block renders on a block theme. Blank uses the sensible default for this shortcode; "content" keeps it at your theme's text width; "wide" and "full" use your theme's wide and full widths. Ignored by classic themes and page builders, which have no such widths. |
height | 700 | Pixels | Initial iframe height |
show_price | empty | blank, true, false | Whether the instant price is shown before the visitor gives contact details. Leave blank to use your Settings > Quote Form default; "false" asks for contact first; "true" always shows the price. |
form | empty | blank, zip, standard | Which form to embed. Blank or "zip" is the default zip-then-load-size flow; "standard" is the single-screen lead form. |
Generated from the same definition that drives the plugin's Shortcodes tab, and checked against the plugin code on every build.
Common mistakes
"I want to add dumpster sizes to this form."
You cannot, and you should not need to. Dumpsters are sold through haulhq_booking from your catalog. See the two workflows.
"I do not want the price shown before I have their details."
Set show_price="false", or change the default in Settings > Quote Form. Leaving the attribute blank uses your setting.
Extras
Useful, and none of them is load-bearing. Add them once the essentials are live and earning: a zip-code prompt, your service list, your reviews, the area you cover, and two ways to show job photos.
A compact "Check Availability" zip field. The visitor enters their zip and the booking flow opens with it pre-filled, landing on the load-size step. Place it anywhere -- header, page, or widget area. Also available as the "HaulHQ Zip CTA" block.
Use it more than once
Unlike the form, this is meant to be repeated -- hero, mid-page, footer, header. It is the entry point to the flow, not the flow itself.
Where it goes. Anywhere you want to start the flow: home page hero, header bar, a widget area. Use it many times.
[haulhq_zip_cta]Copy this to get started
Set it up
- 1Paste
[haulhq_zip_cta]into your home page hero. - 2Use
layout="bar"for a header strip. - 3Set
booking_urlto your quote page if you would rather send visitors to a real page than open a popup.
Attributes
| Attribute | Default | Values | What it does |
|---|---|---|---|
layout | box | box, bar | Box is the standard block; bar is a compact single-row variant for site headers |
theme | light | light, dark | Color theme for the CTA |
color | empty | Hex e.g. #f15a22 | Custom button color (overrides the default) |
label | Check Availability | Any text | Button label |
placeholder | Enter your zip | Any text | Zip input placeholder |
booking_url | empty | A page path or URL, e.g. /book-online/ | Optional. When set, the visitor is sent to this page with their zip carried in the URL (a real, trackable pageview) instead of opening a popup. The destination page must embed the [haulhq_form] shortcode. Leave blank to keep the popup behavior. |
Generated from the same definition that drives the plugin's Shortcodes tab, and checked against the plugin code on every build.
Common mistakes
"I set booking_url and the destination page does nothing with the zip."
The destination page must contain haulhq_form. The zip is carried in the URL for that form to pick up.
Display junk removal and hauling services with pricing.
This lists services, it does not take the lead
It is a menu, not a form. The lead is captured by haulhq_form, so give the CTA somewhere to go.
Where it goes. Your services page.
[haulhq_services layout="grid" columns="3"]Copy this to get started
Set it up
- 1Add your services under Equipment, in the Services tab. These are the jobs you do -- appliance removal, garage cleanout, single item pickup.
- 2Create a services page in WordPress and paste
[haulhq_services]. - 3Set
columnsto suit your theme width. Three works for most. - 4Set
cta_actiontobooking(opens the quote flow) orchatbotso a visitor who is convinced can act immediately. This shortcode cannot link to a page of your own.
Attributes
| Attribute | Default | Values | What it does |
|---|---|---|---|
width | empty | blank, wide, full, content | How wide this block renders on a block theme. Blank uses the sensible default for this shortcode; "content" keeps it at your theme's text width; "wide" and "full" use your theme's wide and full widths. Ignored by classic themes and page builders, which have no such widths. |
layout | grid | grid, list | Display layout |
columns | 3 | 1-4 | Number of grid columns |
show_pricing | true | true, false | Show pricing information |
cta_text | Get Estimate | Any text | CTA button label |
cta_action | booking | chatbot, booking | CTA click behavior |
Generated from the same definition that drives the plugin's Shortcodes tab, and checked against the plugin code on every build.
Common mistakes
"Nothing renders."
You have no active services with Show on website on -- or your company is dumpster-only, since services belong to junk removal. Equipment and add-ons are not shown here. A logged-in editor sees a notice.
"I want prices hidden until someone gets in touch."
Set show_pricing="false". The services still list, without the numbers.
Display your synced Google reviews and testimonials, with an optional rating summary.
Where it goes. Home page, and anywhere you want proof near a call to action.
[haulhq_reviews count="6"]Copy this to get started
Set it up
- 1Paste
[haulhq_reviews]where you want proof, usually just above a call to action. - 2Set
countto how many to show. - 3Leave
show_summary="true"to show the average rating and count above the list. It is plain text: HaulHQ deliberately adds no review markup for search engines, which ignore self-hosted ratings.
Attributes
| Attribute | Default | Values | What it does |
|---|---|---|---|
width | empty | blank, wide, full, content | How wide this block renders on a block theme. Blank uses the sensible default for this shortcode; "content" keeps it at your theme's text width; "wide" and "full" use your theme's wide and full widths. Ignored by classic themes and page builders, which have no such widths. |
count | 6 | Number | Number of reviews to show |
show_summary | true | true, false | Show aggregate rating summary |
show_dates | false | true, false | Show the date each review was left |
Generated from the same definition that drives the plugin's Shortcodes tab, and checked against the plugin code on every build.
Common mistakes
"No reviews are showing."
Nothing has been synced from Google yet and no testimonials have been added on the Reviews page. This renders real reviews and testimonials only; visitors see nothing, and a logged-in editor sees a notice.
Display service area with city names or zip codes.
Where it goes. Footer, or a dedicated service-area page.
[haulhq_service_area format="cities"]Copy this to get started
Set it up
- 1Add your cities and zips in Settings > General. See Service area.
- 2Paste
[haulhq_service_area]into your footer or a service-area page. - 3Use
format="zips"if you would rather list zip codes.
Attributes
| Attribute | Default | Values | What it does |
|---|---|---|---|
width | empty | blank, wide, full, content | How wide this block renders on a block theme. Blank uses the sensible default for this shortcode; "content" keeps it at your theme's text width; "wide" and "full" use your theme's wide and full widths. Ignored by classic themes and page builders, which have no such widths. |
format | cities | cities, zips | Display format |
show_mapno-op | false | true, false | Currently does nothing. The attribute is accepted but never read, so setting it has no effect on the output. |
Generated from the same definition that drives the plugin's Shortcodes tab, and checked against the plugin code on every build.
Common mistakes
"It shows nothing."
Your service area has no zip codes. With zips and no cities it lists the zips; with no zips it renders nothing for visitors, and a notice for logged-in editors.
"I set show_map and no map appeared."
show_map currently does nothing. The attribute is accepted but never read. It is documented so you know it is a no-op rather than concluding you used it wrong.
Display top featured before/after photos as stacked cards. Best for embedding in an existing page.
Where it goes. A section inside an existing page, usually the home page.
[haulhq_gallery limit="6"]Copy this to get started
Set it up
- 1Feature some job photo pairs first -- see Photos & your gallery.
- 2Paste
[haulhq_gallery]into a section of an existing page. - 3Set
heading="none"if your page already has its own heading.
Attributes
| Attribute | Default | Values | What it does |
|---|---|---|---|
width | empty | blank, wide, full, content | How wide this block renders on a block theme. Blank uses the sensible default for this shortcode; "content" keeps it at your theme's text width; "wide" and "full" use your theme's wide and full widths. Ignored by classic themes and page builders, which have no such widths. |
limit | 6 | Number | Max photos to show |
heading | empty | Any text, or none / false | Custom heading text. Leave blank for your gallery title; set to "none" or "false" to render no heading at all, for when the page already has one. |
Generated from the same definition that drives the plugin's Shortcodes tab, and checked against the plugin code on every build.
Common mistakes
"The gallery is empty even though my crew takes photos."
Photos have to be labelled, paired and featured. An unpaired photo never reaches the gallery.
"There are two headings stacked on top of each other."
Set heading="none" and let the page supply its own.
Display all featured before/after photos as stacked cards. Best for a dedicated gallery page.
Where it goes. A dedicated gallery / past-projects page.
[haulhq_gallery_page columns="3"]Copy this to get started
Set it up
- 1Create a dedicated page -- "Our Work", "Past Projects".
- 2Paste
[haulhq_gallery_page]. - 3Set
columnsto suit your theme.
Attributes
| Attribute | Default | Values | What it does |
|---|---|---|---|
columns | 3 | 2-4 | Number of grid columns |
heading | empty | Any text, or none / false | Custom heading text. Leave blank for your gallery title; set to "none" or "false" to render no heading at all, for when the page already has one. |
counter | true | true, false | Show the "N projects" count above the gallery |
Generated from the same definition that drives the plugin's Shortcodes tab, and checked against the plugin code on every build.
Common mistakes
"Which gallery shortcode do I want?"
This one for a whole page of work; haulhq_gallery for a handful of photos inside an existing page.