Integrations, Bridge, API and webhooks
FoxTrack Bridge setup, linking Bridge printers to your printers, changing a printer's IP address in the Bridge, printing a file from FoxTrack and setting the filament in an AMS slot through Bridge, step-by-step setup guides and order sync for Shopify, Etsy, WooCommerce and CloudSlicer3D, and the Developer tab's API keys, endpoints and webhooks (payload format, retries).
FoxTrack Bridge
FoxTrack Bridge is a small open-source agent that runs on a computer on your shop network and streams live printer status (progress, temperatures, job state), print history and camera snapshots into FoxTrack, with no cloud account in the middle. It is available on the Pro and Farm plans. The computer running it must stay on for status to keep updating.
To connect it:
- Under Settings → Integrations → FoxTrack Bridge (owners and admins), click Generate token, give the token a name and click Generate.
- Copy the token straight away. It starts with ftb_ and is shown only once. Each token authenticates one Bridge installation to this workspace, so treat it like a password and revoke it if it leaks.
- In the Bridge dashboard, open Settings, paste the token into the FoxTrack sync field and click Save.
- Add your printers in the Bridge dashboard: Printers → Add printer.
- Link each printer the Bridge reports to a printer in FoxTrack (see Linking Bridge printers to your printers).
Bridge connects Klipper printers, and Bambu Lab printers over their local MQTT connection.
Linking Bridge printers to your printers
Each printer the Bridge reports is a Bridge device, kept separate from the printers you add yourself. Link a Bridge device to its printer so that printer shows live status, the camera and the pause, resume, stop and light controls:
- On the Printers page, open the Fleet view. Bridge devices that are not linked yet are listed under the printer cards, in Bridge devices to link.
- Pick the printer in the device's Link to printer… menu. If the printer is not in FoxTrack yet, click Add as new printer instead: the new printer form opens with the device's name, and the device is linked once you save.
You can also link from the printer's side: click a printer that has no Bridge device and pick one in the Pick a Bridge device… menu of its Live section. A printer that is already linked is not offered in these menus. To change or remove a link, click the printer and use the Bridge device menu at the bottom of its Live section; choose Unlink to remove the link. Linking needs the owner or admin role.
The Live view shows a tile for every Bridge device, linked or not. Your plan's printer limit also caps the number of Bridge devices (5 on Pro, unlimited on Farm), so remove old offline devices you no longer use. When the Bridge finds a printer past that cap, the Printers page shows a notice that names it, such as 1 printer not shown. Your plan allows 5 Bridge printers. Remove a device you no longer use or move to a bigger plan (See plans opens Billing) and the printer appears on its own. Dismiss (owners and admins) hides the notice until the Bridge reports that printer again.
If you already track a printer in FoxTrack, add it to the Bridge and link it. Do not delete the FoxTrack printer first: deleting a printer also deletes its maintenance schedules, service log and installed hardware, and its orders, print queue items and print history lose their printer.
FoxTrack matches a Bambu Lab printer by its serial number, and a Klipper printer by the name it has in the Bridge, so the names in FoxTrack and in the Bridge do not have to match.
Printing a file from FoxTrack
With FoxTrack Bridge connected, you can send a product variant's print file to a printer and start it from FoxTrack. Attach the file first (see Print files under Products). It needs a Bridge version that can print files: on an older one, the printer shows Update FoxTrack Bridge to print files and cannot be picked.
A Bambu Lab printer must be in LAN Only Mode with Developer Mode on, the same setup Bridge needs for pause and stop. Printing does not work over Bambu Cloud. To switch it on, go to Settings, Network on the printer's screen and turn on LAN Only Mode, then Developer Mode. While it is in LAN Only Mode, the Bambu Handy app cannot see the printer. A Klipper printer only needs to be connected through Bridge.
Press Print in the variant's Print file area, on the product's BOM tab (the Details tab for a From stock product):
- If the file has several plates, pick the Plate first. Each choice shows the plate number, its print time and its materials. The printers and the AMS slots below follow the plate you pick.
- Pick the Printer. Only printers of the right kind are listed (Bambu Lab for a .gcode.3mf, Klipper for a .gcode). Each one ends with how it stands, in brackets: Ready, or why not. One that is offline, already printing (Printing now), in Bambu Cloud mode (Needs LAN Only Mode) or running an older Bridge is greyed out with that reason. One that can take the file but needs a look is not greyed out and says why instead: Sliced for and the file's model when the printer reports a different one (you must tick Print it anyway), Load and a material such as PLA when that material is not loaded where FoxTrack would put it, or Different colour loaded. Ready printers are listed first, then the ones that need a look, then the greyed ones.
- On a Bambu printer with an AMS, choose which AMS slot each filament in the file uses. FoxTrack suggests slots by material and colour. A file with one filament can use the External spool instead, and the dialog shows what is loaded on it when the Bridge reports it; a file with more than one needs an AMS slot for each. A printer without an AMS says which filament to load on the external spool. A Klipper printer says which filament to load.
- On a Bambu printer, choose Level the bed first (on by default) and Record a timelapse (off by default).
- Tick The build plate is clear and the right filament is loaded.
- Press Print.
Then the dialog follows the print: Waiting for the Bridge to pick it up, Sending the file to the printer, then Printing started on the printer. Bridge downloads the file, checks it, copies it to the printer and starts it. If it fails, the dialog says why, such as the Bridge not picking it up within 2 minutes, and Try again takes you back to the choices. A printer takes one print at a time: while one is on its way to a printer, you cannot send another.
To send the same plate to several printers, press Print on several printers, under the Printer box. It shows when at least two printers can take the file. Tick the printers (the ready ones start ticked, and you can also tick one that needs a look), choose Start the printers: All at once, 1 minute apart (the default), 2 minutes apart or 5 minutes apart, tick that every build plate is clear and the right filament is loaded, then press Print on 3 printers (the number is how many you ticked). Each Bambu printer uses the AMS slots FoxTrack picks and levels the bed first, with no timelapse; to choose the slots, press Print on one printer instead. The first printer starts at once and each later one starts a gap after the one before. The waiting is kept by FoxTrack, not by the dialog, so prints that are waiting for their start time still start if you close it. The dialog lists each printer as Starts at (a time), Waiting for the Bridge to pick it up, Sending the file to the printer or Printing started, and a print that has not started yet has a Cancel button. A cancelled print says Cancelled before it started. Several printers is not offered when you open Print from the print planner.
When a print that FoxTrack started ends, the printer asks how it went, and Good, print again can send the same file again in one tap (see Print results under Printers).
Print also shows in two more places. On an order's fulfillment page, a line that is not done yet, for a variant with a print file, has a Print button that picks the line's printer. On the print planner (Farm), the next plate on a printer card has Print when all its lines are that one variant; it picks the plate's printer and marks the plate started once the printer starts. The planner also has Mark done and print next and Print next plates (see the Print planner topic). You can always pick another printer in the dialog.
Printing a file does not take filament from stock. Orders take it when they are saved. A failed print records the filament it wasted (see Print results under Printers).
Setting the filament in an AMS slot
With FoxTrack Bridge connected, you can tell a Bambu Lab printer which filament is in an AMS slot or on the external spool, the same as editing a slot on the printer or in Bambu Studio. The printer must be in LAN Only Mode with Developer Mode on, the same setup as printing a file, and it needs a Bridge version that can set filament.
- On the Printers page, open the printer. The Live section shows the AMS slots and the External spool.
- Click a slot.
- Pick the Material and the Colour, then press Save.
The dialog waits for the Bridge, then says Saved, or why it failed, such as the Bridge not picking it up within 2 minutes or the printer refusing the change. One change per printer can wait at a time. If the slots cannot be clicked, the printer is offline, in Bambu Cloud mode, or its Bridge is too old.
The materials are PLA, PLA-CF, PETG, PETG-CF, ABS, ASA, PC, PA, PA-CF, TPU, PVA and HIPS. An AMS HT slot, and the external spool on a two-nozzle printer, cannot be set yet. Setting a slot does not change your filament stock in FoxTrack.
Changing a printer in the Bridge
When a printer gets a new IP address or access code, change it in the Bridge instead of removing the printer and adding it again: click the pencil icon on the printer's card in the Bridge dashboard, change the details and click Save. Leaving the access code or API key blank keeps the saved one. If there is no pencil icon, update the Bridge first.
Renaming a Bambu Lab printer in the Bridge keeps its link, and FoxTrack shows the new name. Renaming a Klipper printer creates a new Bridge device, because FoxTrack knows Klipper printers by name. To move the link, click the printer, choose Unlink in the Bridge device menu at the bottom of its Live section, then link the new device from Bridge devices to link. The old device stays under Bridge devices to link and shows as offline; an owner or admin can clear it with its Remove button, which appears once the device is offline and keeps its print history. Changing a Bambu Lab printer's serial number in the Bridge has the same effect as renaming a Klipper printer.
CloudSlicer3D
On the Pro plan and above, Settings → Integrations → CloudSlicer3D imports orders placed in your CloudSlicer3D store. Setup: copy the webhook URL FoxTrack shows. In CloudSlicer open Settings, then Webhooks, turn on Enable Webhooks, click Add Endpoint, paste the URL as the Destination and subscribe to order.created, order.updated and order.deleted. Open the new endpoint, copy its Signing Secret (it starts with whsec_) and paste it into FoxTrack, then save. FoxTrack does not save a value that does not start with whsec_. Webhooks are a paid CloudSlicer feature.
Each order placed in CloudSlicer becomes a FoxTrack order: the customer is matched by email or created, the ship-to address is saved on a customer who has none yet and added to the order notes, the CloudSlicer deadline becomes the due date, each print becomes a line with its quantity (add-ons folded into the price), a priority surcharge or a base fee in the CloudSlicer subtotal becomes a line of its own, a Rounding line of a cent or two is added when a unit price cannot hold the exact amount, and the CloudSlicer shipping cost and discount go in the order's own shipping and discount fields, so the order adds up to the CloudSlicer total. Collection or shipping follows what the customer chose. Amounts are copied as they are, without conversion, so keep your CloudSlicer currency the same as the workspace currency; if they differ, the order notes say so. The card also has two choices: the sales channel every CloudSlicer order files under, and the priority given when the customer pays for a priority option (a CloudSlicer option named exactly like one of your priorities uses that one, paid or not; a free option gets no priority). The order notes keep the customer's words, any discount name and each item's add-on answers; the money summary CloudSlicer writes is dropped because it is on the order already.
An order cancelled or deleted in CloudSlicer moves to your cancelled status; a completed order that is deleted is left alone. Order statuses sync both ways while the Sync order statuses switch, under Status sync in the card, is on (it is on by default; turning it off stops both directions, but a cancellation from CloudSlicer still applies). When CloudSlicer changes an order's status, the FoxTrack order moves to the first status in the card's Status map that shows that CloudSlicer status; an edit in CloudSlicer that does not change the status moves nothing.
To send your own changes to CloudSlicer, save a CloudSlicer API token in the card (the CloudSlicer API needs a paid CloudSlicer plan). Then when you move a CloudSlicer order, CloudSlicer shows the status the map gives it. The map suggests a CloudSlicer status for each of your statuses: your first status is New, a printing status and the statuses after it are Printing, a waiting status such as On hold is In progress, a status that removes orders from the active board is Completed, and your cancelled status is Cancelled. You can change any of them, or pick Do not send; Use suggestions puts them back. Changes are sent a moment after you make them while FoxTrack is open in a browser, and every 5 minutes while it stays open. A change made while nobody has FoxTrack open (for example through the API) goes out the next time someone opens it. The Recent status updates table shows each one and Send now sends anything waiting. If CloudSlicer refuses the token, updates wait until you save a working one. Other edits made in CloudSlicer are not copied. The Accept incoming events switch pauses imports without deleting anything, and the Recent events table shows each event and what FoxTrack did with it.
Setting up CloudSlicer3D, step by step
CloudSlicer3D sends each order to FoxTrack through a webhook you add in CloudSlicer. You need the Pro or Farm plan, the owner or admin role in FoxTrack, and a paid CloudSlicer plan (CloudSlicer webhooks are a paid feature). New to CloudSlicer3D? The card has a code for your first CloudSlicer checkout.
- In FoxTrack, open Settings → Integrations → CloudSlicer3D and press Copy next to Webhook URL.
- In CloudSlicer, open Settings, then Webhooks, and turn on Enable Webhooks.
- Click Add Endpoint, paste the URL as the Destination, and subscribe to order.created, order.updated and order.deleted.
- Open the new endpoint in CloudSlicer and copy its Signing Secret.
- Back in FoxTrack, paste it into Signing secret and press Save secret.
- Under Orders, pick the Sales channel CloudSlicer orders file under and the Priority for priority orders, and check that Accept incoming events is on.
- To send your own status changes back to CloudSlicer, save a CloudSlicer API token under Status sync (the CloudSlicer API needs a paid CloudSlicer plan) and look over the Status map. Without a token, orders still come in and CloudSlicer cancellations still apply.
Place a test order in CloudSlicer: it shows in the card's Recent events table with what FoxTrack did, and as a new order on the board. If nothing arrives, check the Destination is the exact URL from the card and that the endpoint subscribes to all three events. A Signing secret that does not match the endpoint makes FoxTrack refuse its events, so copy it again from that same endpoint.
Shopify order sync
On the Farm plan, Settings → Integrations → Shopify imports orders from a Shopify store automatically. The card is marked Beta: the sync is new, so tell us if anything looks off, with the Support button (the ? at the top of the page) or at info@foxtrack.studio.
Setup: in the Shopify Dev Dashboard (dev.shopify.com) create an app for your store, add the scopes read_orders and write_merchant_managed_fulfillment_orders, request protected customer data access for name, email, phone and address, release a version and install it on the store. Paste the store's myshopify.com domain and the app's Client ID and Client secret into the card and click Save, then click Connect: FoxTrack checks the app and creates the order webhooks in the store itself. Check again repeats the check and shows what is missing. Stores without a Dev Dashboard app can use Older setup instead: create webhooks for Order creation, Order cancellation, Order update and Refund create under Settings, Notifications, Webhooks in the Shopify admin, with the webhook URL the card shows, and save the signing secret Shopify shows; a custom app token made in the Shopify admin before 2026 can still send tracking numbers.
Each Shopify order becomes a FoxTrack order under the sales channel picked in the card (a Shopify channel is created the first time you save), so finished-goods stock is taken from that channel's location. Shipping and the discount land in the order's own fields, tax is a line, the ship-to is copied onto a new customer and into the notes, and a local pickup order is marked Collection. A line whose SKU matches an active product variant deducts stock like an order typed on the board; a line with an unknown SKU is imported as a text line and the SKU is listed under Unmatched in the Recent Shopify deliveries table. A cancellation or a full refund in Shopify moves the order to your cancelled status and restores stock; a partial refund is added to the order notes. When you save a Shopify order as Shipped with a tracking number, or move it into a column that marks it Shipped, FoxTrack fulfils the order in Shopify once and Shopify emails the customer; saving again does not send it twice, and a changed number updates the fulfilment. The order's Send tracking to Shopify again button sends the saved number once more. If Connect cannot reach the store, the card says so and names the address it tried. The Accept incoming orders switch pauses imports; it stays off until the store is connected. Disconnect removes the webhooks FoxTrack created and keeps the orders already imported; before a connection, Clear saved details removes a saved domain and credentials instead.
Setting up Shopify, step by step
FoxTrack connects to Shopify through a small app you make for your own store in Shopify's Dev Dashboard, so the store decides what FoxTrack may read. It takes about ten minutes. You need the Farm plan, the owner or admin role in FoxTrack, and access to the store's Shopify Dev Dashboard.
- In FoxTrack, open Settings → Integrations → Shopify and keep that tab open.
- In another tab, open the Shopify Dev Dashboard (dev.shopify.com) and create an app for your store. Any name works; FoxTrack is a good one.
- Under the app's Access, add two scopes: read_orders (FoxTrack reads new orders, cancellations and refunds) and write_merchant_managed_fulfillment_orders (FoxTrack marks an order fulfilled with its tracking number). write_orders also covers read_orders.
- Still under Access, request protected customer data access for name, email, phone and address. Without it Shopify refuses the order webhooks.
- Release a version of the app, then install it on your store.
- Open the app's Settings and copy its Client ID and Client secret.
- Back in FoxTrack, fill in the card:
- Store domain: the store's myshopify.com address, such as my-store.myshopify.com. Every store has one, even when customers see your own domain. FoxTrack refuses deliveries from any other store.
- Client ID and Client secret: the two values from step 6. Press Save. The card says App credentials saved.
- Press Connect. FoxTrack checks the app and creates the order webhooks in the store itself. When it works, the message names your shop and says new orders, cancellations and refunds now reach FoxTrack, and the Connection line says when the webhooks were made.
- Pick the Sales channel Shopify orders file under (a Shopify channel is made the first time you save) and check that Accept incoming orders is on.
- Give each product variant the same SKU in Shopify and in FoxTrack, so a Shopify sale takes stock from the right variant.
Place a test order in the store: it shows in the Recent Shopify deliveries table and as a new order on the board.
What Connect may say:
- The app is missing these scopes: add the scopes it names under Access, release a new version, approve it on the store, then press Check again.
- Shopify would not add the webhook: the app has no protected customer data access yet. Request it (step 4), release, and press Connect again.
- Shopify refused the credential: the app is not installed on the store in Store domain, or the Client secret is wrong. Check both and save again.
- FoxTrack could not reach the store: the message names the address it tried. Check the spelling of the myshopify.com address.
A store without a Dev Dashboard app can use Older setup on the same card: webhooks made by hand in the Shopify admin and their signing secret (see Shopify order sync).
Etsy order sync
On the Farm plan, Settings → Integrations → Etsy imports orders from an Etsy shop. The card is marked Beta: the sync is new, so tell us if anything looks off, with the Support button (the ? at the top of the page) or at info@foxtrack.studio.
Click Connect Etsy shop, sign in to Etsy and approve FoxTrack; you come back to Settings with the shop connected. Etsy has no instant notifications, so FoxTrack checks the shop every 10 minutes, and less often (up to once an hour) while the shop is quiet; the Check now button checks at once and resets that. Only orders placed after you first connected are imported, including one whose payment clears later. Digital downloads are not imported.
Each Etsy order becomes a FoxTrack order under the sales channel picked in the card (an Etsy channel is created when you connect), so finished-goods stock is taken from that channel's location. Shipping and the discount land in the order's own fields, tax and gift wrap are lines, the due date is the ship-by date Etsy gave the buyer, and the ship-to goes onto a new customer and into the notes. A line whose SKU matches an active product variant deducts stock; a line with an unknown SKU is imported as a text line and the SKU is listed under Unmatched in the Recent Etsy orders table. An order cancelled or fully refunded on Etsy moves to your cancelled status and restores stock; a partial refund is added to the order notes. When you save an Etsy order as Shipped with a tracking number, FoxTrack sends it to Etsy once and Etsy emails the buyer; the order's Send tracking to Etsy again button sends it once more. The Import new orders switch pauses imports; Disconnect removes the connection and keeps the orders already imported.
Setting up Etsy, step by step
Etsy needs no app, keys or webhooks: you approve FoxTrack once from your Etsy account. You need the Farm plan and the owner or admin role in FoxTrack.
- Before you connect, give each product variant the same SKU in Etsy and in FoxTrack, so an Etsy sale takes stock from the right variant.
- Open Settings → Integrations → Etsy and press Connect Etsy shop.
- Etsy opens. Sign in with the account that owns the shop and approve FoxTrack.
- You come back to Settings with the shop connected: the card shows the shop's name and when FoxTrack last checked it.
- An Etsy sales channel is made when you connect, and every Etsy order files under it. Pick another under Sales channel if you like, and give that channel its own stock location under Settings → Sales channels so Etsy sales take stock from the right place.
- Check that Import new orders is on.
FoxTrack checks the shop every 10 minutes (less often while it is quiet); press Check now to check at once. Only orders placed after you connected are imported. For older orders, use Etsy order files: download the Order Items CSV from Etsy and import it on the Orders page (see Etsy order files).
If a check fails, the card shows Etsy's reason under the shop name. When Etsy no longer accepts FoxTrack's approval (you removed it in Etsy, say), press Disconnect and then Connect Etsy shop again; orders already imported stay.
Etsy order files
On the Farm plan, Etsy orders can also come in as a file, without connecting the shop. Turn on Import Etsy order files in Settings → Integrations → Etsy. In Etsy, open Shop Manager, then Settings, Options, Download Data; under Orders pick Order Items and download the CSV. On the Orders page, click Import CSV, pick Etsy order file and upload it. FoxTrack shows how many orders it found before anything is saved. Each Etsy order becomes one FoxTrack order under the Etsy sales channel, the same way the shop sync makes one: shipping and the discount land in the order's own fields, tax is a line, and the ship-to goes onto the customer and into the notes. A line whose SKU matches an active product variant takes stock; an unknown SKU becomes a text line and is listed when the import ends. Orders already marked shipped on Etsy and orders with only digital items are skipped, and so is any order already in FoxTrack, so importing the same file again is safe. The file has no buyer email and no ship-by date, so imported orders have neither.
WooCommerce order sync
On the Farm plan, Settings → Integrations → WooCommerce imports paid orders from a WooCommerce store. The card is marked Beta: the sync is new, so tell us if anything looks off, with the Support button (the ? at the top of the page) or at info@foxtrack.studio.
Setup: in WordPress open WooCommerce, Settings, Advanced, REST API, click Add key and create a key with Read/Write permission. Paste your store's https address (with its folder, if WordPress lives in one) and both keys into the card and click Save, then click Connect: FoxTrack checks the keys and creates the Order created, Order updated and Order deleted webhooks in the store itself. If Connect cannot create them, Create the webhooks by hand instead shows the delivery URL and takes a secret you chose. An order is imported once it is Processing or Completed, so an order waiting for payment arrives when the shop marks it paid.
Each order files under the sales channel picked in the card (a WooCommerce channel is created the first time you save). Shipping and the coupon discount land in the order's own fields, tax and fees are lines, the ship-to goes onto a new customer and into the notes, and a local pickup order is marked Collection. SKUs match product variants and move stock the same way as the other stores; unknown SKUs are listed under Unmatched in the Recent WooCommerce deliveries table. A cancelled, refunded, failed or deleted order moves to your cancelled status and restores stock; a partial refund is added to the order notes. When you save a WooCommerce order as Shipped with a tracking number, FoxTrack sends it once: through the WooCommerce Shipment Tracking extension when the store has it, otherwise as a note to the customer that WooCommerce emails, and then it marks the order Completed. The order's Send tracking to WooCommerce again button sends it once more. If Connect cannot reach the store (a typo in the address, the site is down, or its certificate is not valid), the card says so and names the address it tried. The Accept incoming orders switch pauses imports; it stays off until the store is connected. Disconnect removes FoxTrack's webhooks from the store and keeps the orders already imported; before a connection, Clear saved details removes a saved address and keys instead.
Setting up WooCommerce, step by step
WooCommerce connects with a pair of REST API keys you make in WordPress. You need the Farm plan, the owner or admin role in FoxTrack, a store served over https, and a WordPress user that can manage WooCommerce.
- In FoxTrack, open Settings → Integrations → WooCommerce and keep that tab open.
- In WordPress, open WooCommerce, then Settings, then Advanced, then REST API, and click Add key.
- Give the key a description (FoxTrack), pick a user who can manage WooCommerce, set Permissions to Read/Write, and generate the key.
- Copy the Consumer key and the Consumer secret straight away; WooCommerce shows the secret only once.
- Back in FoxTrack, fill in the card:
- Store address: your shop's https address, such as https://shop.example.com. If WordPress lives in a folder, include it (https://example.com/shop).
- Consumer key and Consumer secret: the two values from step 4. Press Save.
- Press Connect. FoxTrack checks that the keys can read orders and creates three webhooks in the store (Order created, Order updated and Order deleted). When it works, the message says new paid orders, cancellations and refunds now reach FoxTrack.
- Pick the Sales channel WooCommerce orders file under (a WooCommerce channel is made the first time you save) and check that Accept incoming orders is on.
- Give each product variant the same SKU in WooCommerce and in FoxTrack, so a sale takes stock from the right variant.
An order arrives once the store marks it Processing or Completed, so place a paid test order to see it in the Recent WooCommerce deliveries table.
What Connect may say:
- The store refused the API keys: check both keys, that the key is Read/Write, and that its user can manage WooCommerce.
- No WooCommerce REST API at that address: the store address is wrong (a missing folder is common) or WooCommerce is not active.
- FoxTrack could not reach the store, or could not open a secure connection: a typo in the address, the site is down, or its certificate is not valid. The message names the address it tried.
- The store would not add a webhook: open Create the webhooks by hand instead on the card. In WooCommerce open Settings, Advanced, Webhooks and add three webhooks with the topics Order created, Order updated and Order deleted, API version WP REST API Integration v3, the Delivery URL the card shows, and one secret you choose for all three. Paste that secret into Webhook secret on the card and save.
A store sync that is paused
Shopify, Etsy and WooCommerce order sync need the Farm plan, and CloudSlicer3D needs Pro or Farm. When the plan no longer includes it (after a downgrade, say), the store stays connected but pauses: new orders are not imported. The store's card under Settings → Integrations says it is paused and how many orders were not imported since when, and the bell shows Shopify sync is paused (or the store's name) until it is resolved. Return to the plan that includes the store to start importing again, or disconnect it. The notification clears itself once the plan includes the sync again or the store is disconnected.
Store orders: customers, early cancels and failed imports
Shopify, Etsy and WooCommerce orders find their customer in this order: the same email (a live customer before an archived one; an archived customer that matches comes back out of the archive), then, for an order with no email, the same phone number (its digits, at least 7), then the same name and postcode. An order with no name, email, phone or address at all goes to one walk-in customer per store, such as Walk-in (Shopify), instead of a new customer each time. Otherwise FoxTrack makes a new customer.
Stores do not always send their messages in order. When a Shopify or WooCommerce cancel arrives before the order itself, the order is still imported, with a note, straight into your cancelled status, so it takes no stock and does not count as revenue. Its row in Recent deliveries says created_cancelled. A WooCommerce order cancelled and then re-opened in the store imports as a normal order.
A delivery that fails to import says error in Recent deliveries, with the reason. Shopify sends it again by itself. WooCommerce does not, so FoxTrack runs it again when the next delivery for the same order arrives, and an owner or admin can press Retry import on that row. Each card under Settings → Integrations shows Connected, Paused or Not connected under its name, with when it last heard from the store (or, for Bridge, when a printer last reported).
API keys
On the Farm plan, Settings → Developer (owners and admins) has API keys for external apps and integrations. Create a key with a name, the scopes it may use and an optional expiry date; the full key is shown once, at creation, in a field with a Copy button, so save it somewhere safe. Keep the key on a server, never in a web page or an app. The list shows each key's name, prefix, scopes, creation date, last use and status, and a key can be revoked at any time. The API docs button on the same tab opens the reference for every endpoint.
Each scope in Create API key says what it allows, and scopes cannot be changed later: make a new key instead. With the right scopes a key can read, create and update customers; read and create orders (with a priority and a project title), find an order by its number, change an order, and add, change or remove its lines (totals and stock follow, as in the app); read products, inventory, channels, order statuses and order priorities; read invoices with their lines and payments (the invoices:read scope); and add to or take from the stock of an inventory item or a product variant, with a note that shows in its stock history (the inventory:write scope). Amounts are in minor units (cents) with the currency. Every POST, PATCH and DELETE may send an Idempotency-Key header: sending the same request again with the same key within 24 hours returns the first answer instead of doing it twice, and reusing a key for a different request is refused. The stock changes take an amount to add or take away, not a new total, so a till or warehouse script should send a key with each one: a retried sale then counts once. GET /products marks a product or variant the shop archived with is_active false, and an API order for one is refused.
Webhooks
Also under Settings → Developer on the Farm plan: add a webhook endpoint with a name, your URL and the event types to subscribe to, and FoxTrack sends a signed HTTP POST to it when those events happen in the workspace. The events cover orders (created, status changed, shipped), customers (created, updated), invoices (issued, paid, voided, a payment or refund recorded) and credit notes (issued, voided). An endpoint's events are chosen when it is added; to change them, add a new endpoint and delete the old one. When you add an endpoint, FoxTrack shows its signing secret once, with a Copy button: your server uses it to verify the X-FoxTrack-Signature header. Save it then, because it cannot be shown again; to get a new one, delete the endpoint and add it again. Each endpoint can be disabled without deleting it. Test sends a test.ping event (it is off while the endpoint is disabled). Deliveries opens the endpoint's delivery log: each delivery with its status, HTTP code and any error. Each delivery is tried up to 3 times: at once, 1 minute after a failure and 5 minutes after that; then it is marked Failed. Refresh reloads the log, and a failed delivery, or one waiting to retry, has a Retry button that starts a new round. The row then says Retried by hand once (or how many times), and Show earlier attempts lists how each earlier round ended.
Payload format: each endpoint shows Payload: Bare or Payload: Envelope, with Change. Bare (the default) posts the event's fields as the body. Envelope sends id (the delivery's id, the same on every retry, so your server can skip a repeat), type, created_at and data (the Bare body). Switching changes what your server reads, so update the server first; deliveries still queued go out in the new format. The API docs list each event's fields.
SpoolmanDB
The filament catalog dialog can search SpoolmanDB, a public community database of filaments, to fill in a type's brand, material, colour, colour hex and full-roll weight. This is a lookup only; nothing is sent to Spoolman and no account is needed.
Still stuck?
Email info@foxtrack.studio or ask on the FoxTrack Discord. Inside the app, the question mark in the top bar sends a bug report or feedback.

