Security
Access, audit trail and data under control.
Everyone sees
what they should.
Roles decide what dispatchers, finance, transport managers, drivers and portal users can see. The database enforces it, and every change is logged.
Ask a security questionAccess
Sara Holm
Two-step verification
Code from authenticator at login
Enforced at row level in the database
Built in from the start
Security lives in the database, not just in the screens.
Row-level security
The database enforces who sees what. The rules apply even when data is read outside the screens.
Separate organisations
Every table carries the organisation's id, and policies grant access by membership and role. The app never calls the database with the service key.
Two-factor sign-in
Signing in can require a code from an authenticator app on top of the password.
A log that can't be rewritten
The audit log is written by the database itself and is append-only. Nothing gets rewritten afterwards.
Roles and access
Dispatcher
Plans and follows trips and orders in the part of the operation the role covers.
Finance
Invoicing, settlement, supplier invoices and reports.
Transport manager
The whole operation at a glance, with the numbers behind it.
Driver
Their own trips, stops, proofs of delivery and deviations in the driver app.
Portal
Customers and carriers only see their own shipments, documents and settlements.
Everything is traceable
Who, when and from where
Every change is logged with who, when and from where — a user, a driver, a job or the API.
Statuses are never set directly
A transition is triggered, and it can be rejected. That goes for integrations too.
Facts carry their basis
You can always tell whether a number is confirmed, extracted, derived or predicted.
Approvals are binding
Consequential actions go to approval, and the approval covers exactly the parameters shown. If they change, it has to be approved again.
Keys, API and webhooks
API keys are shown once
A key is stored only as a sha256 fingerprint, so a copy of the table can't be used to call the API. Keys can carry scopes, a single customer and an expiry date.
Every call is logged
Method, path, status and a short message. Keys that call too often are throttled.
Signed webhooks
Every delivery carries an HMAC-SHA256 signature and a timestamp, so the receiver can reject forged or stale calls.
Secrets outside the database
Integrations point to the names of environment variables. The keys themselves live on the server, never in the database.
Legal look-ups
Covex holds summaries in its own words of CMR, NSAB 2015, driving and rest times, ADR and the EU Mobility Package. The agent looks things up there and answers with source and reference — and every answer ends by saying it is guidance, not a legally binding assessment. An organisation can add its own sections, such as its terms of trade, visible only to its own members.
Your data. Your rules.
You decide who does what — and how long data is kept.
Data retention
Periods per data type, enforced daily.
Row-level security
The database enforces who sees what, role by role.
Two-factor sign-in
A code from an authenticator app at login.
People decide
Covex proposes. Nothing is carried out until someone says yes — and it can be undone.
Name to come
Title and company to come
Questions and answers
Only users in your organisation, and only what their role allows. Every table carries the organisation's id, and policies in the database grant access by membership and role. Customers and carriers in the portals only see their own shipments, documents and settlements.
Every user signs in with their own account. With two-factor sign-in, the login also asks for a code from an authenticator app.
There are retention periods per data type, enforced daily. We go through the periods that apply to you when you get started.
The agent looks up your own data with your own permissions, shows what it did, and separates what is confirmed from what is predicted. It can propose actions — move an order, message a driver — but only carries them out when you confirm in the chat.
Yes. Every change is logged with who, when and from where — a user, a driver, a job or the API. The log is append-only.
Covex runs on PostgreSQL with row-level security. TODOHosting region and data processing agreement to be confirmed by Covex
Questions about security?
Book a demo and we'll walk through roles, the audit log and access with you.
