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.

Sector
Logistics: international and domestic shipping rate comparison
Category
WordPress sites
Scope
One live WordPress site, senditworld.com, reviewed from public pages in October 2026

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.

senditworld.com
Send it homepage as captured in October 2026: a header with Register and Login buttons, the heading Send it - The Global Shipping Comparison Site and a row of item icons from Document to Bike.
Send it: homepage A short pitch, then a row of item types (Document, Passport, Boxes, Luggage, Pallets, Sports, Bike) each with a Calculate link, and a headline claim of "Save Up To 80%".
senditworld.com/luggage-shipping/
Send it luggage shipping page as captured in October 2026: a quote form with Ship International and Ship Domestic tabs, send from and deliver to country fields, weight, dimensions and a value field in AED, above a row of courier logos.
Send it: luggage shipping A quote form with Ship International and Ship Domestic tabs, country, weight, size and value fields, and logos for FedEx, DHL, UPS, DPD, SkyNet, Aramex and GLT/Immex.

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.

app.senditworld.com/get-a-quote
Send it app Get a Quote page as captured in October 2026: a picker for Document, Passport, Suitcase, Box, Bicycle and Pallet, International and Domestic tabs, country, size, weight and AED value fields, and a Prohibited items List link.
App: get a quote The app's own quote page. Its send-from label reads "Send from test".
app.senditworld.com/quote
Send it app Packages page as captured in October 2026: courier cards for FedEx, DHL Express and Aramex with With Insurance and Without Insurance buttons, a price in AED, a delivery time range and a Book button, plus Low Price and High Price sort buttons.
App: packages (quote result) A result page reached by submitting a quote, so the link goes to the quote page. Courier cards each show a price in AED.
app.senditworld.com/register
Send it app register page as captured in October 2026: a Welcome panel with first name, last name, email, phone with country code and password fields, and Login and Sign Up buttons.
App: register First name, last name, email, phone with country code and password, with Login and Sign Up buttons.
  1. 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/quote with 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. 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. 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. 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 /quote and /get-a-quote are marked as not needing a login, and /login, /register and /reset-password are 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.

  1. Service landing pages8 item types, one FAQ each
  2. Yoast SEO 27.4title, canonical, Open Graph, schema
  3. Quote form and courier dataGET to app.senditworld.com/quote
  4. Sitemaps and robots.txt4 child sitemaps, all bots allowed
  5. Account and quotes appsingle-page app, robots.txt blocks all
Service pages feed Yoast, which writes the metadata, schema and sitemaps. Visitors then fill in the quote form and move to a separate app, rendered in the browser, for rates, registration, login and orders.
  • 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.php returns 404.

Audit findings

Where the site still has room to improve.

  1. 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.com rather than the live domain. The live and sitemap URLs for these pages are on senditworld.com, so search engines are being told to prefer a different host. This is the most important fix on the list.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. The app is a client-rendered shell

    The raw HTML of app.senditworld.com is 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.xml returns 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.

  8. 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.

  9. 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.

Discuss a build