{{ pageTitle }}
{{ pageSub }}
180 vehicles · 9 depots · {{ todayStr }}
{{ st.num }}
{{ st.label }}
Scope this planning run
Pick the date and time window to plan, and which stations to include. The optimiser builds routes for every order due in that window.
1 · Plan date
{{ planDateStr }}
2 · Time window
3 · Stations in this run
Orders awaiting routing
{{ poolTotal }}
across {{ selectedDepotCount }} selected depots
{{ b.label }}{{ b.count }}
Optimising routes for {{ poolTotal }} orders
Packing loads into {{ vehicleCountStr }} vehicles across {{ selectedDepotCount }} depots
{{ o.title }}
{{ o.sub }}
Routes
{{ kpiRoutes }}
Vehicles used
{{ kpiVehicles }}
Total distance
{{ kpiMiles }}
Avg fill
{{ kpiFill }}
Deadline flags
{{ kpiFlags }}
Showing {{ kpiRoutes }} routes from your selected depots · full UK plan covers {{ poolTotal }} orders across ~47 routes.
{{ poolLeftCount }} orders unrouted - open a route to add them.
{{ r.vehicleReg }}
{{ r.depot }}
{{ r.stopCount }} stops · {{ r.milesStr }}{{ r.litresStr }} / {{ r.capStr }}
● {{ r.lateCount }} stop(s) past deliver-by
All stations across the UK. Click a pin or a station below to edit its vehicles and service area.
New station
{{ st.name }}
{{ st.vehCount }} vehicles · {{ st.areaCount }} areas
Linked vehicles · {{ selStationVehCount }}
Bulk storage · {{ selStationTankCount }} tanks
{{ t.id }} · {{ t.fuelName }}{{ t.levelStr }} / {{ t.capStr }}Low
{{ selStationStockStr }} in storage across this depot.
No bulk storage recorded at this station.
Service area · {{ selStationAreaCount }} districts
Add a district not shown on the map:
Bulk fuel held in storage across every depot, plus what is loaded on tankers right now.
Total fuel in storage
{{ stockKpis.totalStr }}
of {{ stockKpis.capStr }} capacity · {{ stockKpis.pctStr }} full
Change since yesterday
{{ stockKpis.deltaStr }}
net movement across all depots
Depots
{{ stockKpis.depotCount }}
reporting bulk storage
Variances flagged
{{ stockKpis.flaggedToday }}
recent readings over threshold
Supply by fuel type
{{ f.name }}▲ ▼ {{ f.deltaStr }}
{{ f.curStr }}
of {{ f.capStr }} · {{ f.tanks }} tanks · {{ f.pctFull }} full
Storage by depot
{{ d.name }}
{{ d.tankCount }} tanks · {{ d.curStr }} / {{ d.capStr }} · {{ d.pctStr }} full
{{ t.id }} · {{ t.fuelName }}{{ t.levelStr }} / {{ t.capStr }}Low
No depots match that search.
Stock on tankers
{{ tankerKpis.totalStr }}
{{ tankerKpis.vehStr }}
{{ fz.name }}
{{ fz.litresStr }}
Tankers by depot
{{ g.depot }}
{{ g.countStr }} · {{ g.totalStr }} on board
{{ v.reg }}{{ v.plannedLabel }}
{{ v.body }} · {{ v.driver }} · {{ v.stopsStr }}
{{ v.totalStr }}
of {{ v.capStr }} · {{ v.pctStr }}
{{ l.fuelName }}{{ l.litresStr }}
Empty - no fuel currently on board.
No tankers match that search.
This month
{{ adjTotals.countStr }}
Net {{ adjTotals.litresStr }} across all tanks
Value to post
{{ adjTotals.valueStr }}
At buy price
Monthly report by tank
Post a stock adjustment
Use a negative figure for stock lost, positive for stock found. Recorded against you with a timestamp.
Adjustment log
Depot
{{ stockDepotView.name }}
{{ stockDepotView.tankCountStr }}
In storage
{{ stockDepotView.curStr }}
Capacity
{{ stockDepotView.capStr }}
Ullage
{{ stockDepotView.ullageStr }}
Tankers at this depot
{{ stockDepotView.tankerCountStr }}
{{ v.reg }}
{{ v.driver }} · {{ v.stopsStr }}
{{ v.totalStr }}
of {{ v.capStr }}
{{ l.fuelName }}{{ l.litresStr }}
No tankers loaded from this depot right now.
Tanks · click through for movements
{{ t.id }}
{{ t.fuelName }}
Low
{{ t.moveCountStr }} →
Level {{ t.levelStr }} ({{ t.pctStr }})
In {{ t.inStr }}
Out {{ t.outStr }}
{{ stockTankView.id }}
{{ stockTankView.fuelName }} · {{ stockTankView.depot }}
Current level
{{ stockTankView.levelStr }}
of {{ stockTankView.capStr }} · {{ stockTankView.pctStr }}
Opening {{ stockTankView.openStr }}
Received in {{ stockTankView.inStr }}
Loaded out {{ stockTankView.outStr }}
Ullage {{ stockTankView.ullageStr }}
Expected from transactions
{{ stockTankView.expectedStr }}
Discrepancy
{{ stockTankView.discStr }}
Recorded against you, with a timestamp, and written to the audit log.
{{ a.litresStr }}
{{ a.reason }}
{{ a.note }}
{{ a.by }}
{{ a.at }}
{{ a.at }}
Transactions
{{ orderResultCount }} shown
{{ selOrder.id }}
{{ selOrder.customer }}
{{ selOrder.statusLabel }}
Previous order
{{ selOrder.custOrderCount }} on file →
{{ selOrder.prevOrder.date }} · {{ selOrder.prevOrder.summary }} · {{ selOrder.prevOrder.totalStr }}
Delivery
Address{{ selOrder.address }}
Station{{ selOrder.depot }}
Contact{{ selOrder.contact }}
Phone{{ selOrder.phone }}
Site hours{{ selOrder.siteHoursStr }}
{{ selOrder.siteWeekendStr }}
{{ selOrder.siteWeekendStr }}
Assigned vehicle{{ selOrder.routeReg }}
Tanker size{{ selOrder.tankerSizeStr }}
Payment{{ selOrder.paymentMethod }}
Delivery instructions
{{ selOrder.deliveryInstructions }}
Site opening times
{{ selOrder.siteOpening }}
Product & price
{{ selOrder.fuelName }}
Quantity{{ selOrder.litresStr }}
Price / litre{{ selOrder.pplStr }}
Subtotal{{ selOrder.subStr }}
VAT{{ selOrder.vatStr }}
Total{{ selOrder.totStr }}
Margin{{ selOrder.orderMarginStr }} ({{ selOrder.marginPplStr }})
Delivery window{{ selOrder.windowStr }}
Booking date{{ selOrder.bookingDateStr }}
Placed{{ selOrder.placedStr }}
SLA window{{ selOrder.slaStr }}
Delivered by (auto){{ selOrder.deliveredByStr }}
History
{{ t.label }}
{{ t.time }}
Requested delivery tank
Delivering into 1 of {{ selOrder.reqTank.siteTankCount }} tanks on site
{{ selOrder.reqTank.label }} · {{ selOrder.reqTank.id }}
Holds {{ selOrder.reqTank.fuelName }} · {{ selOrder.reqTank.capStr }} capacity
Currently in tank {{ selOrder.reqTank.beforeStr }}
This delivery {{ selOrder.reqTank.deliverStr }}
Ullage after {{ selOrder.reqTank.afterUllageStr }}
Fill after delivery {{ selOrder.reqTank.afterPctStr }}
Notes & call log
{{ n.text }}
{{ n.by }} · {{ n.time }}
No notes yet. Add a note or log a call about this order.
Vehicles
180
Depots
9
Fleet capacity
≈ 2.9M L
Fuels carried
{{ fuelCount }}
{{ d.name }}
{{ d.vehicles }} vehicles
Vehicle tank configuration · showing {{ vehShownCount }} of 180
Tanks are fixed-capacity vessels. Swap a tank for a different size, change the fuel it carries, or add/remove tanks on a vehicle.
Create a new truck
Tanks · {{ ntCapStr }} total
{{ c.label }}
{{ c.capStr }}
{{ t.reg }} · {{ t.depot }}
{{ t.body }} · {{ t.tankCount }} tanks · {{ t.capStr }} total
{{ t.address }}
{{ c.label }}
{{ c.capStr }}
Add a fuel type
New types appear in the tank fuel selectors.
{{ k.label }}
{{ k.value }}
{{ k.sub }}
My sales · {{ sales.meName }}
Rank #{{ sales.myRank }} of {{ sales.teamSize }} · {{ sales.myValueStr }} this month
{{ sales.myDay }}
Today
{{ sales.myWeek }}
This week
{{ sales.myMonth }}
This month
{{ openInqCount }} open · assign an agent and reply - responses go to the customer by SMS & email and appear in their order history.
{{ q.id }}
{{ q.customer }}
· order {{ q.orderId }} · {{ q.date }}
{{ q.statusLabel }}
{{ q.agent }}
{{ q.message }}
Assigned to
{{ q.reply }}
Replied by {{ q.by }} · sent by SMS & email
No inquiries match these filters.
Every change made in the portal - who, what and when. {{ auditCount }} entries.
Price changes, order edits, customer updates, fleet changes and rewards toggles are logged automatically as you work.
Admins only
The Integration console controls live data flowing to Codas and the routing engine. Ask an Admin to change your role in Settings → Users & access.
Codas API
Codas is in TEST mode. Orders, deliveries and customer updates are going to the sandbox ({{ integ.envUrl }} · {{ integ.envCompany }}) and will not reach live accounts.
Data flow · last 24 hours
ERP & accounts
Codas
{{ integ.codasHealth.label }}
{{ integ.envLabel }} · {{ integ.envUrl }}
◀ {{ integ.cInOut.outN }} out
orders · deliveries · customers
{{ integ.cInOut.inN }} in ▶
prices · stock · invoices
This portal
NWF Operations
{{ integ.kAll.total }} messages · {{ integ.kAll.rate }} success
{{ integ.rInOut.outN }} out ▶
orders to route · vehicles
◀ {{ integ.rInOut.inN }} in
routes · ETAs · POD
Optimisation
Routing engine
{{ integ.routingHealth.label }}
{{ integ.routingCfg.url }}
Messages · 24h
{{ integ.kAll.total }}
{{ integ.kAll.inN }} in · {{ integ.kAll.outN }} out
Success rate
{{ integ.kAll.rate }}
Codas {{ integ.kC.rate }} · Routing {{ integ.kR.rate }}
Open failures
{{ integ.openCount }}
Codas {{ integ.kC.fails }} · Routing {{ integ.kR.fails }}
Avg response
{{ integ.kAll.lat }}
Codas {{ integ.kC.lat }} · Routing {{ integ.kR.lat }}
Showing {{ integ.logShown }} of {{ integ.logTotal }} messages. Click a row to see the request and response payloads.
Automatic retries: {{ integ.retryMax }} attempts, {{ integ.retryBackoff }} back-off. These have exhausted automatic retries.
{{ f.sysName }}{{ f.envLabel }} {{ f.ref }}· {{ f.summary }}
{{ f.op }}
{{ f.code }} {{ f.errCode }}{{ f.error }}
💡 {{ f.hint }}
✓ {{ f.resolvedNote }}
{{ f.when }}
{{ f.ago }} · {{ f.attempts }}
✓ Nothing has failed to send. New failures will appear here and alert {{ integ.cfg.alerts.email }}.
Not mapped yet: {{ integ.unmapped }}
{{ integ.payloadTitle }}
{{ integ.payloadJson }}
Live preview - updates as you change the mapping.
Value lookups · fuel → Codas product
Used by the "Lookup: fuel ↔ product code" transform.
{{ l.name }}
Depot → Codas depot code
Used by the "Lookup: depot ↔ depot code" transform.
{{ l.name }}
You have unsaved configuration changes.
Codas API
Sales orders, deliveries and customer accounts out · prices, stock and invoices in
Integration enabled
Environments · active one is highlighted
LIVE● In use
TEST● In use
Routing engine
Orders and fleet out for optimisation · routes, ETAs and proof of delivery back by webhook
Integration enabled
Send orders when a plan is published
Route planner → Publish routes
Sync vehicle & tank changes
Fleet & tanks, Stations
Receive ETAs & stop status
Updates Trips and customer tracking
Receive proof of delivery
Forwarded to Codas as a delivery confirmation
Retries & failure alerts
Applies to both integrations. Messages that still fail after automatic retries land in Failures.
Switch Codas to TEST
Send data to the Codas sandbox?
New orders, deliveries and customer updates will go to {{ integ.confirmUrl }} (company {{ integ.confirmCompany }}) and will not reach live accounts until you switch back. The routing engine is not affected.
Switch Codas to LIVE
Go live with Codas?
From now on, data will be sent to the production API at {{ integ.confirmUrl }} (company {{ integ.confirmCompany }}). Anything sent while in TEST is not replayed automatically.
{{ integ.toastMsg }}
Partner hauliers who deliver on our behalf. Allocate orders by service area, monitor the day, and compare quotes on margin.
{{ selProv.name }}
{{ selProv.base }} · {{ selProv.pplStr }} · {{ selProv.onTimeStr }} on time · {{ selProv.jobsStr }} jobs
Postcode areas served
Specific postcodes ({{ selProv.postcodeCount }})
{{ c2.initials }}
{{ c2.name }}Primary
{{ c2.role }} · {{ c2.phone }}
{{ c2.email }}
{{ j.orderId }}{{ j.statusLabel }}
{{ j.customer }} · {{ j.place }}
{{ j.litresStr }} {{ j.fuelName }} · delivered {{ j.deliveredStr }}
No orders allocated to this provider yet.
Allocated today
{{ allocKpis.total }}
{{ allocKpis.litresStr }} in total
Awaiting acceptance
{{ allocKpis.sent }}
link sent, not accepted
Accepted
{{ allocKpis.accepted }}
on their way
Completed
{{ allocKpis.completed }}
litres confirmed
Providers used
{{ provCount }}
on the panel
Orders per provider
Today's split across the panel
{{ b.count }}
{{ b.sent }} sent · {{ b.accepted }} accepted · {{ b.completed }} completed · {{ b.litresStr }}
Text a quote request to several providers at once. They submit a price via their link; we compare margin and accept one.
No quote requests out yet.
Every quote given to a customer, which rep gave it, and whether it turned into an order.
Quote conversion
{{ quoteKpis.convPctStr }}
{{ quoteKpis.converted }} of {{ quoteKpis.total }} quotes won
Open quotes
{{ quoteKpis.open }}
{{ quoteKpis.openValStr }} in play
Value won
{{ quoteKpis.wonValStr }}
from converted quotes
Average quote
{{ quoteKpis.avgQuoteStr }}
across all quotes
Contracted volumes are set month by month. Underlift penalties are assessed monthly.
Add a supplier
The monthly figure seeds all twelve months - adjust individual months afterwards from the supplier's Edit panel.
Today's buying position
What we need to buy for tomorrow
Stock in tank, less tomorrow's routed liftings, against the cover you want to hold.
In tank now
{{ planTotals.stockStr }}
Out tomorrow
{{ planTotals.demandStr }}
Cover held
{{ planTotals.coverStr }}
Market direction
To order
{{ planTotals.totalStr }}
{{ planTotals.loadsStr }}
{{ marketNote }}
Contract month
{{ x.name }}
{{ x.contractLabel }}
{{ x.riskLabel }}
API feed
No kerosene
{{ x.mode }} · {{ x.terminalCount }} terminals
{{ x.terminals }}
Pricing mechanism
{{ x.mechanism }}
Differential {{ x.diffStr }}
Contracted
{{ x.contractPctStr }} of volume
Tolerance {{ x.toleranceStr }}
Underlift penalty
{{ x.penaltyStr }}
Terms
{{ x.termsStr }}
Renews {{ x.renewal }}
{{ supMonthName }} contracted vs lifted
{{ x.liftedStr }} of {{ x.nominatedStr }} · {{ x.liftedPctStr }}
Underlift {{ x.underStr }} this month - projected penalty {{ x.penExposureStr }} if {{ supMonthName }} closes here.
Contacts
{{ x.contactCountStr }}
{{ c.initials }}
{{ c.name }}
{{ c.role }}
{{ c.email }}
{{ c.phone }}
No contacts saved - add one so orders can be emailed or texted through.
Sites & purchase orders
{{ x.poCountStr }}
{{ st.terminal }}
{{ st.countStr }} · {{ st.litresStr }}
Contracted litres by month
{{ x.annualStr }} across the year
{{ mc.label }}
{{ mc.valStr }}
Edit {{ supEditDraft.name }}
{{ supEditDraft.contractLabel }}
Contracted litres by month
{{ supEditDraft.totalStr }} total
Fuel bought in from suppliers. Each order is raised against a supplier site and lands at one of your depots.
Delivery date
to
Create a purchase order
Buy
{{ poCostPreview.buyStr }}
Haulage
{{ poCostPreview.haulStr }}
Landed
{{ poCostPreview.landedStr }}
{{ poCostPreview.litresStr }} total
{{ poCostPreview.totalStr }}
{{ poCostPreview.msg }}
Send to supplier by
Goes to the supplier's first saved contact when the order is raised.
Orders
{{ poSummary.countStr }}
Volume
{{ poSummary.litresStr }}
Value
{{ poSummary.valueStr }}
Inbound
{{ poSummary.openStr }}
{{ p.id }}
{{ p.supplierName }}
· {{ p.terminal }} → {{ p.depot }}
{{ p.status }}
{{ p.date }}
{{ p.fuelName }}
{{ p.litresStr }} at {{ p.pplStr }}
Value
{{ p.valueStr }}
Haulier
{{ p.haulier }}
On site by
{{ p.arrive }}
BOL
{{ p.bol }}
Loading instruction: {{ p.loadWindow }}
Haulier link
{{ p.acceptedLabel }}
Sent {{ p.linkSent }}
Not sent yet
· Supplier: {{ p.supNotified }}
Collection receipt
{{ p.receipt.ref }}
{{ p.receiptLitresStr }} · captured {{ p.receipt.at }}
Photographed by {{ p.receipt.by }}
{{ poEmptyMsg }}
The hauliers who move fuel from supplier terminals into your depots. Click through for contacts, loads and invoices.
Add a haulage company
{{ h.name }}
{{ h.onTimeStr }} on time
{{ h.contact }}
{{ h.phone }}
{{ h.email }}
Rate
{{ h.rateStr }}
Lanes
{{ h.lanesStr }}
Loads
{{ h.jobsStr }}
Live
{{ h.liveStr }}
No haulage companies match that search.
Haulage company
{{ haulDetail.name }}
{{ haulDetail.rateStr }} · {{ haulDetail.onTimeStr }} on time
Loads
{{ haulDetail.loadCountStr }}
{{ haulDetail.deliveredStr }}
Volume
{{ haulDetail.litresStr }}
Receipts
{{ haulDetail.receiptStr }}
{{ haulDetail.invoicedStr }}
Contacts
{{ haulDetail.contactCountStr }}
{{ c.initials }}
{{ c.name }}
{{ c.role }}
{{ c.email }}
{{ c.phone }}
Loads
to
{{ r.id }}
{{ r.lane }}
{{ r.fuelName }} · {{ r.litresStr }}
{{ r.status }}
{{ r.date }}
No loads for this haulier in that period.
Haulage invoices
{{ paySummary.countStr }}
Recorded against purchase orders
Outstanding
{{ paySummary.outstandingStr }}
{{ paySummary.unpaidCount }} awaiting payment
Selected
{{ paySummary.selTotalStr }}
{{ paySummary.selCount }} invoices
Today's notified buy price per litre by supplier and terminal. These feed the landed cost and every depot's exit price. Edits are written to the audit log.
Price change history
Price a postcode
{{ quoteResult.zone }} zone · served by {{ quoteResult.depot }} · lifting {{ quoteResult.fuelName }} from {{ quoteResult.supplierName }} at {{ quoteResult.terminal }}
Buy
{{ quoteResult.buyStr }}
+
Haulage
{{ quoteResult.haulStr }}
=
Landed
{{ quoteResult.landedStr }}
+
Margin
{{ quoteResult.marginStr }}
Exit price
{{ quoteResult.exitStr }}
{{ quoteResult.per1000Str }} per 1,000 L
{{ quoteResult.msg }}
Exit price by depot
Completed today
{{ finQueueKpis.countStr }}
Value
{{ finQueueKpis.totalStr }}
Invoiced
{{ finQueueKpis.invoicedStr }}
{{ finQueueKpis.invoicedCountStr }}
Still to invoice
{{ finQueueKpis.outstandingStr }}
{{ finBulk.countStr }} selected
{{ finBulk.valueStr }} · {{ finBulk.emailedStr }} · {{ finBulk.postedStr }}
Fuel
Litres
p/L
Action
{{ r.id }}
{{ r.litresStr }}
{{ r.pplStr }}
{{ r.valueStr }}
{{ r.marginPplStr }}
{{ r.stageLabel }}
{{ r.invRef }}
{{ r.methodLabel }} · {{ r.invAt }}
No email on file
Tick the orders (or select all), then Run invoicing. Click a column heading to sort. Manager approves, finance signs off, invoice goes out — all from the row.
Orders today
{{ finDash.todayOrders }}
Expected to invoice
{{ finDash.todayExpected }}
Actually invoiced
{{ finDash.todayInvoiced }}
{{ finDash.todayPct }} of expected
Month vs last month
{{ finDash.deltaStr }}
{{ finDash.monthInvoiced }} vs {{ finDash.prevMonth }}
Invoiced this month by week
{{ w.label }}
{{ w.val }}
{{ finDash.monthOrders }} orders invoiced this month. Use the depot filter on the Invoicing tab for a date-range view by depot.
{{ tripDayLabel }} · {{ tripDateStr }}
{{ tripKpis.driverStr }}
{{ tripKpis.dropStr }} · {{ tripKpis.doneStr }}
Spare capacity
{{ tripKpis.spareStr }}
Find them extra work
{{ tripDayLabel }}
{{ tripDateStr }}
{{ t.initials }}
{{ t.driver }}{{ t.statusLabel }}{{ t.spareStr }}
{{ t.reg }} · {{ t.depot }} · {{ t.shiftStr }}
{{ t.dropStr }}
{{ t.doneStr }}
Est. finish {{ t.etaStr }}
On board {{ t.onBoardStr }}
Fuel left {{ t.remainingStr }}
{{ tripDetail.initials }}
{{ tripDetail.driver }}{{ tripDetail.statusLabel }}
{{ tripDetail.reg }} · {{ tripDetail.body }} · {{ tripDetail.depot }} · shift {{ tripDetail.shiftStr }}
Est. finish
{{ tripDetail.etaStr }}
{{ tripDetail.doneStr }}
Tanker capacity {{ tripDetail.capStr }}
Loaded {{ tripDetail.onBoardStr }}
Committed {{ tripDetail.requiredStr }}
Fuel left over {{ tripDetail.remainingStr }}
Spare capacity {{ tripDetail.ullageStr }}
{{ tripDetail.spareStr }} left on shift and {{ tripDetail.remainingStr }} still on board - there is room for another drop before {{ tripDetail.shiftStr }} ends.
{{ tripDetail.dropStr }} on this trip
Each zone maps a set of postcode areas to the depot that serves them and the supplier and terminal that depot lifts from. A customer's price follows the zone their postcode falls in.
{{ z.name }}
{{ z.depot }}
{{ z.areaCount }} areas
Haulage on this lane {{ z.haulStr }}/L
Customers who've found fuel cheaper elsewhere. Agree a match and we email them a price locked to their account for 48 hours, ready to activate on their next order.
Product
{{ p.fuelName }}
{{ p.litresStr }}
Our price
{{ p.ourPplStr }}
{{ p.rival }}
{{ p.theirPplStr }}
Gap
{{ p.gapStr }}
Margin at that price
{{ p.marginStr }}/L
Email & text sent automatically
{{ p.status }} by {{ p.by }} · agreed price {{ p.agreedPplStr }}/L
No price match requests here.
Chats coming in from the customer portal - who picked them up, how quickly, and how the customer rated it.
{{ outstandingStr }}
{{ selChat.customer }}
{{ selChat.id }} · {{ selChat.topic }}
{{ selChat.message }}
Came in{{ selChat.openedAt }}
Actioned by{{ selChat.agentLabel }}
First replied{{ selChat.answeredAt }}
Response time{{ selChat.respStr }}
Customer rating
{{ selChat.ratingStr }}
“{{ selChat.comment }}”
Rate this chat (as the customer would)
Average response time
{{ chatKpis.avgRespStr }}
across {{ chatKpis.total }} chats today
Answered under 5 min
{{ chatKpis.under5Str }}
of answered chats
Average rating
{{ chatKpis.avgRatingStr }}
from {{ chatKpis.ratedCount }} ratings
Waiting now
{{ chatKpis.waiting }}
slowest today {{ chatKpis.slowest }}
How quickly we replied
Distribution of first-response times
{{ b.label }}{{ b.count }}
New credit-account applications from the website. Accounts run the checks, set a credit limit and approve or decline.
{{ appResultStr }}
{{ selApp.company }}
{{ selApp.id }} · {{ selApp.submittedStr }}
Contact{{ selApp.contact }}
Phone{{ selApp.phone }}
Email{{ selApp.email }}
Business{{ selApp.nature }}
Expected volume{{ selApp.litresStr }}
Sales rep{{ selApp.rep }}
{{ selApp.viaLabel }}
Trade references
{{ selApp.refsVerifiedStr }}
{{ r.n }}
{{ r.company }}
{{ r.statusLabel }}
Contact{{ r.contact }}
Phone{{ r.phone }}
Email{{ r.email }}
Postcode{{ r.postcode }}
Trading history{{ r.years }} · {{ r.terms }}
Verify all three references before approving credit.
Approved by {{ selApp.ownerLabel }} · limit {{ selApp.limitStr }}
Declined by {{ selApp.ownerLabel }}
{{ selApp.note }}
Call reminders and follow-ups against customers. Assign to a sales agent, set a due time, and track completion.
Agent
My open tasks
{{ taskKpis.open }}
assigned to {{ taskAgent }}
Due today
{{ taskKpis.today }}
calls to make
Overdue
{{ taskKpis.overdue }}
past their due time
Completed today
{{ taskKpis.doneToday }}
logged as done
New reminder
Set a call-back against a customer
{{ taskAgent }} vs the team
Team rank
{{ perfKpis.rank }}
by tasks completed
Completed
{{ perfKpis.done }}
{{ perfKpis.vsTeam }}
Completion rate
{{ perfKpis.rateStr }}
of tasks in period
Calls → orders
{{ perfKpis.conv }}
orders placed on a call
Set the price of each fuel for a given day. Margin and the minimum sell floor are tracked per fuel.
Price date
{{ priceDateStr }}
Edit a price then press Save to commit it - every change is logged with the user and timestamp, so multiple updates a day are all recorded. Sell prices flow into the quote & order builder.
{{ customerCount }} customers · showing up to 30 at a time - search or filter to narrow.
Edit customer details
{{ custDetail.initials }}
{{ custDetail.name }}
{{ custDetail.levelName }}{{ custDetail.contact }} · {{ custDetail.phone }}
{{ custDetail.address }} · {{ custDetail.townPostcode }}
Served by {{ custDetail.station }} · {{ custDetail.tankCount }} tanks on site
Contact & address details
Contact name
{{ custDetail.contact }}
Phone
{{ custDetail.phone }}
Email
{{ custDetail.email }}
Served by station
{{ custDetail.station }}
Sales rep
{{ custDetail.salesRep }}
Delivery address
{{ custDetail.address }}
{{ custDetail.townPostcode }}
Points history{{ custDetail.pointsBalanceStr }} pts
{{ ph.label }}
{{ ph.date }}
Earned at their tier rate - boosts from live promotions apply automatically.
Account
Type{{ custDetail.segment }}
Total orders{{ custDetail.orderCount }}
Lifetime spend{{ custDetail.totalSpentStr }}
Balance{{ custDetail.balanceStr }}
Credit control
Only Finance can change a credit limit.
Credit limit{{ custDetail.creditLimitStr }}
Currently used{{ custDetail.creditUsedStr }}
Available{{ custDetail.creditAvailStr }}
{{ custDetail.creditPctStr }} of limit used
Over their credit limit - new orders need approval.
On credit hold - no new orders.
Take an order by phone
Quote live, save it, or place the order - the customer gets an instant SMS confirmation.
{{ t.label }}
{{ t.loc }}
{{ t.fuelName }}
Current {{ t.levelStr }} ({{ t.pctStr }})
Ullage {{ t.ullageStr }}
Capacity {{ t.capStr }}
Delivery site
{{ custDetail.address }}
{{ custDetail.townPostcode }}
///{{ custDetail.w3w }}
{{ custDetail.accessNote }}
Served by {{ custDetail.station }}
Delivery sites
{{ custDetail.siteCountStr }} · each site has its own postcode, contact and linked tank
New site
Every change made to this customer's account - who made it, what changed and when. Credit limit changes can only be made by Finance.
Contacts
{{ custDetail.contactCountStr }} · each can be assigned to one or more sites
New contact
Notes against this customer
{{ n.text }}
{{ n.by }} · {{ n.time }}
No notes yet for this customer.