What this is
Tracksies HQ includes a full returns system that lets customers request returns from their account, tracks the whole process from request to refund, and keeps everyone in the loop with automated emails.
Refunds and returns are different things
This is worth being clear about upfront because the two terms get used interchangeably, but they work quite differently in your store.
A refund is money back. It’s a financial action — you return some or all of the payment to the customer. You might issue a refund because an item was damaged, a customer was overcharged, you’re making a goodwill gesture, or a dozen other reasons. Refunds can happen without the customer sending anything back. You’ll find refund controls in Order Hub’s Summary tab, inside the Payment card.
A return is a product coming back. It’s a physical logistics process — the customer sends items back to you, you receive and inspect them, and then decide what happens next (which often includes a refund, but doesn’t have to). Returns involve RMA numbers, ship-back deadlines, and status tracking. You’ll find returns in a dedicated Returns tab in Order Hub, or in the Operations page.
Here’s the key distinction: a refund can happen without a return, and a return can happen without a refund.
| Scenario | Refund? | Return? |
|---|---|---|
| Customer received a damaged item, you refund them and tell them to keep it | Yes | No |
| Customer wants to exchange a shirt for a different size | No (or partial) | Yes |
| Customer returns an item and gets their money back | Yes | Yes |
| You give a discount after a complaint | Yes | No |
| Customer sends back an item but it’s outside the return window and you reject it | No | Yes |
If you only need to give money back (no product coming back), use the refund form in Order Hub’s Summary tab. If a customer is sending something back and you need to track that process, use the returns system described below.
—
Why it matters
Returns are inevitable — but they don’t have to be painful. Without a system in place, returns mean back-and-forth emails, lost paperwork, and unhappy customers wondering if anyone’s actually dealing with their request. It’s a bit like trying to manage RSVPs over text messages — technically possible, but chaotic and easy to lose track of.
With Tracksies Returns, customers request a return directly from their account, you review and approve it, and everyone gets notified automatically at each step. Each return gets a unique RMA number (Return Merchandise Authorisation — a tracking number for the return), so nothing gets lost or mixed up. Professional, transparent, and much less stressful for everyone involved.
Without this set up:
- Customers email you asking how to return something, you email back, they email again… it goes on
- You lose track of which returns are pending, which were approved, and which were actually shipped back
- Refunds get delayed because there’s no system reminding anyone what’s still outstanding
- Customers feel ignored and leave negative reviews
—
Before you start
You’ll need:
- Tracksies HQ installed and activated
- Access to your WordPress dashboard (admin account)
- An idea of what your return policy looks like — how many days, any restocking fees, which products are final sale
- About 10 minutes to configure everything
—
Setting up returns
Step 1: Enable the feature
Like all Tracksies features, returns can be toggled on when you need them.
- Go to Tracksies > Settings > Features in your WordPress sidebar
- Find the Returns toggle on the Woo module tile
- Click the toggle to turn it on — this activates the returns system across your store
That’s the switch. Now you need to tell it how your returns policy works.
—
Step 2: Configure your return policy
- Go to Tracksies > Settings in your WordPress sidebar and find the returns configuration section
- Set your Return Window — this is how many days a customer has to request a return. The default is 30 days. Think of it as the “you can still bring this back” countdown.
- Choose whether the window starts from the purchase date or the receipt date (the date the order was shipped or delivered). Receipt date is fairer for customers because it accounts for shipping time — a customer shouldn’t lose return days while their order is still in transit.
- Set your Ship-Back Deadline — once you approve a return, how many days does the customer have to actually post it back? The default is 7 days. This keeps returns from lingering indefinitely. The customer sees this deadline in their approval email, so there’s no ambiguity.
- Choose which order statuses are eligible for returns. This controls which orders show the return option — for example, you might only allow returns on completed orders, not ones still being processed.
- Configure a Restocking Fee (optional). You have three choices:
– None — no fee, customer gets a full refund
– Percentage — a percentage of the item value (e.g., enter 15 for 15%). Handy for items that need repackaging or inspection before resale.
– Flat amount — a fixed dollar amount per return (e.g., $5.00). Good for covering return processing costs.
Whichever you choose, the fee is deducted from the refund automatically — no manual calculations needed.
- Add your Return Policy Text — this is what customers see when they’re requesting a return and at checkout. Clear expectations here save headaches later. This text also auto-appends to the WooCommerce privacy policy section on your checkout page, so customers see it before they buy.
—
Step 3: Set up return reasons
Tracksies comes with configurable return reasons that appear in a dropdown when customers request a return. These give you data on _why_ things come back, which is gold for spotting product issues or improving descriptions:
- Defective/Damaged — the item arrived broken or faulty
- Wrong Item Received — they got something different from what they ordered
- Not as Described — the product didn’t match the listing
- Changed Mind — they decided they don’t want it (no fault of yours)
- Size/Fit Issue — common for clothing and footwear stores
- Other — a catch-all with a notes field for anything else
You can enable or disable individual reasons to match your store. For example, if you don’t sell clothing, you might disable “Size/Fit Issue” to keep the dropdown clean.
—
Step 4: Set per-product and per-category eligibility
Not everything should be returnable. Underwear, custom-engraved items, perishable goods — some things need to be final sale. Tracksies lets you control this at three levels, and it works like a hierarchy: the most specific setting wins.
The eligibility hierarchy:
- Product-level setting (most specific — wins if set)
- Category-level setting (wins if no product-level override)
- Global default (applies to everything else)
One important automatic rule: virtual and downloadable products are never returnable. There’s nothing to ship back, so the return option won’t appear for digital items.
To set category-level eligibility:
- Go to Products > Categories in your WordPress sidebar
- Click to edit any category
- Find the Returns settings section
- Set the category to Eligible or Not Eligible for returns — this tells Tracksies whether items in this category can be returned at all
- Optionally set a Custom Return Window for that category (this overrides the global window you set in Step 2)
To set product-level eligibility:
- Go to Products in your WordPress sidebar and edit any product
- Find the Returns settings section
- Choose from Yes (returnable), No (final sale), or Inherit (use the category setting)
- Optionally set a Custom Return Window for this specific product
Here’s an example of how the hierarchy works: Your global policy is 30 days. Your “Clearance” category is set to 14 days. One specific clearance product is marked as non-returnable. Result: that product won’t show a return option at all, the rest of the clearance category gets 14 days, and everything else gets 30.
—
Step 5: Configure auto-approve (optional)
If you’d rather not manually review every return request, you can turn on auto-approve.
- Go to your returns configuration in Tracksies > Settings
- Find the Auto-Approve toggle and turn it on
When enabled, any return that meets the eligibility criteria (right product, within the return window, valid order status) is approved automatically — no admin action needed.
This is a good fit for stores that want a frictionless customer experience, or for high-volume shops where manually reviewing every return would be impractical. If you sell a few items a week and want eyes on every return, leave it off and review them yourself.
—
Offering refunds, replacements, or both
Returns don’t always mean money back. Sometimes a customer wants a replacement — a different size, a swap for a damaged one, the correct item if you sent the wrong thing. Tracksies lets you configure which resolutions you offer, and gives customers the choice per item at return time when more than one is on the table.
Setting the resolutions you offer
Go to Tracksies > Settings and find the Resolutions offered setting in the Returns section. There are two checkboxes:
- Refund — customer gets money back
- Replacement — customer gets a replacement item
At least one must be enabled. If you offer only refunds, customers never see a choice — every return goes down the refund path. If you offer only replacements, same but reversed. If you offer both, customers pick per item when they lodge a return.
Most shops offer both by default. That’s the most flexible setup and matches what most customers expect.
Per-product and per-category resolution overrides
Some products genuinely shouldn’t offer replacements (hygiene items, custom-made goods, anything where the replacement would cost more than just refunding). Others should be replacement-only (specialty items where you don’t want to hand refunds out freely). Tracksies handles this through a hierarchy — same pattern as return eligibility.
The resolution hierarchy:
- Product-level override (most specific — wins if set)
- Category-level override (wins if no product override)
- Global default (applies to everything else)
To set category-level resolutions:
- Go to Products > Categories in your WordPress sidebar
- Click to edit any category
- Find the Allowed resolutions dropdown with four options:
– Inherit from global — use the store-wide setting
– Refund only — customers in this category can only get refunds
– Replacement only — customers in this category can only get replacements
– Both — customer picks — offer both options
- Optionally add a Resolution explanation — a short free-text reason shown to customers in your returns policy (e.g., “exchanges not available for hygiene reasons” for an Intimates category). Leave blank and no explanation is shown.
To set product-level resolutions:
- Go to Products > edit any product
- Find the Allowed resolutions dropdown in the Returns settings section
- Choose Inherit / Refund only / Replacement only / Both
Example: Your global setting is “Both — customer picks.” Your “Intimates” category is set to “Refund only” with the explanation “Hygiene reasons.” One specific premium intimate set is marked “Replacement only” at the product level. Result: that premium item offers replacement-only, the rest of the Intimates category is refund-only, everything else lets the customer pick.
—
What customers see at return time
When a customer lodges a return from their My Account, each item in the request shows its resolution options according to the policy you configured.
For items where both resolutions are offered, the customer sees radio buttons:
- Refund — we’ll refund you once we receive the item
- Replacement — we’ll send a replacement once we receive the item
They pick per item. Different items in the same return can have different resolutions — for example, they can refund one shirt and request a replacement (in a different size) for another. Tracksies handles this cleanly as a single return request with mixed resolutions.
For items where only one resolution is available, no radio buttons appear — the customer just sees a static line like “Resolution: Refund” with your explanation (if configured). No confusing choices for non-options.
The variation picker
When a customer picks Replacement for a variable product (different sizes, colours, etc.), Tracksies shows an inline variation picker:
- Send the same thing again — the default, uses the original variation the customer bought
- Different variation — opens a dropdown of alternate sizes / colours / etc. for that product
Out-of-stock variations are disabled in the dropdown so customers can’t pick something you can’t fulfil. The label shows “(out of stock)” next to any disabled option.
If every variation is out of stock, the Replacement radio itself is disabled with “(currently unavailable)” and the customer is forced to choose Refund instead. Saves you the awkward conversation.
—
Handling mixed-resolution returns as staff
When a return contains some items flagged for refund and some flagged for replacement, the staff inspection screen adapts. Instead of one universal “Refund or Send Replacement” button, you get two action groups side-by-side:
Dispatch replacements
Lists each replacement-flagged item with its customer-selected variation pre-populated. You can change the variation on the fly if you need to — for example, if the customer’s preferred size just went out of stock between them submitting and you processing, pick a different variation and note the change (or use “Change resolution” to flip to refund — see below).
For each replacement item, you enter the outbound carrier and tracking number. Tick Decrement stock on dispatch if you want Tracksies to adjust WooCommerce stock automatically (respecting the product’s manage_stock setting — if the product doesn’t manage stock, Tracksies quietly skips it).
Click Send Replacement(s) and Tracksies:
- Validates every picked variation is in stock
- Decrements stock for each replacement item (if the toggle is on)
- Marks those items as resolved in the return
- Fires the Replacement Sent email to the customer, listing just the replacement items and the tracking info
Process refund
Only the refund-flagged items are included in the refund amount (calculated automatically from your store totals, minus any restocking fee). The checkboxes work the same as a normal refund — Refund via payment gateway and Restock items.
Click Process Refund and Tracksies creates a partial WooCommerce refund for just those items, marks them resolved, and fires the Refunded email listing just those items and the refund amount.
Return closes when every item is resolved
A mixed return doesn’t close to “Refunded” or “Replacement Sent” until every item has been handled. If you process the refund first, the return status reflects that, but the Dispatch Replacements group still shows on the inspection screen for the pending items. Once you dispatch the replacements, the return closes to a terminal status.
—
Changing an item’s resolution after submission
Customers sometimes change their mind — they submitted a refund request but now want a replacement instead, or vice versa. You can flip any unresolved item on a return by clicking Change resolution on the item row.
A prompt asks for a required note explaining the change (“Customer phoned to ask for a replacement in a bigger size”). Save, and:
- The item moves to the other resolution group (refund → replacement or replacement → refund)
- A note with the change and your text is written to the debug log — so there’s always a trace of who did what and why
- If flipping to replacement, the variation picker now shows for that item (if it’s a variable product)
- If flipping to refund, any previously-picked replacement variation is cleared
The button only appears on unresolved items. Once an item has been refunded or dispatched, its resolution is locked.
—
Contact channels — for stores that don’t use self-service returns
If you turn off customer-initiated returns (via the hq.returns.customer_portal toggle on the Features page), your customers can’t lodge returns from their My Account. But the returns policy still displays on product pages and via the shortcode — and customers still need to know how to reach you to start a return.
Rather than leave them with “please contact us” and no details, Tracksies lets you configure explicit contact methods that render in place of the My Account steps. Go to Tracksies > Settings > Returns and scroll to the Alternative contact methods section.
Four channels are available, each with its own toggle:
- Email — customer emails you directly; Tracksies renders a
mailto:link - Phone — phone number with optional hours (e.g. “1800-123-456 (weekdays 9-5)”)
- Web form — a URL for a contact form on your site
- Contact page — a WordPress page selected from a dropdown
Enable any combination. Add an Additional instructions textarea if you want to include something like “Please have your order number ready” or “Include a photo of any damage.”
What customers see:
- Portal on + channels configured — customers see the 4-step “go to My Account” instructions first, then “Prefer to contact us directly?” below with your channels listed. Useful for stores that allow both self-service and direct contact.
- Portal off + channels configured — customers see only the contact methods, with introductory text like “Contact us using whichever works best.”
- Portal off + no channels — customers see a simple “To request a return, please contact us” line, and Tracksies shows a warning on the settings page reminding you to add at least one method.
Channels render consistently wherever your returns policy appears — product pages, the master shortcode, and at checkout.
—
Returns on product pages
Customers shouldn’t have to buy something, receive it, and then go hunting through your site to figure out your return policy. Tracksies adds a Returns tab directly on every product page — right alongside Description and Reviews — so customers know the deal before they purchase.
This builds trust. When someone can see “This product is eligible for returns — 30 days from receipt” right there on the product page, they’re more confident clicking “Add to Cart.” No surprises, no fine print buried somewhere else.
What the Returns tab shows
The tab adapts to each product automatically — no configuration needed per product. It reads from the settings you’ve already configured and shows the right information for that specific product.
For a returnable product, customers see:
- Eligibility status — a clear green confirmation: “This product is eligible for returns”
- Return window — the specific number of days for this product (which might differ from your global setting if you’ve set category or product overrides)
- Ship-back deadline — how many days they have to post the return after approval
- Restocking fee — only shown if you’ve configured one (if there’s no fee, this row doesn’t appear — no need to show “Restocking fee: None”)
- How to request a return — step-by-step instructions for the My Account flow
- Accepted return reasons — the full list of reasons you’ve configured
- Return address — where to send returns (only shown if you’ve entered one in settings)
- Return instructions — any additional instructions (only shown if configured)
- Return policy text — your full policy text (only shown if configured)
For a non-returnable product, customers see:
- A clear red notice: “This product is not eligible for returns”
- If the product is virtual or downloadable, the notice includes the reason: “This product is not eligible for returns (virtual/downloadable product)”
That’s it — no confusing details about windows and fees for something that can’t be returned.
The tab respects your eligibility hierarchy
Here’s where this gets powerful. The Returns tab automatically reflects your per-product and per-category overrides:
- A product in your “Clearance” category with a 14-day custom window? The tab shows “14 days from receipt” — not your global 30.
- A product explicitly marked as non-returnable? The tab shows the “not eligible” notice.
- A virtual product (like an e-book or online course)? Automatically shows “not eligible” — you don’t need to mark these manually.
The tab reads from the same eligibility hierarchy you set up in Step 4 of Setting up returns. No duplicate settings, no chance of things getting out of sync.
Turning off the tab
The Returns tab only appears when the Returns feature is enabled in Tracksies > Settings > Features. If you turn off Returns, the tab disappears from all product pages automatically.
—
The return policy shortcode
The [tracksies_returns_policy] shortcode is flexible — it works three different ways depending on where you put it and what attributes you give it.
On a product page: shows that product’s policy
[tracksies_returns_policy]If you drop this shortcode on a product page (in the product description, a page builder element, or a widget area), it automatically detects the current product and shows the same per-product policy that the Returns tab shows. This is handy if you’re using a page builder like Bricks, Elementor, or Divi that might strip out WooCommerce’s native tabs — you can place the policy wherever you want in your product layout.
With a product ID: shows a specific product’s policy
[tracksies_returns_policy product_id="123"]This variant lets you show any product’s return policy on any page. Replace 123 with the actual product ID (you can find this in Products > hover over the product name to see the ID, or check the URL when editing a product: post=123).
This is useful for:
- A “Returns Information” page that shows policies for your most-asked-about products
- A custom landing page where you want to highlight that a specific product is returnable
- Widget areas or sidebar content where you want to feature a product’s return policy
On a non-product page (no product ID): shows your master policy
[tracksies_returns_policy]When placed on a regular page — your Returns Policy page, your FAQ, a footer widget — the shortcode shows your complete master returns policy. This includes:
- Your policy text (the text you wrote in Step 2)
- General Returns Policy — your global return window, ship-back deadline, and restocking fee
- Per-category breakdowns — each product category that has custom settings gets its own section with a clear heading like “Returns for Product Category: T-Shirts” or “Returns for Product Category: Clearance”
- How to request a return — the step-by-step instructions
- Accepted return reasons — your full list
- Return address and instructions — if configured
The per-category breakdowns are the clever part. If you’ve set your “Clearance” category to 14 days and your “Final Sale” category to non-returnable, customers see those differences spelled out clearly under their own headings. Categories that use your global defaults don’t get a separate heading — they’re covered by the “General Returns Policy” section at the top.
Examples in practice
Here’s how you might set this up on your site:
Dedicated Returns Policy page:
Create a page called “Returns Policy” and add [tracksies_returns_policy]. Done. Customers see your full policy with per-category breakdowns, reasons, address, and instructions — all pulled from your settings, so it stays up to date automatically.
FAQ page (partial):
In your FAQ, you might have a question “What’s your return policy?” with the shortcode in the answer. It renders the full master policy right there.
Product page with page builder:
If you’re using Bricks or Elementor and have removed the default WooCommerce tabs, drop [tracksies_returns_policy] into a text element anywhere in your product template. It automatically detects the current product and shows the right policy.
Landing page for a specific product:
On a promotional landing page for a premium product, add [tracksies_returns_policy product_id="456"] near the CTA to show that specific product’s return policy — building trust at the point of purchase.
—
How the policy content is generated
The policy customers see isn’t a static block of text you wrote once. It’s composed live from the settings you configured in Steps 2-4, so whenever you change a window, fee, or category override, every appearance of the policy on your site updates automatically.
What gets composed
Whenever a policy renders — in the product tab, the shortcode, or an auto-insertion point below — Tracksies pulls together:
- Eligibility for the product or category in question — resolved using the hierarchy: product-level setting beats category-level setting beats global setting. Virtual and downloadable products are always non-returnable (no flag needed).
- Return window — the per-product or per-category window if one is set, otherwise your global window. The language (“X days from receipt” vs “X days from purchase”) reflects your “window starts from” setting.
- Ship-back deadline — from your global setting.
- Restocking fee — if configured; if you’ve set no fee, this line doesn’t appear at all (no “Restocking fee: None” filler).
- Your policy text — the free-text block you wrote in Step 2.
- Return reasons — the list you configured in Step 3.
- Return address and instructions — only shown if you’ve filled them in.
Per-product vs master policy composition
There are two shapes the composition can take:
- Per-product (used by the product tab and the product-aware shortcode): shows eligibility for this specific product with its resolved window/fee, the how-to-request steps, reasons, address, and policy text.
- Master (used by the global shortcode on non-product pages): shows your global defaults plus a separate headed section for every category that has a custom override. Categories using your global defaults aren’t repeated — they’re already covered by the “General Returns Policy” heading at the top.
So if you’ve set “Clearance” to 14 days and “Final Sale” to non-returnable, the master policy output contains three sections: “General Returns Policy” (global), “Returns for Product Category: Clearance” (14 days), and “Returns for Product Category: Final Sale” (non-returnable). A product in any other category falls under the General section — no clutter.
When policy content refreshes
The policy is generated at render time, not cached. Change a setting and the next page load shows the new wording everywhere — product tabs, shortcodes, checkout, privacy policy — without needing to save anything else. This is why the doc says “as configured” so often: there’s no duplicate copy to keep in sync.
—
Where your policy appears automatically
Beyond the places you manually insert the shortcode, Tracksies puts your returns policy in three spots automatically — no setup required once the feature is on.
1. The product tab (covered above)
The Returns tab on every WooCommerce product page. Shown per-product, so it always reflects the right eligibility and window for that product. Disappears if you turn off the Returns feature. See “Returns on product pages” above.
2. Checkout — below terms and conditions
The policy text (from Step 2) is appended to the WooCommerce checkout page below the terms and conditions block, along with a one-line reminder of the return window (“Returns must be requested within X days of receipt”). Customers see it before clicking “Place Order” so there are no surprises after purchase.
Developer note: to suppress the checkout display (e.g. if your theme shows returns info somewhere else), filter tracksies_show_returns_policy_at_checkout to return false.
3. WordPress Privacy Policy Guide
WordPress has a built-in Privacy Policy page under Settings > Privacy, and WooCommerce contributes a suggested privacy policy text to it. Tracksies hooks into that text (via the woocommerce_get_privacy_policy_text filter) and appends a “Returns Policy” section with your policy text. This means if you’re using WordPress’s privacy policy tool to build a compliant privacy page, your returns policy is included automatically — no need to remember to copy it over.
If your policy text field is empty in Step 2, nothing gets appended — you won’t see an empty “Returns Policy” heading on your privacy page.
—
Manual insertion — the shortcode recap
For everywhere the automatic insertions don’t cover — a dedicated Returns page, an FAQ answer, a page-builder layout that strips WooCommerce’s native tabs — use the [tracksies_returns_policy] shortcode documented above. The shortcode output uses the same composition logic as the automatic insertion points, so what customers see is always consistent regardless of where the policy appears.
—
Customising the language
All the customer-facing text in the returns system is translatable and many parts are directly editable from your settings.
Text you control directly
These are free-text fields you can write in your own voice:
- Policy text — your full return policy, written however you like. This appears in the product tab, the shortcode, and at checkout.
- Return address — the address customers should send returns to. Write it however makes sense for your business.
- Return instructions — any extra instructions (e.g., “Please include your RMA number on the outside of the package” or “Items must be unworn with original tags attached”).
- Return reasons — fully editable. Add, remove, or rename any reason. If you sell furniture and “Size/Fit Issue” doesn’t make sense, change it to “Doesn’t fit the space” or remove it entirely. If you want to add “Arrived late,” go for it.
Text that’s generated from your settings
Some text is built automatically from your configuration:
- “30 days from receipt” — the number comes from your return window setting. The “receipt” part comes from your “window starts from” setting. Change the window to 14 days and it reads “14 days from receipt.” Change the start point to “purchase” and it reads “14 days from purchase.”
- “7 days after approval” — from your ship-back deadline setting.
- “15%” or “$5.00” — from your restocking fee settings. If you set no fee, this line doesn’t appear at all.
- “Returns for Product Category: T-Shirts” — the category name is pulled from your WooCommerce product categories. Rename the category and the heading updates automatically.
Translation
Every piece of system text (button labels, headings, status labels, step instructions) uses WordPress’s translation system with the tracksies text domain. If you’re running your store in another language, or want to customise specific phrases, you can use:
- Loco Translate (free plugin) — translate or customise any string right from your WordPress dashboard
- WPML or Polylang — for multilingual sites, all strings are translatable
- Custom
.po/.mofiles — for developers who prefer working with translation files directly
For example, if you’d rather the step say “Visit your Order History” instead of “Go to My Account and open your Orders,” you can change that string via Loco Translate without touching any code.
—
How customers request a return
From the customer’s perspective, the process is straightforward:
- They log into their account and go to My Account > Orders
- Next to an eligible order, they see a Request Return button — this only appears if the order is within the return window and contains returnable items
- They select which items they want to return using checkboxes, and choose the quantity for each item — they don’t have to return everything
- They choose a reason from the dropdown (the reasons you configured in Step 3)
- They can add any extra notes explaining the issue
- They click Submit Return Request
- They see a confirmation screen with their RMA number and a progress tracker showing where things are at
No emails to write, no forms to hunt down, no wondering if anyone received the request. It’s all handled in one place.
The returns section lives at My Account > Returns (the URL is /my-account/returns/). From there, customers can see all their returns in a list showing the RMA number, associated order, date requested, current status, and available actions.
—
What the customer sees
Once a return is submitted, customers get a visual progress bar that updates as the return moves through each stage:
Requested –> Approved –> Received –> Refunded
Each step lights up as it’s reached, so there’s no ambiguity about where things stand. Think of it like a parcel tracking page, but for returns.
The full return detail view shows:
- Their RMA number (the unique return tracking number)
- Which items are being returned and why
- The current status with that visual progress bar
- Key dates: when they requested it, when it was approved, when you received the items back
The entire returns interface is built to WCAG 2.1 AA accessibility standards — screen reader support, full keyboard navigation, and ARIA live regions that announce status changes. Every customer can use it comfortably.
—
Return statuses explained
Each return moves through a lifecycle. Here’s what each status means:
Requested — the customer has submitted their return request. It’s waiting for review (unless auto-approve is on).
Approved — the return has been approved. The customer has received instructions and a ship-back deadline.
Received — you’ve received the returned items at your warehouse/store.
Inspected — you’ve looked at the returned items and recorded an outcome (restock, refurbish, dispose, exchange, or reject-on-receipt).
Rejected — the return has been declined. This happens in two flavours depending on when it was rejected: before the customer shipped (“we can’t approve this request”) or after you received and inspected (“we got it but can’t accept, we’re posting it back”). The customer email uses different wording for each.
Refunded — the refund has been processed. This is a final status — the return is complete.
Replacement Sent — for exchange-outcome returns, a replacement product has been dispatched to the customer with tracking info. This is a final status — the return is complete.
Cancelled — the customer cancelled their own return request. Also a final status.
Customers can cancel their return while it’s in “Requested” or “Approved” status from the My Account > Returns page. Once items are received or a refund is processed, cancellation is no longer available (which makes sense — you can’t un-receive a package).
—
Email notifications across the lifecycle
Tracksies sends automated emails at each stage of a return so nobody is left wondering what’s happening. Seven emails in total — six to the customer, one to you. All are editable from Tracksies HQ > Emails (not WooCommerce’s email settings — we manage these centrally).
| Trigger | Who gets it | What it says |
|---|---|---|
| Customer submits request | Customer | “We got your return request {RMA}, it’s in the queue for review.” |
| Customer submits request | Store admin | “A new return request has been created for order #{N}.” |
| You approve the request | Customer | “Your return request {RMA} has been approved.” Includes shipping instructions, RMA label, ship-back deadline. |
| You reject before shipment | Customer | “Update on your return request {RMA}” — “we can’t approve this” tone. |
| You mark package as received | Customer | “We received your return {RMA}” — package arrived, inspection next. |
| You inspect → reject-on-receipt | Customer | “Update on your return {RMA}” — variant template: “we got it but can’t accept, we’re posting it back to you.” Same email class, different copy based on whether you received the package first. |
| You process the refund | Customer | “Your refund of ${amount} has been processed” — amount filled in automatically. |
| You inspect → exchange → dispatch replacement | Customer | “Your replacement is on the way” — includes outbound carrier + tracking number + a track-the-package link. |
Auto-approved returns skip the “Request received” email and go straight to the Approved email (the customer never sees the “it’s in the queue” message because it wasn’t, it was auto-approved on submission).
Customising the content: head to Tracksies HQ > Emails > Customer tab (or Store tab for the admin notification). Each email shows its subject, body, and placeholders available. Edit, save, done — the next send uses your version. If you leave a template inactive, no email fires for that lifecycle step; staff can use this to opt out of specific emails without affecting the others.
Brand Hub styling: all seven emails pick up your Designer colors and fonts automatically — no separate email template configuration needed. Change the primary colour in Designer and it updates the buttons in every return email on the next send.
—
RMA tracking
Every return gets a unique RMA number (Return Merchandise Authorisation). This is the reference number that ties everything together — the customer sees it, you see it, and it appears in all email notifications.
Behind the scenes, each RMA tracks:
- The associated order and customer
- Which items are being returned and why
- The current status
- A full timeline of dates: when it was created, approved, shipped back, received, and refunded
This means you always have a clear paper trail for every return, which is helpful for accounting, disputes, and spotting patterns (like a product that keeps coming back for the same reason).
—
Email notifications
Tracksies sends three return-specific emails, all customisable in Tracksies > Settings > Emails:
Return Approved
Sent when you (or auto-approve) approves a return request. This email includes the return address where the customer should send items, the ship-back instructions, and the deadline for posting the return. This is the email customers are waiting for — it tells them “yes, send it back, here’s how.”
Return Rejected
Sent when a return is declined. Nobody loves getting this email, but clear communication is better than silence. The email includes the reason for rejection so the customer isn’t left guessing.
Return Refunded
Sent once the refund has been processed. Confirms the amount refunded (after any restocking fee deduction) and closes the loop. For the customer, this is the “all done” signal.
Each of these can be toggled on or off individually and edited with custom content, placeholders, and your branding. See Email Templates for details on customising email content.
—
Managing returns (admin side)
Returns appear in your WooCommerce admin with status indicators so you can see what’s pending, approved, shipped back, or refunded at a glance. From there you can:
- View return details — which items, the customer’s reason, any notes they added, and the full RMA timeline
- Approve or reject the return — approving triggers the approval email with ship-back instructions
- Process the refund once the returned items are received — restocking fees are calculated automatically
The staff returns dashboard (requires Packsie)
For a dedicated returns processing interface — a purpose-built screen designed for warehouse staff to work through returns efficiently — you’ll need the Packsie add-on.
Packsie adds a Returns tab to the unified staff dashboard. Your team sees all return requests with approve, reject, and process refund actions right alongside their packing workflow — no navigating the full WordPress admin. The Returns tab appears in the same [tracksies_staff_dashboard] page that staff already use for packing and customer lookups.
Without Packsie, everything still works — you’re managing returns from the standard WooCommerce admin interface rather than a specialised staff dashboard.
—
Guest purchases and account linking
A common scenario: someone buys from your store as a guest (without creating an account), and later needs to request a return. They can’t log in because they don’t have an account. Here’s how that works.
If a guest creates an account using the same email they used for their purchase, WooCommerce automatically links their previous guest orders to their new account. This happens instantly at account creation — no manual intervention needed.
Tracksies HQ takes this a step further. When a new account is created, it hooks into the process and checks for any existing orders placed with that email address. All matching orders are linked to the new customer profile, which means:
- Their past orders appear in My Account > Orders
- Any eligible orders show the Request Return button
- Their full order history is visible in their Tracksies customer profile
The practical flow for a guest who needs to return something:
- Customer visits your site and goes to My Account
- They click Register (or whatever your theme calls the registration link)
- They create an account using the same email address they used for their purchase
- Their previous orders automatically appear in their account
- They navigate to My Account > Orders and click Request Return on the eligible order
- They follow the normal return process from there
The key point: the email address must match. If they register with a different email, the orders won’t link automatically.
—
Suggested website wording for your returns page
Here’s some ready-to-use copy you can adapt for your returns page, FAQ, or footer. It covers both the logged-in and guest flows, and sets clear expectations for customers.
Feel free to copy, edit, and make it your own. The tone is friendly and straightforward — adjust it to match your brand voice.
—
Sample returns page content
How to request a return
Requesting a return is simple and takes just a few minutes. Here’s how:
- Log in to your account at [your site URL]/my-account
- Go to Orders in your account menu
- Find the order you’d like to return and click Request Return
- Select the items you’d like to return and choose a reason
- Add any notes about the issue (optional but helpful)
- Click Submit Return Request
You’ll receive an email confirmation with your RMA number (a unique reference for your return). You can track the status of your return at any time from the Returns section of your account.
Don’t have an account?
If you checked out as a guest, you can still request a return. Simply create an account using the same email address you used for your purchase. Your previous orders will automatically appear in your account, and you’ll be able to request a return from there.
What happens next?
Once you’ve submitted your return request, here’s what to expect:
- We review your request — we’ll check the details and get back to you promptly
- You’ll receive an email — if approved, you’ll get return instructions including where to send the items and a deadline for posting
- Post the items back — send them to the address in your approval email within the deadline
- We process your refund — once we receive the items, we’ll inspect them and process your refund. You’ll get a confirmation email with the refund amount
The whole process is tracked in your account so you always know where things stand.
Our return policy
[Place the [tracksies_returns_policy] shortcode here to display your configured policy text]
—
Shorter version (for FAQ or footer)
Can I return my order?
Yes! Log in to your account, go to Orders, and click Request Return on any eligible order. If you checked out as a guest, create an account with the same email you used for your purchase — your orders will link automatically. Full details on our [Returns page].
—
You can place the [tracksies_returns_policy] shortcode anywhere on your site to display your full returns policy — on a dedicated returns page, in your footer, in your FAQ, or in a widget area. On a non-product page, it shows your master policy with per-category breakdowns. On a product page, it shows the policy specific to that product.
—
Returns as customer interactions
When a customer submits a return request, it’s automatically captured as an interaction in their Tracksies customer profile. The interaction is logged as a return_request type and appears in the customer’s interaction timeline alongside their other activity (orders, emails, form submissions, etc.).
This gives you a complete picture of your relationship with each customer. If a customer contacts support, you can see at a glance that they also have an active return — helpful context for any conversation.
The interaction record includes which order the return is for, so you can click through to the order details directly from the customer profile.
—
Common questions
Can customers return partial orders?
Yes. When requesting a return, customers select which items they want to return using checkboxes and choose the quantity for each item. They don’t have to return the entire order.
What if a product isn’t eligible for returns?
The Request Return button won’t appear for orders that only contain non-returnable items. If an order has a mix of returnable and non-returnable products, the customer can request a return but will only see the eligible items in the selection.
Can I set different return windows for different products?
Yes — that’s what the eligibility hierarchy is for. Product-level settings override category settings, which override the global setting. So you could have a 30-day global window, a 14-day window for your “Sale” category, and a 7-day window for one specific seasonal product.
What about digital or downloadable products?
Virtual and downloadable products are automatically excluded from returns — there’s nothing to ship back. You don’t need to mark them manually.
Does the restocking fee apply automatically?
Yes. When a restocking fee is configured (either percentage or flat amount), it’s automatically deducted from the refund. The customer sees the final refund amount in their “Return Refunded” email.
Can a customer cancel their return?
Yes, as long as the return status is “Requested” or “Approved.” They can cancel from My Account > Returns by viewing the return details. Once items have been received or a refund processed, cancellation is no longer available.
Can I change the return window after an order is placed?
The return window is checked at the time a customer requests a return, based on the current settings. If you shorten the window, orders that were previously within the old window may no longer be eligible.
Where does the return policy show?
In three places: (1) A Returns tab on every product page, showing the policy specific to that product. (2) At checkout, where the policy text auto-appends to the WooCommerce privacy policy section. (3) Anywhere you place the [tracksies_returns_policy] shortcode — on a product page it shows that product’s policy, on any other page it shows your full master policy with per-category breakdowns.
Can I show a specific product’s return policy on a different page?
Yes. Use [tracksies_returns_policy product_id="123"] (replace 123 with the product’s ID) and it will show that product’s specific return policy — eligibility, window, fees, and all — wherever you place it. You can find any product’s ID by hovering over its name in Products or checking the URL when editing it (look for post=123).
I’m using a page builder and the Returns tab doesn’t show up
Some page builders (like Bricks, Elementor, or Divi) replace WooCommerce’s native product tabs with their own layout. If the Returns tab isn’t appearing, drop [tracksies_returns_policy] into a text or shortcode element in your product template — it automatically detects the current product and shows the same information the tab would show.
Can I customise the return reasons?
Absolutely. Go to your returns settings and scroll down to Return Reasons. You can rename any reason, add new ones, or remove ones that don’t apply to your store. Selling furniture? Change “Size/Fit Issue” to “Doesn’t fit the space.” Running a food store? Remove it entirely and add “Quality concern” instead. The dropdown customers see when requesting a return shows exactly the reasons you’ve configured, in the order you’ve listed them.
Can I change the wording of the return policy?
Yes, in several ways. Your Policy text, Return address, and Return instructions are free-text fields — write whatever you like. The automatically generated text (like “30 days from receipt”) is built from your settings, so changing the return window to 14 days automatically updates the wording everywhere. For system text like button labels and headings, you can customise any string using a translation plugin like Loco Translate — no code needed.
The master policy page shows categories I don’t want
The master policy (the shortcode on a non-product page) only shows per-category sections for categories that have explicit overrides — either a custom return window or a specific eligibility setting. Categories that use your global defaults don’t get their own section. If you’re seeing a category you’d rather not show, go to Products > Categories, edit that category, and set its returns settings back to “Global” — it will disappear from the master policy page.
What’s the difference between managing returns with and without Packsie?
Without Packsie, you manage returns from the standard WooCommerce admin — it works fine, all the same features are available. Packsie adds a Returns tab in the unified staff dashboard ([tracksies_staff_dashboard]), designed for warehouse staff to process returns more efficiently alongside packing and customer lookups.
—
If something goes wrong
Return button not showing in My Account
Three things to check, in order:
- The Returns feature is enabled in Tracksies > Settings > Features (look for the toggle on the Woo module tile)
- The product or its category is marked as eligible for returns — check both the product edit screen and the category edit screen, because the hierarchy means a “not eligible” setting at either level will block returns
- The return window hasn’t expired — count the days from purchase (or receipt, depending on your setting) and make sure the customer is still within the window
- The order status is one of your configured returnable statuses — if the order is still “Processing,” it might not be eligible yet
Customer says they can’t request a return
If the Request Return button appears but the customer can’t complete the request, check the return window dates. If you’ve configured the window to count from receipt date, the shipped or delivered date must actually be set on the order. An order that shows as “Processing” with no shipped date won’t have a receipt date to count from, and the system can’t determine eligibility.
Auto-approve isn’t working
Head to your returns configuration in Tracksies > Settings and confirm the Auto-Approve toggle is turned on. If it’s on and returns still require manual approval, check that the return request meets all eligibility criteria — auto-approve only kicks in for requests that pass the product, category, and window checks.
Restocking fee showing as zero
Check the restocking fee configuration in your returns settings. If it’s set to percentage, make sure the value is entered as a number (e.g., 15 for 15%, not 15%). If it’s set to a flat amount, ensure the amount is greater than zero. If the fee type is set to “None,” no fee will be applied regardless of the value.
Emails not sending
First, check that the return email templates are enabled in Tracksies > Settings > Emails — each email type (Approved, Rejected, Refunded) can be toggled individually, so one might be off. Second, make sure your site has SMTP configured — WordPress’s built-in email is unreliable, and return notification emails go through the same mail system as everything else. See our Setting Up Email Delivery guide if you haven’t set this up.
Returns tab not showing on product pages
The Returns tab on product pages requires the Returns feature to be enabled in Tracksies > Settings > Features. If it’s enabled and the tab still isn’t showing, check whether your theme or page builder replaces WooCommerce’s native product tabs. Bricks, Elementor, and Divi can all do this. If so, use the [tracksies_returns_policy] shortcode in your product template instead — it shows the same information.
Returns tab not showing in staff dashboard
The Returns tab in the staff dashboard requires two things: the Packsie plugin must be installed and activated, and the Returns feature (hq.returns) must be enabled in Tracksies > Settings > Features. If both are on and the tab still isn’t showing, check the role-to-tab permissions matrix in the Packsie settings — the user’s role may not have the Returns tab ticked.
Shortcode showing global policy on a product page
If you’re seeing the global master policy instead of the product-specific policy when using [tracksies_returns_policy] on a product page, make sure you’re on an actual WooCommerce product page (not a custom post type or regular page). The shortcode auto-detects products using WooCommerce’s is_product() check. If your page builder creates products differently, use the explicit form: [tracksies_returns_policy product_id="123"].
Policy styles don’t match my site
The returns policy display uses your Brand Hub CSS variables for colours, borders, and rounded corners. If it looks out of place, check your Brand Hub settings in Tracksies > Designer > Colours. The policy inherits your surface colour, border colour, text colours, and border radius — adjusting those will update the returns policy display along with the rest of your Tracksies elements.
Need more help? Check our FAQ & Troubleshooting guide or contact support.