Merchant docs
Set up and run OrderCtrl.
Step-by-step guides for connecting WooCommerce, the customer portal, claims, emails and your own sending domain, automations, integrations and the API.
Getting started
Connect your WooCommerce store
Settings → Store Settings → Store details
OrderCtrl connects through WooCommerce’s own approval screen, so you never copy API keys by hand.
- Create your account and enter your Store Website URL (the root domain, like
yourstore.com, without http:// or www). - Click Connect WooCommerce Store. You’re sent to your WooCommerce admin. Click Approve to give OrderCtrl read and write access.
- OrderCtrl sets up order updates automatically: created, updated, cancelled, refunded and failed orders. If WooCommerce Subscriptions is installed, subscription updates are added too.
To disconnect, use Disconnect WooCommerce, then delete the OrderCtrl keys in WooCommerce → Settings → Advanced → REST API.
Your store must be reachable over HTTPS, and you need to be signed in to WordPress as a user who can manage WooCommerce.
Getting started
The setup wizard
After connecting, the setup wizard walks through each step. You can leave and come back, and the dashboard checklist shows what’s left.
| Step | What you set |
|---|---|
| Store basics | Time zone, currency and your return address. |
| Delivery promises | Processing time, order cut-off, ship days and holidays. See Delivery promises. |
| Tracking | Where your tracking numbers live. See Tracking setup. |
| Subscriptions | Turn on WooCommerce Subscriptions sync, if it’s detected. |
| Import history | Bring in the last 30, 60 or 90 days of orders, and choose whether to fetch live tracking for them. |
| Recommended setup | Turn on starter customer emails, claim policies, automations and customer actions in one go. |
| Branding | Your logo and brand color for the portal and emails. |
Fetching live tracking during the import uses one credit per shipment. The wizard shows an estimate before you start.
Getting started
Store details & syncing orders
Settings → Store Settings → Store details
| Setting | What it does |
|---|---|
| Store name | Shown to customers in emails and the portal. |
| Store slug | Part of your OrderCtrl URLs. Contact support to change it. |
| Timezone | Used for delivery-promise clocks, cut-off times and reports. |
| Currency | The currency used across OrderCtrl. |
| Connection status | Shows whether your WooCommerce connection is working. |
Sync orders
Use Sync Orders to import or re-import orders at any time.
- Order Status: pick which WooCommerce statuses to include (Pending, Processing, Completed, On Hold, Cancelled, Refunded, Failed).
- Date Period: Today, Last 7 Days, Last 30 Days, Last 12 Months or a custom range.
- Create Shipment Records: create shipments from the tracking numbers on those orders.
- Fetch Tracking Details: get live tracking for those shipments (uses credits), limited to orders from the last X days (1 to 365, default 30).
Progress shows live, and Sync History lists past syncs with how many orders were created, updated or failed.
Store sign-in sync
With the WordPress plugin installed, Enable WordPress SSO signs customers in to your store when they sign in to the portal. Use Sync SSO Settings to WordPress after changing it, and Refresh Settings to check the plugin’s status.
Getting started
Install the WordPress plugin
The OrderCtrl plugin for WordPress adds the package protection option to your checkout and sign-in sync, so customers signed in to your store are signed in to the portal too. Everything else works through the WooCommerce connection.
Get the plugin
Download the plugin from your OrderCtrl app settings. That’s the recommended way: it’s always the version that matches your account. The plugin will also be listed in the WordPress plugin directory, but downloading it from the app is still the best choice.
Install it
- In your OrderCtrl app settings, download the OrderCtrl plugin zip file.
- In WordPress, go to Plugins → Add New → Upload Plugin.
- Choose the zip file, click Install Now, then Activate.
- Back in OrderCtrl, click Check again in the setup wizard, or open Store details. OrderCtrl configures the plugin for you, so there’s nothing to set up in WordPress.
The setup wizard shows OrderCtrl WordPress plugin: Installed with the version number once it’s found.
Getting started
Who can change settings
Owners and admins can open every settings page. Analysts can view orders, analytics and most settings, but can’t open these pages:
- Store details
- Automations
- Integrations
- Helpdesk & API
- Shipping & labels
- Users and invitations
- Billing and credits
Settings open in a full-page view with the settings menu on the left. Close it to return to where you were.
Tracking
Tracking setup
Settings → Store Settings → Store details → Shipment Tracking Settings
Tell OrderCtrl where tracking numbers are saved on your orders. Keep shipping the way you do today: OrderCtrl reads them wherever they land. You can also add tracking or buy labels in OrderCtrl itself; see Adding tracking & shipping labels.
| Tracking Source | Use it when |
|---|---|
| Woo Shipment Plugin / AST Plugin | You use the WooCommerce Shipment Tracking plugin or Advanced Shipment Tracking. Several tracking numbers per order are supported. |
| Other Shipment Plugin | Your 3PL, warehouse or shipping integration saves tracking to its own order fields. Map each field under Tracking Source Metadata: tracking number, tracking URL, carrier, shipping method, ship date and warehouse. |
| Order Notes | Tracking is added to order notes, by your team or a tool. Paste a Sample Order Note so OrderCtrl learns the format. |
Enter a Test Order ID and click Test Configuration to check your choice on a real order before saving.
Carriers and updates
More than 50 carriers are supported, including USPS, UPS, FedEx, DHL, Canada Post, Royal Mail, Australia Post and Purolator. Updates arrive automatically as carriers scan packages, and shipments that go quiet are re-checked regularly.
Credits
Each new shipment with live tracking uses one credit. Re-checking a shipment you already have is free. If you run out, new shipments still appear, but live tracking pauses until you add credits.
Tracking
Adding tracking & shipping labels
Settings → Store Settings → Shipping & delivery → Shipping & labels
Add tracking numbers and buy labels right from the order page. Each one becomes a shipment in OrderCtrl with live tracking, and the number is saved back to the WooCommerce order.
Add a tracking number
On an order, choose Add tracking number (or Fulfill order if nothing has shipped yet). Enter the number and pick the carrier: USPS, UPS, FedEx, DHL Express, Canada Post, or Other carrier with its name and tracking link. Set the ship date, an estimated delivery date if you have one, and the WooCommerce status to move the order to. Leave the number empty to mark an order fulfilled without tracking, for pickup or digital orders. Add another number the same way for each extra box.
Buy a shipping label
Choose Buy label on the order. Pick a ship-from address and a saved package (or enter size and weight), then Get rates. Rates are listed cheapest first with transit time. Pick one and buy; the label opens to print, and the tracking number is added to the order with live tracking on. Labels that haven’t been scanned by the carrier can be voided from the shipment.
| Setting | What it does |
|---|---|
| Label account | OrderCtrl account: postage is paid with credits, and you see the price in credits before you buy. My own Shippo or EasyPost account: your own rates, billed by the provider. Tracking still uses one credit per shipment either way. |
| Ship from | One or more ship-from addresses, with one set as the default. |
| Packages | Saved box sizes to pick from when buying a label. |
| Labels | Label format (PDF 4×6 for thermal printers, PDF letter, PNG or ZPL) and which carriers to show rates from. |
| When OrderCtrl adds a tracking number | Add tracking numbers to the store order (on by default), plus the WooCommerce status to set after adding tracking and after buying a label. Both default to Completed. |
How tracking reaches WooCommerce
Numbers are written to the order through your WooCommerce connection, in the same field the WooCommerce Shipment Tracking plugin and Advanced Shipment Tracking use. Numbers already on the order are kept, and each number is added only once. The shipment shows whether it’s in WooCommerce yet, and failed syncs retry on their own, with a Retry button if they still fail. Voiding a label removes its number from the order.
WooCommerce doesn’t show tracking in its own emails or My Account page by default. OrderCtrl’s shipping emails and portal include it. If you also want tracking links in WooCommerce’s emails, keep a plugin that displays that field. Changing the order status can send WooCommerce’s own status email, such as “Order completed”, if that email is on.
Tracking
Delivery promises
Settings → Store Settings → SLAs & Issue Detection → Fulfillment & shipping
Delivery promises tell OrderCtrl what “on time” means for your store. Analytics, at-risk orders and issue detection all use them.
| Setting | Default | What it does |
|---|---|---|
| Standard Processing Time | 24 hours | How long you take to fulfill an order. |
| Daily Order Cut-off Time | None | Orders placed after this time are processed the next fulfillment day. |
| Non-Fulfillment Days Buffer | 72 hours | Extra time before an unfulfilled order counts as a problem. |
| Fulfillment Days | Monday to Friday | Days your team ships. |
| Holiday Periods | None | Date ranges, with a description, that don’t count. |
| Consider Order Shipped When | Carrier accepts package | The moment that counts as shipped: carrier accepts the package (recommended), label is created, or order is completed. |
Tracking
Issue detection
Settings → Store Settings → SLAs & Issue Detection → When issues are flagged
Choose which problems OrderCtrl flags and when. Each one can be turned on or off, and flagged issues can start automations or open claims.
| Issue | Flagged when |
|---|---|
| Fulfillment delay | A set number of hours after the processing time runs out. |
| Shipping delay | A set number of hours after fulfillment with no carrier scan. Carriers usually scan within 24 to 48 hours of pickup. Not available when “shipped” means the order is completed. |
| Shipment stalled | No tracking update for a set number of hours. Optionally, also when the carrier’s estimated delivery date passes. |
| Lost in transit | A set number of hours after it stalls, or a number of days past the estimated delivery date. |
| Reported by the carrier | Exceptions, damage, undeliverable and returned packages, as soon as the carrier reports them. No setup needed. |
Time is counted on your fulfillment days, after the processing time.
Customer portal
Portal branding
Settings → Customer Portal → Portal Branding
Brand identity
- Portal Logo (transparent PNG recommended), Logo Size (small, medium or large) and Favicon (32 × 32).
- Brand Colors: primary and accent.
- Shop link: show a link back to your store, with your own label and URL. Leave the URL empty to use your store website.
- Font Family: Inter, Roboto, Open Sans, Lato, Poppins, Nunito or your system font.
Login page
- Corner Style and Card Border color and width.
- Background: color or image, image position, text color, and whether it applies to the login and track pages, the signed-in portal, or both.
- Content: logo position, heading (default “Welcome back!”), tagline, and an optional features list.
- Custom CSS for anything else.
Use Preview portal to see your changes, and Reset to defaults to reset branding (your layout and banners are kept).
Customer portal
Custom portal domain
Portal Branding → Custom domain
Your portal starts at your store’s OrderCtrl address. To use your own, like portal.yourbrand.com:
- Click Custom domain on the Portal Branding page and enter the domain, without http:// or https://. A subdomain is required, so
www.isn’t allowed. - OrderCtrl shows two DNS records: a CNAME record that points your domain to the portal, and a TXT record that proves you own it. Add both at your domain provider. Each has a copy button.
- Click Verify DNS Records. Each record shows as verified once it’s found. DNS changes can take a while to spread, so try again later if it isn’t found yet.
- Once both are verified, click Activate Domain. Your portal is now served on your domain.
To go back to the default address, use Remove Custom Domain.
Customer portal
Portal content, banners & FAQs
Settings → Customer Portal → Portal Content
Order page sections
Show or hide each section of the customer’s order page, or reset the page to the default layout.
Banners
Add banners to the spots shown on the page. Each banner has an image (the recommended size is shown), a description used as alt text, and an optional link. Each spot holds a limited number of banners; move, edit or delete them any time.
FAQs
Each FAQ has a question and a formatted answer. You can target it:
- Order statuses: show it only for orders in certain statuses, like delayed or delivered. Leave empty to show it on every order.
- Categories and tags to organize your FAQs.
- Active: turn it off to hide it without deleting it.
Customer portal
Sign-in & guest lookup
- Code sign-in: customers enter their email and get a 6-digit code that expires in 15 minutes. Attempts are rate-limited.
- Guest lookup: anyone can find one order with their email plus the order number, tracking number or ZIP code. Addresses and payment details stay hidden until they sign in.
- Sign-in sync: with the WordPress plugin, customers signed in to your store are signed in to the portal, and signing out of one signs them out of both. See Store details.
Customer portal
Customer actions
Settings → Customer Portal → Customer actions
Turn on what customers can do themselves in the portal, then click an action to set its rules.
| Group | Actions | Rules you can set |
|---|---|---|
| Orders | Cancel order, change address | Time limit after ordering, allowed order statuses, block once tracking exists, require a reason, restock items. |
| Subscriptions | Pause, resume, skip, change date, change frequency, swap products, cancel, update address and payment method | Conditions per action, such as how long a pause can last and how close to a renewal changes are allowed. |
Each action can run automatically or wait for your approval. Customers see a clear reason when an action isn’t available.
Returns & claims
Claim policies
Settings → Policy & Automation Settings → Claim Policies
Every issue type has a claim policy. Policies are grouped by when they apply:
- After delivery: customers report from their order (damaged, missing, wrong item, changed their mind and more).
- Before delivery: problems while the order is in transit.
- Detected automatically: issues OrderCtrl flags from tracking and delivery promises. Automations can open these claims.
Inside a policy
| Part | What you set |
|---|---|
| Details | The name customers see and a description. |
| Eligibility | How many days customers can report within and what that counts from, an optional “not before” wait, allowed order statuses, exceptions that can never file, and what to show when an order isn’t eligible. |
| What we ask | Follow-up questions with an answer type, required or not, and branching to the next question. |
| Evidence | What every customer must provide, like photos. Each offer can add to or skip this. |
| Offers | Groups checked in order. Each has conditions and one or more options, such as refund, store credit, replacement or exchange. Mark an option as Recommended to highlight it, and turn on Auto-approve to skip manual review. |
Conditions you can use
| About | Conditions |
|---|---|
| Order | Value, subtotal, tax, shipping, status, type, channel, tag, item count, date, age, protected, protection fee |
| Customer | Lifetime value, order count, return rate, claims vs spend, tag, type, email domain, first order date, past claims |
| Product | SKU, category, tag, price, share of the order |
| Shipping | Carrier, method, country, region, ZIP code, days since shipped |
| Payment | Method, gateway, currency, status |
| Customer answers | Answers to the questions in “What we ask” |
Returns & claims
Offer options
Each option in an offer has its own settings.
| Option | Settings |
|---|---|
| Refund | When to process: immediately, after the return ships, after it’s received, or after inspection. Include shipping and fees. Pay to the original payment method or as store credit, with an optional bonus % and expiry. |
| Store credit | Amount: full order, items only, returned items, a fixed amount or a percentage. Bonus percentage, expiry (0 for none), minimum order to use it, and whether it stacks with other discounts. |
| Replacement | When to send: immediately (advance replacement) through after inspection. What customers can pick: the same item, another variant, an equivalent item, an upgrade (customer pays the difference) or any item. Cover replacement shipping. |
| Exchange | When to send, what customers can exchange for (variant, same product line, equivalent value or any product), and price differences: not allowed, customer pays, refunded as store credit or to the original payment. Cover shipping, require original packaging. |
Options that need the item back have Return Required and Auto-Authorize Return, which overrides the store-wide setting in Return shipping. When a return is required, the label is created right away, even if the refund or replacement waits.
Returns & claims
Return shipping
Settings → Store Settings → Return shipping
- Return address: printed on return labels as the destination. Supports addresses in the United States and Canada.
- Label defaults: carrier (USPS, UPS or FedEx), package weight and dimensions. An option in a claim policy can choose its own carrier.
- Create return labels automatically: when off, approved returns wait for you to authorize them before a label is made. Each option in a claim policy can override this.
Customers can download the label, email it to themselves, or show a QR code at drop-off. Returns are tracked like any shipment, then you inspect them: approve, partly approve or reject, and restock items.
Returns & claims
Package protection
Settings → Store Settings → Package Protection
Settings
- Fee Display Name: what customers see at checkout.
- Fee Type: fixed amount, percentage of order, percentage with a minimum, or tiered pricing by cart value (each tier can be fixed or a percentage, with an optional minimum).
- Enable Package Protection, Default to Opted-In and Show Protected Badge on Orders.
- Checkout Position, and optionally Show on Cart Page with a cart position.
Branding
- Widget title, description and the info text shown when customers click “Learn more”.
- Widget style and colors (background, border, text and link), with a live preview.
- Whether to show the OrderCtrl logo.
Click Sync with store to save your changes to your checkout through the WordPress plugin. Use the order is protected condition in claim policies to treat protected orders differently.
Automations & emails
Automations
Settings → Policy & Automation Settings → Automations
An automation starts from a trigger, can check conditions, wait, and then act. Click New automation and start blank or from a preset. Starter automations are added switched off so you can review them first.
| Step | Options |
|---|---|
| Triggers | Shipping issues (delays, stalled, lost, damaged, exceptions, returned, undeliverable, delivery date pushed back), orders, claims, returns and subscriptions |
| Conditions | Order, customer, product, shipping and payment details, with yes/no branches |
| Wait | Minutes, hours or days, up to 60 days |
| Actions | Alert the team, email the customer, open a claim, tag the order, add a note, send a webhook |
Text in emails and alerts can use variables like {customer.name}, {order.name}, {order.total}, {shipment.carrier}, {shipment.tracking_code}, {portal.url} and {claim.url}.
Use Run once per order to avoid repeats and Stop when resolved to cancel waiting steps once the problem is fixed. The list shows each automation’s runs and last run, and you can turn it on or off, duplicate or delete it.
Claims opened by automations
An automation can open a claim in three ways: for your team to review, approved right away, or by emailing the customer to choose from the options in your claim policy.
Automations & emails
Customer & team emails
Settings → Store Settings → Notifications
Notifications are listed by category (Orders, Claims & requests, Returns, Subscriptions). Most events have a customer email and a team email; use Edit Customer or Edit Admin to change either one.
- Send this notification: each email is off until you turn it on. The setup wizard’s recommended setup turns on a starter set.
- Content: subject line, preview text, main heading, sub heading and body. Use Generate next to a field for AI help writing it.
- Variables: click View Available Variables to see what you can insert, like the customer’s name or tracking link.
- Conditions: for claim and return emails, send only for certain resolution types, who started the request (customer, your team, or detected automatically), or whether a return is required.
- Live preview: pick a real order or request to preview with real data.
- Send test email: choose a preview record first, then send to one or more addresses.
Shipping updates for orders with several boxes are grouped within a 4-hour window. Exceptions send right away.
SMS is coming soon. Today, customer messages are sent by email.
Automations & emails
Email branding
Notifications → Email branding
Pick a Template Style, then style each part. A live preview updates as you go, and Send test email sends you a sample.
| Part | What you can change |
|---|---|
| Header | Background and text color, font, size, alignment and text case. Upload a logo or use a logo URL, with a link, alignment and height. |
| Body | Background, text and heading colors, font, size, alignment, line height and corner style. |
| Buttons | Link color, primary and secondary button colors, corner style (rounded, square or pill), padding, text case and weight. |
| Footer | Background, text color, size, alignment and padding. Add rich-text content before or after footer links, a list of links, and an optional footer logo. |
Automations & emails
Sender & sending domain
Notifications → Sender & domain
Sender name and reply-to
- Sender Name: the name customers see in their inbox. If you leave it empty, your store name is used.
- Reply-To Email: where customer replies go, like
support@yourstore.com.
Without a custom sending domain, emails come from OrderCtrl’s sending address with your sender name, and replies go to your reply-to address.
Send from your own domain
To send from an address like hello@yourstore.com:
- Open Sender & domain and go to Configure Domain. Enter the Domain Name, the From Email Address, the From Name and a Reply-To Email Address (your customer service email is recommended).
- OrderCtrl creates the domain and shows the DNS records to add. These cover records such as SPF, DKIM, MX, DMARC and return path. Add each one at your domain provider exactly as shown.
- Click Verify DNS Records. Each record shows Verified once it’s found. DNS changes can take a while to spread, so check again later if some aren’t found yet.
Once the domain is verified, every email sends from your address. Until then, emails keep sending from OrderCtrl’s address, so nothing stops while you wait. Each store has one sending domain.
Add the records to the same domain you entered. If you use a subdomain for sending, like mail.yourstore.com, enter that subdomain as the domain name.
Integrations & API
Integrations
Settings → Integrations
Integrations are listed as connected, available or coming soon. To connect one, click it and either sign in with the service (for integrations that use OAuth) or paste its API key.
Once connected, you can test the connection, turn it off for a while, or disconnect it. Available integrations include Klaviyo, Stripe and Square; the page shows the current list for your store.
Integrations & API
Helpdesk card
Settings → Store Settings → Helpdesk & API
Show orders, subscriptions and what a customer can claim right inside your helpdesk. Supported: Gorgias, Zendesk, Help Scout, Freshdesk, Gladly, Kustomer, Re:amaze and Richpanel.
- Click Generate API key. Copy it now, it won’t be shown again.
- Pick your helpdesk to see its setup steps and the URL to paste into it.
- Optionally add your helpdesk’s signing secret so OrderCtrl checks every request.
- Use Try it with an email, order number or ticket text to preview the card.
The page shows the start of your key and when it was created and last used. Rotate key replaces it, and the old key stops working immediately. Revoke key turns it off, and every helpdesk using it stops working.
The card finds the customer by email, order number or phone and shows their orders, shipments, subscriptions, open and recent claims, and which fixes your policy allows for the problem in the ticket.
Integrations & API
Order Intelligence API
Use the API to pull the same order context into any tool. Send your API key as a bearer token. Requests are limited to 60 per minute per store.
POST /api/store/{store-slug}/intelligence
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"email": "customer@example.com",
"order_id": "4412",
"context": "I only got one of my two boxes",
"include": ["order_status", "shipments", "sla", "requests", "resolutions", "eligibility", "actions"],
"generate_reply": true
}
Send an order_id for one order, or just an email for the customer’s 10 most recent orders. include picks sections (all by default). context is the customer’s message, used to match the issue and write a suggested reply when generate_reply is true.
Helpdesk card endpoint
GET /api/store/{store-slug}/helpdesk/widget?email=customer@example.com&format=json
Authorization: Bearer YOUR_API_KEY
format can be json, html (a ready-made card) or page (a full page for an iframe). You can also look up by order, phone or ticket text.
Team & billing
Team & roles
Settings → Store Settings → Team Management
Invite teammates with Invite User: enter their email and pick a role. Invitations are listed as pending, accepted or expired.
| Role | Can do |
|---|---|
| Owner | Everything, including billing, and can assign any role. |
| Admin | Everything, including billing, except assigning the owner role. Can invite admins and analysts. |
| Analyst | Work with orders, shipments, claims and analytics. Can’t open store details, automations, integrations, Helpdesk & API, users or billing. |
Your account
Open Account Settings from the user menu to update your profile and password, turn on two-factor authentication, and sign out of other browser sessions.
Team & billing
Plans & credits
Settings → Billing Center and Credits Activity
Plans are monthly and every plan includes every feature. One credit tracks one shipment. Labels bought through OrderCtrl’s label account are also paid with credits, priced before you buy; voiding a label returns them. See Pricing for plans.
- Billing Center: add payment methods, change plans, and cancel or resume your subscription.
- Credit Settings: turn on Enable Auto-Renewal and set a Renewal Threshold (10 to 100 credits). When your balance falls below it, your plan renews and its credits are added.
- Credits Activity lists every shipment that used a credit.
- You can downgrade once your remaining credits fit the smaller plan.
Team & billing
Notification & webhook logs
Settings → Store Settings → System & Dev
- Notification Logs: every email OrderCtrl sent or tried to send, with its status. Logs are kept for 90 days.
- Webhook Logs: updates received from WooCommerce and carriers, useful when checking why an order or shipment didn’t update.