Index: /traceify/trunk/admin/class-trcfy-admin.php
===================================================================
--- /traceify/trunk/admin/class-trcfy-admin.php	(revision 3758166)
+++ /traceify/trunk/admin/class-trcfy-admin.php	(revision 3758167)
@@ -28,4 +28,9 @@
 		add_action( 'add_meta_boxes', array( $this, 'add_order_meta_box' ) );
 
+		// Order detail page — Estimated Delivery override meta box.
+		// `woocommerce_process_shop_order_meta` fires for both HPOS and legacy order screens.
+		add_action( 'add_meta_boxes',                    array( $this, 'add_edd_meta_box' ) );
+		add_action( 'woocommerce_process_shop_order_meta', array( $this, 'save_edd_override' ), 20, 2 );
+
 		// Settings link on plugins page.
 		add_filter( 'plugin_action_links_' . TRCFY_BASENAME, array( $this, 'add_plugin_action_links' ) );
@@ -37,5 +42,5 @@
 		// Show a red dot badge on the menu item until the user visits settings.
 		$show_badge = ( '1' !== get_option( 'trcfy_settings_visited', '0' ) );
-		$menu_label = __( 'Traceify', 'traceify' );
+		$menu_label = __( 'Traceify', 'traceify-for-woocommerce' );
 		if ( $show_badge ) {
 			$menu_label .= ' <span class="trcfy-menu-badge"></span>';
@@ -44,5 +49,5 @@
 		add_submenu_page(
 			'woocommerce',
-			__( 'Traceify Settings', 'traceify' ),
+			__( 'Traceify Settings', 'traceify-for-woocommerce' ),
 			$menu_label,
 			'manage_woocommerce',
@@ -69,5 +74,5 @@
 	public function render_settings_page() {
 		if ( ! current_user_can( 'manage_woocommerce' ) ) {
-			wp_die( esc_html__( 'You do not have permission to access this page.', 'traceify' ) );
+			wp_die( esc_html__( 'You do not have permission to access this page.', 'traceify-for-woocommerce' ) );
 		}
 		require_once TRCFY_PATH . 'admin/views/settings-page.php';
@@ -97,4 +102,9 @@
 			'trcfy_edd_max_ship_days',
 			'trcfy_edd_exclude_weekends',
+			// Shipment tracking.
+			'trcfy_shipment_enabled',
+			'trcfy_shipment_auto_shipped',
+			'trcfy_custom_courier_name',
+			'trcfy_custom_courier_url',
 			// Email notifications.
 			'trcfy_email_enabled',
@@ -130,4 +140,8 @@
 			'trcfy_edd_enabled'           => array( $this, 'sanitize_checkbox' ),
 			'trcfy_edd_exclude_weekends'  => array( $this, 'sanitize_checkbox' ),
+			// Shipment tracking.
+			'trcfy_shipment_enabled'           => array( $this, 'sanitize_checkbox' ),
+			'trcfy_shipment_auto_shipped'      => array( $this, 'sanitize_checkbox' ),
+			'trcfy_custom_courier_url'         => array( 'TRCFY_Shipment_Tracking', 'sanitize_url_template' ),
 			// Email toggles.
 			'trcfy_email_enabled'              => array( $this, 'sanitize_checkbox' ),
@@ -164,4 +178,10 @@
 				$this->get_badge_inline_css()
 			);
+		}
+
+		// Order-screen meta box styles (tiny; only on order edit screens).
+		$screen = get_current_screen();
+		if ( $screen && ( 'shop_order' === $screen->post_type || 'woocommerce_page_wc-orders' === $screen->id ) ) {
+			wp_add_inline_style( 'wp-admin', '.trcfy-edd-input{width:100%;margin-bottom:8px}' );
 		}
 
@@ -221,5 +241,5 @@
 			if ( 'order_status' === $key ) {
 				$new['trcfy_whatsapp'] = '<span class="trcfy-col-icon" title="' .
-					esc_attr__( 'WhatsApp', 'traceify' ) . '">💬</span>';
+					esc_attr__( 'WhatsApp', 'traceify-for-woocommerce' ) . '">💬</span>';
 			}
 		}
@@ -242,5 +262,5 @@
 		$wa_number = get_option( 'trcfy_wa_number', '' );
 		if ( ! $wa_number ) {
-			echo '<span title="' . esc_attr__( 'Set your WhatsApp number in WooCommerce → Order Tracker.', 'traceify' ) . '">—</span>';
+			echo '<span title="' . esc_attr__( 'Set your WhatsApp number in WooCommerce → Traceify.', 'traceify-for-woocommerce' ) . '">—</span>';
 			return;
 		}
@@ -254,9 +274,9 @@
 				'<a href="%s" target="_blank" rel="noopener noreferrer" class="trcfy-wa-btn" title="%s %s">📲</a>',
 				esc_url( $wa_link ),
-				esc_attr__( 'Send WhatsApp to', 'traceify' ),
+				esc_attr__( 'Send WhatsApp to', 'traceify-for-woocommerce' ),
 				esc_attr( $customer_phone )
 			);
 		} else {
-			echo '<span title="' . esc_attr__( 'No billing phone on this order.', 'traceify' ) . '">—</span>';
+			echo '<span title="' . esc_attr__( 'No billing phone on this order.', 'traceify-for-woocommerce' ) . '">—</span>';
 		}
 	}
@@ -269,5 +289,5 @@
 			add_meta_box(
 				'trcfy-whatsapp-box',
-				__( 'WhatsApp Update', 'traceify' ),
+				__( 'WhatsApp Update', 'traceify-for-woocommerce' ),
 				array( $this, 'render_order_meta_box' ),
 				$screen,
@@ -303,7 +323,7 @@
 					printf(
 						/* translators: %s = link to settings */
-						esc_html__( 'Add your WhatsApp number in %s to enable this feature.', 'traceify' ),
+						esc_html__( 'Add your WhatsApp number in %s to enable this feature.', 'traceify-for-woocommerce' ),
 						'<a href="' . esc_url( admin_url( 'admin.php?page=traceify-for-woocommerce' ) ) . '">' .
-							esc_html__( 'Traceify Settings', 'traceify' ) .
+							esc_html__( 'Traceify Settings', 'traceify-for-woocommerce' ) .
 						'</a>'
 					);
@@ -311,10 +331,10 @@
 				</p>
 			<?php elseif ( ! $customer_phone ) : ?>
-				<p class="trcfy-notice"><?php esc_html_e( 'No billing phone number on this order.', 'traceify' ); ?></p>
+				<p class="trcfy-notice"><?php esc_html_e( 'No billing phone number on this order.', 'traceify-for-woocommerce' ); ?></p>
 			<?php else : ?>
-				<p class="trcfy-label"><?php esc_html_e( 'Customer Phone:', 'traceify' ); ?>
+				<p class="trcfy-label"><?php esc_html_e( 'Customer Phone:', 'traceify-for-woocommerce' ); ?>
 					<strong><?php echo esc_html( $customer_phone ); ?></strong>
 				</p>
-				<p class="trcfy-label"><?php esc_html_e( 'Preview message:', 'traceify' ); ?></p>
+				<p class="trcfy-label"><?php esc_html_e( 'Preview message:', 'traceify-for-woocommerce' ); ?></p>
 				<p class="trcfy-preview"><?php echo esc_html( $message ); ?></p>
 				<a href="<?php echo esc_url( $wa_link ); ?>"
@@ -322,8 +342,8 @@
 				   rel="noopener noreferrer"
 				   class="button button-primary trcfy-send-btn">
-					📲 <?php esc_html_e( 'Send WhatsApp Update', 'traceify' ); ?>
+					📲 <?php esc_html_e( 'Send WhatsApp Update', 'traceify-for-woocommerce' ); ?>
 				</a>
 				<p class="trcfy-help">
-					<?php esc_html_e( 'Opens WhatsApp on your device with the message pre-filled.', 'traceify' ); ?>
+					<?php esc_html_e( 'Opens WhatsApp on your device with the message pre-filled.', 'traceify-for-woocommerce' ); ?>
 				</p>
 			<?php endif; ?>
@@ -339,5 +359,5 @@
 			add_meta_box(
 				'trcfy-edd-box',
-				__( 'Estimated Delivery', 'traceify' ),
+				__( 'Estimated Delivery', 'traceify-for-woocommerce' ),
 				array( $this, 'render_edd_meta_box' ),
 				$screen,
@@ -357,14 +377,14 @@
 		}
 
-		$min = esc_attr( $order->get_meta( '_trcfy_edd_min' ) );
-		$max = esc_attr( $order->get_meta( '_trcfy_edd_max' ) );
+		$min = $order->get_meta( '_trcfy_edd_min' );
+		$max = $order->get_meta( '_trcfy_edd_max' );
 		wp_nonce_field( 'trcfy_edd_override', 'trcfy_edd_override_nonce' );
 		?>
 		<div class="trcfy-meta-box">
-			<p class="trcfy-label"><?php esc_html_e( 'Min delivery date:', 'traceify' ); ?></p>
-			<input type="date" name="trcfy_edd_min" value="<?php echo esc_attr( $min ); ?>" style="width:100%;margin-bottom:8px;">
-			<p class="trcfy-label"><?php esc_html_e( 'Max delivery date:', 'traceify' ); ?></p>
-			<input type="date" name="trcfy_edd_max" value="<?php echo esc_attr( $max ); ?>" style="width:100%;margin-bottom:8px;">
-			<p class="trcfy-help"><?php esc_html_e( 'Override the auto-calculated dates shown to the customer on the tracking page.', 'traceify' ); ?></p>
+			<p class="trcfy-label"><?php esc_html_e( 'Min delivery date:', 'traceify-for-woocommerce' ); ?></p>
+			<input type="date" name="trcfy_edd_min" class="trcfy-edd-input" value="<?php echo esc_attr( $min ); ?>">
+			<p class="trcfy-label"><?php esc_html_e( 'Max delivery date:', 'traceify-for-woocommerce' ); ?></p>
+			<input type="date" name="trcfy_edd_max" class="trcfy-edd-input" value="<?php echo esc_attr( $max ); ?>">
+			<p class="trcfy-help"><?php esc_html_e( 'Override the auto-calculated dates shown to the customer on the tracking page.', 'traceify-for-woocommerce' ); ?></p>
 		</div>
 		<?php
@@ -378,15 +398,9 @@
 	}
 
-	public function save_edd_override_hpos( $and_taxes, $order ) {
-		if ( $order instanceof WC_Order ) {
-			TRCFY_Delivery_Estimator::save_admin_override( $order->get_id(), $order );
-		}
-	}
-
 	// ── Plugin action links ───────────────────────────────────────────────
 
 	public function add_plugin_action_links( $links ) {
 		$settings_link = '<a href="' . esc_url( admin_url( 'admin.php?page=traceify-for-woocommerce' ) ) . '">'
-			. esc_html__( 'Settings', 'traceify' ) . '</a>';
+			. esc_html__( 'Settings', 'traceify-for-woocommerce' ) . '</a>';
 		array_unshift( $links, $settings_link );
 		return $links;
Index: /traceify/trunk/admin/views/settings-page.php
===================================================================
--- /traceify/trunk/admin/views/settings-page.php	(revision 3758166)
+++ /traceify/trunk/admin/views/settings-page.php	(revision 3758167)
@@ -15,4 +15,5 @@
 	'whatsapp' => array( 'label' => 'WhatsApp',             'group' => 'MESSAGING',      'desc' => 'WhatsApp number and message templates.',         'icon' => '<path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413z"/><path d="M12 0C5.373 0 0 5.373 0 12c0 2.124.558 4.122 1.533 5.854L0 24l6.335-1.51A11.945 11.945 0 0012 24c6.627 0 12-5.373 12-12S18.627 0 12 0zm0 21.818a9.818 9.818 0 01-5.006-1.368l-.36-.213-3.76.896.951-3.657-.234-.376A9.817 9.817 0 012.182 12C2.182 6.582 6.582 2.182 12 2.182c5.418 0 9.818 4.4 9.818 9.818 0 5.418-4.4 9.818-9.818 9.818z"/>' ),
 	'tracking'  => array( 'label' => 'Tracking Page',       'group' => 'TRACKING',       'desc' => 'Configure the customer-facing tracking page.',   'icon' => '<path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>' ),
+	'shipment'  => array( 'label' => 'Shipment Tracking',   'group' => 'TRACKING',       'desc' => 'Courier and tracking number for each order.',    'icon' => '<path d="M20 8h-3V4H3c-1.1 0-2 .9-2 2v11h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-3-4zM6 18.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm13.5-9l1.96 2.5H17V9.5h2.5zm-1.5 9c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"/>' ),
 	'delivery'  => array( 'label' => 'Estimated Delivery',  'group' => 'TRACKING',       'desc' => 'Auto-calculate delivery date ranges.',          'icon' => '<path d="M19 4h-1V2h-2v2H8V2H6v2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V10h14v10zm0-12H5V6h14v2zM9 14H7v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2zm-8 4H7v-2h2v2zm4 4h-2v-2h2v2zm4 0h-2v-2h2v2z"/>' ),
 	'emails'    => array( 'label' => 'Email Notifications', 'group' => 'NOTIFICATIONS',  'desc' => 'Branded email alerts on order status changes.', 'icon' => '<path d="M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/>' ),
@@ -70,5 +71,5 @@
     <div id="trcfy-saved-notice" style="display:none;align-items:center;gap:8px;background:#D1FAE5;border:1px solid #A7F3D0;color:#065F46;padding:10px 20px;font-size:13px;font-weight:500;">
       <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>
-      <?php esc_html_e( 'Settings saved.', 'traceify' ); ?>
+      <?php esc_html_e( 'Settings saved.', 'traceify-for-woocommerce' ); ?>
     </div>
 
@@ -80,5 +81,5 @@
       </div>
       <button type="submit" form="trcfy-settings-form" class="trcfy-save-btn">
-        <?php esc_html_e( 'Save changes', 'traceify' ); ?>
+        <?php esc_html_e( 'Save changes', 'traceify-for-woocommerce' ); ?>
       </button>
     </div>
@@ -94,10 +95,10 @@
           <div class="trcfy-card-header">
             <div class="trcfy-card-dot"></div>
-            <h3><?php esc_html_e( 'BRANDING', 'traceify' ); ?></h3>
-          </div>
-          <div class="trcfy-row">
-            <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Store name', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Used in WhatsApp and email message templates.', 'traceify' ); ?></span>
+            <h3><?php esc_html_e( 'BRANDING', 'traceify-for-woocommerce' ); ?></h3>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Store name', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Used in WhatsApp and email message templates.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control">
@@ -108,6 +109,6 @@
           <div class="trcfy-row">
             <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Brand color', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Applied to the tracking page timeline, buttons and focus states.', 'traceify' ); ?></span>
+              <strong><?php esc_html_e( 'Brand color', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Applied to the tracking page timeline, buttons and focus states.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control">
@@ -126,6 +127,6 @@
           <div class="trcfy-row">
             <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Logo URL', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Shown at the top of the customer tracking page. Optional.', 'traceify' ); ?></span>
+              <strong><?php esc_html_e( 'Logo URL', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Shown at the top of the customer tracking page. Optional.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control">
@@ -143,13 +144,13 @@
           <div class="trcfy-card-header">
             <div class="trcfy-card-dot" style="background:#25D366"></div>
-            <h3><?php esc_html_e( 'CONFIGURATION', 'traceify' ); ?></h3>
+            <h3><?php esc_html_e( 'CONFIGURATION', 'traceify-for-woocommerce' ); ?></h3>
           </div>
           <div class="trcfy-info">
-            <?php esc_html_e( 'Uses WhatsApp\'s free wa.me link — no API or monthly fee. Clicking opens WhatsApp on your device with the message pre-filled.', 'traceify' ); ?>
-          </div>
-          <div class="trcfy-row">
-            <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Business number', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Country code + digits only. e.g. 8801712345678', 'traceify' ); ?></span>
+            <?php esc_html_e( 'Uses WhatsApp\'s free wa.me link — no API or monthly fee. Clicking opens WhatsApp on your device with the message pre-filled.', 'traceify-for-woocommerce' ); ?>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Business number', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Country code + digits only. e.g. 8801712345678', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control">
@@ -161,6 +162,6 @@
           <div class="trcfy-row">
             <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Customer contact button', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Show a "Chat on WhatsApp" button on the tracking page.', 'traceify' ); ?></span>
+              <strong><?php esc_html_e( 'Customer contact button', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Show a "Chat on WhatsApp" button on the tracking page.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control">
@@ -174,10 +175,10 @@
           <div class="trcfy-row">
             <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Button label', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Text shown on the customer-facing WhatsApp button.', 'traceify' ); ?></span>
+              <strong><?php esc_html_e( 'Button label', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Text shown on the customer-facing WhatsApp button.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control">
               <input type="text" name="trcfy_wa_customer_btn_label" class="trcfy-input trcfy-input-wide"
-                value="<?php echo esc_attr( get_option( 'trcfy_wa_customer_btn_label', __( 'Chat with us on WhatsApp', 'traceify' ) ) ); ?>">
+                value="<?php echo esc_attr( get_option( 'trcfy_wa_customer_btn_label', __( 'Chat with us on WhatsApp', 'traceify-for-woocommerce' ) ) ); ?>">
             </div>
           </div>
@@ -187,18 +188,18 @@
           <div class="trcfy-card-header">
             <div class="trcfy-card-dot" style="background:#25D366"></div>
-            <h3><?php esc_html_e( 'MESSAGE TEMPLATES', 'traceify' ); ?></h3>
+            <h3><?php esc_html_e( 'MESSAGE TEMPLATES', 'traceify-for-woocommerce' ); ?></h3>
           </div>
           <div class="trcfy-placeholder">
-            <?php esc_html_e( 'Placeholders:', 'traceify' ); ?>
-            {customer_name} &nbsp; {order_number} &nbsp; {order_status} &nbsp; {order_total} &nbsp; {store_name} &nbsp; {tracking_url}
+            <?php esc_html_e( 'Placeholders:', 'traceify-for-woocommerce' ); ?>
+            {customer_name} &nbsp; {order_number} &nbsp; {order_status} &nbsp; {order_total} &nbsp; {store_name} &nbsp; {tracking_url} &nbsp; {tracking_number} &nbsp; {tracking_link} &nbsp; {courier_name}
           </div>
           <?php
           $trcfy_wa_statuses = array(
-            'pending'    => __( 'Pending Payment', 'traceify' ),
-            'processing' => __( 'Processing', 'traceify' ),
-            'on-hold'    => __( 'On Hold', 'traceify' ),
-            'shipped'    => __( 'Shipped', 'traceify' ),
-            'completed'  => __( 'Completed / Delivered', 'traceify' ),
-            'cancelled'  => __( 'Cancelled', 'traceify' ),
+            'pending'    => __( 'Pending Payment', 'traceify-for-woocommerce' ),
+            'processing' => __( 'Processing', 'traceify-for-woocommerce' ),
+            'on-hold'    => __( 'On Hold', 'traceify-for-woocommerce' ),
+            'shipped'    => __( 'Shipped', 'traceify-for-woocommerce' ),
+            'completed'  => __( 'Completed / Delivered', 'traceify-for-woocommerce' ),
+            'cancelled'  => __( 'Cancelled', 'traceify-for-woocommerce' ),
           );
           foreach ( $trcfy_wa_statuses as $trcfy_s_key => $trcfy_s_label ) :
@@ -224,14 +225,14 @@
           <div class="trcfy-card-header">
             <div class="trcfy-card-dot" style="background:#0EA5E9"></div>
-            <h3><?php esc_html_e( 'PAGE SETUP', 'traceify' ); ?></h3>
-          </div>
-          <div class="trcfy-row">
-            <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Tracking page', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'The page containing the [traceify_tracker] shortcode.', 'traceify' ); ?></span>
+            <h3><?php esc_html_e( 'PAGE SETUP', 'traceify-for-woocommerce' ); ?></h3>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Tracking page', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'The page containing the [traceify_tracker] shortcode.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control" style="gap:10px;display:flex;align-items:center;">
               <select name="trcfy_tracking_page_id" class="trcfy-select">
-                <option value=""><?php esc_html_e( '— Select —', 'traceify' ); ?></option>
+                <option value=""><?php esc_html_e( '— Select —', 'traceify-for-woocommerce' ); ?></option>
                 <?php foreach ( $trcfy_pages as $trcfy_p ) : ?>
                   <option value="<?php echo absint( $trcfy_p->ID ); ?>"
@@ -245,5 +246,5 @@
                    rel="noopener noreferrer"
                    style="font-size:12px;color:#7C3AED;text-decoration:none;">
-                  <?php esc_html_e( 'View ↗', 'traceify' ); ?>
+                  <?php esc_html_e( 'View ↗', 'traceify-for-woocommerce' ); ?>
                 </a>
               <?php endif; ?>
@@ -252,13 +253,79 @@
           <div class="trcfy-row">
             <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Shortcode', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Add to any page or post to embed the tracking form.', 'traceify' ); ?></span>
-            </div>
-            <div class="trcfy-row-control">
-              <div class="trcfy-shortcode-pill" title="<?php esc_attr_e( 'Click to copy', 'traceify' ); ?>">
+              <strong><?php esc_html_e( 'Shortcode', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Add to any page or post to embed the tracking form.', 'traceify-for-woocommerce' ); ?></span>
+            </div>
+            <div class="trcfy-row-control">
+              <div class="trcfy-shortcode-pill" title="<?php esc_attr_e( 'Click to copy', 'traceify-for-woocommerce' ); ?>">
                 <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>
                 <code>[traceify_tracker]</code>
-                <span class="trcfy-copied">✓ <?php esc_html_e( 'Copied', 'traceify' ); ?></span>
+                <span class="trcfy-copied">✓ <?php esc_html_e( 'Copied', 'traceify-for-woocommerce' ); ?></span>
               </div>
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <!-- ══ SHIPMENT TRACKING ══ -->
+      <div class="trcfy-section-body<?php echo ( 'shipment' === $trcfy_active ) ? ' active' : ''; ?>" id="section-shipment">
+        <div class="trcfy-card">
+          <div class="trcfy-card-header">
+            <div class="trcfy-card-dot" style="background:#3B82F6"></div>
+            <h3><?php esc_html_e( 'SHIPMENT TRACKING', 'traceify-for-woocommerce' ); ?></h3>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Enable shipment tracking', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Adds a courier + tracking number box to every order and shows it to customers.', 'traceify-for-woocommerce' ); ?></span>
+            </div>
+            <div class="trcfy-row-control">
+              <label class="trcfy-toggle">
+                <input type="checkbox" name="trcfy_shipment_enabled" value="yes"
+                  <?php checked( 'yes', get_option( 'trcfy_shipment_enabled', 'yes' ) ); ?>>
+                <span class="trcfy-toggle-track"></span>
+              </label>
+            </div>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Auto-mark as Shipped', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'When a tracking number is first added to a Processing order, change its status to Shipped.', 'traceify-for-woocommerce' ); ?></span>
+            </div>
+            <div class="trcfy-row-control">
+              <label class="trcfy-toggle">
+                <input type="checkbox" name="trcfy_shipment_auto_shipped" value="yes"
+                  <?php checked( 'yes', get_option( 'trcfy_shipment_auto_shipped', 'no' ) ); ?>>
+                <span class="trcfy-toggle-track"></span>
+              </label>
+            </div>
+          </div>
+        </div>
+        <div class="trcfy-card">
+          <div class="trcfy-card-header">
+            <div class="trcfy-card-dot" style="background:#8B5CF6"></div>
+            <h3><?php esc_html_e( 'CUSTOM COURIER', 'traceify-for-woocommerce' ); ?></h3>
+          </div>
+          <div class="trcfy-placeholder">
+            <?php esc_html_e( 'Use {tracking_number} in the URL where the number goes, e.g. https://example.com/track?id={tracking_number}', 'traceify-for-woocommerce' ); ?>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Courier name', 'traceify-for-woocommerce' ); ?></strong>
+            </div>
+            <div class="trcfy-row-control">
+              <input type="text" name="trcfy_custom_courier_name" class="trcfy-input trcfy-input-wide"
+                value="<?php echo esc_attr( get_option( 'trcfy_custom_courier_name', '' ) ); ?>"
+                placeholder="<?php esc_attr_e( 'e.g. Pathao', 'traceify-for-woocommerce' ); ?>">
+            </div>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Tracking URL', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Must start with https://', 'traceify-for-woocommerce' ); ?></span>
+            </div>
+            <div class="trcfy-row-control">
+              <input type="text" name="trcfy_custom_courier_url" class="trcfy-input trcfy-input-wide"
+                value="<?php echo esc_attr( get_option( 'trcfy_custom_courier_url', '' ) ); ?>"
+                placeholder="https://">
             </div>
           </div>
@@ -271,10 +338,10 @@
           <div class="trcfy-card-header">
             <div class="trcfy-card-dot" style="background:#F59E0B"></div>
-            <h3><?php esc_html_e( 'DELIVERY ESTIMATE', 'traceify' ); ?></h3>
-          </div>
-          <div class="trcfy-row">
-            <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Enable estimated delivery', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Auto-calculate and show delivery date range on the tracking page.', 'traceify' ); ?></span>
+            <h3><?php esc_html_e( 'DELIVERY ESTIMATE', 'traceify-for-woocommerce' ); ?></h3>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Enable estimated delivery', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Auto-calculate and show delivery date range on the tracking page.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control">
@@ -288,6 +355,6 @@
           <div class="trcfy-row">
             <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Processing time', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Days to prepare the order before dispatch.', 'traceify' ); ?></span>
+              <strong><?php esc_html_e( 'Processing time', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Days to prepare the order before dispatch.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control">
@@ -295,11 +362,11 @@
                 min="0" max="30"
                 value="<?php echo absint( get_option( 'trcfy_edd_processing_days', 1 ) ); ?>">
-              <span style="font-size:12px;color:#94A3B8;margin-left:8px;"><?php esc_html_e( 'days', 'traceify' ); ?></span>
-            </div>
-          </div>
-          <div class="trcfy-row">
-            <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Shipping days range', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Min and max days in transit after dispatch.', 'traceify' ); ?></span>
+              <span style="font-size:12px;color:#94A3B8;margin-left:8px;"><?php esc_html_e( 'days', 'traceify-for-woocommerce' ); ?></span>
+            </div>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Shipping days range', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Min and max days in transit after dispatch.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control" style="gap:8px;display:flex;align-items:center;">
@@ -307,15 +374,15 @@
                 min="1" max="60"
                 value="<?php echo absint( get_option( 'trcfy_edd_min_ship_days', 2 ) ); ?>">
-              <span style="font-size:12px;color:#94A3B8;"><?php esc_html_e( 'to', 'traceify' ); ?></span>
+              <span style="font-size:12px;color:#94A3B8;"><?php esc_html_e( 'to', 'traceify-for-woocommerce' ); ?></span>
               <input type="number" name="trcfy_edd_max_ship_days" class="trcfy-number-input"
                 min="1" max="60"
                 value="<?php echo absint( get_option( 'trcfy_edd_max_ship_days', 5 ) ); ?>">
-              <span style="font-size:12px;color:#94A3B8;"><?php esc_html_e( 'days', 'traceify' ); ?></span>
-            </div>
-          </div>
-          <div class="trcfy-row">
-            <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Exclude weekends', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Skip Saturday and Sunday when counting delivery days.', 'traceify' ); ?></span>
+              <span style="font-size:12px;color:#94A3B8;"><?php esc_html_e( 'days', 'traceify-for-woocommerce' ); ?></span>
+            </div>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Exclude weekends', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Skip Saturday and Sunday when counting delivery days.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control">
@@ -335,13 +402,13 @@
           <div class="trcfy-card-header">
             <div class="trcfy-card-dot" style="background:#EC4899"></div>
-            <h3><?php esc_html_e( 'EMAIL SETTINGS', 'traceify' ); ?></h3>
+            <h3><?php esc_html_e( 'EMAIL SETTINGS', 'traceify-for-woocommerce' ); ?></h3>
           </div>
           <div class="trcfy-info">
-            <?php esc_html_e( '"Shipped" is ON by default — WooCommerce has no built-in shipped email. Other statuses are OFF to avoid duplicating WC\'s default emails.', 'traceify' ); ?>
-          </div>
-          <div class="trcfy-row">
-            <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Enable email notifications', 'traceify' ); ?></strong>
-              <span><?php esc_html_e( 'Master toggle for all Traceify branded emails.', 'traceify' ); ?></span>
+            <?php esc_html_e( '"Shipped" is ON by default — WooCommerce has no built-in shipped email. Other statuses are OFF to avoid duplicating WC\'s default emails.', 'traceify-for-woocommerce' ); ?>
+          </div>
+          <div class="trcfy-row">
+            <div class="trcfy-row-label">
+              <strong><?php esc_html_e( 'Enable email notifications', 'traceify-for-woocommerce' ); ?></strong>
+              <span><?php esc_html_e( 'Master toggle for all Traceify branded emails.', 'traceify-for-woocommerce' ); ?></span>
             </div>
             <div class="trcfy-row-control">
@@ -357,9 +424,9 @@
         <?php
         $trcfy_email_statuses = array(
-          'shipped'    => array( 'label' => 'Shipped',    'on' => 'yes', 'note' => __( 'Recommended ON — no WC default.', 'traceify' ) ),
-          'processing' => array( 'label' => 'Processing', 'on' => 'no',  'note' => __( 'WC already sends this.', 'traceify' ) ),
-          'completed'  => array( 'label' => 'Completed',  'on' => 'no',  'note' => __( 'WC already sends this.', 'traceify' ) ),
-          'on-hold'    => array( 'label' => 'On Hold',    'on' => 'no',  'note' => __( 'WC already sends this.', 'traceify' ) ),
-          'cancelled'  => array( 'label' => 'Cancelled',  'on' => 'no',  'note' => __( 'WC already sends this.', 'traceify' ) ),
+          'shipped'    => array( 'label' => 'Shipped',    'on' => 'yes', 'note' => __( 'Recommended ON — no WC default.', 'traceify-for-woocommerce' ) ),
+          'processing' => array( 'label' => 'Processing', 'on' => 'no',  'note' => __( 'WC already sends this.', 'traceify-for-woocommerce' ) ),
+          'completed'  => array( 'label' => 'Completed',  'on' => 'no',  'note' => __( 'WC already sends this.', 'traceify-for-woocommerce' ) ),
+          'on-hold'    => array( 'label' => 'On Hold',    'on' => 'no',  'note' => __( 'WC already sends this.', 'traceify-for-woocommerce' ) ),
+          'cancelled'  => array( 'label' => 'Cancelled',  'on' => 'no',  'note' => __( 'WC already sends this.', 'traceify-for-woocommerce' ) ),
         );
         $trcfy_default_subjects = TRCFY_Email_Notifier::default_subjects();
@@ -378,10 +445,10 @@
             </div>
             <span class="trcfy-tag <?php echo ( 'yes' === $trcfy_is_enabled ) ? 'trcfy-tag-on' : 'trcfy-tag-off'; ?>">
-              <?php echo ( 'yes' === $trcfy_is_enabled ) ? esc_html__( 'ON', 'traceify' ) : esc_html__( 'OFF', 'traceify' ); ?>
+              <?php echo ( 'yes' === $trcfy_is_enabled ) ? esc_html__( 'ON', 'traceify-for-woocommerce' ) : esc_html__( 'OFF', 'traceify-for-woocommerce' ); ?>
             </span>
           </div>
           <div class="trcfy-row">
             <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Send email', 'traceify' ); ?></strong>
+              <strong><?php esc_html_e( 'Send email', 'traceify-for-woocommerce' ); ?></strong>
               <span><?php echo esc_html( $trcfy_s_info['note'] ); ?></span>
             </div>
@@ -396,5 +463,5 @@
           <div class="trcfy-row trcfy-row-full">
             <div class="trcfy-row-label">
-              <strong><?php esc_html_e( 'Email subject', 'traceify' ); ?></strong>
+              <strong><?php esc_html_e( 'Email subject', 'traceify-for-woocommerce' ); ?></strong>
             </div>
             <div class="trcfy-row-control">
Index: /traceify/trunk/assets/css/public.css
===================================================================
--- /traceify/trunk/assets/css/public.css	(revision 3758166)
+++ /traceify/trunk/assets/css/public.css	(revision 3758167)
@@ -1,3 +1,3 @@
-/* WC Order Tracker — Public Styles */
+/* Traceify — Public Styles */
 :root {
   --trcfy-brand:       #7C3AED;
@@ -330,2 +330,11 @@
 .trcfy-edd-date  { font-size: 17px; font-weight: 700; color: var(--trcfy-text); }
 .trcfy-edd-remaining { font-size: 12px; color: var(--trcfy-brand); font-weight: 500; }
+
+/* ── Shipment tracking ── */
+.trcfy-ship-card { border-left: 4px solid var(--trcfy-brand); padding: 16px 20px; }
+.trcfy-ship-card .trcfy-edd-inner { flex-wrap: wrap; }
+.trcfy-ship-number { word-break: break-all; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
+.trcfy-ship-btn { margin-left: auto; text-decoration: none; }
+@media (max-width: 520px) {
+  .trcfy-ship-btn { margin-left: 0; width: 100%; text-align: center; justify-content: center; }
+}
Index: /traceify/trunk/assets/js/public.js
===================================================================
--- /traceify/trunk/assets/js/public.js	(revision 3758166)
+++ /traceify/trunk/assets/js/public.js	(revision 3758167)
@@ -1,3 +1,3 @@
-/* WC Order Tracker — Frontend JS (vanilla, no dependencies) */
+/* Traceify — Frontend JS (vanilla, no dependencies) */
 (function () {
   'use strict';
Index: /traceify/trunk/includes/class-trcfy-core.php
===================================================================
--- /traceify/trunk/includes/class-trcfy-core.php	(revision 3758166)
+++ /traceify/trunk/includes/class-trcfy-core.php	(revision 3758167)
@@ -14,4 +14,6 @@
 	public function init() {
 		// Init new feature classes (always, not just admin).
+		TRCFY_Order_Status::init();
+		TRCFY_Shipment_Tracking::init();
 		TRCFY_Delivery_Estimator::init();
 		TRCFY_Email_Notifier::init();
Index: /traceify/trunk/includes/class-trcfy-delivery-estimator.php
===================================================================
--- /traceify/trunk/includes/class-trcfy-delivery-estimator.php	(revision 3758166)
+++ /traceify/trunk/includes/class-trcfy-delivery-estimator.php	(revision 3758167)
@@ -156,9 +156,9 @@
 			if ( $diff > 0 ) {
 				/* translators: %d = number of days */
-				$days_remaining = sprintf( _n( '%d day remaining', '%d days remaining', $diff, 'traceify' ), $diff );
+				$days_remaining = sprintf( _n( '%d day remaining', '%d days remaining', $diff, 'traceify-for-woocommerce' ), $diff );
 			} elseif ( 0 === $diff ) {
-				$days_remaining = __( 'Expected today!', 'traceify' );
+				$days_remaining = __( 'Expected today!', 'traceify-for-woocommerce' );
 			} else {
-				$days_remaining = __( 'Expected to have arrived', 'traceify' );
+				$days_remaining = __( 'Expected to have arrived', 'traceify-for-woocommerce' );
 			}
 		}
@@ -188,13 +188,21 @@
 		}
 
-		if ( isset( $_POST['trcfy_edd_min'] ) ) {
-			$min = sanitize_text_field( wp_unslash( $_POST['trcfy_edd_min'] ) );
-			$order->update_meta_data( '_trcfy_edd_min', $min );
-		}
-		if ( isset( $_POST['trcfy_edd_max'] ) ) {
-			$max = sanitize_text_field( wp_unslash( $_POST['trcfy_edd_max'] ) );
-			$order->update_meta_data( '_trcfy_edd_max', $max );
-		}
-		$order->save();
+		// Accept only empty or a valid Y-m-d date; anything else is ignored.
+		$changed = false;
+		foreach ( array( 'min', 'max' ) as $bound ) {
+			$field = 'trcfy_edd_' . $bound;
+			if ( ! isset( $_POST[ $field ] ) ) {
+				continue;
+			}
+			$value = sanitize_text_field( wp_unslash( $_POST[ $field ] ) );
+			if ( '' !== $value && ! preg_match( '/^\d{4}-\d{2}-\d{2}$/', $value ) ) {
+				continue;
+			}
+			$order->update_meta_data( '_trcfy_edd_' . $bound, $value );
+			$changed = true;
+		}
+		if ( $changed ) {
+			$order->save();
+		}
 	}
 }
Index: /traceify/trunk/includes/class-trcfy-email-notifier.php
===================================================================
--- /traceify/trunk/includes/class-trcfy-email-notifier.php	(revision 3758166)
+++ /traceify/trunk/includes/class-trcfy-email-notifier.php	(revision 3758167)
@@ -89,13 +89,13 @@
 	private static function get_subject( WC_Order $order, $status ) {
 		$defaults = array(
-			'processing' => __( 'Your order #{order_number} is being processed', 'traceify' ),
-			'on-hold'    => __( 'Your order #{order_number} is on hold', 'traceify' ),
-			'shipped'    => __( 'Great news! Your order #{order_number} has been shipped 🚚', 'traceify' ),
-			'completed'  => __( 'Your order #{order_number} has been delivered ✅', 'traceify' ),
-			'cancelled'  => __( 'Your order #{order_number} has been cancelled', 'traceify' ),
+			'processing' => __( 'Your order #{order_number} is being processed', 'traceify-for-woocommerce' ),
+			'on-hold'    => __( 'Your order #{order_number} is on hold', 'traceify-for-woocommerce' ),
+			'shipped'    => __( 'Great news! Your order #{order_number} has been shipped 🚚', 'traceify-for-woocommerce' ),
+			'completed'  => __( 'Your order #{order_number} has been delivered ✅', 'traceify-for-woocommerce' ),
+			'cancelled'  => __( 'Your order #{order_number} has been cancelled', 'traceify-for-woocommerce' ),
 		);
 		$template = get_option(
 			'trcfy_email_subject_' . $status,
-			isset( $defaults[ $status ] ) ? $defaults[ $status ] : __( 'Your order has been updated', 'traceify' )
+			isset( $defaults[ $status ] ) ? $defaults[ $status ] : __( 'Your order has been updated', 'traceify-for-woocommerce' )
 		);
 		return TRCFY_WhatsApp::replace_placeholders( $template, $order );
@@ -135,6 +135,19 @@
 			$edd = TRCFY_Delivery_Estimator::get_formatted( $order );
 			if ( $edd ) {
-				$edd_line = '<p style="background:#F0FDF4;border-left:4px solid #22C55E;padding:10px 14px;border-radius:0 6px 6px 0;margin:20px 0;font-size:14px;color:#166534;">📅 <strong>' . esc_html__( 'Estimated Delivery:', 'traceify' ) . '</strong> ' . esc_html( $edd ) . '</p>';
+				$edd_line = '<p style="background:#F0FDF4;border-left:4px solid #22C55E;padding:10px 14px;border-radius:0 6px 6px 0;margin:20px 0;font-size:14px;color:#166534;">📅 <strong>' . esc_html__( 'Estimated Delivery:', 'traceify-for-woocommerce' ) . '</strong> ' . esc_html( $edd ) . '</p>';
 			}
+		}
+
+		// Shipment tracking line.
+		$shipment_line = '';
+		$shipment      = TRCFY_Shipment_Tracking::get_data( $order );
+		if ( $shipment['available'] ) {
+			$shipment_line = '<p style="background:#F5F3FF;border-left:4px solid ' . esc_attr( $brand_color ) . ';padding:10px 14px;border-radius:0 6px 6px 0;margin:20px 0;font-size:14px;color:#374151;">🚚 <strong>'
+				. esc_html( $shipment['courier'] ? $shipment['courier'] : __( 'Tracking number', 'traceify-for-woocommerce' ) ) . ':</strong> '
+				. esc_html( $shipment['number'] );
+			if ( $shipment['url'] ) {
+				$shipment_line .= ' &nbsp;<a href="' . esc_url( $shipment['url'] ) . '" target="_blank" rel="noopener noreferrer" style="color:' . esc_attr( $brand_color ) . ';font-weight:600;">' . esc_html__( 'Track shipment', 'traceify-for-woocommerce' ) . ' →</a>';
+			}
+			$shipment_line .= '</p>';
 		}
 
@@ -167,9 +180,9 @@
 	public static function default_subjects() {
 		return array(
-			'processing' => __( 'Your order #{order_number} is being processed', 'traceify' ),
-			'on-hold'    => __( 'Your order #{order_number} is on hold', 'traceify' ),
-			'shipped'    => __( 'Great news! Your order #{order_number} has been shipped 🚚', 'traceify' ),
-			'completed'  => __( 'Your order #{order_number} has been delivered ✅', 'traceify' ),
-			'cancelled'  => __( 'Your order #{order_number} has been cancelled', 'traceify' ),
+			'processing' => __( 'Your order #{order_number} is being processed', 'traceify-for-woocommerce' ),
+			'on-hold'    => __( 'Your order #{order_number} is on hold', 'traceify-for-woocommerce' ),
+			'shipped'    => __( 'Great news! Your order #{order_number} has been shipped 🚚', 'traceify-for-woocommerce' ),
+			'completed'  => __( 'Your order #{order_number} has been delivered ✅', 'traceify-for-woocommerce' ),
+			'cancelled'  => __( 'Your order #{order_number} has been cancelled', 'traceify-for-woocommerce' ),
 		);
 	}
Index: /traceify/trunk/includes/class-trcfy-installer.php
===================================================================
--- /traceify/trunk/includes/class-trcfy-installer.php	(revision 3758166)
+++ /traceify/trunk/includes/class-trcfy-installer.php	(revision 3758167)
@@ -31,5 +31,5 @@
 
 		$page_id = wp_insert_post( array(
-			'post_title'     => __( 'Track Your Order', 'traceify' ),
+			'post_title'     => __( 'Track Your Order', 'traceify-for-woocommerce' ),
 			'post_content'   => '<!-- wp:shortcode -->[traceify_tracker]<!-- /wp:shortcode -->',
 			'post_status'    => 'publish',
@@ -59,11 +59,11 @@
 			'trcfy_wa_number'            => '',
 			'trcfy_wa_show_customer_btn' => 'yes',
-			'trcfy_wa_customer_btn_label'=> __( 'Chat with us on WhatsApp', 'traceify' ),
-			'trcfy_wa_msg_pending'       => __( 'Hi {customer_name}, we received your order #{order_number}. We\'ll start processing it shortly. Thank you for shopping with {store_name}! 🛍️', 'traceify' ),
-			'trcfy_wa_msg_processing'    => __( 'Hi {customer_name}, great news! Your order #{order_number} is now being processed and will be dispatched soon. — {store_name}', 'traceify' ),
-			'trcfy_wa_msg_on-hold'       => __( 'Hi {customer_name}, your order #{order_number} is on hold. Please contact us for more details. — {store_name}', 'traceify' ),
-			'trcfy_wa_msg_shipped'       => __( 'Hi {customer_name}, your order #{order_number} has been shipped and is on its way! 🚚 — {store_name}', 'traceify' ),
-			'trcfy_wa_msg_completed'     => __( 'Hi {customer_name}, your order #{order_number} has been delivered. We hope you love it! 💜 — {store_name}', 'traceify' ),
-			'trcfy_wa_msg_cancelled'     => __( 'Hi {customer_name}, your order #{order_number} has been cancelled. Contact us if this was a mistake. — {store_name}', 'traceify' ),
+			'trcfy_wa_customer_btn_label'=> __( 'Chat with us on WhatsApp', 'traceify-for-woocommerce' ),
+			'trcfy_wa_msg_pending'       => __( 'Hi {customer_name}, we received your order #{order_number}. We\'ll start processing it shortly. Thank you for shopping with {store_name}! 🛍️', 'traceify-for-woocommerce' ),
+			'trcfy_wa_msg_processing'    => __( 'Hi {customer_name}, great news! Your order #{order_number} is now being processed and will be dispatched soon. — {store_name}', 'traceify-for-woocommerce' ),
+			'trcfy_wa_msg_on-hold'       => __( 'Hi {customer_name}, your order #{order_number} is on hold. Please contact us for more details. — {store_name}', 'traceify-for-woocommerce' ),
+			'trcfy_wa_msg_shipped'       => __( 'Hi {customer_name}, your order #{order_number} has been shipped and is on its way! 🚚 — {store_name}', 'traceify-for-woocommerce' ),
+			'trcfy_wa_msg_completed'     => __( 'Hi {customer_name}, your order #{order_number} has been delivered. We hope you love it! 💜 — {store_name}', 'traceify-for-woocommerce' ),
+			'trcfy_wa_msg_cancelled'     => __( 'Hi {customer_name}, your order #{order_number} has been cancelled. Contact us if this was a mistake. — {store_name}', 'traceify-for-woocommerce' ),
 			// Estimated Delivery Date.
 			'trcfy_edd_enabled'          => 'yes',
@@ -72,4 +72,9 @@
 			'trcfy_edd_max_ship_days'    => '5',
 			'trcfy_edd_exclude_weekends' => 'yes',
+			// Shipment tracking.
+			'trcfy_shipment_enabled'      => 'yes',
+			'trcfy_shipment_auto_shipped' => 'no',
+			'trcfy_custom_courier_name'   => '',
+			'trcfy_custom_courier_url'    => '',
 			// Email notifications.
 			'trcfy_email_enabled'            => 'yes',
Index: /traceify/trunk/includes/class-trcfy-order-status.php
===================================================================
--- /traceify/trunk/includes/class-trcfy-order-status.php	(revision 3758167)
+++ /traceify/trunk/includes/class-trcfy-order-status.php	(revision 3758167)
@@ -0,0 +1,73 @@
+<?php
+if ( ! defined( 'ABSPATH' ) ) { exit; }
+
+/**
+ * @package Traceify_For_WooCommerce
+ */
+
+/**
+ * Class TRCFY_Order_Status
+ * Registers a "Shipped" order status (wc-shipped) so the Shipped timeline step,
+ * WhatsApp template and Shipped email work out of the box.
+ *
+ * If another plugin already registers `wc-shipped`, Traceify steps aside and
+ * uses that one.
+ */
+class TRCFY_Order_Status {
+
+	/** Register hooks. */
+	public static function init() {
+		add_action( 'init', array( __CLASS__, 'register_status' ), 20 );
+		add_filter( 'wc_order_statuses', array( __CLASS__, 'add_to_status_list' ), 20 );
+	}
+
+	/** Register the post status unless another plugin already did. */
+	public static function register_status() {
+		if ( get_post_status_object( 'wc-shipped' ) ) {
+			return;
+		}
+
+		register_post_status(
+			'wc-shipped',
+			array(
+				'label'                     => _x( 'Shipped', 'Order status', 'traceify-for-woocommerce' ),
+				'public'                    => false,
+				'exclude_from_search'       => false,
+				'show_in_admin_all_list'    => true,
+				'show_in_admin_status_list' => true,
+				/* translators: %s = number of orders */
+				'label_count'               => _n_noop(
+					'Shipped <span class="count">(%s)</span>',
+					'Shipped <span class="count">(%s)</span>',
+					'traceify-for-woocommerce'
+				),
+			)
+		);
+	}
+
+	/**
+	 * Add "Shipped" to WooCommerce's status list, right after Processing.
+	 *
+	 * @param  array $statuses Order statuses keyed by slug.
+	 * @return array
+	 */
+	public static function add_to_status_list( $statuses ) {
+		if ( isset( $statuses['wc-shipped'] ) ) {
+			return $statuses;
+		}
+
+		$new = array();
+		foreach ( $statuses as $key => $label ) {
+			$new[ $key ] = $label;
+			if ( 'wc-processing' === $key ) {
+				$new['wc-shipped'] = _x( 'Shipped', 'Order status', 'traceify-for-woocommerce' );
+			}
+		}
+
+		// Processing missing for any reason — append instead of losing the status.
+		if ( ! isset( $new['wc-shipped'] ) ) {
+			$new['wc-shipped'] = _x( 'Shipped', 'Order status', 'traceify-for-woocommerce' );
+		}
+		return $new;
+	}
+}
Index: /traceify/trunk/includes/class-trcfy-order-tracker.php
===================================================================
--- /traceify/trunk/includes/class-trcfy-order-tracker.php	(revision 3758166)
+++ /traceify/trunk/includes/class-trcfy-order-tracker.php	(revision 3758167)
@@ -55,8 +55,8 @@
 
 		$steps = array(
-			array( 'key' => 'placed',     'label' => __( 'Order Placed',  'traceify' ), 'icon' => '🛍️' ),
-			array( 'key' => 'processing', 'label' => __( 'Processing',    'traceify' ), 'icon' => '⚙️' ),
-			array( 'key' => 'shipped',    'label' => __( 'Shipped',       'traceify' ), 'icon' => '🚚' ),
-			array( 'key' => 'delivered',  'label' => __( 'Delivered',     'traceify' ), 'icon' => '✅' ),
+			array( 'key' => 'placed',     'label' => __( 'Order Placed',  'traceify-for-woocommerce' ), 'icon' => '🛍️' ),
+			array( 'key' => 'processing', 'label' => __( 'Processing',    'traceify-for-woocommerce' ), 'icon' => '⚙️' ),
+			array( 'key' => 'shipped',    'label' => __( 'Shipped',       'traceify-for-woocommerce' ), 'icon' => '🚚' ),
+			array( 'key' => 'delivered',  'label' => __( 'Delivered',     'traceify-for-woocommerce' ), 'icon' => '✅' ),
 		);
 
@@ -100,7 +100,7 @@
 	private static function get_special_status_timeline( $status ) {
 		$labels = array(
-			'cancelled' => array( 'label' => __( 'Order Cancelled', 'traceify' ), 'icon' => '❌' ),
-			'refunded'  => array( 'label' => __( 'Order Refunded',  'traceify' ), 'icon' => '↩️' ),
-			'failed'    => array( 'label' => __( 'Payment Failed',  'traceify' ), 'icon' => '⚠️' ),
+			'cancelled' => array( 'label' => __( 'Order Cancelled', 'traceify-for-woocommerce' ), 'icon' => '❌' ),
+			'refunded'  => array( 'label' => __( 'Order Refunded',  'traceify-for-woocommerce' ), 'icon' => '↩️' ),
+			'failed'    => array( 'label' => __( 'Payment Failed',  'traceify-for-woocommerce' ), 'icon' => '⚠️' ),
 		);
 		$info = $labels[ $status ];
@@ -152,4 +152,5 @@
 			'timeline'        => self::get_timeline( $order ),
 			'edd'             => TRCFY_Delivery_Estimator::get_data( $order ),
+			'shipment'        => TRCFY_Shipment_Tracking::get_data( $order ),
 		);
 	}
Index: /traceify/trunk/includes/class-trcfy-shipment-tracking.php
===================================================================
--- /traceify/trunk/includes/class-trcfy-shipment-tracking.php	(revision 3758167)
+++ /traceify/trunk/includes/class-trcfy-shipment-tracking.php	(revision 3758167)
@@ -0,0 +1,257 @@
+<?php
+if ( ! defined( 'ABSPATH' ) ) { exit; }
+
+/**
+ * @package Traceify_For_WooCommerce
+ */
+
+/**
+ * Class TRCFY_Shipment_Tracking
+ * Stores a courier + tracking number per order and builds the courier tracking link.
+ * Shown on the tracking page, in emails and via WhatsApp placeholders.
+ */
+class TRCFY_Shipment_Tracking {
+
+	const META_COURIER = '_trcfy_courier';
+	const META_NUMBER  = '_trcfy_tracking_number';
+
+	/** Orders whose tracking number was just added (used for the optional auto-Shipped step). */
+	private static $just_added = array();
+
+	/** Register hooks. */
+	public static function init() {
+		if ( ! self::is_enabled() ) {
+			return;
+		}
+		if ( is_admin() ) {
+			add_action( 'add_meta_boxes', array( __CLASS__, 'add_meta_box' ) );
+			// Priority 30: store the tracking data BEFORE WooCommerce saves the order status (priority 40),
+			// so a status email sent on that change already contains the tracking number.
+			add_action( 'woocommerce_process_shop_order_meta', array( __CLASS__, 'save' ), 30, 2 );
+			// Priority 60: optional auto-Shipped runs AFTER WooCommerce saved the status dropdown.
+			add_action( 'woocommerce_process_shop_order_meta', array( __CLASS__, 'maybe_mark_shipped' ), 60, 2 );
+		}
+	}
+
+	/** Is the feature turned on? */
+	public static function is_enabled() {
+		return 'yes' === get_option( 'trcfy_shipment_enabled', 'yes' );
+	}
+
+	// ── Couriers ──────────────────────────────────────────────────────────
+
+	/**
+	 * Courier list. `url` may contain {tracking_number}; without it the URL is
+	 * used as-is (courier landing page where the customer pastes the number).
+	 *
+	 * @return array key => array( 'name' => string, 'url' => string )
+	 */
+	public static function get_couriers() {
+		$couriers = array(
+			'dhl'       => array( 'name' => 'DHL',       'url' => 'https://www.dhl.com/en/express/tracking.html?AWB={tracking_number}&brand=DHL' ),
+			'fedex'     => array( 'name' => 'FedEx',     'url' => 'https://www.fedex.com/apps/fedextrack/?action=track&trackingnumber={tracking_number}' ),
+			'ups'       => array( 'name' => 'UPS',       'url' => 'https://www.ups.com/track?loc=en_US&tracknum={tracking_number}' ),
+			'usps'      => array( 'name' => 'USPS',      'url' => 'https://tools.usps.com/go/TrackConfirmAction_input?qtc_tLabels1={tracking_number}' ),
+			'steadfast' => array( 'name' => 'Steadfast', 'url' => 'https://steadfast.com.bd/track/consignment' ),
+		);
+
+		$custom_name = sanitize_text_field( get_option( 'trcfy_custom_courier_name', '' ) );
+		$custom_url  = self::sanitize_url_template( get_option( 'trcfy_custom_courier_url', '' ) );
+		if ( $custom_name && $custom_url ) {
+			$couriers['custom'] = array( 'name' => $custom_name, 'url' => $custom_url );
+		}
+
+		/**
+		 * Filter the courier list.
+		 *
+		 * @param array $couriers key => array( 'name' => string, 'url' => string )
+		 */
+		$couriers = apply_filters( 'trcfy_couriers', $couriers );
+
+		$clean = array();
+		foreach ( (array) $couriers as $key => $courier ) {
+			if ( is_array( $courier ) && ! empty( $courier['name'] ) && ! empty( $courier['url'] ) ) {
+				$clean[ sanitize_key( $key ) ] = array(
+					'name' => (string) $courier['name'],
+					'url'  => (string) $courier['url'],
+				);
+			}
+		}
+		return $clean;
+	}
+
+	/**
+	 * Sanitizer for a URL template. esc_url_raw() would strip the { } characters,
+	 * so only check the scheme and keep the placeholder.
+	 *
+	 * @param  string $value
+	 * @return string
+	 */
+	public static function sanitize_url_template( $value ) {
+		$value = trim( sanitize_text_field( (string) $value ) );
+		return preg_match( '#^https?://#i', $value ) ? $value : '';
+	}
+
+	/**
+	 * Build the tracking URL for a courier + number.
+	 *
+	 * @param  string $courier_key
+	 * @param  string $number
+	 * @return string Empty string if no valid URL can be built.
+	 */
+	public static function build_url( $courier_key, $number ) {
+		$couriers = self::get_couriers();
+		if ( ! isset( $couriers[ $courier_key ] ) ) {
+			return '';
+		}
+		$url = str_replace( '{tracking_number}', rawurlencode( $number ), $couriers[ $courier_key ]['url'] );
+		return esc_url_raw( $url );
+	}
+
+	/**
+	 * Shipment data for display (tracking page, email, WhatsApp).
+	 *
+	 * @param  WC_Order $order
+	 * @return array    available, courier, number, url
+	 */
+	public static function get_data( WC_Order $order ) {
+		$empty = array( 'available' => false, 'courier' => '', 'number' => '', 'url' => '' );
+		if ( ! self::is_enabled() ) {
+			return $empty;
+		}
+
+		$number = trim( (string) $order->get_meta( self::META_NUMBER ) );
+		if ( '' === $number ) {
+			return $empty;
+		}
+
+		$key      = (string) $order->get_meta( self::META_COURIER );
+		$couriers = self::get_couriers();
+
+		return array(
+			'available' => true,
+			'courier'   => isset( $couriers[ $key ] ) ? $couriers[ $key ]['name'] : '',
+			'number'    => $number,
+			'url'       => self::build_url( $key, $number ),
+		);
+	}
+
+	// ── Order edit screen ─────────────────────────────────────────────────
+
+	public static function add_meta_box() {
+		foreach ( array( 'shop_order', 'woocommerce_page_wc-orders' ) as $screen ) {
+			add_meta_box(
+				'trcfy-shipment-box',
+				__( 'Shipment Tracking', 'traceify-for-woocommerce' ),
+				array( __CLASS__, 'render_meta_box' ),
+				$screen,
+				'side',
+				'default'
+			);
+		}
+	}
+
+	public static function render_meta_box( $post_or_order ) {
+		$order = ( $post_or_order instanceof WC_Order )
+			? $post_or_order
+			: wc_get_order( absint( $post_or_order->ID ) );
+		if ( ! $order ) {
+			return;
+		}
+
+		$saved_courier = (string) $order->get_meta( self::META_COURIER );
+		$data          = self::get_data( $order );
+		wp_nonce_field( 'trcfy_shipment', 'trcfy_shipment_nonce' );
+		?>
+		<div class="trcfy-meta-box">
+			<p class="trcfy-label"><label for="trcfy_courier"><?php esc_html_e( 'Courier:', 'traceify-for-woocommerce' ); ?></label></p>
+			<select name="trcfy_courier" id="trcfy_courier" class="trcfy-edd-input">
+				<option value=""><?php esc_html_e( '— Select courier —', 'traceify-for-woocommerce' ); ?></option>
+				<?php foreach ( self::get_couriers() as $key => $courier ) : ?>
+					<option value="<?php echo esc_attr( $key ); ?>" <?php selected( $saved_courier, $key ); ?>>
+						<?php echo esc_html( $courier['name'] ); ?>
+					</option>
+				<?php endforeach; ?>
+			</select>
+			<p class="trcfy-label"><label for="trcfy_tracking_number"><?php esc_html_e( 'Tracking number:', 'traceify-for-woocommerce' ); ?></label></p>
+			<input type="text" name="trcfy_tracking_number" id="trcfy_tracking_number" class="trcfy-edd-input"
+				maxlength="100" value="<?php echo esc_attr( $data['number'] ); ?>">
+			<?php if ( $data['url'] ) : ?>
+				<p>
+					<a href="<?php echo esc_url( $data['url'] ); ?>" target="_blank" rel="noopener noreferrer">
+						<?php esc_html_e( 'Open courier tracking ↗', 'traceify-for-woocommerce' ); ?>
+					</a>
+				</p>
+			<?php endif; ?>
+			<p class="trcfy-help"><?php esc_html_e( 'Shown to the customer on the tracking page, in emails and WhatsApp messages. Click Update to save.', 'traceify-for-woocommerce' ); ?></p>
+		</div>
+		<?php
+	}
+
+	/**
+	 * Save courier + tracking number from the order screen.
+	 *
+	 * @param int                $order_id
+	 * @param WP_Post|WC_Order   $post_or_order
+	 */
+	public static function save( $order_id, $post_or_order = null ) {
+		if ( ! isset( $_POST['trcfy_shipment_nonce'] ) ) {
+			return;
+		}
+		if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['trcfy_shipment_nonce'] ) ), 'trcfy_shipment' ) ) {
+			return;
+		}
+		if ( ! current_user_can( 'manage_woocommerce' ) ) {
+			return;
+		}
+
+		$order = wc_get_order( absint( $order_id ) );
+		if ( ! $order ) {
+			return;
+		}
+
+		$courier = isset( $_POST['trcfy_courier'] ) ? sanitize_key( wp_unslash( $_POST['trcfy_courier'] ) ) : '';
+		if ( '' !== $courier && ! isset( self::get_couriers()[ $courier ] ) ) {
+			$courier = '';
+		}
+		$number = isset( $_POST['trcfy_tracking_number'] )
+			? mb_substr( sanitize_text_field( wp_unslash( $_POST['trcfy_tracking_number'] ) ), 0, 100 )
+			: '';
+
+		$previous = trim( (string) $order->get_meta( self::META_NUMBER ) );
+
+		$order->update_meta_data( self::META_COURIER, $courier );
+		$order->update_meta_data( self::META_NUMBER, $number );
+		$order->save();
+
+		if ( '' === $previous && '' !== $number ) {
+			self::$just_added[ $order->get_id() ] = true;
+		}
+	}
+
+	/**
+	 * Optional: move a Processing order to Shipped when a tracking number is first added.
+	 *
+	 * @param int              $order_id
+	 * @param WP_Post|WC_Order $post_or_order
+	 */
+	public static function maybe_mark_shipped( $order_id, $post_or_order = null ) {
+		$order_id = absint( $order_id );
+		if ( empty( self::$just_added[ $order_id ] ) ) {
+			return;
+		}
+		unset( self::$just_added[ $order_id ] );
+
+		if ( 'yes' !== get_option( 'trcfy_shipment_auto_shipped', 'no' ) ) {
+			return;
+		}
+		if ( ! isset( wc_get_order_statuses()['wc-shipped'] ) ) {
+			return;
+		}
+
+		$order = wc_get_order( $order_id );
+		if ( $order && 'processing' === $order->get_status() ) {
+			$order->update_status( 'shipped', __( 'Tracking number added — order marked as shipped by Traceify.', 'traceify-for-woocommerce' ) );
+		}
+	}
+}
Index: /traceify/trunk/includes/class-trcfy-whatsapp.php
===================================================================
--- /traceify/trunk/includes/class-trcfy-whatsapp.php	(revision 3758166)
+++ /traceify/trunk/includes/class-trcfy-whatsapp.php	(revision 3758167)
@@ -78,9 +78,9 @@
 			$message = sprintf(
 				/* translators: %s = order number */
-				__( 'Hi, I have a question about my order #%s', 'traceify' ),
+				__( 'Hi, I have a question about my order #%s', 'traceify-for-woocommerce' ),
 				$order->get_order_number()
 			);
 		} else {
-			$message = __( 'Hi, I need help with my order.', 'traceify' );
+			$message = __( 'Hi, I need help with my order.', 'traceify-for-woocommerce' );
 		}
 
@@ -93,4 +93,5 @@
 	 * Supported tags: {customer_name} {order_number} {order_status}
 	 *                 {order_total} {store_name} {tracking_url}
+	 *                 {tracking_number} {tracking_link} {courier_name}
 	 *
 	 * @param string   $template
@@ -102,5 +103,10 @@
 		$tracking_url     = $tracking_page_id ? get_permalink( $tracking_page_id ) : site_url();
 
+		$shipment = TRCFY_Shipment_Tracking::get_data( $order );
+
 		$search  = array(
+			'{tracking_number}',
+			'{tracking_link}',
+			'{courier_name}',
 			'{customer_name}',
 			'{order_number}',
@@ -111,4 +117,7 @@
 		);
 		$replace = array(
+			sanitize_text_field( $shipment['number'] ),
+			$shipment['url'],
+			sanitize_text_field( $shipment['courier'] ),
 			sanitize_text_field( $order->get_billing_first_name() ),
 			sanitize_text_field( $order->get_order_number() ),
Index: /traceify/trunk/public/class-trcfy-public.php
===================================================================
--- /traceify/trunk/public/class-trcfy-public.php	(revision 3758166)
+++ /traceify/trunk/public/class-trcfy-public.php	(revision 3758167)
@@ -23,5 +23,5 @@
 
 		// Only load on the tracking page (or wherever the shortcode is used).
-		if ( ! is_page( $tracking_page_id ) && ! $this->current_page_has_shortcode() ) {
+		if ( ! ( $tracking_page_id && is_page( $tracking_page_id ) ) && ! $this->current_page_has_shortcode() ) {
 			return;
 		}
@@ -70,18 +70,19 @@
 		$submitted  = false;
 
-		// Process form submission (GET method, WooCommerce-style).
-		if ( isset( $_GET['trcfy_order_id'], $_GET['trcfy_billing_email'], $_GET['trcfy_nonce'] ) ) {
+		// Process lookup (GET, WooCommerce-style). This is a read-only lookup that
+		// requires order number + matching billing email, so no nonce is used —
+		// a nonce here would break on cached pages and adds no protection.
+		// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only lookup, verified by order number + billing email.
+		if ( isset( $_GET['trcfy_order_id'], $_GET['trcfy_billing_email'] ) ) {
 			$submitted = true;
 
-			if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['trcfy_nonce'] ) ), 'trcfy_track_order' ) ) {
-				$error = __( 'Security check failed. Please try again.', 'traceify' );
-			} else {
-				$order_id = sanitize_text_field( wp_unslash( $_GET['trcfy_order_id'] ) );
-				$email    = sanitize_email( wp_unslash( $_GET['trcfy_billing_email'] ) );
-				$order    = TRCFY_Order_Tracker::get_order( $order_id, $email );
+			// phpcs:ignore WordPress.Security.NonceVerification.Recommended
+			$order_id = sanitize_text_field( wp_unslash( $_GET['trcfy_order_id'] ) );
+			// phpcs:ignore WordPress.Security.NonceVerification.Recommended
+			$email    = sanitize_email( wp_unslash( $_GET['trcfy_billing_email'] ) );
+			$order    = TRCFY_Order_Tracker::get_order( $order_id, $email );
 
-				if ( ! $order ) {
-					$error = __( 'No order found. Please check your order number and billing email and try again.', 'traceify' );
-				}
+			if ( ! $order ) {
+				$error = __( 'No order found. Please check your order number and billing email and try again.', 'traceify-for-woocommerce' );
 			}
 		}
@@ -92,10 +93,9 @@
 			'error'      => $error,
 			'submitted'  => $submitted,
-			'nonce'      => wp_create_nonce( 'trcfy_track_order' ),
 			'logo_url'   => esc_url( get_option( 'trcfy_brand_logo_url', '' ) ),
 			'store_name' => esc_html( get_option( 'trcfy_store_name', get_bloginfo( 'name' ) ) ),
 			'wa_number'  => get_option( 'trcfy_wa_number', '' ),
 			'show_wa_btn'=> 'yes' === get_option( 'trcfy_wa_show_customer_btn', 'yes' ),
-			'wa_btn_label'=> esc_html( get_option( 'trcfy_wa_customer_btn_label', __( 'Chat with us on WhatsApp', 'traceify' ) ) ),
+			'wa_btn_label'=> esc_html( get_option( 'trcfy_wa_customer_btn_label', __( 'Chat with us on WhatsApp', 'traceify-for-woocommerce' ) ) ),
 		);
 
Index: /traceify/trunk/public/views/tracking-page.php
===================================================================
--- /traceify/trunk/public/views/tracking-page.php	(revision 3758166)
+++ /traceify/trunk/public/views/tracking-page.php	(revision 3758167)
@@ -6,6 +6,5 @@
  * Receives $data array from TRCFY_Public::render_shortcode().
  * All dynamic values are already sanitized — escape on output only.
- * Nonce verification for the tracking form is handled in render_shortcode()
- * before this template is loaded; $_GET access here is read-only prefill.
+ * $_GET access here is read-only prefill of the lookup form.
  */
 if ( ! defined( 'ABSPATH' ) ) { exit; }
@@ -21,5 +20,5 @@
 		<?php endif; ?>
 		<h2 class="trcfy-title">
-			<?php esc_html_e( 'Track Your Order', 'traceify' ); ?>
+			<?php esc_html_e( 'Track Your Order', 'traceify-for-woocommerce' ); ?>
 		</h2>
 	</div>
@@ -36,17 +35,16 @@
 
 		<p class="trcfy-search-intro">
-			<?php esc_html_e( 'Enter your order number and billing email address to check your order status.', 'traceify' ); ?>
+			<?php esc_html_e( 'Enter your order number and billing email address to check your order status.', 'traceify-for-woocommerce' ); ?>
 		</p>
 
 		<form method="GET" action="" class="trcfy-form" id="trcfy-tracking-form" novalidate>
-			<input type="hidden" name="trcfy_nonce" value="<?php echo esc_attr( $data['nonce'] ); ?>">
 
 			<div class="trcfy-field">
 				<label for="trcfy_order_id" class="trcfy-label">
-					<?php esc_html_e( 'Order Number', 'traceify' ); ?>
+					<?php esc_html_e( 'Order Number', 'traceify-for-woocommerce' ); ?>
 					<span class="trcfy-required" aria-hidden="true">*</span>
 				</label>
 				<?php
-				// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- nonce verified in render_shortcode(); this is prefill only.
+				// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only prefill of the lookup form.
 				$trcfy_prefill_order_id = isset( $_GET['trcfy_order_id'] ) ? sanitize_text_field( wp_unslash( $_GET['trcfy_order_id'] ) ) : '';
 				?>
@@ -56,5 +54,5 @@
 					class="trcfy-input"
 					inputmode="numeric"
-					placeholder="<?php esc_attr_e( 'e.g. 1234', 'traceify' ); ?>"
+					placeholder="<?php esc_attr_e( 'e.g. 1234', 'traceify-for-woocommerce' ); ?>"
 					value="<?php echo esc_attr( $trcfy_prefill_order_id ); ?>"
 					required
@@ -64,9 +62,9 @@
 			<div class="trcfy-field">
 				<label for="trcfy_billing_email" class="trcfy-label">
-					<?php esc_html_e( 'Billing Email Address', 'traceify' ); ?>
+					<?php esc_html_e( 'Billing Email Address', 'traceify-for-woocommerce' ); ?>
 					<span class="trcfy-required" aria-hidden="true">*</span>
 				</label>
 				<?php
-				// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- nonce verified in render_shortcode(); this is prefill only.
+				// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only prefill of the lookup form.
 				$trcfy_prefill_email = isset( $_GET['trcfy_billing_email'] ) ? sanitize_email( wp_unslash( $_GET['trcfy_billing_email'] ) ) : '';
 				?>
@@ -75,5 +73,5 @@
 					name="trcfy_billing_email"
 					class="trcfy-input"
-					placeholder="<?php esc_attr_e( 'you@example.com', 'traceify' ); ?>"
+					placeholder="<?php esc_attr_e( 'you@example.com', 'traceify-for-woocommerce' ); ?>"
 					value="<?php echo esc_attr( $trcfy_prefill_email ); ?>"
 					required
@@ -83,5 +81,5 @@
 			<button type="submit" class="trcfy-btn trcfy-btn-primary">
 				<span class="trcfy-btn-icon">🔍</span>
-				<?php esc_html_e( 'Track Order', 'traceify' ); ?>
+				<?php esc_html_e( 'Track Order', 'traceify-for-woocommerce' ); ?>
 			</button>
 		</form>
@@ -100,13 +98,13 @@
 		<div class="trcfy-order-meta">
 			<div>
-				<span class="trcfy-meta-label"><?php esc_html_e( 'Order', 'traceify' ); ?></span>
+				<span class="trcfy-meta-label"><?php esc_html_e( 'Order', 'traceify-for-woocommerce' ); ?></span>
 				<span class="trcfy-meta-value">#<?php echo esc_html( $trcfy_d['order_number'] ); ?></span>
 			</div>
 			<div>
-				<span class="trcfy-meta-label"><?php esc_html_e( 'Placed on', 'traceify' ); ?></span>
+				<span class="trcfy-meta-label"><?php esc_html_e( 'Placed on', 'traceify-for-woocommerce' ); ?></span>
 				<span class="trcfy-meta-value"><?php echo esc_html( $trcfy_d['date_created'] ); ?></span>
 			</div>
 			<div>
-				<span class="trcfy-meta-label"><?php esc_html_e( 'Status', 'traceify' ); ?></span>
+				<span class="trcfy-meta-label"><?php esc_html_e( 'Status', 'traceify-for-woocommerce' ); ?></span>
 				<span class="trcfy-status-badge trcfy-status-<?php echo esc_attr( $trcfy_status ); ?>">
 					<?php echo esc_html( $trcfy_d['status_label'] ); ?>
@@ -162,5 +160,5 @@
 			<span class="trcfy-edd-icon" aria-hidden="true">📅</span>
 			<div class="trcfy-edd-content">
-				<span class="trcfy-edd-label"><?php esc_html_e( 'Estimated Delivery', 'traceify' ); ?></span>
+				<span class="trcfy-edd-label"><?php esc_html_e( 'Estimated Delivery', 'traceify-for-woocommerce' ); ?></span>
 				<span class="trcfy-edd-date"><?php echo esc_html( $trcfy_d['edd']['formatted'] ); ?></span>
 				<?php if ( $trcfy_d['edd']['days_remaining'] ) : ?>
@@ -172,7 +170,39 @@
 	<?php endif; ?>
 
+	<!-- ── Shipment tracking ── -->
+	<?php if ( ! $trcfy_is_special && ! empty( $trcfy_d['shipment']['available'] ) ) : ?>
+	<div class="trcfy-card trcfy-ship-card">
+		<div class="trcfy-edd-inner">
+			<span class="trcfy-edd-icon" aria-hidden="true">🚚</span>
+			<div class="trcfy-edd-content">
+				<span class="trcfy-edd-label">
+					<?php
+					echo esc_html(
+						$trcfy_d['shipment']['courier']
+							? sprintf(
+								/* translators: %s = courier name */
+								__( 'Shipped with %s', 'traceify-for-woocommerce' ),
+								$trcfy_d['shipment']['courier']
+							)
+							: __( 'Tracking number', 'traceify-for-woocommerce' )
+					);
+					?>
+				</span>
+				<span class="trcfy-edd-date trcfy-ship-number"><?php echo esc_html( $trcfy_d['shipment']['number'] ); ?></span>
+			</div>
+			<?php if ( $trcfy_d['shipment']['url'] ) : ?>
+				<a href="<?php echo esc_url( $trcfy_d['shipment']['url'] ); ?>"
+					target="_blank" rel="noopener noreferrer"
+					class="trcfy-btn trcfy-btn-primary trcfy-ship-btn">
+					<?php esc_html_e( 'Track shipment', 'traceify-for-woocommerce' ); ?> ↗
+				</a>
+			<?php endif; ?>
+		</div>
+	</div>
+	<?php endif; ?>
+
 	<!-- ── Order items ── -->
 	<div class="trcfy-card trcfy-items-card">
-		<h3 class="trcfy-card-title"><?php esc_html_e( 'Order Summary', 'traceify' ); ?></h3>
+		<h3 class="trcfy-card-title"><?php esc_html_e( 'Order Summary', 'traceify-for-woocommerce' ); ?></h3>
 		<div class="trcfy-items-list">
 			<?php foreach ( $trcfy_d['items'] as $trcfy_item ) : ?>
@@ -191,5 +221,5 @@
 						printf(
 							/* translators: %d = quantity */
-							esc_html__( 'Qty: %d', 'traceify' ),
+							esc_html__( 'Qty: %d', 'traceify-for-woocommerce' ),
 							absint( $trcfy_item['qty'] )
 						);
@@ -204,10 +234,10 @@
 			<?php if ( $trcfy_d['shipping_method'] ) : ?>
 			<div class="trcfy-total-row">
-				<span><?php esc_html_e( 'Shipping', 'traceify' ); ?></span>
+				<span><?php esc_html_e( 'Shipping', 'traceify-for-woocommerce' ); ?></span>
 				<span><?php echo esc_html( $trcfy_d['shipping_method'] ); ?></span>
 			</div>
 			<?php endif; ?>
 			<div class="trcfy-total-row trcfy-total-grand">
-				<span><?php esc_html_e( 'Total', 'traceify' ); ?></span>
+				<span><?php esc_html_e( 'Total', 'traceify-for-woocommerce' ); ?></span>
 				<span><?php echo wp_kses_post( $trcfy_d['total'] ); ?></span>
 			</div>
@@ -218,5 +248,5 @@
 	<?php if ( ! empty( $trcfy_d['notes'] ) ) : ?>
 	<div class="trcfy-card trcfy-notes-card">
-		<h3 class="trcfy-card-title"><?php esc_html_e( 'Order Updates', 'traceify' ); ?></h3>
+		<h3 class="trcfy-card-title"><?php esc_html_e( 'Order Updates', 'traceify-for-woocommerce' ); ?></h3>
 		<?php foreach ( $trcfy_d['notes'] as $trcfy_note ) : ?>
 		<div class="trcfy-note">
@@ -231,5 +261,5 @@
 	<?php if ( $trcfy_d['shipping_address'] ) : ?>
 	<div class="trcfy-card trcfy-address-card">
-		<h3 class="trcfy-card-title"><?php esc_html_e( 'Shipping To', 'traceify' ); ?></h3>
+		<h3 class="trcfy-card-title"><?php esc_html_e( 'Shipping To', 'traceify-for-woocommerce' ); ?></h3>
 		<address class="trcfy-address"><?php echo wp_kses_post( $trcfy_d['shipping_address'] ); ?></address>
 	</div>
@@ -251,7 +281,7 @@
 	<!-- ── Track another ── -->
 	<div class="trcfy-track-another">
-		<a href="<?php echo esc_url( remove_query_arg( array( 'trcfy_order_id', 'trcfy_billing_email', 'trcfy_nonce' ) ) ); ?>"
+		<a href="<?php echo esc_url( remove_query_arg( array( 'trcfy_order_id', 'trcfy_billing_email' ) ) ); ?>"
 		   class="trcfy-link">
-			← <?php esc_html_e( 'Track another order', 'traceify' ); ?>
+			← <?php esc_html_e( 'Track another order', 'traceify-for-woocommerce' ); ?>
 		</a>
 	</div>
Index: /traceify/trunk/readme.txt
===================================================================
--- /traceify/trunk/readme.txt	(revision 3758166)
+++ /traceify/trunk/readme.txt	(revision 3758167)
@@ -1,17 +1,20 @@
 === Traceify – Order Tracking for WooCommerce ===
 Contributors:      webtendhq,devhasib
-Tags:              woocommerce, order tracking, whatsapp, estimated delivery, order status
+Tags:              woocommerce, order tracking, shipment tracking, whatsapp, estimated delivery
 Requires at least: 6.0
 Tested up to:      7.1
 Requires PHP:      7.4
-Stable tag:        1.0.0
+Stable tag:        1.0.1
 License:           GPLv2 or later
 License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 
-Branded order tracking page for WooCommerce with WhatsApp updates, estimated delivery dates, and email notifications — no API or monthly fee.
+Branded order tracking for WooCommerce with courier links, WhatsApp updates, delivery dates and email alerts — no API or monthly fee.
 
 == Description ==
 
 **Traceify** gives your WooCommerce store a professional, branded order-tracking experience — and the tools to proactively keep customers updated via WhatsApp and email.
+
+📖 **[Documentation](https://webtend.net/docs/traceify-doc.html)**
+
 
 = Customer-Facing Features =
@@ -20,4 +23,5 @@
 * **Visual progress timeline** — Order Placed → Processing → Shipped → Delivered
 * **Estimated Delivery Date** — auto-calculated date range shown prominently on the tracking page
+* **Shipment tracking** — courier name, tracking number and a "Track shipment" button that opens the courier's site
 * **Order summary** — items with images, quantities, totals, and shipping address
 * **Customer order notes** — shows notes you have added to the order
@@ -28,8 +32,13 @@
 * **WhatsApp column** on the WooCommerce orders list — one click to send a status update to any customer
 * **WhatsApp meta box** on every order detail page — preview the message then send
+* **Shipment Tracking meta box** — pick a courier and enter the tracking number on any order
 * **Estimated Delivery Date meta box** — manually override the auto-calculated delivery date per order
 * **Branded HTML email notifications** — send beautiful order-status emails on status change
 * **Per-status message templates** for both WhatsApp and email
-* **Template placeholders**: `{customer_name}` `{order_number}` `{order_status}` `{order_total}` `{store_name}` `{tracking_url}`
+* **Template placeholders**: `{customer_name}` `{order_number}` `{order_status}` `{order_total}` `{store_name}` `{tracking_url}` `{tracking_number}` `{tracking_link}` `{courier_name}`
+
+= Shipment Tracking =
+
+Add a courier and tracking number to any order. Built-in couriers: DHL, FedEx, UPS, USPS and Steadfast. Add your own courier (for example Pathao or RedX) under Traceify → Shipment Tracking with a URL such as `https://example.com/track?id={tracking_number}`. The tracking number and link appear on the customer's tracking page, in Traceify emails and in WhatsApp messages. Optionally mark the order as Shipped automatically when a tracking number is first added.
 
 = Estimated Delivery Date =
@@ -50,4 +59,5 @@
 * **WhatsApp** — business number, show/hide customer contact button, per-status message templates
 * **Tracking Page** — page assignment, shortcode reference
+* **Shipment Tracking** — enable/disable, auto-mark as Shipped, custom courier name and tracking URL
 * **Delivery EDD** — processing days, min/max shipping days, weekend exclusion toggle
 * **Email Notifications** — master toggle, per-status on/off, custom subject lines
@@ -86,7 +96,15 @@
 No. By default, only the "Shipped" status email is enabled — WooCommerce has no built-in email for that status. Processing, Completed, Cancelled, and On Hold emails are off by default.
 
+= Can I add a courier that is not in the list? =
+
+Yes. Go to Traceify → Shipment Tracking → Custom Courier and enter a name and a tracking URL containing `{tracking_number}`. Developers can also use the `trcfy_couriers` filter.
+
+= Where does the "Shipped" status come from? =
+
+WooCommerce has no Shipped status. Traceify registers one (`wc-shipped`) only if no other plugin has already done so.
+
 = Is customer data secure? =
 
-Yes. Order lookup requires both the order number and the billing email address, preventing order enumeration. All inputs are sanitized, all outputs are escaped, and forms are nonce-protected.
+Yes. Order lookup requires both the order number and the billing email address, preventing order enumeration. All inputs are sanitized and all outputs are escaped. Admin settings and order actions are capability-checked and nonce-protected.
 
 == Screenshots ==
@@ -104,4 +122,14 @@
 == Changelog ==
 
+= 1.0.1 =
+* New: Shipment tracking — courier + tracking number per order with a "Track shipment" link.
+* New: Built-in couriers (DHL, FedEx, UPS, USPS, Steadfast) plus a custom courier with your own tracking URL.
+* New: Tracking details on the customer tracking page and in branded emails.
+* New: WhatsApp placeholders `{tracking_number}`, `{tracking_link}` and `{courier_name}`.
+* New: Optional "Auto-mark as Shipped" when a tracking number is first added.
+* New: `trcfy_couriers` filter to add or change couriers in code.
+
+
+
 = 1.0.0 — 2026-09-05 =
 * Initial release.
@@ -116,4 +144,8 @@
 == Upgrade Notice ==
 
+= 1.0.1 =
+Adds shipment tracking (courier + tracking number). Review Traceify → Shipment Tracking after updating.
+
+
 = 1.0.0 =
 Initial release.
Index: /traceify/trunk/templates/email-notification.php
===================================================================
--- /traceify/trunk/templates/email-notification.php	(revision 3758166)
+++ /traceify/trunk/templates/email-notification.php	(revision 3758167)
@@ -48,5 +48,5 @@
         printf(
           /* translators: %s = order number */
-          esc_html__( 'Order #%s Update', 'traceify' ),
+          esc_html__( 'Order #%s Update', 'traceify-for-woocommerce' ),
           esc_html( $order->get_order_number() )
         );
@@ -57,5 +57,5 @@
         printf(
           /* translators: %s = customer first name */
-          esc_html__( 'Hi %s, here\'s the latest on your order.', 'traceify' ),
+          esc_html__( 'Hi %s, here\'s the latest on your order.', 'traceify-for-woocommerce' ),
           esc_html( $order->get_billing_first_name() )
         );
@@ -85,16 +85,25 @@
   <?php endif; ?>
 
+  <!-- Shipment tracking block -->
+  <?php if ( ! empty( $shipment_line ) ) : ?>
+  <tr>
+    <td style="padding:0 40px;">
+      <?php echo wp_kses_post( $shipment_line ); ?>
+    </td>
+  </tr>
+  <?php endif; ?>
+
   <!-- Order items -->
   <tr>
     <td style="padding:24px 40px 0;">
       <p style="font-size:13px;font-weight:600;color:#6B7280;text-transform:uppercase;letter-spacing:0.06em;margin:0 0 10px;">
-        <?php esc_html_e( 'Order Summary', 'traceify' ); ?>
+        <?php esc_html_e( 'Order Summary', 'traceify-for-woocommerce' ); ?>
       </p>
       <table width="100%" cellpadding="0" cellspacing="0">
         <thead>
           <tr>
-            <th style="font-size:12px;color:#9CA3AF;font-weight:500;text-align:left;padding-bottom:6px;"><?php esc_html_e( 'Product', 'traceify' ); ?></th>
-            <th style="font-size:12px;color:#9CA3AF;font-weight:500;text-align:right;padding-bottom:6px;"><?php esc_html_e( 'Qty', 'traceify' ); ?></th>
-            <th style="font-size:12px;color:#9CA3AF;font-weight:500;text-align:right;padding-bottom:6px;"><?php esc_html_e( 'Price', 'traceify' ); ?></th>
+            <th style="font-size:12px;color:#9CA3AF;font-weight:500;text-align:left;padding-bottom:6px;"><?php esc_html_e( 'Product', 'traceify-for-woocommerce' ); ?></th>
+            <th style="font-size:12px;color:#9CA3AF;font-weight:500;text-align:right;padding-bottom:6px;"><?php esc_html_e( 'Qty', 'traceify-for-woocommerce' ); ?></th>
+            <th style="font-size:12px;color:#9CA3AF;font-weight:500;text-align:right;padding-bottom:6px;"><?php esc_html_e( 'Price', 'traceify-for-woocommerce' ); ?></th>
           </tr>
         </thead>
@@ -104,5 +113,5 @@
         <tfoot>
           <tr>
-            <td colspan="2" style="padding-top:10px;font-size:15px;font-weight:700;color:#111827;"><?php esc_html_e( 'Total', 'traceify' ); ?></td>
+            <td colspan="2" style="padding-top:10px;font-size:15px;font-weight:700;color:#111827;"><?php esc_html_e( 'Total', 'traceify-for-woocommerce' ); ?></td>
             <td style="padding-top:10px;font-size:15px;font-weight:700;color:#111827;text-align:right;"><?php echo wp_kses_post( $order->get_formatted_order_total() ); ?></td>
           </tr>
@@ -118,5 +127,5 @@
       <a href="<?php echo esc_url( $tracking_url . '?trcfy_order_id=' . $order->get_order_number() ); ?>"
          style="display:inline-block;background:<?php echo esc_attr( $brand_color ); ?>;color:#ffffff;text-decoration:none;font-size:15px;font-weight:600;padding:13px 28px;border-radius:8px;">
-        <?php esc_html_e( 'Track Your Order →', 'traceify' ); ?>
+        <?php esc_html_e( 'Track Your Order →', 'traceify-for-woocommerce' ); ?>
       </a>
     </td>
@@ -131,5 +140,5 @@
         printf(
           /* translators: %s = store name */
-          esc_html__( 'You received this email because you placed an order at %s.', 'traceify' ),
+          esc_html__( 'You received this email because you placed an order at %s.', 'traceify-for-woocommerce' ),
           esc_html( $store_name )
         );
Index: /traceify/trunk/traceify-for-woocommerce.php
===================================================================
--- /traceify/trunk/traceify-for-woocommerce.php	(revision 3758166)
+++ /traceify/trunk/traceify-for-woocommerce.php	(revision 3758167)
@@ -3,14 +3,14 @@
  * Plugin Name:       Traceify – Order Tracking for WooCommerce
  * Plugin URI:        https://webtend.net/
- * Description:       Replace WooCommerce's plain order tracking with a beautiful branded page. Send one-click WhatsApp status updates to customers — no API or monthly fee needed.
- * Version:           1.0.0
+ * Description:       Branded order tracking and shipment tracking for WooCommerce. Add courier tracking numbers and send one-click WhatsApp status updates — no API or monthly fee needed.
+ * Version:           1.0.1
  * Requires at least: 6.0
  * Requires PHP:      7.4
+ * Requires Plugins:  woocommerce
  * Author:            WebTend
  * Author URI:        https://webtend.net/
  * License:           GPL v2 or later
  * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
- * Text Domain:       traceify
- * Domain Path:       /languages
+ * Text Domain:       traceify-for-woocommerce
  * WC requires at least: 7.0
  * WC tested up to:   9.9
@@ -26,5 +26,5 @@
 
 // ── Constants ──────────────────────────────────────────────────────────────
-define( 'TRCFY_VERSION',  '1.0.0' );
+define( 'TRCFY_VERSION',  '1.0.1' );
 define( 'TRCFY_PATH',     plugin_dir_path( __FILE__ ) );
 define( 'TRCFY_URL',      plugin_dir_url( __FILE__ ) );
@@ -42,5 +42,5 @@
 function trcfy_woocommerce_missing_notice() {
 	echo '<div class="notice notice-error"><p>' .
-		esc_html__( 'WC Order Tracker requires WooCommerce to be installed and activated.', 'traceify' ) .
+		esc_html__( 'Traceify requires WooCommerce to be installed and activated.', 'traceify-for-woocommerce' ) .
 		'</p></div>';
 }
@@ -48,6 +48,7 @@
 function trcfy_check_woocommerce() {
 	if ( ! class_exists( 'WooCommerce' ) ) {
+		// Only show a notice. deactivate_plugins() is not loaded on the front end
+		// and would cause a fatal error there.
 		add_action( 'admin_notices', 'trcfy_woocommerce_missing_notice' );
-		deactivate_plugins( TRCFY_BASENAME );
 		return false;
 	}
@@ -60,6 +61,6 @@
 		deactivate_plugins( TRCFY_BASENAME );
 		wp_die(
-			esc_html__( 'WC Order Tracker requires WooCommerce. Please install WooCommerce first.', 'traceify' ),
-			esc_html__( 'Plugin Activation Error', 'traceify' ),
+			esc_html__( 'Traceify requires WooCommerce. Please install WooCommerce first.', 'traceify-for-woocommerce' ),
+			esc_html__( 'Plugin Activation Error', 'traceify-for-woocommerce' ),
 			array( 'back_link' => true )
 		);
@@ -83,4 +84,6 @@
 	require_once TRCFY_PATH . 'includes/class-trcfy-installer.php';
 	require_once TRCFY_PATH . 'includes/class-trcfy-order-tracker.php';
+	require_once TRCFY_PATH . 'includes/class-trcfy-order-status.php';
+	require_once TRCFY_PATH . 'includes/class-trcfy-shipment-tracking.php';
 	require_once TRCFY_PATH . 'includes/class-trcfy-whatsapp.php';
 	require_once TRCFY_PATH . 'includes/class-trcfy-delivery-estimator.php';
