LiveTrackings shipping package logoLiveTrackings
Add to Shopify

Merchant embed widget

Add the free <livetrackings-widget> so shoppers can track parcels on your order confirmation / thank-you page. The widget calls our track API withSmartlinks disabled — embeds are not a CPA gate.

Free embeds work without signup (host quota applies). For higher volume, create an API key atlivetrackings.com/app and pass api-key="lt_live_…".

Quick install

<script src="https://livetrackings.com/widget.js" defer></script>

<livetrackings-widget
  tracking-number="YOUR_TRACKING_NUMBER"
  carrier="auto"
  lang="en"
  theme="light"
></livetrackings-widget>

Attributes: tracking-number (required), carrier (optional hint),lang, theme (light | dark),api-key (optional merchant key from /app).

carrier="auto" lets our resolver detect the courier. Set it to a real carrier slug (for example postnord-spara-paket) if you want the widget to also link to that carrier hub page; with auto the hub link is omitted.

Add returns="off" if you do not want the Shippo affiliate return-label banner shown to your customers. Everything else keeps working.

Shopify

In the Shopify admin go toSettings → Checkout → Order status pageAdditional scripts (or your order status / thank-you customization), then paste:

<script src="https://livetrackings.com/widget.js" defer></script>
{% if order.fulfillments.size > 0 %}
  {% assign tn = order.fulfillments.first.tracking_number %}
  {% if tn != blank %}
    <livetrackings-widget
      tracking-number="{{ tn }}"
      carrier="auto"
      lang="en"
      theme="light"
    ></livetrackings-widget>
  {% endif %}
{% endif %}

Use the real fulfillment tracking number — not the Shopify order number. For multiple fulfillments, loop order.fulfillments and render one widget per tracking ID. Shopify admin UI labels change over time; if Additional scripts moved, use the current order status / thank-you customization entry point for your plan.

WooCommerce (functions.php or a small plugin)

add_action('woocommerce_thankyou', function ($order_id) {
  if (!$order_id) return;
  $order = wc_get_order($order_id);
  if (!$order) return;
  $tracking = $order->get_meta('_tracking_number');
  if (!$tracking) return;
  $lang = substr(get_locale(), 0, 2);
  echo '<script src="https://livetrackings.com/widget.js" defer></script>';
  printf(
    '<livetrackings-widget tracking-number="%s" carrier="auto" lang="%s" theme="light"></livetrackings-widget>',
    esc_attr($tracking),
    esc_attr($lang)
  );
}, 20);

Meta key _tracking_number varies by shipping plugin — adjust to your store’s actual tracking meta field if events do not appear.

What the widget does

  • Fetches status via https://livetrackings.com/api/track with smartlink: false.
  • Renders in a shadow root, so your theme CSS and the widget CSS cannot affect each other.
  • About 6.8 KB (roughly 2.5 KB gzipped), no dependencies and no third-party bundles.
  • Links shoppers to LiveTrackings for the full AI suite (those pages may show partner offers).
  • Shows a prepaid return banner that is a Shippo PartnerStack affiliate link — we may earn a commission if a shopper buys a label.
  • Shows Please Enter a Valid number when the courier returns no scans, so the widget never invents an ETA for a tracking number that does not exist.
  • Provided free and as-is, with no uptime SLA and no support commitment.

Live demo

This is the real production widget calling the live API — paste any tracking number and press Track.