Skip to main content
WooCommerce Routific WooCommerce to Routific

FleetConnector Routific Documentation

Complete guide to installing, configuring, and using the WooCommerce to Routific integration plugin

Ready to automate your WooCommerce deliveries with Routific?

€199/year per integration · unlimited orders · 14-day money-back guarantee. Requires an active Routific account.

1

Installation

1.1 System requirements

Before installing the WooCommerce to Routific plugin, ensure your system meets these requirements:

  • WordPress 6.0 or higher: Tested up to WordPress 6.9
  • WooCommerce 7.0 or higher: Must be installed and activated. Tested up to WooCommerce 11.1
  • PHP 7.4 or higher: Required for modern PHP features
  • An active Routific account: You need a Routific API token (created under Company Settings → Integrations) and at least one workspace
  • A FleetConnector license: Orders are only sent to Routific while a valid license is active
  • A publicly reachable site with HTTPS (recommended): Needed to receive Routific webhooks for delivery status updates
HPOS compatible: FleetConnector Routific fully supports WooCommerce High-Performance Order Storage (HPOS) and the order cache, as well as the legacy post-based order storage.

1.2 Installation steps

1

Purchase and Download

Purchase the WooCommerce to Routific plugin from our website for €199/year. You'll receive a download link and license key via email.

After purchase → Check email → Download fleetconnector-routific.zip
2

Upload to WordPress

Navigate to Plugins → Add New → Upload Plugin in your WordPress admin.

WordPress Admin → Plugins → Add New → Upload Plugin → Choose fleetconnector-routific.zip
3

Activate Plugin

After the upload completes, click "Activate Plugin". On activation the plugin creates its activity log table and schedules a daily clean-up of old log entries. The plugins list now shows "Settings" and "Documentation" links for FleetConnector Routific.

Important: WooCommerce must be installed and activated first. Without WooCommerce the plugin stays inactive and shows the notice "FleetConnector Routific requires WooCommerce to be installed and activated."
4

Activate License

Go to WooCommerce → FleetConnector Routific and enter your license key in the License card at the top of the page.

WooCommerce → FleetConnector Routific → License → Enter key → Activate License
5

Connect Routific

Paste your Routific API token, load and select your workspace, and save. Optionally set up the Routific webhook to receive delivery status updates (see Chapter 4).

Routific API Token → Load workspaces → Select workspace → Save All Settings

1.3 Where to find the plugin

After activation, FleetConnector Routific adds two pages to the WooCommerce menu. Both require the manage_woocommerce capability (shop managers and administrators).

WooCommerce → FleetConnector Routific

The settings page: license, Routific connection, automatic sending, synchronization, order details, delivery date, webhooks and the danger zone.

WooCommerce → FCR Dashboard

The activity dashboard with statistics, filters, the activity log, retry buttons and CSV export.

2

Configuration

Configure the WooCommerce to Routific connection and customize which orders are sent and which details Routific receives. All settings live on WooCommerce → FleetConnector Routific and are stored with the "Save All Settings" button at the bottom of the page.

2.1 License

The License card at the top of the settings page activates your FleetConnector license. Licenses are managed through Lemon Squeezy; activating a key registers this site (by its domain name) as an activation of your license.

  1. Paste the license key from your purchase email into the "License Key" field
  2. Click "Activate License"
  3. The page reloads and shows "License Active"

License States

Active

All features are enabled. The key is shown masked, with a "Deactivate" button.

Invalid

The key is invalid or expired. Orders are not sent to Routific until a valid license is active.

License Required

No key has been entered yet.

Good to know

  • • The license is re-validated automatically once a week (WP-Cron). If the license server can't be reached, the integration keeps working; only an explicit "invalid" response disables it.
  • • "Deactivate" releases the activation slot, so you can use the key on another site (for example when moving from staging to production).
  • • A key that belongs to another FleetConnector product is refused with "This license key belongs to another FleetConnector product."

2.2 Routific connection

FleetConnector Routific uses the Routific Platform API (v2) at https://api.plan.routific.com/v2. It authenticates with an API token and creates orders in one Routific workspace.

Step 1: Create a Routific API Token

  1. Log in to Routific
  2. Go to Company Settings → Integrations
  3. Click "Create API Token"
  4. Copy the generated token

Step 2: Configure in WooCommerce

  1. In WordPress admin, go to WooCommerce → FleetConnector Routific
  2. Find the "Routific Connection" card
  3. Paste your token in the "Routific API Token" field
  4. Click "Load workspaces" and choose your workspace in the "Workspace" dropdown (selected automatically when your token has access to only one workspace)
  5. Click "Test Connection" to verify the token and workspace
  6. Click "Save All Settings" at the bottom of the page
Success Indicator: "Test Connection" shows Connected to Routific. Workspace: <your workspace>. If no workspace is saved yet it reports how many workspaces are available and asks you to select one and save.
Token expiry: Routific API tokens can expire. When Routific reports an expired token, the plugin shows an admin notice ("your Routific API token has expired, so orders can't be sent to Routific") with an "Update token" link. Create a new token in Routific, paste it here and save. The notice disappears automatically after the next successful API call.

2.3 Automatic order sending

Automatically send orders to Routific

When enabled, orders are sent to Routific as soon as they reach one of the selected statuses.

Default: Enabled

When disabled, you send orders manually with the order actions or bulk actions (see Chapter 3).

Send orders when the status changes to:

Choose one or more WooCommerce order statuses (custom statuses are listed too). An order is sent the first time it changes to one of these statuses and is not yet linked to a Routific order.

✓ Processing (Default)

The order is paid and ready to be delivered. Recommended for most shops.

Other statuses

For example "Completed" if you only want to plan orders after they have been picked and packed.

Only send orders that need a delivery

Skips orders without shippable products and orders with local pickup. Pickup shipping methods are local_pickup, pickup_location and local_pickup_plus (customizable with the fcr_excluded_shipping_methods filter).

Default: Disabled. Enable this if you sell virtual or downloadable products, or offer local pickup, and only want real deliveries in Routific.

Send orders in the background (recommended)

Uses the WooCommerce Action Scheduler so checkout is never slowed down by the Routific API. Temporary errors are retried automatically (see section 3.6).

Default: Enabled. When disabled, API calls run immediately during the request that changed the order.

2.4 Synchronization settings

Automatically sync order changes to Routific

When enabled (default), changes to an order that was already sent to Routific are pushed to the Routific order.

How it works:

  • • Address, items, notes and delivery date changes are sent to Routific
  • • The update only happens when something relevant changed: the plugin compares a fingerprint (hash) of the data with the last sync and skips unchanged orders
  • • Orders that are already delivered or missed in Routific are not changed
  • • Cancelled, refunded, failed and trashed orders are not synced
  • • If no customer delivery date is found, the delivery date that was sent earlier is kept, so the fallback date doesn't move every time the order is saved

Remove the Routific order when the WooCommerce order is cancelled

When enabled, cancelling a WooCommerce order deletes the linked order in Routific. Default: Disabled.

Note: Orders on a published route (or already completed) cannot be deleted through the Routific API. When that happens the plugin adds a note to the WooCommerce order and you need to remove the order manually in Routific.

2.5 Order details sent to Routific

The "Order Details Sent to Routific" card controls which information Routific and your drivers receive.

Service time per stop (minutes)

Time the driver spends at the address, including parking. Used by Routific to plan realistic routes. Sent as duration in seconds; 0 sends no duration.

Default: 5 minutes

Load (vehicle capacity)

Routific compares the load with the capacity of your vehicles. Use the same unit as the capacity in Routific.

Do not send a load (default)
Number of items
Total weight of the products

Checkboxes

  • Send the customer phone number (default: on): Lets drivers call the customer and enables Routific SMS notifications (if enabled in your Routific account).
  • Send the customer email address (default: on): Enables Routific email notifications (if enabled in your Routific account).
  • Add the ordered products to the driver instructions (default: on): Lists every item as "2x Product name", including item options such as size or color.
  • Add payment information to the driver instructions (default: on): Shows the amount to collect for cash on delivery orders ("Collect payment on delivery: …"); for other orders the payment method is shown ("Payment: …").

Tags (optional)

Comma separated. Tagged orders can only be planned on routes with matching tags in Routific. Leave empty if you don't use tags.

Example: webshop, refrigerated

Order number prefix (optional)

Added in front of the WooCommerce order number in Routific. Useful when several shops use the same Routific account.

Example: WEB- → WEB-1234

2.6 Delivery date & time window

The delivery date chosen by the customer is sent as the Routific delivery date. Time slots (e.g. "09:00 - 12:00") are sent as the time window.

Delivery date plugin

Auto-detect (Default)

Checks the fields of all supported plugins below, in this order

Order Delivery Date for WooCommerce (Tyche)

_orddd_lite_timestamp, _orddd_timestamp, orddd_timestamp

Iconic WooCommerce Delivery Slots

jckwds_date_ymd, jckwds_timestamp, jckwds_date, _jckwds_date

Other plugin using a "delivery_date" field

_delivery_date, delivery_date, _iconic_delivery_date, _wc_delivery_date, ywcdd_order_delivery_date, _ywcdd_order_delivery_date

Custom field

Enter the order meta key that holds the delivery date in "Custom field name" (for example _delivery_date)

Supported date formats

  • • Unix timestamps (seconds or milliseconds)
  • • YYYY-MM-DD and compact YYYYMMDD
  • • European notation DD-MM-YYYY, DD/MM/YYYY or DD.MM.YYYY
  • • Other date strings that PHP can parse

A detected date in the past is ignored and the fallback below is used instead.

When no delivery date is found

  • Use the next business day (Mon-Fri): Default. Skips Saturday and Sunday.
  • Use tomorrow
  • Use today
  • Don't send a date (plan it manually in Routific)

Time windows

The plugin looks for a time slot in these order fields: jckwds_timeslot, _jckwds_timeslot, _orddd_time_slot, _orddd_lite_time_slot, orddd_time_slot, _delivery_time, delivery_time, ywcdd_order_slot_from. Slots like "09:00 - 12:00", "9am - 12pm" or "09.00 to 12.00" are converted to a 24-hour time window. The start time must be before the end time.

Use a default time window

"Use a default time window when the customer didn't choose a time slot". Default: Disabled (no time window is sent).

From / Until

The default window used when the checkbox is enabled.

Default: 09:00 - 17:00
Format: HH:MM (24-hour)

2.7 Delivery status updates (webhooks)

Webhook URL

Use "Copy URL" to copy the URL for your Routific webhook:

https://yoursite.com/wp-json/fleetconnector-routific/v1/webhook

You'll configure this in Chapter 4 (Webhooks).

Signing secret

Required. Every webhook is verified with this secret (HMAC-SHA256), so nobody else can change your orders. Without a signing secret, all incoming webhooks are rejected.

Order status mappings

Each option defaults to "Do not change status". Choose a WooCommerce status to change orders automatically:

Order status when delivered

For example "Completed", so the customer receives the WooCommerce "order completed" email.

Order status when the delivery is missed

For example "On hold" or a custom status, so you can follow up with the customer.

Order status when the route is published

Triggered when the dispatcher publishes the route with this order to a driver.

Save the driver name on the order

Default: Enabled. Controls whether the driver's name from the published route is stored on the order. The stop number and ETA are stored whenever a route is published.

Email the Routific tracking link to the customer

Default: Disabled. Adds the tracking link as a customer note (WooCommerce sends it by email) as soon as the route is published.

2.8 Display & advanced

Show a Routific status column in the orders list

Default: Enabled

Adds a "Routific" column after the status column in WooCommerce → Orders (see section 3.5).

Enable debug logging

Writes detailed information to WooCommerce → Status → Logs (source: fleetconnector-routific). Errors are always logged. Default: Disabled.

Tip: Enable debug logging while setting up or troubleshooting, and turn it off again afterwards to keep your logs small.

2.9 Danger zone

Warning: These actions are irreversible. Use with caution.

Remove all Routific links

Use this when you switch to another Routific account or workspace. It removes the link between your WooCommerce orders and Routific (the Routific order ID, status, driver, ETA, tracking link and related order data), so orders can be sent to the new account or workspace. Nothing is deleted in Routific.

Large shops are processed in batches. If the result says "orders cleaned up so far", click the button again to continue.

Clear Activity Logs

Clears all FleetConnector Routific activity logs from the dashboard.

3

Features

FleetConnector Routific provides multiple ways to send WooCommerce orders to Routific and keep track of them.

3.1 Automatic order sending

With automatic sending enabled, every order that reaches a trigger status is sent to Routific in the background. When the order is created in Routific, FleetConnector:

  • Stores the Routific order ID and Routific order number on the WooCommerce order
  • Adds an order note, for example "Order sent to Routific (<Routific order number>) for delivery on <date>."
  • Logs the action in the FCR Dashboard, including the data that was sent

The new Routific order starts with the status "Not scheduled" and is ready to be planned on a route in Routific.

3.2 Manual order actions

Even with automatic sending enabled, you can send, update or remove individual orders from the order edit screen.

From the Order Actions Dropdown

  1. Open any WooCommerce order
  2. In the "Order actions" box, open the dropdown
  3. Choose one of the Routific actions below and click the update button

Send to Routific

Shown when the order hasn't been sent yet. Creates the order in Routific.

Update order in Routific

Shown for orders that are already linked. Pushes the current order data to Routific, even when nothing changed since the last sync.

Remove from Routific

Shown for linked orders. Deletes the order in Routific and removes the link, so the order can be sent again later.

Immediate result: Order actions run right away (not in the background), so you see the result immediately. Errors are added as an order note starting with "Routific:".

3.3 Bulk actions

Send or update multiple orders at once using WooCommerce bulk actions. Works on both the HPOS orders screen and the legacy orders screen.

How to Use Bulk Actions

  1. Go to WooCommerce → Orders
  2. Check the boxes next to the orders you want to process
  3. Select "Send to Routific" or "Update in Routific" from the Bulk Actions dropdown
  4. Click "Apply"

What happens during bulk processing:

  • • Send to Routific skips orders that were already sent and orders that don't need a delivery
  • • Update in Routific skips orders that haven't been sent yet, and only calls Routific for orders whose data changed
  • • With background processing enabled, orders are queued and processed in the background: "3 orders are being sent to Routific in the background."
  • • The notice also reports how many orders were skipped (already sent, not sent yet or no delivery needed)
  • • All results are logged in the FCR Dashboard

3.4 Routific Delivery meta box

When editing any WooCommerce order, you'll see a "Routific Delivery" meta box in the sidebar with the current state of the Routific order.

Information Displayed

  • Routific order: The Routific order number (or ID)
  • Status: Not scheduled, Scheduled, Delivered or Missed
  • Delivery date: The delivery date sent to Routific (updated with the route date when a route is published)
  • Driver, Stop, ETA: Filled when the route is published
  • Delivered at, Missed reason, Driver notes: Filled by delivery status webhooks
  • Sent / Last update: When the order was created and last updated in Routific
  • Open delivery tracking → Link to the Routific tracking page, once available
  • Last error: Shown in red when the last Routific request failed

Orders that haven't been sent show "Not sent to Routific yet." and, when applicable, "This order does not require a delivery."

3.5 Routific status column

FleetConnector Routific adds a "Routific" column to your WooCommerce orders list. Hover over an icon to see the status as a tooltip.

Status Indicators

✔✔
Double checkmark

Delivered

✔
Green checkmark

Sent to Routific (tooltip shows Not scheduled or Scheduled)

✘
Red cross

Delivery missed

!
Red exclamation mark

Not sent because of an error (tooltip shows the error message)

—
Gray dash

Not sent, or no delivery required

3.6 Background processing and automatic retries

API calls are queued in the WooCommerce Action Scheduler, so your checkout and admin screens are never slowed down by the Routific API.

  • Hook: fcr_process_order (arguments: order ID and action)
  • Group: fleetconnector-routific
  • Actions: create, update, delete and refresh (fetch tracking link and proof of delivery)
  • No duplicates: only one pending action per order and action type is queued

Automatic Retries

Temporary errors are retried automatically up to three times: after 1 minute, after 5 minutes and after 15 minutes. Temporary errors are:

  • Connection errors and timeouts
  • Rate limits (HTTP 429)
  • Routific server errors (HTTP 5xx)

Other errors, such as validation errors, are not retried. They are shown in the meta box, the status column and the dashboard, where you can retry after fixing the order.

Tip: You can inspect queued actions under WooCommerce → Status → Scheduled Actions. Search for fcr_process_order.

3.7 Duplicate prevention

FleetConnector Routific makes sure an order is only created once in Routific:

  • An order that already has a Routific order ID is never created again ("This order was already sent to Routific.")
  • Queued create actions check again right before sending, in case the order was sent manually in the meantime
  • Retries from the dashboard and the "Send to Routific" order action update an existing Routific order instead of creating a new one
  • Webhook processing never triggers a sync back to Routific
4

Webhooks

Webhooks send delivery status updates from Routific back to WooCommerce. When a dispatcher publishes a route or a driver completes a delivery, your WooCommerce orders are updated automatically.

4.1 Webhook setup

Step 1: Get Your Webhook URL

  1. In WordPress admin, go to WooCommerce → FleetConnector Routific
  2. Scroll to the "Delivery Status Updates (Webhooks)" card
  3. Click "Copy URL" (it will look like https://yoursite.com/wp-json/fleetconnector-routific/v1/webhook)

Step 2: Create the Webhook in Routific

  1. Log in to Routific with an admin user (only admins can manage webhooks)
  2. Go to Company Settings → Routific webhook
  3. Create a webhook with the URL you copied and activate it
  4. Subscribe to the events order.status_updated, route.published, route.unpublished and route.eta_updated

Step 3: Add the Signing Secret

  1. Copy the signing secret of the webhook from Routific
  2. Paste it in the "Signing secret" field in the plugin settings
  3. Click "Save All Settings"
  4. Use "Test connection" in Routific to check that everything works
Important: The signing secret is required. Without it, every webhook is rejected and your orders are not updated.
Success: Test events and events for topics the plugin doesn't use are acknowledged, so the Routific test succeeds as soon as the URL and secret are correct.

4.2 Webhook security

Every incoming request is verified before anything is changed:

  • Signature: The x-routific-signature header (format v0=<hex>) must match an HMAC-SHA256 of the raw request body, calculated with your signing secret. During a secret rotation, Routific may send two comma separated signatures; either one is accepted.
  • Replay protection: Requests with an x-routific-timestamp more than 5 minutes away from your server time are rejected.
  • Deduplication: Each x-routific-event-id is processed only once (remembered for 24 hours). Retried deliveries of the same event are acknowledged with "Already processed".

Rejected requests receive HTTP 401 and a warning is written to WooCommerce → Status → Logs (source fleetconnector-routific), for example "Webhook rejected: invalid signature".

4.3 Supported webhook events

Routific orders are matched to WooCommerce orders by the Routific order ID. If that fails, the customer order number (without your prefix) is used as a fallback.

1 order.status_updated (delivered)

When triggered: The driver marks the order as delivered in Routific.

What happens:

  • The Routific status and delivery time are saved on the order
  • Driver notes from Routific are saved and included in the order note "Routific: order delivered."
  • The order status changes to your "Order status when delivered" setting (if set)
  • The tracking link and proof of delivery info are fetched in the background
  • The event is logged in the FCR Dashboard

2 order.status_updated (missed)

When triggered: The driver marks the delivery as missed in Routific.

What happens:

  • The missed reason is saved ("No reason given" when Routific sends none)
  • An order note is added: "Routific: delivery missed. Reason: …"
  • The order status changes to your "Order status when the delivery is missed" setting (if set)
  • The event is logged in the FCR Dashboard as failed, so missed deliveries are easy to filter

Other order statuses reported by Routific are added as an order note ("Routific: order status changed to …").

3 route.published

When triggered: The dispatcher publishes a route to a driver.

What happens for every order on the route:

  • The Routific status becomes "Scheduled" and the delivery date is set to the route date
  • The stop number and estimated arrival time (ETA, in your site's timezone) are saved
  • The driver's name is saved (if "Save the driver name on the order" is enabled)
  • An order note is added: "Routific: route published for <date>. Driver: <name>. Estimated arrival: <time>."
  • The order status changes to your "Order status when the route is published" setting (if set)
  • The customer tracking link is fetched in the background

4 route.unpublished

When triggered: The dispatcher unpublishes a route.

What happens:

  • For orders on that route that are not yet delivered or missed, the ETA and stop number are removed
  • An order note is added: "Routific: the route for this order was unpublished by the dispatcher."

5 route.eta_updated

When triggered: Routific recalculates the arrival times on a route.

What happens:

  • The ETA on each open order is updated silently (no order note, to keep the order history clean)

4.4 Tracking link and proof of delivery

After a route is published or a delivery status changes, the plugin fetches the latest order details from Routific in the background:

  • Tracking link: the Routific delivery tracking URL, shown as "Open delivery tracking →" in the meta box
  • Status: the current Routific order status
  • Proof of delivery: whether a signature was captured and how many photos were taken
Customer tracking email: With "Email the Routific tracking link to the customer" enabled, the link is added once as a customer note ("Track your delivery: …"). WooCommerce emails customer notes to the customer automatically.

4.5 Keeping webhooks healthy

Routific can automatically disable a webhook after repeated failed deliveries, for example when your site was down or the signing secret didn't match. If order updates suddenly stop arriving, check in Company Settings → Routific webhook that the webhook is still active, and reactivate it after fixing the cause.

Recommendation: After changing the signing secret in Routific, update it in the plugin settings right away and run "Test connection" in Routific.
5

Dashboard

The FleetConnector Routific Dashboard provides complete visibility into all WooCommerce to Routific activity.

5.1 Accessing the dashboard

Access the dashboard by navigating to:

WordPress Admin → WooCommerce → FCR Dashboard

There is also a "Dashboard" link in the header of the settings page. The unfiltered first page refreshes automatically every 60 seconds.

5.2 Statistics overview

At the top of the dashboard, you'll see key statistics cards based on the activity log:

Total Actions

All logged actions (create, update, delete and webhook)

Successful

Actions that completed successfully

Failed

Failed requests and missed deliveries

Pending

Actions with a pending status

Today

Actions logged today

This Week

Actions logged since Monday

5.3 Activity log

The activity log shows a detailed record of all actions between WooCommerce and Routific, 50 entries per page, newest first.

Filters

  • Status: All Statuses, Success, Failed, Pending
  • Action: All Actions, Create, Update, Delete, Webhook
  • Date range: From date and to date
  • Filter / Reset: Apply or clear the filters

Log Columns

  • ID: Log entry number
  • Order: WooCommerce order number (clickable link to the order)
  • Routific ID: The Routific order ID (shortened; hover to see the full ID)
  • Action: Create, Update, Delete or Webhook
  • Status: Success, Failed or Pending
  • Message: What happened, plus the error message for failures
  • Date: When the action took place
  • Actions: "Details" and, for failed create or update actions, "Retry"

Details

Click "Details" to open the Log Details window with the Request Data (the order data sent to Routific) and the Response Data (Routific's answer or the webhook payload) as formatted JSON.

5.4 Export to CSV

Export your activity log to CSV format for analysis, reporting, or record-keeping.

How to Export

  1. Set any filters you want (status, action, date range)
  2. Click the "Export CSV" button
  3. The filtered results download as fleetconnector-routific-logs-YYYY-MM-DD.csv

The CSV contains the columns ID, Order ID, Routific ID, Action, Status, Message, Error and Created At. Values are protected against spreadsheet formula injection.

5.5 Retry failed orders

After fixing the cause of an error (for example an incomplete address), you can send the order again directly from the dashboard.

How to Retry

  1. Filter the log on status "Failed"
  2. Find the failed create or update action
  3. Click "Retry" and confirm

Retry runs immediately. It creates the order in Routific, or updates it when the order was already sent, so a retry never creates a duplicate.

5.6 Log retention and WooCommerce logs

Activity log entries are kept for 90 days. A daily task (fcr_cleanup_logs) removes older entries. Developers can change the retention period with the fcr_log_retention_days filter (return 0 to keep logs forever). You can also clear all logs at once in the Danger Zone of the settings page.

Technical messages (API requests, errors, rejected webhooks, retries) are written to WooCommerce → Status → Logs with the source fleetconnector-routific. Errors, warnings and info messages are always logged; debug messages only when "Enable debug logging" is on.

6

Technical Details

Understanding how FleetConnector Routific works behind the scenes.

6.1 How the integration works

FleetConnector Routific bridges WooCommerce and the Routific Platform API (v2) using WordPress hooks, the WooCommerce Action Scheduler and direct HTTP API calls.

WooCommerce → Routific Flow

1

Order reaches a trigger status (e.g., Processing), detected via woocommerce_order_status_changed

2

A create action is queued in the Action Scheduler (hook fcr_process_order)

3

License and configuration are checked; the delivery date, time window, address and instructions are built from the order

4

The order is sent to POST /v2/orders?workspaceUuid=…

5

The Routific order ID, order number, status and a fingerprint of the sent data are saved to order meta

6

Later order changes (woocommerce_update_order) queue an update, which is only sent when the fingerprint changed

6.2 Routific API endpoints

All requests go to https://api.plan.routific.com with the header Authorization: Bearer <API token> and a 30-second timeout.

Request Used for
GET /v2/workspaces "Load workspaces" and "Test Connection"
POST /v2/orders?workspaceUuid=… Create the order in the selected workspace (the body is an array with one order)
PUT /v2/orders/{uuid} Update the order. This is a full replacement, sent only when the data changed. A 404 unlinks the order so it can be sent again
DELETE /v2/orders/{uuid} Remove the order (on cancellation or "Remove from Routific")
GET /v2/orders/{uuid} Fetch tracking link, status and proof of delivery after webhooks

6.3 Data sent to Routific

When creating or updating an order, FleetConnector Routific maps the WooCommerce order as follows. Optional fields are left out when they are empty or disabled in the settings.

Routific field WooCommerce source
name Shipping first + last name (billing name as fallback), prefixed with the company as "Company - Name". Falls back to "Order 1234"
locations[0].address Shipping address as a single line: street + address line 2, postcode + city, state, country name. The billing address is used when the order has no shipping address
customerOrderNumber Order number prefix + WooCommerce order number
instructions "Order #1234", the customer note, the ordered products and payment information (max. 2000 characters)
duration "Service time per stop" setting, converted from minutes to seconds
phone Shipping phone (billing phone as fallback) in international E.164 format. National numbers get the calling code of the address country and lose their leading 0
email Billing email address (only when valid)
deliveryDate Detected delivery date (YYYY-MM-DD) or the configured fallback date
timeWindows Customer time slot or the default time window, as startTime / endTime (HH:MM)
load Number of items or total product weight, depending on the "Load" setting
tags The comma separated "Tags" setting

Example Order Payload

{
    "name": "Acme Ltd - Jane Smith",
    "locations": [
        { "address": "Main Street 12, 1234 AB Amsterdam, Netherlands" }
    ],
    "customerOrderNumber": "WEB-1234",
    "instructions": "Order #1234\n\nCustomer note: Please ring twice\n\nItems:\n2x T-shirt (Size: L)\n\nPayment: Credit card",
    "duration": 300,
    "phone": "+31612345678",
    "email": "customer@example.com",
    "deliveryDate": "2026-10-01",
    "timeWindows": [
        { "startTime": "09:00", "endTime": "12:00" }
    ],
    "load": 2,
    "tags": ["webshop"]
}

6.4 Order meta keys

FleetConnector Routific stores the following meta data on WooCommerce orders (HPOS compatible):

Meta key Description
_routific_order_uuid Routific order ID (the link between both systems)
_routific_order_number Routific order number
_routific_workspace_uuid Workspace the order was created in
_routific_created Date and time the order was sent
_routific_updated Date and time of the last update
_routific_status Routific status (not_scheduled, scheduled, delivered, missed)
_routific_delivery_date Delivery date sent to Routific, or the route date after publishing
_routific_last_error Last error message (removed after a successful request)
_routific_payload_hash Fingerprint of the last sent data, used to skip unchanged updates
_routific_tracking_url Customer delivery tracking link
_routific_route_uuid Route the order was published on
_routific_driver_name Driver of the published route
_routific_stop_number Stop number on the route
_routific_eta Estimated arrival time (site timezone)
_routific_delivered_at Delivery time reported by Routific
_routific_missed_reason Reason for a missed delivery
_routific_delivery_notes Driver notes
_routific_pod Proof of delivery summary (signature yes/no, number of photos)
_routific_retry_{action} Temporary retry counter per action (create, update, delete, refresh)

6.5 Developer hooks and filters

Developers can customize FleetConnector Routific behavior using WordPress hooks and filters. Add your code to a small custom plugin or your (child) theme's functions.php.

Available Filters

Filter Arguments Description
fcr_order_payload $payload, $order Change the complete Routific order payload (create and update)
fcr_order_update_payload $payload, $order Change the payload for updates only (also used for the change fingerprint)
fcr_order_needs_delivery $needs_delivery, $order Decide whether an order should be sent to Routific
fcr_delivery_date $date, $order Final delivery date (YYYY-MM-DD, or null for no date)
fcr_delivery_date_meta_keys $keys, $order Order meta keys searched for the delivery date
fcr_time_window $window, $order Final time window (array with start and end, or null)
fcr_time_slot_meta_keys $keys, $order Order meta keys searched for the time slot
fcr_recipient_name $name, $order Name of the Routific order
fcr_address_parts $parts, $order Address parts (address_1, address_2, postcode, city, state, country) before they are combined
fcr_full_address $address, $order The single-line address sent to Routific
fcr_phone $phone, $order The formatted phone number
fcr_phone_country_code $calling_code, $country Calling code added to national phone numbers
fcr_instruction_lines $lines, $order Lines of the driver instructions
fcr_load $load, $order Load sent to Routific (null for no load)
fcr_excluded_shipping_methods $methods Shipping method IDs treated as pickup
fcr_order_id_from_number $order_id, $number Map a customer order number to an order ID in webhooks (for custom order number plugins)
fcr_log_retention_days $days Days to keep activity logs (default 90, 0 = keep forever)
fcr_lemonsqueezy_product_id $product_id Product ID that license keys must belong to

Available Actions

Action Arguments Runs when
fcr_order_created $uuid, $order, $created The order was created in Routific
fcr_order_updated $uuid, $order, $response The order was updated in Routific
fcr_order_deleted $uuid, $order The order was deleted from Routific
fcr_order_create_failed
fcr_order_update_failed
fcr_order_delete_failed
$order, $error A Routific request failed ($error is a WP_Error)
fcr_webhook_received $topic, $data Any verified webhook was processed
fcr_webhook_order_delivered $order, $data An order was delivered
fcr_webhook_order_missed $order, $data A delivery was missed
fcr_webhook_order_status_updated $order, $status, $data Any other order status update
fcr_webhook_route_published $route, $timeline, $data A route was published (once per route)
fcr_webhook_route_published_order $order, $stop, $route A route was published (once per order on the route)
fcr_webhook_route_unpublished $route, $data A route was unpublished
fcr_webhook_route_eta_updated $data Arrival times on a route were updated

Examples

fcr_order_payload

Add an extra tag and a gate code to the Routific order. You can also add Routific customFields here; custom fields must already exist in your Routific account, and must use the structure described in the Routific API reference.

add_filter('fcr_order_payload', function ($payload, $order) {
    // Only plan refrigerated orders on routes with the "refrigerated" tag
    if ($order->get_meta('_needs_cooling') === 'yes') {
        $payload['tags']   = isset($payload['tags']) ? $payload['tags'] : array();
        $payload['tags'][] = 'refrigerated';
    }

    // Show a gate code to the driver
    $gate_code = $order->get_meta('_gate_code');
    if ($gate_code) {
        $payload['instructions'] .= "\n\nGate code: " . $gate_code;
    }

    return $payload;
}, 10, 2);

fcr_phone_country_code

Use a default calling code for national phone numbers when the order has no country. Numbers that already start with + or 00 are not changed.

add_filter('fcr_phone_country_code', function ($calling_code, $country) {
    if ($calling_code === '') {
        return '+31'; // Netherlands
    }
    return $calling_code;
}, 10, 2);

fcr_delivery_date_meta_keys

Read the delivery date from an additional order field first.

add_filter('fcr_delivery_date_meta_keys', function ($keys, $order) {
    array_unshift($keys, '_my_checkout_delivery_date');
    return $keys;
}, 10, 2);

fcr_webhook_order_delivered

Run your own code when Routific reports a delivery.

add_action('fcr_webhook_order_delivered', function ($order, $data) {
    error_log('Order #' . $order->get_id() . ' delivered via Routific');
}, 10, 2);

6.6 Database structure

FleetConnector Routific creates one custom database table for the activity log. The table is created on activation and upgraded automatically after plugin updates.

Table: wp_fcr_logs

The wp_ prefix matches your WordPress table prefix.

Column Type Description
id BIGINT(20) UNSIGNED Primary key
order_id BIGINT(20) UNSIGNED WooCommerce order ID
remote_id VARCHAR(255) Routific order ID
action VARCHAR(50) create, update, delete or webhook
status VARCHAR(50) success, failed or pending
message TEXT Human-readable message
request_data LONGTEXT JSON-encoded data sent to Routific
response_data LONGTEXT JSON-encoded Routific response or webhook payload
error_message TEXT Error message for failed actions
created_at DATETIME Timestamp (site timezone)
updated_at DATETIME Reserved for updates

Settings and Scheduled Tasks

  • • All settings are stored as WordPress options prefixed with fcr_ (for example fcr_api_token, fcr_workspace_uuid, fcr_trigger_statuses)
  • • WP-Cron events: fcr_cleanup_logs (daily) and fcr_weekly_license_check (weekly)
  • • Action Scheduler actions: hook fcr_process_order, group fleetconnector-routific

6.7 Deactivation and uninstall

Deactivation

Deactivating the plugin stops the scheduled tasks and removes pending background actions. Settings, logs and order data are kept.

Uninstall (Delete)

  • Releases the license activation slot, so the key can be used on another site
  • Deletes all plugin settings and temporary data
  • Removes scheduled tasks and pending background actions
  • Drops the wp_fcr_logs activity log table
Order history stays intact: Routific order meta (Routific IDs, delivery status, driver and tracking information) is intentionally kept on your orders after uninstalling.
7

Troubleshooting

Common issues and their solutions when using the WooCommerce to Routific integration.

7.1 Common issues

"API token has expired" or "The Routific API token is invalid"

Solutions:

  • Create a new token in Routific under Company Settings → Integrations → Create API Token
  • Paste it in "Routific API Token" (click "Update token" in the admin notice to get there) and click "Save All Settings"
  • Click "Test Connection" to confirm; the expired notice disappears after the next successful API call
  • Resend orders that failed in the meantime with the "Retry" button in the FCR Dashboard

No workspace, or "Routific API token or workspace not configured"

Solutions:

  • Click "Load workspaces", select a workspace and save; both the token and a workspace are required
  • "No workspaces found for this API token." - check that the token belongs to the right Routific company and that it has at least one workspace
  • "Connected to Routific, but the selected workspace is not available for this token." - you probably changed the token; select the workspace again and save
  • Switching to another account or workspace? Use "Remove all Routific links" in the Danger Zone so existing orders can be sent to the new workspace

Orders Not Sent Automatically

Solutions:

  • Check that your license is active; without it you'll see "Invalid or expired FleetConnector license." in the dashboard
  • Verify "Automatically send orders to Routific" is checked
  • Check that the order status matches one of the selected trigger statuses; orders are sent when they change to that status
  • With "Only send orders that need a delivery" enabled, orders with only virtual products or local pickup are skipped (the meta box shows "This order does not require a delivery.")
  • Check the "Routific Delivery" meta box and the FCR Dashboard for error messages
  • Look for pending actions under WooCommerce → Status → Scheduled Actions (search for fcr_process_order, group fleetconnector-routific). The Action Scheduler runs on WP-Cron; if WP-Cron is disabled or your site has little traffic, set up a real server cron job

Validation Errors or Missing Address

Solutions:

  • "The order has no shipping or billing address." - add an address to the order and retry
  • Routific validation errors (HTTP 400, type VALIDATION_ERROR) are shown with the fields that failed. Check the address, phone number, delivery date and time window of the order
  • Make sure the address is complete (street, postcode, city and country)
  • Tags must be valid in your Routific account; remove the "Tags" setting to test
  • Validation errors are not retried automatically. Fix the order, then use "Retry" in the dashboard or the "Send to Routific" order action

Order Can't Be Removed from Routific

Solutions:

  • Routific refuses to delete orders on a published route or orders that are already completed (HTTP 409)
  • The order note reads "The order is on a published route (or already completed) and cannot be deleted from Routific. Please remove it manually in Routific."
  • Unpublish the route or remove the order manually in Routific

Order Changes Don't Reach Routific

Solutions:

  • Verify "Automatically sync order changes to Routific" is checked
  • Delivered and missed orders are final: "The Routific order is already completed and can no longer be changed."
  • Updates are skipped when no relevant data changed. Use the "Update order in Routific" order action to force an update
  • If the order was deleted in Routific, the plugin removes the link and adds the note "The order no longer exists in Routific. The link was removed; you can send it again."

Webhooks Rejected or Not Updating Orders

Solutions:

  • Check WooCommerce → Status → Logs (source fleetconnector-routific) for "Webhook rejected" warnings
  • "no signing secret configured" - paste the signing secret from Routific in the plugin settings and save
  • "invalid signature" - the secret in the plugin doesn't match the webhook in Routific (for example after rotating the secret). Also check that no proxy or security plugin changes the request body
  • "timestamp too old" - your server clock is more than 5 minutes off; ask your host to synchronize the server time
  • Make sure the WordPress REST API (/wp-json/) is reachable and not blocked by a security plugin or firewall; re-save Settings → Permalinks if the URL returns a 404
  • Check that the webhook is still active in Routific; Routific can disable a webhook after repeated failures
  • Webhooks only update orders that were sent by the plugin (matched by Routific order ID or customer order number). Orders created manually in Routific are ignored

Duplicate Orders in Routific

Solutions:

  • The plugin never creates an order twice while it is linked to a Routific order (see section 3.7)
  • After "Remove all Routific links" or after removing plugin data, orders are no longer linked and can be sent again; remove old orders in Routific first if you resend them to the same workspace
  • Don't run two shops or two plugin installations against the same workspace without an order number prefix

7.2 Getting support

If you can't resolve an issue using this documentation, we're here to help.

Before Contacting Support

Please gather the following information:

  • WordPress version and WooCommerce version
  • PHP version (visible in WooCommerce → Status)
  • FleetConnector Routific plugin version
  • Screenshot of the error message or unexpected behavior
  • Relevant entries from the FCR Dashboard (use "Details" for the request and response data)
  • The fleetconnector-routific log from WooCommerce → Status → Logs, ideally with debug logging enabled
  • Order ID of the affected order (if applicable)

How to Contact Us

Email Support

Send an email to support@fleetconnector.app or use our contact form

Response time: Within 24 hours on business days

Premium Support Included

Your FleetConnector Routific license includes priority email support and updates for one year.

7.3 Additional resources

Routific API Documentation

api-docs.routific.com: Official Routific API and webhook reference

WooCommerce Documentation

woocommerce.com/documentation: WooCommerce guides and tutorials

WooCommerce to Routific Integration

Integration overview: Features, use cases and pricing

Launch Announcement

Read the launch post: What the WooCommerce to Routific integration does and why we built it

Ready to automate your WooCommerce deliveries?

Get the WooCommerce → Routific plugin for €199/year, backed by a 14-day money-back guarantee. Send orders to Routific automatically and get delivery updates back in WooCommerce.