Case study · WordPress sites
Send it: WordPress, Elementor and technical SEO for a global shipping comparison site
A shipping rate comparison site on WordPress and Elementor: eight service pages, a quote form, a Yoast baseline and an audit of the gaps.
At a glance
- Who it's for
- People and businesses who want to send documents, passports, luggage, boxes, pallets, sports gear or bikes, or arrange a move, and want to compare courier prices before booking. The quote form's default currency is AED.
- Core stack
- WordPress 7.1.3, Elementor 3.27.1 with Elementor Pro, Hello Elementor theme, Yoast SEO 27.4, WPForms, Contact Form 7, JetTabs and a custom plugin called custom-shipment, plus a client-rendered app on a subdomain
- What sets it apart
- One quote form (Ship International or Ship Domestic) repeated on a landing page for each kind of item, with seven courier logos shown. The quote, booking and account steps run in a separate single-page app at app.senditworld.com, which the WordPress pages hand visitors to.
The live site
The homepage and the luggage shipping page with its quote form, captured in October 2026. Each opens the live page.


The challenge
A comparison site does not move parcels itself. It has to convince a visitor, quickly, that it can find a cheaper courier price than going direct, and then get that visitor into a quote. The items vary a lot, from a passport envelope to a pallet to a household move, so each needs its own explanation, rules and wording.
The site also has to say which rates are real. It makes strong promises, and every page has to repeat them clearly while the actual pricing is calculated somewhere else.
What is built
The marketing site runs on WordPress with Elementor. A homepage links to eight service landing pages. Each repeats the same layout: a hero with the quote form, courier logos, short explanation blocks, customer reviews and a short FAQ written for that item.
The form is a plain GET form that sends the visitor to app.senditworld.com/quote. Register, Login and Get A Quote buttons also point to that app, which shows courier results, asks visitors to register or log in, and holds the booking and order screens (see The booking flow below). Yoast SEO writes titles, canonicals, Open Graph tags, schema and the XML sitemaps. The homepage meta description mentions "220+ countries" and "Best rates guaranteed"; these are the site's own claims, not checked here.
Key pages and structure
Counts come from the site's own XML sitemaps and page source, October 2026.
- 01
Service landing pages
Eight pages, one per item type: document, passport, box, luggage, pallet, sports equipment, bike and relocation services. The homepage links to every one of them in its menu and item row.
Pattern:
/box-shipping/. - 02
Quote form
Ship International and Ship Domestic tabs, send-from and deliver-to country fields, a service choice, weight, length, width, height and a value field in AED. The form's fields are sent in the address as a GET request to the app.
Quotes are produced on app.senditworld.com, not on the WordPress site.
- 03
Trust and rules pages
About, FAQ (45 question entries in its markup, one of them a group heading), prohibited items, contact, terms and conditions and privacy policy.
Prohibited items is a short list page, about 2,000 characters of text.
- 04
Blog
A blog page with one post: "Packaging Products Tips for Shipping", dated 11 August 2024. The post sitemap lists that single URL.
- 05
Account area
Register and Login links go to
app.senditworld.com, outside the WordPress site, so those pages are not part of its sitemaps. The sitemaps hold 18 page URLs, 1 post, 1 category and 1 author. No per-country or per-route pages were found.
The booking flow
From a service page to an order. Each step is marked as seen on public pages or as behind a login that was not viewed. Nothing was submitted and no account was created.



1. Quote form on a service page (seen publicly)
The WordPress item pages carry a form with Ship International and Ship Domestic tabs. It is a GET form to
app.senditworld.com/quotewith the fields from, to, weight, length, width, height, value, type and sType. The app also has its own Get a Quote page with the same fields and a picker for Document, Passport, Suitcase, Box, Bicycle and Pallet.2. Packages: the quote results (seen publicly)
The results page is titled Packages. It shows one card per courier (FedEx International Priority, DHL Express Worldwide, Aramex Outbound Express and Timex Express were listed). Each card has a With Insurance and Without Insurance toggle, a price in AED, a delivery time range with a note that it is subject to flight delays, weekends, holidays or customs formalities, and a Book button. The page also has Low Price and High Price sorting and an Edit button for the quote. The screenshot shows the site's own prices in AED; they are not discussed or quoted as results.
3. Account wall: register or log in (seen publicly)
The register page asks for first name, last name, email, phone with a country code and a password, with Login and Sign Up buttons. Both were left untouched.
4. Booking, orders and account screens (behind login, not viewed)
The app's public JavaScript lists routes for booking, order confirmation, order failure, order detail, orders, transactions, addresses, settings and logout, and marks each as needing a signed-in user. Without an account they could not be viewed, so what they show could not be confirmed. The app routes
/quoteand/get-a-quoteare marked as not needing a login, and/login,/registerand/reset-passwordare marked visitor-only.
Technical SEO baseline
What is in place on senditworld.com and its app subdomain, read from the page source, robots.txt, sitemaps and response headers.
- Service landing pages8 item types, one FAQ each
- Yoast SEO 27.4title, canonical, Open Graph, schema
- Quote form and courier dataGET to app.senditworld.com/quote
- Sitemaps and robots.txt4 child sitemaps, all bots allowed
- Account and quotes appsingle-page app, robots.txt blocks all
- Every public page checked has a canonical tag and Open Graph tags, and a robots meta of "index, follow". Yoast writes a graph of WebPage, WebSite (with a search action) and Organization. The homepage, the seven item pages, the relocation page and the FAQ also carry FAQPage markup, and the blog post carries Article markup.
- robots.txt allows all crawlers, blocks only
/wp-content/uploads/wpforms/, and names/sitemap_index.xml. That index lists post, page, category and author sitemaps. - The homepage HTML is about 570 KB before compression and about 55 KB compressed. It has 43 script tags (23 of them external files) and 11 stylesheet links. Unknown URLs return a real 404, plain HTTP and the www host redirect with a 301, and
/wp-login.phpreturns 404.
Audit findings
Where the site still has room to improve.
Staging address in canonicals
The blog page, the blog post, the terms and conditions page and the privacy policy page all have a canonical tag and an Open Graph URL pointing to
staging.senditworld.comrather than the live domain. The live and sitemap URLs for these pages are onsenditworld.com, so search engines are being told to prefer a different host. This is the most important fix on the list.Two H1 headings on most pages
The Hello Elementor theme prints the page name as an H1 in the markup, and Elementor adds a second H1 with the visible heading. On the luggage page that is "Luggage Shipping" and "Luggage Shipping Service", and the same pattern appears on all item pages. On the homepage the only H1 is the text "Home"; it did not show in the captured screenshot, while the visible heading, "Send it - The Global Shipping Comparison Site", is an H2. The H1 should say what the page is about.
Missing meta descriptions
The sports equipment, prohibited items, terms and conditions and blog pages and the blog post have no meta description tag. Their only description is an automatic Open Graph excerpt from page text, such as "Blogs - Send it Search Search". The homepage and other service pages have their own, with titles that differ page to page. The about page title repeats the site tagline.
Repeated copy across service pages
The seven item pages share an introduction, the same five customer reviews, and, like the relocation page, the banner "Found A Cheaper Rate? We'll Match the Price!". Each page does have its own FAQ of five questions. The passport page's meta description and visible heading are written only for UAE to UK shipments.
Claims without a source
The site says "Save Up To 80%", offers to beat any cheaper rate you find, and cites "220+" destinations. No supporting terms, method or date was found beside these claims, and the terms and conditions page does not mention price matching. They are the site's statements and are not endorsed here.
Sitemap includes redirects, and thin content
The page sitemap lists
/our-services/, which redirects with a 301 to the homepage, and/luggage-delivery-service/, which redirects to/luggage-shipping/. Only one blog post exists, dated August 2024, and the post sitemap was last changed that month. There are no per-country or per-route pages.The app is a client-rendered shell
The raw HTML of
app.senditworld.comis a 2 KB shell with the title "Sendit", an empty app container and a notice that it does not work without JavaScript. After JavaScript runs, the get-a-quote page gets the title "Sendit - Get a Quote", so titles are set per route in the browser. No meta description, canonical tag, robots meta or H1 was found in the rendered page; the visible "Get a Quote" heading is an H5. Its robots.txt disallows all crawling, and/sitemap.xmlreturns the app shell, not a sitemap. That suits private account screens, but it means the app's quote pages are not crawlable, so the WordPress pages must carry all the search content.Leftover test label
The app's get-a-quote page shows the field label "Send from test" where the WordPress form says "Send from". It appears in the rendered page and in the screenshot above, and looks like a test label left in.
Images, weight and analytics
Every real image tag has an alt attribute, but 47 of 57 on the homepage have an empty one, so descriptive alt text is thin. Item pages are about 1 MB of HTML each, against 570 KB for the homepage. Analytics is present: a Google Tag Manager container and a gtag tag. A reCAPTCHA script loads, and no Cache-Control header was seen on the homepage response. Elementor Pro assets load at version 3.24.2 while Elementor core is 3.27.1.
Technology stack
Taken from the page source and response headers.
- Platform
- WordPress 7.1.3
- Elementor 3.27.1
- Elementor Pro
- Hello Elementor theme
- JetTabs
- SEO
- Yoast SEO 27.4
- JSON-LD graph
- FAQPage markup
- XML sitemap index
- Forms and quotes
- WPForms
- Contact Form 7
- custom-shipment plugin
- Quote app on a subdomain
- reCAPTCHA
- Tracking and hosting
- Google Tag Manager
- Google tag (gtag)
- Apache 2.4.52 on Ubuntu
- Gzip responses
Business value
What the setup enables. No ranking, traffic or lead numbers are claimed.
- Gives each kind of shipment its own page, form and FAQ, so a search for one item type can land on a page about it.
- Lets a visitor start a quote from any item page without a call, and hands them to an app that calculates rates.
- Shows trust cues at the point of decision: seven courier logos, customer reviews and a prohibited-items list.
- Turns the audit above into a short fix list, starting with the staging canonicals, headings, meta descriptions and the sitemap redirects.
Need SEO and WordPress work like this?
Tell us what the site needs to do and we will scope it with you on a call.