Lovehoney Onboarding Pack Germany domestic road freight

Click any text in the Overview, Onboarding Guide, UAT Plan or Engineering Deliverables to change it. Changed text is marked in purple. Comment boxes sit at the end of each section and each tab. Select Save when you are done.

Design partnership, Germany domestic road freight

Lovehoney Onboarding Pack

Everything prepared for the start of the design partnership between Lovehoney Group UK Limited and Certin Technologies Limited, for Germany domestic road shipments, in one place.

  • A step by step guide, from first sign in to closing an exception
  • Three days of acceptance testing, tracked in one live sheet
  • Everything Certin needs from Lovehoney, gathered in one list

Start with the guideAnswer the open questions

What is in this pack

Open questions

Several decisions and pieces of information are needed from Lovehoney before configuration and testing can go ahead. They are gathered on the Open Questions tab, each with its owner, when it is needed and where it came from.

Go to the open questions

Key dates

The Design Partnership Agreement starts the ninety day evaluation period once data access is in place. Detection goes live on Day 13, the mid-point review falls on Day 40, and the final review runs from Day 80 to Day 90.

Certin has set a test gate of 28 September 2026, with detection targeted to go live on 29 September 2026. The three UAT dates are still to be agreed.

Operator Onboarding Guide and Session Plan

A step by step guide to Certin for the Lovehoney transport team: signing in, bringing shipment data in, adding contracts, and reviewing, acknowledging, managing and resolving exceptions. The session plan for onboarding closes the guide.

Scope: Germany domestic road shipments
Design partnership between Lovehoney Group UK Limited and Certin Technologies Limited
First version for review, 21 September 2026. Part of the Lovehoney Onboarding Pack.

1. Before you start

Today the team checks the Excel tracker, Zencargo and email each morning to find out what has changed overnight and whether it matters. From go-live, Certin reads those sources continuously, compares every shipment against Lovehoney's own operating rules and delivery commitments, and raises an exception when a commitment is at risk. You decide what happens next and carry it out. Certin records every step.

Who does what

Some tasks happen once, during setup. Others are the daily work. This guide covers both, so that every user understands where the data comes from and how to check it.

TaskCarried out bySection
Upload and map the Excel trackerLovehoney administrator, with Certin4
Connect the automated status sourceCertin, with Lovehoney's systems contact4
Upload and review customer and carrier agreementsLovehoney operational owner, with Certin5
Add team members and assign rolesLovehoney administrator, with Certin10
Set alert thresholds, notification channels and escalationCertin, as agreed in the Configuration Workbook10
Daily routine and exception handlingLovehoney operators7 to 9

Two dates, one measure

Each shipment carries two dates, held separately.

Carrier expected date

When the carrier says the shipment will arrive. It changes as the carrier updates.

Business commitment date

The date Lovehoney has committed to. Certin measures risk against this date.

A carrier date that moves but stays inside the business commitment does not become an exception unless Lovehoney's rules say it should. You see the exceptions that threaten a commitment, not every change in the data.

Severity

Every exception carries one of three severity levels. The thresholds behind each level are set in the Lovehoney Operations Configuration Workbook.

  • L1 Critical: work these first.
  • L2 Medium: then these.
  • L3 Low: then these.

2. Signing in for the first time

Every user

Once you have been added as a team member (section 10), you sign in at the address below. On your first sign in, Certin takes you through a short setup in four steps.

  1. Go to app.getcertin.ai. Enter your email and password and select Sign in, or select Continue with Google. Tick Remember me on a computer only you use. If you have forgotten your password, select Forgot password.

    The Certin sign in page at app.getcertin.ai.
    The Certin sign in page at app.getcertin.ai.
  2. The welcome screen explains what Certin does. Select Get Started.

    Step 1 of 4: welcome.
    Step 1 of 4: welcome.
  3. The second screen explains that carrier contracts and service level documents are uploaded from the Contracts & SLAs page, where Certin extracts the key terms. Section 5 covers this. Select Continue.

    Step 2 of 4: contracts and service levels.
    Step 2 of 4: contracts and service levels.
  4. The third screen offers four ways to bring shipment data in: file upload, Google Sheets, Microsoft Excel in OneDrive or SharePoint, and email. During the design partnership these connections are set up before operators sign in, so operators select Continue. Section 4 explains each option.

    Step 3 of 4: shipment data and tools.
    Step 3 of 4: shipment data and tools.
  5. Select Go to Dashboard.

    Step 4 of 4: setup complete.
    Step 4 of 4: setup complete.
  6. On first arrival, Certin offers a short tour of the main sections. Select Start tour to follow it, or Skip tour to go straight in.

    The tour offered on first arrival.
    The tour offered on first arrival.

3. Finding your way around

The menu on the left groups every screen. These are the screens used during the design partnership.

ScreenWhat it is for
DashboardThe current picture of all shipments and service level performance.
Daily PulseThe start of day digest, the shift log and handover notes.
InboxA thread for each exception, where you communicate with carriers and record what was done.
Signal ReviewCarrier and forwarder messages Certin could not interpret with confidence, waiting for a person to review.
ExceptionsThe Exception Resolution Center: every exception, by severity.
ShipmentsEvery shipment and its status.
Contracts & SLAsCustomer and carrier agreements, service level rules, carriers and compliance.
Reports & AnalyticsPerformance over time, reports and alert logs.
Data IngestionConnections to the sources Certin reads.
ImportsEvery file upload and sync, with its result.
SettingsOrganisation, team, notifications and alert configuration.

Ask Clara sits at the bottom right of every screen. The search bar at the top of every screen finds shipments, exceptions and carriers. Fleets, Forecasting and Automation also appear in the menu; section 12 explains why they are not used during the design partnership.

4. Bringing shipment data in

Certin works from three kinds of data:

  • Bookings, from the master Excel tracker: each shipment, its carrier, its route and its dates.
  • Status updates, from an automated source: Zencargo data held in BigQuery, Parcel Perform for integrated road carriers, carrier emails, or EDI where a carrier offers it.
  • Agreements, from uploaded customer and carrier contracts. Section 5 covers these.

Uploading the Excel tracker

Lovehoney administrator, with Certin
  1. Open Imports under Data and System in the menu. Stay on the File Uploads tab.

  2. Select Upload File and choose the tracker. Certin accepts CSV, Excel and JSON files.

    Imports, before the first upload.
    Imports, before the first upload.
  3. Certin checks every row and shows the import results in three counts: Imported cleanly, Needs a decision and Failed. Settle anything that needs a decision, then select Finish import.

    Import results. Here, all 381 records imported cleanly.
    Import results. Here, all 381 records imported cleanly.
  4. The file now appears in the list with its number of records, success rate and status. Check that the success rate is 100 per cent and the status reads Completed.

    A completed upload in the Imports list.
    A completed upload in the Imports list.

If rows fail, correct them in the tracker and upload it again. When a tracker is uploaded again with a different number of rows, Certin reconciles it against the current set of shipments, so nothing is duplicated and nothing is lost.

Mapping the tracker columns

Lovehoney administrator, with Certin. Done once.
  1. Open Settings, then Column Mapping. This tells Certin which column in the tracker holds which piece of information. Until a mapping exists, uploads are read using default column names.

  2. Select Add Mapping and match each column header in the tracker to the Certin field it belongs to. Mappings are grouped under Shipment, Driver, Carrier and Contract.

    Column Mapping, before any mapping is added.
    Column Mapping, before any mapping is added.
  3. Map the carrier expected date and the business commitment date to separate fields. Everything Certin assesses depends on these two dates being kept apart.

Keeping the tracker in sync

Lovehoney administrator, with Certin

Uploading by hand works, but a connected tracker keeps Certin current without anyone remembering to upload. Where the tracker is held in OneDrive or SharePoint, Microsoft Excel Sync connects it directly. Where it is held in Google Sheets, Google Sheets Sync does the same. Both options appear at first sign in, as shown in section 2, and on the Data Ingestion page under Data Sources. Connected files then appear in Imports under the Cloud Syncs and Live Sync tabs.

Connecting the automated status source

Certin, with Lovehoney's systems contact

The status source is what lets Certin see a change as soon as it is reported. Which source comes first is confirmed at mobilisation. How often it refreshes sets the fastest point at which Certin can see a change.

  1. Zencargo data held in BigQuery. Open Data Ingestion. Under Enterprise System Sync, select Connect BigQuery and follow the steps.

    Enterprise System Sync on the Data Ingestion page.
    Enterprise System Sync on the Data Ingestion page.
  2. Parcel Perform. On the same page, select New Connection and choose Parcel Perform from the list.

    The list of systems Certin connects to.
    The list of systems Certin connects to.

    Enter the API base URL, client ID and API key, then select Test Connection before completing the remaining steps.

    Connection details for an enterprise system.
    Connection details for an enterprise system.
  3. Carrier and forwarder emails. On the Data Ingestion page, under Data Sources, connect the shared inbox through the Email option. Gmail, Outlook and any IMAP inbox are supported.

  4. Carriers that offer EDI. Under EDI Connections, select New EDI Connection. Enter the carrier name, choose the EDI version (ANSI X12 214, EDIFACT IFTSTA, or a custom mapping) and the communication method (SFTP, AS2 or API).

    Setting up an EDI connection for a carrier.
    Setting up an EDI connection for a carrier.

5. Adding contracts and service levels

Lovehoney operational owner, with Certin

Certin assesses each exception against what Lovehoney is contractually held to, for that customer and that carrier. That is only possible once the agreements are in Certin.

  1. Open Contracts & SLAs and select + New SLA Contract. Choose Upload Document, then drag the agreement into the box or browse for it. PDF, DOC, DOCX, PNG and JPG files are accepted.

    Uploading an agreement.
    Uploading an agreement.
  2. Certin reads the document and pre-fills four steps. Review every field against the original document before moving on. A wrongly captured obligation produces a confidently wrong assessment, which is why the agreement between Lovehoney and Certin names a Lovehoney reviewer for this check.

    Contract Details. Contract name and reference, the other party, and whether it is a Client agreement (a Lovehoney customer) or a Carrier contract. Contact details and dates.

    Step 1 of 4: Contract Details, pre-filled from the uploaded document.
    Step 1 of 4: Contract Details, pre-filled from the uploaded document.
  3. Service Scope. Service tier, route origin and destination, any volume commitment, and special requirements.

    Step 2 of 4: Service Scope.
    Step 2 of 4: Service Scope.
  4. SLA Metrics. The on-time delivery target, maximum delivery hours, and where the agreement sets them, lead time, proof of delivery upload time and response time for issues.

    Step 3 of 4: SLA Metrics.
    Step 3 of 4: SLA Metrics.
  5. Financial Terms. Base rate, the penalty model (per hour or per breach) and amount, any bonus, and payment terms. Penalties are calculated and tracked in Compliance Analytics. Select Create Contract.

    Step 4 of 4: Financial Terms.
    Step 4 of 4: Financial Terms.
  6. The agreement now appears under Active Contracts, with its type, contact, status, renewal date, compliance and documents.

    Active Contracts after the first agreement is added.
    Active Contracts after the first agreement is added.

The other tabs on this page hold the SLA Rules Certin applies, the Carriers Lovehoney works with, and Compliance Analytics by client and by carrier. The rules are set from the Configuration Workbook.

The SLA Rules tab, where service level rules are held.
The SLA Rules tab, where service level rules are held.

6. Checking shipments and the dashboard

Shipments

Every user
  1. Open Shipments. Every shipment from the tracker is listed with its waybill, origin, destination, carrier, status, service level deadline and any exception. Search by waybill or destination, or filter by status, column and date.

    The Shipments list.
    The Shipments list.
  2. Select a shipment to open its panel: status, priority, delay risk, risk score and service level status. The Track on Fleet Map option in this panel is not used during the design partnership.

    A shipment panel.
    A shipment panel.

The dashboard

The dashboard gives the current picture across every shipment: total shipments, in transit, at risk, on-time delivery rate, tracking visibility, service level breaches, amount at risk and penalty exposure. Below these sit service level health, a live feed of events, the compliance trend, the causes of exceptions, a shipment map and recent shipments. Use Filters to narrow the view and Export to take the figures away. How each figure is calculated is set out in the KPI framework.

The top of the dashboard.
The top of the dashboard.

7. Your day in Certin

Lovehoney operators

At the start of the day

  1. Open Daily Pulse. The Daily Digest tab shows performance measures, critical alerts and open exceptions in one place.

    The Daily Digest.
    The Daily Digest.
  2. Read the critical alerts and open exceptions before acting on any of them. Further down, Exception Management offers Acknowledge All, Assign Priority and Add Comment. Acknowledge All records that someone has read every listed exception, so use it only once you have. Quick Actions below let you broadcast an alert to the shift, assign several exceptions at once, or generate a shift report. Export PDF at the top saves the digest.

    Exception Management on the Daily Digest.
    Exception Management on the Daily Digest.
  3. Open Signal Review. It holds carrier and forwarder messages Certin read but could not interpret with confidence. Review each one so that nothing is missed. When nothing is waiting, the screen says so.

    Signal Review with nothing waiting.
    Signal Review with nothing waiting.
  4. Open Exceptions. The Exception Resolution Center shows the total and the count at each severity. Filter by status, severity, domain or carrier, or search by waybill. Work from L1 down.

    The Exception Resolution Center. Each card shows severity, shipment, risk score, the issue, its category, age, carrier and route.
    The Exception Resolution Center. Each card shows severity, shipment, risk score, the issue, its category, age, carrier and route.

Through the day

When a new exception is raised, you receive an email according to the notification routing set in the Configuration Workbook. Work it using the steps in section 8. If an exception is not acted on within the time set in the workbook, Certin escalates it automatically to Lovehoney's operations manager.

Before you finish

  • No L1 exception is left unacknowledged.
  • Anything still open has an owner, through Assign, or a note in its thread explaining where it stands.
  • Where a colleague picks up after you, leave a handover note in Daily Pulse under Shift Log.

8. Working an exception

Lovehoney operators

Every exception follows the same route from raised to resolved. Select View on an exception card to open its panel. The four actions sit at the top: Acknowledge, Assign, Reject and Resolve.

The exception panel: actions, issue details and the time since the exception was raised.
The exception panel: actions, issue details and the time since the exception was raised.
  1. Acknowledge

    Select Acknowledge as soon as you have read the exception, before you start investigating. This records that a named person has taken ownership.

    The panel shows the time since trigger: how long the exception has waited. The interval from an exception being raised to its first recorded action is the time to act measure used to assess this design partnership. Acknowledging promptly is what that measure records.

  2. Decide

    Take one of four paths.

    • It is not material: Reject

      Use Reject when the exception should not have been raised. A rejection reason is required. Begin it with one of these phrases, then add one sentence of detail: Within tolerance, Duplicate, Data error, Not in scope or Already handled.

      Rejections and their reasons are how Lovehoney's rules are tuned, and how the design partnership measures whether Certin raises the right exceptions. Consistent phrasing makes them countable.

      Reject Exception. The reason is required.
      Reject Exception. The reason is required.
    • Someone else owns it: Assign

      Choose the person under Assign To. Set a due date that falls before the business commitment date. Add a note saying what you need from them. Select Assign.

      Assign Exception.
      Assign Exception.
    • It needs the operations manager: escalate

      In the exception panel, under Communication & Coordination, select Escalate to Operations Manager.

      Escalation, from the lower part of the exception panel.
      Escalation, from the lower part of the exception panel.

      Choose an urgency level and write the escalation reason, saying why escalation is needed and what intervention is required. Both are required. Select Escalate to Ops Manager.

      Urgency is your judgement of how quickly the manager must act. It is separate from severity and can differ from it: a Medium exception can need Critical urgency when a launch date depends on it. The exception stays open after escalation.

      Escalate to Operations Manager.
      Escalate to Operations Manager.
    • You own it: act

      Move to step 3.

  3. Act

    Open Inbox. Every exception has a thread, filtered by status and severity. Select the thread to open it. Assign, Resolve and Escalate are available here too.

    An exception thread in the Inbox.
    An exception thread in the Inbox.

    Reply to the carrier or forwarder from the thread, using Templates where one fits, and attach documents where needed. Everything sent and received stays on the thread. The Context panel on the right shows the shipment, the service level requirement, and the deadline against the estimated delivery.

    Deadline and estimated delivery in the Context panel.
    Deadline and estimated delivery in the Context panel.

    Select Ask Clara for a summary of what is happening with the shipment and suggested next steps, or ask Clara a question about Lovehoney's shipments in your own words. The decision and the action remain yours.

    Clara answering a question about delayed shipments.
    Clara answering a question about delayed shipments.
  4. Resolve

    When the matter is settled, select Resolve. Choose a resolution category and write the resolution details. Both are required. Select Resolve Exception. Section 9 sets out which categories to use and what the details must contain.

    Resolve Exception.
    Resolve Exception.

9. Closing an exception

What the resolution details contain

Every resolution records three things:

  1. The final delivery date, stated against the business commitment date.
  2. Who was informed: customer, receiving site or internal owner.
  3. Any cost incurred, such as redelivery, storage or waiting time, with the amount where known.

This is the record of what happened to the shipment, and it is how demurrage, detention and redelivery exposure are measured during the design partnership.

Which category to use

CategoryUse when
Issue Resolved, Normal OperationsThe shipment was delivered by the business commitment date.
Alternative Route TakenThe shipment was rebooked or moved to another service or vehicle.
External Issue, Beyond ControlThe cause was outside the control of Lovehoney and the carrier, such as a road closure, industrial action or severe weather.
To be confirmedA revised delivery date was agreed with the customer.
To be confirmedThe shipment was cancelled.

Categories not used by Lovehoney

CategoryInstead
False Alarm, No Action NeededUse Reject with a reason. An exception that should not have been raised is rejected, not resolved.
Escalated to ManagementEscalate from the exception panel and keep the exception open.
Issue Ongoing, MonitoringLeave the exception open. Resolving it removes a live problem from the queue.
Driver Assisted RemotelyNot applicable. Lovehoney freight is carried by third party carriers.
On-site Support ProvidedNot applicable, for the same reason.

10. Team, alerts, escalation and reports

These settings are made once, from the Configuration Workbook. They are shown so that every user knows who has access, how alerts reach them and when escalation happens.

Adding team members

Lovehoney administrator, with Certin

Operators are added once the tracker is connected and the agreements are reviewed, so that Certin holds Lovehoney's data from their first sign in.

  1. Open Settings at the bottom of the menu, then Team & Access. Select Invite Member.

    Team & Access, where each named user is added.
    Team & Access, where each named user is added.
  2. Enter the user's details and choose a role. The role for each named user is agreed in the Configuration Workbook. Up to five named users take part in the design partnership. Each user then signs in as described in section 2.

    The roles available, with what each one can do.
    The roles available, with what each one can do.

Alerts and escalation

Certin, as agreed with the Lovehoney operational owner
  1. Risk score thresholds. Open Settings, then Alert Config. Three thresholds decide when a shipment is placed under watch, flagged for early intervention, or flagged critical.

    Risk score thresholds in Alert Config.
    Risk score thresholds in Alert Config.
  2. Notification channels. On the same page, each alert level is sent through the channels ticked for it. During the design partnership, notifications are sent by email only.

    Notification channels by alert level.
    Notification channels by alert level.
  3. Automatic escalation. Unresolved alerts are escalated to the operations manager, and then to the system administrator, after the times set here.

    Auto-escalation rules.
    Auto-escalation rules.

Reports

Reports & Analytics shows performance over a chosen period, by carrier and by route: average delivery time, service level compliance, exception resolution time, deliveries, the root causes of exceptions, delivery outcomes, the compliance trend and a carrier leaderboard. The Reports & Digests and Alert Logs tabs hold scheduled reports and the record of every alert sent. The operational owner uses this page to prepare for the weekly working session.

Reports & Analytics.
Reports & Analytics.

11. The seven scenarios

These are the situations used in User Acceptance Testing and in the onboarding sessions. Severity in each case is set by Lovehoney's rules.

ScenarioWhat you seeWhat you doHow it closes
Normal deliveryNo exception. The shipment moves to Delivered.Nothing. If an exception is raised, reject it with Data error or Within tolerance.No exception, or Reject.
Delayed collectionThe carrier has not collected by the booked time.Acknowledge. Ask the carrier for the new collection time. If it threatens the commitment, assign to the commercial owner or escalate.Issue Resolved if the commitment holds. Otherwise the outcome that applies.
Missed connectionThe consignment missed a linehaul or hub connection.Acknowledge. Confirm the next departure with the carrier and check it against the commitment.Issue Resolved, or Alternative Route Taken.
Changed delivery dateThe carrier date moves beyond the business commitment date.Acknowledge. Confirm the date with the carrier. Assign to the commercial owner where the customer needs to agree a new date.Revised date agreed, category to be confirmed.
CancellationThe booking is cancelled or withdrawn.Acknowledge. Confirm with the booking owner that the cancellation is intended, and update the Excel tracker.Shipment cancelled, category to be confirmed.
Fixed delivery appointmentThe arrival is at risk of missing a booked slot at the receiving site.Acknowledge. Confirm the arrival time with the carrier. Ask the receiving site to hold or move the slot before it is missed.Issue Resolved if the slot is met. Otherwise record any refusal or redelivery cost.
SLA breachThe business commitment date has passed without delivery.Acknowledge. Escalate where a customer or launch is affected. Confirm the final delivery date.The category that matches the outcome, with the cost recorded.

12. Screens outside this partnership

Some parts of the platform are not used during the design partnership.

  • Fleets, the Driver and Vehicle and Live Location sections of the exception panel, View on Fleet Map, Track on Fleet Map, Call Driver and WhatsApp Driver. Lovehoney freight is carried by third party carriers, and the design partnership does not include live vehicle positions.
  • GPS Tracking, WhatsApp and Traffic Intelligence on the Data Ingestion page. Not connected, for the same reason.
  • Automation. Certin surfaces and assesses exceptions; Lovehoney decides and acts.
  • Forecasting. Used only if the predictive layer is taken forward at the Day 40 mid-point review.

13. Onboarding session plan

One setup session with the administrator and operational owner, then three short sessions that take operators from first sign in to confident daily use. Day numbers follow the timeline in the Design Partnership Agreement, where the evaluation period starts once data access is in place.

In place before the operator sessions

  • Named users invited, up to five, with roles assigned.
  • Lovehoney's operations manager set up to receive escalations.
  • Notifications set to email.
  • The Excel tracker uploaded and mapped, and the first automated status source connected.
  • Operating rules configured, and in-scope agreements uploaded and reviewed.
  • A test environment prepared, so that practice exceptions do not enter the live measures.
SessionWhenWhoWhat it coversLeave with
Setup
60 minutes
Days 8 to 12, alongside rules configuration Lovehoney administrator, operational owner and Certin Sections 2, 4, 5 and 10: signing in, uploading and mapping the tracker, the status source, uploading and reviewing agreements, adding team members, alerts and escalation. Users invited, tracker mapped, first agreements reviewed, operations manager set up.
1. Orientation
60 minutes
Day 12, straight after the final rules configuration session Named operators and the operational owner Sections 1, 3 and 6 to 9: the two dates, severity, finding your way around, the daily routine, and the full exception route worked on Lovehoney examples in the test environment. Every operator has signed in and has acknowledged, rejected, assigned, escalated and resolved a practice exception.
2. First live day
45 minutes
Day 13, when detection goes live Named operators and the operational owner Working the first live exceptions together. Checking that notification emails arrive and that escalation reaches the operations manager. First live exceptions acknowledged. Any access or routing problems logged with Certin.
3. First week review
45 minutes
Around Day 20 Named operators, the operational owner and Certin Rejected exceptions and their reasons, alert volume, and anything the team found that Certin did not raise. Rule changes agreed and logged for the tuning period, Days 30 to 40.

Time per operator across the three operator sessions: two and a half hours. After Session 3, the weekly working session set out in the agreement continues, moving to fortnightly where both parties agree, followed by the mid-point review at Day 40 and the final review between Days 80 and 90.

14. Quick reference

Every morning
Daily Pulse, then the Daily Digest. Then Signal Review. Then Exceptions, L1 first.
Every exception
Acknowledge first. Then Reject, Assign, escalate, or act in the Inbox.
Every rejection
A reason beginning Within tolerance, Duplicate, Data error, Not in scope or Already handled.
Every escalation
An urgency level and a reason. The exception stays open.
Every resolution
A category, then the final date against the commitment, who was informed, and any cost.
Every upload
Check the import results: everything imported cleanly, nothing waiting for a decision, nothing failed.
Prepared by Certin Technologies Limited for Lovehoney Group UK Limited under the Design Partnership Agreement. Confidential under the mutual non-disclosure agreement between the parties.

Video Walkthrough

A recorded tour of the Certin platform.

Certin Platform User GuideSelect to watch. The video opens on Trupeer in a new tab.

Paste the embed code from Trupeer, or the address it contains.

Three-Day User Acceptance Testing Plan

Lovehoney road-freight design partnership | Domestic Germany

Document item Detail
Prepared for Lovehoney Group
Prepared by Certin Technologies Limited
Version Draft 1.0
Planned duration Three consecutive working days; extension by mutual agreement if required
Operational scope Domestic Germany road freight, initially using Zencargo and Lovehoney shipment data

Purpose

This plan defines how Lovehoney and Certin will validate that the configured Certin workflow supports the agreed domestic Germany road-freight process before the controlled live-running phase. It is designed to be focused and low-burden: selected Lovehoney users perform targeted tests, while Certin prepares the environment, supports execution, records defects and coordinates retesting.

UAT outcome

At the end of the three working days, Lovehoney will record one of three decisions: Accepted, Accepted with conditions, or Not accepted. Acceptance concerns the agreed UAT scope only; it does not by itself confirm the wider pilot KPIs or production rollout.

1. Scope and testing principles

In scope

  • Domestic Germany road shipments managed through the agreed Lovehoney workflow and initial Zencargo operating context.

  • Shipment identification using Lovehoney internal shipping reference, purchase-order number and freight-forwarder booking reference.

  • Milestones for booking, expected and actual collection, expected and actual delivery, cancellation and fixed delivery appointments.

  • Configured commitment-date logic, operational status, exception detection, ownership, alerts, escalation and audit history.

  • Data presentation and reconciliation across the agreed sample spreadsheet and available read-only operational sources.

Out of scope for this UAT

  • Validation of long-term forecasting accuracy or the final pilot business case.

  • Expansion to other lanes, transport modes or freight forwarders unless expressly added by both parties.

  • Destructive testing, penetration testing, or changes to Lovehoney production systems.

  • Automated decisions or external communications not explicitly configured and approved for the test environment.

Testing principles

Principle Application
Representative data Use anonymised or approved representative shipment records that reproduce the agreed scenarios.
Controlled execution Run tests in the prepared UAT environment; do not alter live operational records unless expressly agreed.
Evidence-based results Each result must reference a screenshot, system record, alert, email or other agreed evidence.
No guessed data Where required data is unavailable, Certin must show “Not available” or an equivalent explicit state.
Traceable defects A failed or blocked test links to a unique defect record and is retested after correction.

To keep the exercise manageable, plan approximately 60–90 minutes of focused Lovehoney testing per day, plus a short daily review. Certin remains available throughout the agreed testing window for support and defect triage.

2. Roles, entry criteria and readiness

Roles and responsibilities

Role Primary responsibility
Lovehoney UAT lead — TBC Coordinates testers, confirms expected business outcomes and records the final decision.
Lovehoney testers — TBC Execute assigned scenarios, capture actual results and attach evidence.
Lovehoney administrator(s) — TBC Validate access, administrator controls and agreed user management.
Certin UAT lead — TBC Runs the test schedule, supports users, maintains the tracker and facilitates daily reviews.
Certin engineering Prepares the environment, investigates defects, deploys corrections and supports retesting.

Entry criteria

  • Representative shipment sample approved and loaded.

  • Shipment identifiers and source fields mapped.

  • Lovehoney status values mapped to Certin operational states.

  • Commitment-date precedence confirmed, including fixed delivery appointments.

  • Exception, ownership, notification and escalation rules configured for the agreed scenarios.

  • Test users and administrator access created and verified.

  • UAT environment smoke-tested by Certin before Day 1.

  • UAT tracker shared and named testers briefed on evidence capture and defect reporting.

Readiness decision

The Certin UAT lead and Lovehoney UAT lead confirm readiness before Day 1. If a critical entry criterion is incomplete, the start date moves by mutual agreement rather than consuming the three-day testing window.

3. Three-day execution schedule

Day Focus Test scenarios Lovehoney activity Daily exit
Day 1 Core workflow Normal delivery; shipment identifier and source reconciliation Validate displayed data, milestone sequence, status and audit trail. Core workflow works or blocking defects are logged.
Day 2 Operational exceptions Delayed collection; missed connection; changed delivery date; SLA breach Confirm detection, classification, ownership, alerts and escalation. Each exception has a recorded result and evidence.
Day 3 Special outcomes and closure Cancellation; fixed delivery appointment; missing/unavailable data; defect retests Confirm special rules, retest corrected defects and review acceptance criteria. Sign-off decision and conditions recorded.

Daily operating rhythm

Timing Activity
Start of day — 15 minutes Confirm test assignments, environment availability and known issues.
Testing window — 60–90 minutes Lovehoney executes scenarios; Certin provides live support and records defects.
Triage — as required Certin classifies defects, confirms owner and gives a target for correction or workaround.
End of day — 20 minutes Review results, blockers, evidence gaps and the next day’s plan.

Execution method

  1. Tester selects the assigned Test ID in the execution tracker.

  2. Tester confirms preconditions and follows the recorded steps.

  3. Tester compares the actual outcome with the expected result and records Pass, Fail or Blocked.

  4. For Fail or Blocked, the tester or UAT lead creates a linked defect and attaches evidence.

  5. Certin resolves or proposes a workaround; Lovehoney repeats the affected steps and records the retest result.

4. Test catalogue and expected outcomes

ID Scenario Expected business outcome Priority
TC-01 Normal delivery Correct references and milestone dates are shown; status progresses to Delivered; audit history is retained. Critical
TC-02 Identifier and source reconciliation Internal reference, PO and Zencargo booking reference resolve to the same shipment; source fields are traceable. High
TC-03 Delayed collection Delay is detected against the expected collection date; owner and alert follow the configured rule. Critical
TC-04 Missed connection Exception is captured with cause, impact and responsible owner; escalation follows the agreed rule. High
TC-05 Changed delivery date New expected date is visible without overwriting history; risk and notifications recalculate as configured. Critical
TC-06 SLA breach Overdue undelivered shipment is classified as currently breached and included in the agreed breach cohort. Critical
TC-07 Cancellation Shipment is retained as Cancelled, not deleted, and excluded from on-time-delivery and breach denominators. Critical
TC-08 Fixed delivery appointment The fixed appointment date takes precedence according to the approved commitment-date hierarchy. Critical
TC-09 Latest source update Latest available operational update is shown with source and timestamp; conflicting data is flagged for review. High
TC-10 Missing required data No value is invented; the field is explicit as unavailable and any dependent outcome is qualified. High

Evidence expectations

Evidence may include a screen capture, shipment record, alert, escalation message, audit-history entry or a link to an agreed test record. Personal or commercially sensitive data should be minimised and handled under the parties’ agreement and applicable access controls.

KPI and rules validated during UAT

The scenarios validate the configured definitions and workflow behaviour—not final performance levels. Particular attention is given to commitment-date precedence, reporting cohort exclusions, status mapping, alert ownership, cancelled shipments, tracking freshness and the distinction between observed outcomes and forecasts.

5. Defect management and retesting

Severity Definition UAT treatment
Critical / S1 Blocks a critical workflow, creates material data-integrity or access risk, or produces an incorrect critical operational decision. Correct and retest before sign-off.
High / S2 Major agreed function is incorrect or unavailable and no reasonable workaround exists. Resolve before sign-off unless Lovehoney expressly accepts a documented condition.
Medium / S3 Non-blocking issue with a practical workaround or limited operational impact. Record owner and target date; may remain open by agreement.
Low / S4 Cosmetic or minor usability issue that does not change the operational outcome. Record for prioritisation; does not prevent acceptance.

Defect workflow

1. Log the defect against the originating Test ID with summary, evidence, severity and reproduction details.

2. Certin confirms severity, owner and target status during triage.

3. Engineering applies a correction or agreed workaround in the UAT environment.

4. Lovehoney repeats the affected test steps and records Pass or Fail in the retest field.

5. The defect is closed only after a successful retest or an expressly accepted condition.

Extension rule

If a Critical defect cannot be corrected and retested within the three working days, final sign-off is paused and the testing period is extended by mutual agreement. The extension applies only to the affected scenarios and required regression checks unless both parties agree otherwise.

6. Acceptance and sign-off

Minimum acceptance criteria

  • All Critical scenarios have been executed and passed.

  • No Critical / S1 defect remains open.

  • No High / S2 defect blocks an agreed workflow; any accepted High defect has a documented workaround, owner and target date.

  • Shipment references, milestone dates and the configured commitment basis are displayed correctly for the test data.

  • Status changes, alerts, ownership and escalation operate according to the agreed rules and retain an audit history.

  • Cancelled shipments remain visible and are excluded from the configured on-time-delivery and breach cohort.

  • Unavailable data is shown explicitly; predictive values are clearly labelled as forecasts.

  • Lovehoney has reviewed the evidence and recorded a formal UAT decision.

Decision options

Decision Meaning
Accepted The agreed UAT scope meets the acceptance criteria and may proceed to the next pilot phase.
Accepted with conditions The scope may proceed subject to documented conditions, owners, workarounds and target dates.
Not accepted One or more blocking criteria remain unmet; corrective action and further retesting are required.

Sign-off record

Field Lovehoney Certin
Name
Role
Decision / acknowledgement
Conditions, if any
Date
Signature

The accompanying Excel execution tracker is the operational record for test results, defects, retests and acceptance evidence.

The Word file is created from this page at the moment you select the button, so it always matches the current version.

UAT Tracker

The live record of test results, defects, retests and sign-off during the three days of testing. Every tester works in the same Google Sheet.

Editing needs a Google account with access to the sheet. If the view above stays blank, open the tracker in Google Sheets.

Engineering Deliverables · Submission

Lovehoney / Certin Engineering Onboarding and Integration Deliverables

Prepared by: Engineering
Date: 21 September 2026
Test gate: 28 September 2026 EOD
Detection go-live target: 29 September 2026

Purpose and Scope

Engineering deliverables for the Lovehoney onboarding. Scope for this phase is Germany domestic road freight, read-only, running in shadow mode alongside Lovehoney’s existing Excel tracker, portal and email process. Two administrator seats; restricted access for all other users. Cancelled shipments are marked and retained, never deleted. Out-of-scope features are hidden by configuration or feature flag, not removed from the shared product.

Every statement below is marked by evidence status. Where the platform already implements something, it is marked Confirmed and the actual field, route or value is given. Where Lovehoney must supply something, it is marked Required from Lovehoney. Where a fact exists but has not been verified against a live system or document, it is marked To be confirmed. Nothing has been invented to fill a gap.

Evidence status legend

  • Confirmed — verified in the Certin implementation or design notes
  • Required from Lovehoney
  • To be confirmed
  • Non-blocking

Question for Lovehoney

One decision is needed to keep the 28 September test gate on track:

  • Which carrier-tracking provider should this integration use — Parcel Perform, Zencargo, or both? (Parcel Perform is already built for this pilot; if Zencargo is required as well or instead, we’ll need the organisation access described in Section 4A.)

1. Technical Onboarding Checklist

Section 1

Every data, access and configuration dependency. "Required By" states the stage the item blocks. Owner is the party who must produce it, not the party who consumes it.

Data Dependencies

RequirementDescriptionOwnerRequired ByStatusBlocking?Notes
Anonymised tracker sampleExcel/CSV export covering normal, delayed, cancelled and fixed-date shipments. Minimum 200 rows, real column structure.LovehoneyConfigurationRequested on callYesAlready requested. Mapping template in Section 3 cannot be finalised without it.
Tracker column definitionsHeader text exactly as exported, data type, example value, always-populated flag.LovehoneyConfigurationRequiredYesMapping is by literal header string. See Section 2.
Primary shipment referenceWhich column is the permanent unique key, and whether it is stable for the shipment’s whole life.LovehoneyConfigurationRequested on callYesBecomes shipments.tracking_number. Rows without it are rejected.
Business commitment dateWhich column holds Lovehoney’s committed delivery date, how it is set, whether it changes after booking.LovehoneyConfigurationRequiredYesExceptions assess against this. No field currently holds it — Section 13, item 2.
Carrier expected delivery dateThe separate column holding the carrier’s own estimate.LovehoneyConfigurationRequiredYesMaps to estimated_delivery.
Actual delivery timestampColumn recording when delivery actually occurred, distinct from either forecast date.LovehoneyConfigurationRequiredYesWithout it, on-time measures compare a date against itself.
Status vocabularyEvery status value the tracker and carrier feed can emit.LovehoneyConfigurationRequiredYesUnmapped values do not drive SLA logic. Canonical set in Section 2.
Date/time format and timezoneFormat per column, timezone, CET/CEST handling across the October change.LovehoneyConfigurationRequiredYesAmbiguous day/month ordering corrupts every deadline.
Historical shipment data12 months if available, 90 days minimum, Germany domestic road.LovehoneyLive testingRequiredYesEvery Day 0 baseline derives from this. Section 11.
Cancellation representationWhether a cancelled shipment is flagged in the tracker or the row is removed.LovehoneyConfigurationRequiredYesIf rows are deleted, cancellation is undetectable from the file. Section 13.
Fixed-appointment representationHow a fixed delivery appointment is recorded and how it differs from a standard commitment.LovehoneyConfigurationRequiredYesDrives UAT-05.

Integration Dependencies

RequirementDescriptionOwnerRequired ByStatusBlocking?Notes
Carrier-data source decisionWhether the carrier feed is Parcel Perform, Zencargo, or both.Certin + LovehoneyConfigurationOpenYesParcel Perform is built; Zencargo has no source material. Section 13, item 1.
PP API credentialsOAuth2 client_id and client_secret from the PP portal (Integrations > API).LovehoneyConfigurationRequiredYesPP is engaged by Lovehoney directly; Certin has no PP contract.
PP webhook Authentication KeyKey from PP portal (Integrations > Webhooks), used for HMAC verification.LovehoneyLive testingRequiredYesStored as PARCEL_PERFORM_WEBHOOK_SECRET.
PP webhook registrationRegistering Certin’s receiver URL in the PP portal. Requires Lovehoney’s Certin organizationId.LovehoneyLive testingRequiredYesPortal-only; no API-based subscription documented.
PP account API versionWhether the Lovehoney account is on 5.0 or 5.2.Lovehoney / PP KAMConfigurationTo be confirmedYesChanges payload shape. Open question in the design notes.
PP carrier onboarding listWhich Lovehoney road carriers PP has actually onboarded.Lovehoney / PP KAMLive testingTo be confirmedYesCaps automated status coverage. Coverage question, not code.
PP sandbox environmentNo separate sandbox is documented; PP live-test runs against the real account.PP KAMLive testingOpenNoRead-only makes production testing defensible. Confirm acceptability.
Zencargo API documentationPublic or account documentation covering auth, endpoints, limits, events.CertinConfigurationOpenYesEngineering obtains this; not a Lovehoney ask. Section 4.
Zencargo organisation accessLovehoney-specific read-only access, tenant identifier, credentials.LovehoneyConfigurationRequested on callYesCoordination contact already requested.
Reference correspondenceWhich carrier-system field carries the Lovehoney shipment reference.LovehoneyConfigurationRequiredYesWithout it, tracker rows and carrier records cannot reconcile.

Access and Credentials

RequirementDescriptionOwnerRequired ByStatusBlocking?Notes
Administrator detailsName and email for the two administrator seats.LovehoneyConfigurationRequested on callYesProvisioned as admin. Section 5.
Restricted user listName, email and intended function for each remaining user.LovehoneyConfigurationRequested on callYesRole mapping depends on Section 13, item 3.
Secure credential channelAgreed mechanism for transferring API secrets.BothConfigurationRequiredYesNot email. Secrets are stored AES-256-GCM encrypted at rest.
Network allowlistingWhether the carrier API restricts callers by IP; if so, permit Certin egress.LovehoneyLive testingTo be confirmedNoOnly applies if restriction exists.

Security and Compliance

RequirementDescriptionOwnerRequired ByStatusBlocking?Notes
Read-only boundary sign-offWritten approval of the architecture in Section 6.LovehoneyConfigurationRequiredYesSection 6 is written to be attachable to that approval.
PII boundary acceptanceAcceptance that no name, email, phone, address or commercial value reaches Certin.LovehoneyConfigurationDocumentedNoEnforced structurally and proven by test. Section 6.
Data residency — carrier sideWhere PP hosts Lovehoney’s data before Certin reads it.Lovehoney + PPLive testingTo be confirmedNoRecorded as TBC in the boundary document. Governance item.
DPA executionAny data-processing agreement required before credentials are issued.LovehoneyConfigurationTo be confirmedYesConfirm whether one is outstanding.

Configuration

RequirementDescriptionOwnerRequired ByStatusBlocking?Notes
Germany domestic lane filterScope filter so out-of-lane shipments in the same tracker do not enter the workspace.CertinConfigurationNeeds lane definitionYesRequires Lovehoney’s definition of in-scope origin/destination.
Per-org connector enablementorganization_settings.parcel_perform_enabled, default false for every org.CertinConfigurationConfirmedNoEnabled today by direct SQL; no admin UI exists yet.
SLA contract recordsPer client and route: max delivery hours, penalty model, rate, cap, validity dates.LovehoneyConfigurationRequested on callYesSLA/transit-time sheet already requested. Schema in Section 2.
Severity and routing rulesWhich conditions map to which severity, and who is notified at each level.LovehoneyConfigurationRequiredYesCertin severities are L1/L2/L3.
Out-of-scope feature hidingHide modules not in scope by configuration or feature flag.CertinLive testingNeeds scope listNoRequires Lovehoney confirmation of which modules are in scope.
Cancelled-shipment handlingMark and retain; audit history survives cancellation.CertinLive testingConfirmedNoPlatform soft-deletes; no hard delete on cancellation.

Business Rules

RequirementDescriptionOwnerRequired ByStatusBlocking?Notes
Exception definitionWhat Lovehoney considers an exception on this lane, and at what threshold.LovehoneyConfigurationRequiredYesCertin defaults: at-risk within 6h of deadline, approaching within 24h.
At-risk thresholdsConfirmation that 6h/24h suit German domestic road.LovehoneyConfigurationTo be confirmedNoCurrently fixed platform-wide; would need work to vary. Section 13.
Escalation pathWho receives an escalated exception, and at which severity.LovehoneyLive testingRequiredYesAt least one user must hold a role able to receive escalations.
Charge rate cardRedelivery fees, detention/waiting rates, and whether demurrage applies on this lane.LovehoneyLive testingRequiredNoWithout it, exposure KPIs report counts only. Section 10.

User and Role Setup

RequirementDescriptionOwnerRequired ByStatusBlocking?Notes
Role mapping decisionWhich platform role each Lovehoney user group receives.Certin + LovehoneyConfigurationOpenYesNo genuinely view-only role exists. Section 5 and Section 13, item 3.
2FA policyWhether 2FA is enforced for the Lovehoney organisation.LovehoneyConfigurationTo be confirmedNoDefault is off. If on, users are blocked until enrolled.

Testing Dependencies

RequirementDescriptionOwnerRequired ByStatusBlocking?Notes
Reserved test shipmentsSix references, one per UAT scenario, Lovehoney agrees not to touch.LovehoneyLive testingRequiredYesSection 7.
UAT participantsNamed testers and availability in the week to 28 September.LovehoneyLive testingRequiredYes
Scratch Postgres + RedisDisposable Postgres 17+ with pgvector, and Redis, for the connector e2e suites.CertinLive testingConfirmedNoDocumented setup already exists in the connector README.

Operational Dependencies

RequirementDescriptionOwnerRequired ByStatusBlocking?Notes
Baseline operating measuresOperator headcount, hours, current manual checking, duplicate entry.LovehoneyLive testingRequiredYesSeveral KPIs are unreportable without these. Section 11.
Baseline capture runningKPI snapshot capture active against the Lovehoney tenant from Day 0.CertinGo-liveMust be verifiedYesCannot be backfilled. Section 13.
Support and escalation contactsNamed contacts on both sides for the pilot period.BothLive testingRequiredNo

2. Data-Intake Specification

Section 2

What Certin requires from Lovehoney’s tracker. Certin field names below are the actual column names in the shipments table. Accepted header aliases are the literal strings the importer already recognises — a matching header maps with no configuration.

2.1 Shipment fields

Certin fieldDescriptionRequired?TypeAccepted format / header aliasesIdentifier?Validation ruleExampleSource
tracking_numberPermanent unique shipment reference.MandatorystringRecognised headers: tracking_number, tracking number, tracking no, shipment id, shipment_id, waybill, waybill id, waybill_id, order id, order_id, order refYes — primaryNon-empty. Row rejected if absent, reported as "no tracking/waybill/order identifier found".LH-DE-100234Tracker
statusCurrent shipment state.Mandatoryenumstatus, shipment status, delivery statusNoNormalised to the canonical set in 2.3. Unrecognised values pass through unchanged and do not drive SLA logic.in_transitTracker / carrier
client_nameClient the shipment belongs to.Mandatorystringclient name, customer name, customer, brandMatching keyUsed to resolve the SLA contract by exact normalised match. Spelling variants resolve to different contracts.Lovehoney LtdTracker
carrier_nameCarrier operating the movement.Mandatorystringcarrier name, carrier, courier, logistics partnerMatching keyResolves or creates a carriers row. Name variants fragment carrier records.DHL FreightTracker / carrier
Business commitment dateLovehoney’s committed delivery date. Exceptions assess against this.MandatorydatetimeNo field exists — see Section 13, item 2NoCurrently unrepresentable. Requires schema work before UAT-05 and UAT-06 can pass.2026-09-24T17:0 0+02:00Tracker
estimated_delive ryCarrier’s expected delivery date.Mandatorydatetimedelivery date, estimated delivery, estimated_delivery, eta, delivered on, promised deliveryNoAliases currently conflate ETA, promised date and actual delivery — see 2.6.2026-09-24T14:0 0+02:00Carrier
actual_deliveryWhen delivery actually occurred.MandatorydatetimeDedicated column requiredNoCurrently derived from the ETA column when status is delivered. See 2.6.2026-09-24T15:1 2+02:00Carrier
pickup_dateCollection date. Start of the SLA clock.Mandatorydatetimeship date, picked up at, pickup date, dispatch dateNoUsed as SLA clock start; falls back to order date, then ingestion time.2026-09-22T08:3 0+02:00Tracker
origin / origin_cityCollection location.Optionalstringorigin, origin city, pickup city, source, from; composite origin city|origin state|origin countryRoute matchingDefaults to "Unknown origin" if absent. Used for SLA contract route matching.Hamburg, DETracker
destination / destination_cityDelivery location.Optionalstringdestination, destination city, delivery city, to, ship toRoute matchingDefaults to "Unknown destination" if absent.München, DETracker
order_date (metadata)Order creation date.Conditionaldatetimeorder date, created date, created_atNoRequired when pickup_date is absent — it becomes the SLA clock start.2026-09-21Tracker
exception_typeReason for delay or exception.Conditionalstringissue type, delay reason, exception reason, issue, problemNoRequired when a shipment is delayed. Boolean-like valuesCustoms holdTracker
(true/false/yes/no) are discarded as meaningless.
priorityService level.Optionalstringservice level, priorityNoNormalised: contains "express"/"same" → high; "standard" → standard; else passed through.StandardTracker
weight_kgShipment weight.Optionaldecimalweight (kg), weight_kg, weightNoAbsent leaves the stored value unchanged. Unit conversion required if not kg.420.5Tracker
items_countPiece count.Optionalintegerquantity, items_count, items count, piecesNoAbsent leaves the stored value unchanged.12Tracker
driver_nameAssigned driver.Optionalstringdriver name, driver_name, driver, assigned driverNoPromotes a driver record only when a phone number is also present.Tracker
driver_phoneDriver contact.Optionalstringdriver phone, driver_phone, phone, mobile, driver mobileNoEnables operator-initiated driver messaging.Tracker
exception_noteFree-text notes.Optionaltextnotes (free text), notes, comment, descriptionNoPreserved when an incoming sync supplies an empty value.Awaiting customs clearanceTracker
shipping_cost_eu rFreight cost.Optionaldecimalshipping cost (eur), shipping_cost_eur, shipping cost, freight costNoAbsent leaves the stored value unchanged.340.00Tracker
source_updated_ atWhen the source last changed the record.Strongly recommend eddatetimesource_updated_at, updated_at, last_updated, modified_at, event_timestamp, last_event_timeOrdering keyOrders writes across sources. Absent, it falls back to ingestion time.2026-09-22T09:1 0ZBoth

Additional optional fields recognised without configuration: sku_code, route_code, warehouse_code, vehicle_type, product_category, distance_km. Each is stored under metadata.

2.2 SLA contract fields

Supplied via the SLA/transit-time sheet, not the shipment tracker. Delivery deadlines are derived from the contract, never from a date in the shipment file.

Certin fieldDescriptionRequired?TypeValidation / notes
client_nameClient the contract covers.MandatorystringMatched against the shipment’s client name by exact normalised string.
route_origin / route_destinationRoute the terms apply to.MandatorystringUsed to select among multiple contracts for one client.
max_delivery_hoursTransit time allowed.Mandatorydecimal(6,2)Deadline = pickup (or order) date + this value.
penalty_per_hourHourly penalty rate.Conditionaldecimal(10,2)Required when the penalty model is per-hour.
penalty_per_breachFlat penalty per breach.Conditionaldecimal(10,2)Required when the penalty model is per-breach.
penalty_capMaximum penalty.Optionaldecimal(12,2)Applied if present.
valid_from / valid_untilContract validity window.Mandatory / Optionaldatevalid_from defaults to current date. Open-ended if valid_until absent.
service_tier, priorityService classification.OptionalstringDefaults to standard.

2.3 Canonical status values

Confirmed. Incoming statuses normalise to the set below. Anything unrecognised passes through unchanged and will not drive SLA or exception logic — which is why the full Lovehoney vocabulary is a blocking requirement.

Canonical valueAccepted input valuesSLA treatment
pendingpending, booked, createdOpen. Counts toward active shipments.
in_transitin transit, transit, on route, out for deliveryOpen. SLA clock running.
delayeddelayed, late, exceptionOpen. Raises an exception.
delivereddelivered, completedTerminal. On-time assessed against the deadline.
cancelledcancelled, canceledTerminal. Record retained, never deleted.
returnCarrier-feed returnCanonical value added for the pilot. Left to the SLA computation; not folded into any existing bucket.
needs_reviewCarrier-feed expired, inactive, and any unrecognised valueSafe default. expired always forces an exception.

Known follow-up on the two new statuses

return and needs_review are recorded in the design notes as not yet present in the analytics status buckets that every reporting consumer reads. Until that is updated, shipments in these two states are not counted in the delivered / failed / active / problem bucket metrics. Flagged rather than assumed resolved — it affects Automated Status Coverage reporting in Section 10.

2.4 Identifier requirements

  • Unique — the shipment reference must be unique within the Lovehoney organisation. The database enforces uniqueness on (organization_id, tracking_number).
  • Stable and persistent — it must not change across the shipment’s life. A changed reference is indistinguishable from a new shipment and creates a duplicate record.
  • Used for matching — every update from every source matches on this value. It is the upsert key.
  • Used for deduplication — repeated rows carrying the same reference collapse to one shipment.
  • Used to correlate across systems — the tracker row and the carrier record must carry the same value, or they cannot be reconciled. Which carrier field carries it is Required from Lovehoney.

Known identity mismatch in the carrier feed

Parcel Perform’s own documentation states that a tracking number is not unique on its own — true identity is tracking number plus carrier. Certin’s constraint is organisation plus tracking number. The gap is handled by a guard: if an incoming tracking number already exists under a different carrier, the record is not written — it is held in a quarantine table and an alert is raised. Migrating the database key to include carrier remains open target-state work.

2.5 Handling rules

ConditionCertin behaviourStatus
Missing identifierRow rejected, not imported. Reported in the job summary as "no tracking/waybill/order identifier found" with a count.Confirmed
Missing optional valueExisting stored value is preserved. A partial feed does not blank a field another source populated.Confirmed
Duplicate rows in one fileLast occurrence wins. Earlier rows counted and reported as collapsed duplicates.Confirmed
Duplicate across filesContent-hashed at record level; an identical row already ingested is skipped rather than re-projected.Confirmed
Unknown identifierTreated as a new shipment and inserted.Confirmed
Changed identifierNo detection. Produces a duplicate shipment. Mitigated only by the stability requirement in 2.4.Open
Out-of-order updateAn update older than the stored version is skipped and reported as "older than the version already stored". Requires source_updated_at on both sides.Confirmed
Invalid status valuePassed through unchanged; does not drive SLA logic. From the carrier feed, mapped to needs_review instead, and the raw value always preserved.Confirmed
Invalid date valueTreated as absent. The SLA clock falls back: pickup date → order date → ingestion time.Confirmed
Partial recordImported if the identifier is present. Missing fields fall back to defaults; missing dates degrade SLA accuracy rather than rejecting the row.Confirmed
Carrier collisionRecord quarantined, not written; alert raised. Re-polls update the snapshot without re-alerting.Confirmed
Non-shipment sheetSheets recognised as non-shipment are skipped and reported with the reason.Confirmed

2.6 Date-field conflict — must be resolved before UAT

One date field currently carries three meanings

The importer reads a single date column for estimated_delivery, and its recognised aliases include eta, promised delivery and delivered on together. There is no field for a business commitment date.

Where a shipment is marked delivered, that same column is also taken as the actual delivery timestamp, so on-time performance compares a value against itself. Separately, where an SLA contract matches, the deadline is computed from the contract and any per-shipment date in the file is discarded — which is exactly what a fixed-appointment shipment needs preserved.

Lovehoney’s stated requirement is that carrier ETA and business commitment stay separate, with exceptions assessed against the commitment. That requires three separated fields and a change to deadline derivation. UAT-05 and UAT-06 cannot pass correctly until this is done. Section 13, item 2.

3. Draft Excel-to-Certin Field-Mapping Template

Section 3

Copy directly into Excel. Column A is filled in by Lovehoney with their actual header text; every other column is pre-filled. Rows marked Confirm need Lovehoney input before the mapping is final. Certin field names are the real column names — none invented.

Provisional until the tracker sample arrives

The anonymised tracker sample requested on the call has not yet been received. This template is built from the Certin importer’s recognised aliases, so any Lovehoney header that already matches an alias maps with no configuration. Headers that do not match need an explicit row here.

Excel column (Lovehoney)Certin fieldRequired?Data typeTransformation / mapping ruleValidationExample valueNotes
<to be supplied>tracking_numberMandatorystringDirect. Auto-maps if the header is one of the recognised aliases in 2.1.Non-empty; unique in fileLH-DE-100234Primary key. Row rejected if blank.
<to be supplied>statusMandatoryenumLookup against the Lovehoney status vocabulary, then normalise per 2.3.Must resolve to a canonical valueIn Transit → in_transitConfirm full vocabulary.
<to be supplied>client_nameMandatorystringDirect, trimmed. Must match the SLA sheet spelling exactly.Must resolve to a contractLovehoney LtdSpelling variants break SLA matching.
<to be supplied>carrier_nameMandatorystringDirect. Resolves or creates a carrier record.Must be in the agreed carrier listDHL FreightConfirm carrier list.
<to be supplied>business commitment dateMandatorydatetimeNo target field exists. Blocked pending Section 13, item 2.ISO 8601 with offset2026-09-24T17:00+0 2:00Confirm column, and blocked on schema work.
<to be supplied>estimated_deliveryMandatorydatetimeDirect. Carrier ETA only — must not be the same column as commitment or actual delivery.Valid date; not before pickup2026-09-24T14:00+0 2:00See the conflict in 2.6.
<to be supplied>actual_deliveryMandatorydatetimeDirect, populated only when delivered.Valid date; not before pickup2026-09-24T15:12+0 2:00Currently derived from the ETA column — see 2.6.
<to be supplied>pickup_dateMandatorydatetimeDirect. Starts the SLA clock.Valid date2026-09-22T08:30+0 2:00Falls back to order date if absent.
<to be supplied>originOptionalstringSingle column, or composite city|state|country. First part becomes origin_city.Hamburg, DEUsed for SLA route matching.
<to be supplied>destinationOptionalstringAs above; first part becomes destination_city.München, DEUsed for SLA route matching.
<to be supplied>exception_typeConditionalstringDirect. Boolean-like values discarded.Free text, not true/falseCustoms holdRequired for delayed shipments.
<to be supplied>exception_noteOptionaltextDirect.Awaiting clearancePreserved when incoming value is empty.
<to be supplied>priorityOptionalstringNormalised: express/same → high; standard → standard.StandardConfirm service levels.
<to be supplied>weight_kgOptionaldecimalDirect. Convert if the source unit is not kg.Numeric ≥ 0420.5Confirm unit.
<to be supplied>items_countOptionalintegerDirect, rounded.Integer ≥ 012
<to be supplied>shipping_cost_eurOptionaldecimalDirect.Numeric ≥ 0340.00Confirm currency is EUR.
<to be supplied>driver_nameOptionalstringDirect.Driver record created only with a phone number.
<to be supplied>driver_phoneOptionalstringDirect, digits normalised.E.164 preferredEnables driver messaging.
<to be supplied>source_updated_atRecommende ddatetimeDirect. Orders writes across sources.ISO 8601 UTC or with offset2026-09-22T09:10ZAbsent, falls back to ingestion time.
<to be supplied>sku_code, route_code, warehouse_code, vehicle_type, product_category, distance_kmOptionalmixedDirect into metadata.Recognised without configuration.

Second tab — status vocabulary mapping

Lovehoney status valueCertin canonical statusForces exception?Notes
<to be supplied>one of: pending, in_transit, delayed, delivered, cancelled, return, needs_reviewYes / NoOne row per distinct value the tracker can emit. Unmapped values will not drive SLA logic.

4. Zencargo Integration Checklist

Section 4

No Zencargo source material exists

A search of both repositories, the engine design notes and all accessible documentation returns zero Zencargo references. There is no API documentation, no endpoint list, no authentication scheme, no rate limit and no event catalogue available to Engineering.

Per the instruction not to ask Lovehoney for what we can obtain ourselves, obtaining the Zencargo API documentation is Engineering’s own action, not a Lovehoney request. It has not yet been done and is the reason this section cannot be completed in the same detail as the Parcel Perform sub-section below. Nothing here is invented.

What already exists for Lovehoney is a built Parcel Perform connector. 4B documents it as confirmed fact so the reviewer can see what is genuinely ready. Which provider is the carrier-data source is an open decision — Section 13, item 1.

4A. Zencargo — required to complete

Authentication

ItemRequirementStatusOwner
Authentication mechanismOAuth2, API key, bearer token or other.To be confirmed with Zencargo / LovehoneyCertin (from docs)
Credentials requiredExact credential set and where issued.To be confirmedCertin (from docs)
Token requirementsLifetime, refresh mechanism, scope.To be confirmedCertin (from docs)
Credential ownershipLovehoney provisions read-only credentials scoped to their organisation.Required from LovehoneyLovehoney
Organisation identifierLovehoney’s Zencargo tenant/organisation id.Required from LovehoneyLovehoney
Environment requirementsWhether a sandbox exists and whether it shares production quota.To be confirmedLovehoney / Zencargo
Secret handlingCertin stores integration secrets AES-256-GCM encrypted at rest with a dedicated key. Never plaintext, never in logs.Confirmed — platform capabilityCertin

API / Endpoints

No Zencargo endpoint paths are documented in any available material. Purposes below state what the integration needs; paths are pending documentation review.

Endpoint / ResourcePurposeMethodData requiredDirectionFrequencyStatus
Pending documentationAuthenticate and obtain a tokenCredentialsOutbound readOn expiryPending confirmation
Pending documentationList shipments changed since a watermarkGETDate-range or cursor, organisation scopeInbound readPer refresh intervalPending confirmation
Pending documentationRetrieve full shipment detail including event historyGETShipment identifierInbound readPer changed shipmentPending confirmation
Pending documentationReceive push notification of shipment changePOST (inbound)Signature/secret for verificationInboundEvent-drivenPending confirmation

Refresh Frequency

Certin’s supported intervals are Confirmed: every 15 minutes, hourly, every 6 hours, daily, or manual. An interval outside this set cannot be committed without development.

  • Expected polling frequency — every 15 minutes, subject to Zencargo rate limits.
  • Event-driven updates — preferred where available, with polling retained for reconciliation.
  • Maximum acceptable data delay — Required from Lovehoney. Drives the Time to Know KPI target.
  • Full sync — on initial load and after any watermark loss.
  • Incremental sync — watermark-based, taken from fetch start with an overlap window so records created mid-fetch are not skipped.

Rate Limits

ItemDetailStatus
Known limitsRequests per second/minute/day, and whether quota is per account or per token.To be confirmed
Expected request volumeDerived from Lovehoney’s German domestic shipment volume, which is not yet known.Required from Lovehoney
Retry behaviourCertin retries transient failures; watermark advances only on full success, so a failed cycle backfills on the next run.Confirmed pattern
Backoff requirementsToken-bucket governor with exponential backoff, as implemented for the Parcel Perform connector.Pattern exists
Rate-limit handlingRespect a Retry-After header where provided; otherwise exponential backoff.Depends on Zencargo response semantics

Required Events

Events relevant to the Lovehoney workflow. Availability in Zencargo is unknown until the documentation is reviewed.

EventWhy the Lovehoney workflow needs itAvailability
Shipment createdEstablishes the record and starts SLA tracking.To be confirmed
Shipment updatedPrimary driver of status freshness and Automated Status Coverage.To be confirmed
Collection scheduledSets the expected collection against which a missed collection is detected.To be confirmed
Collection missedDirectly drives UAT-04.To be confirmed
Shipment delayedRaises an exception and starts the Time to Know clock.To be confirmed
Shipment cancelledMarks the record. Without it, cancellation is invisible.To be confirmed
Delivery appointment createdRequired to represent fixed-appointment deliveries.To be confirmed
Delivery appointment changedAppointment movement is a commitment change, not an ETA change.To be confirmed
Delivery completedSupplies the actual delivery timestamp. Required for every on-time measure.To be confirmed
SLA breachCertin computes this itself from the commitment date; a source-side event is not required.Computed by Certin
Exception raisedCertin raises exceptions itself; a source-side exception is additional signal.Computed by Certin

4B. Parcel Perform — implemented, for comparison

Documented here because it is confirmed fact and directly relevant to the same decision. Values are taken from the connector implementation and its design notes.

ItemConfirmed detailStatus
Auth mechanismOAuth2 client-credentials. Token endpoint POST /auth/oauth/token/, Authorization: Basic base64(client_id:client_secret), body grant_type=client_credentials. Functional calls use Authorization: Bearer.Confirmed
Credential sourcePP portal → Integrations > API. Provisioned by Lovehoney; Certin has no independent PP contract.Confirmed
Secret handlingAES-256-GCM encrypted at rest under a dedicated key, never reusing another connector’s key. Fails closed if the key is absent.Confirmed
Base URLProduction https://api.parcelperform.com, versioned /v5/ and /v5-2-0/. Sandbox not documented.Confirmed / sandbox open
List endpointGET /v5/shipment/list/ — one date-range pair required; poll uses updated_date_from/to. Pagination limit max 100 with a next_page cursor. No results returns HTTP 404, not an empty 200.Confirmed
Details endpointGET /v5/shipment/details/?shipment_uuid=…, v5.2 variant /v5-2-0/shipment/details/. Returns full event history.Confirmed
Carrier configuration endpointExact path not confirmed. Carrier identity is resolved from the shipment payload instead, so this is not blocking.Open, non-blocking
Rate limit40 requests/second per account → 429 Throttled. A separate 403 Quota exceeded indicates account quota. Shared token-bucket governor implemented, default capacity and refill both 40.Confirmed
Refresh frequencyPoller sweeps every 15 minutes per enabled org, on a queue with exponential-backoff retry. Watermark advances only on full success. Poll window overlaps the previous watermark by 15 minutes; first poll looks back 24 hours.Confirmed
WebhookRegistered in the PP portal (Integrations > Webhooks); no API-based subscription documented. HTTPS POST JSON, must return 200. Retried up to 3× at 5-minute intervals then dropped — the poller backfills that gap, which is why the overlap is 15 minutes.Confirmed
Webhook verificationHMAC-SHA256 over the raw request body using the portal Authentication Key, compared in constant time. Header name and digest encoding are not locked — the guard accepts both known variants and logs which matched. Replays deduplicated by body hash.Implemented / variants open
Webhook receiver URLPOST <backend>/api/v1/parcel-perform/webhook/:organizationId. The org id is a path segment because PP’s payload carries no tenant identifier. Whoever registers it needs Lovehoney’s actual organisation id.Confirmed
Identifiersshipment_uuid is PP-generated, globally unique and stable — used for detail retrieval and idempotent matching. shipment_id is user-defined and may be null; not used as a key. tracking_number is not unique alone.Confirmed
Write directionRead-only, enforced structurally: the API client has no POST/PUT/PATCH/DELETE method against any PP resource path.Confirmed
Account API versionWhether Lovehoney’s account is on 5.0 or 5.2 changes the payload shape.To be confirmed

5. User Access and Permissions Setup Guide

Section 5

Uses the real Certin permission model. Nine roles exist; each combines a module list with five capability flags. No roles are invented below.

Certin Users

Agreed on the call: two administrators, limited access for all remaining users. Names and emails for both groups were requested and are outstanding. Required from Lovehoney.

User groupCountProposed roleRationaleStatus
Lovehoney administrators2adminFull module access, team and settings management. Needed to manage users and configuration without Certin involvement.Names required
Lovehoney operatorsTBCmember (closest available)Most restricted role available: dashboard, inbox, exceptions and shipments, with all five capability flags off.See gap below
Certin implementation teamTBCadminConfiguration and support during the pilot. Removed or downgraded at handover.Confirm duration

User Roles

The nine roles, as implemented:

RoleModulesNotes
ownerAll 13 modulesIdentical capability set to admin.
adminAll 13 modulesProposed for the two Lovehoney administrator seats.
operations_managerAll except settings and data ingestionCan manage team; cannot change settings. Escalation recipient.
logistics_directorOversight setAnalytics without automation control.
warehouse_managerWarehouse set, no fleetOut of scope for this lane.
fleet_managerFleet and shipmentsOut of scope for this lane.
carrier_managerCarrier performance and SLAsPossible fit if Lovehoney wants a carrier-performance viewer.
dispatcherRoutes and ETAsOut of scope for this lane.
memberDashboard, inbox, exceptions, shipmentsMost restricted. All five capability flags off.

Permissions

Capability flags are the platform’s real permission axes: team management, settings, analytics, automations, bulk assignment, exception resolution and forecasting. The matrix below maps them onto the requested columns.

RoleViewCreateEditDeleteConfigureReportsAdminNotes
adminYesYesYesYesYesYesYesTwo Lovehoney seats.
operations_managerYesYesYesLimitedNoYesTeam onlyCan resolve exceptions and bulk assign.
carrier_managerYesLimitedLimitedNoNoNoNoCarrier and SLA focus; no fleet or analytics.
memberYesLimitedLimitedNoNoNoNoCannot resolve exceptions, bulk assign, or view analytics or forecasting.

There is no genuinely view-only role

The deployment is read-only at the integration boundary. That is not the same as read-only for users. member — the most restricted role — still reaches the dashboard, inbox, exceptions and shipments, and can send messages from within a thread. A Lovehoney "restricted" user provisioned as member would be able to act, not only observe.

Two options: add a view-only role, or feature-flag the action surfaces for this workspace and describe that arrangement plainly. This needs a decision before the permissions guide can be issued to Lovehoney — Section 13, item 3.

Environment Access

EnvironmentWhoPurposeStatus
StagingCertin engineering; named Lovehoney UAT participantsUAT execution against synthetic and anonymised data.Participants required
ProductionTwo Lovehoney admins, restricted users, Certin implementation teamShadow-mode operation from go-live.User list required

Integration Access

Carrier API credentials are held by Certin, encrypted at rest, and are not exposed to any Lovehoney user through the interface. Connector enablement is per-organisation and defaults to off. There is currently no administrative UI or API for enabling the connector or setting its credentials — both are done by direct database operation during onboarding. Confirmed.

Administrative Access

Platform-level administration sits with Certin. Access requests from new users are approved through the platform’s access-request flow; approval creates the user and sends an invitation. Approval requires a role that passes the admin check — a platform super-admin can approve across organisations.

Testing Access

UAT participants need production-equivalent roles in staging so that a permission difference does not invalidate a test result. Reserved test shipment references are listed in Section 7. Required from Lovehoney.

Customer Access

No end-customer or consumer access is in scope for this phase. Lovehoney’s own customers do not receive Certin logins.

2FA

Two-factor enforcement is an organisation setting, off by default. If enabled for Lovehoney, any user who has not enrolled is blocked from the API with an enrolment-required response. Enrol the two administrators immediately if it is switched on. Confirm whether Lovehoney requires it.

6. Technical Data-Flow and Security Summary

Section 6

Architecture

Lovehoney Excel tracker                Carrier tracking provider
  (manual export / upload)               (Parcel Perform — implemented)
          |                                (Zencargo — undecided, Section 13)
          |  file upload                        |
          |                                     |  HTTPS GET (poll, every 15 min)
          |                                     |  HTTPS POST (provider-initiated webhook)
          v                                     v
  +-------------------------------------------------------------+
  |                        C E R T I N                           |
  |                                                              |
  |  Ingestion  -->  Mapper (PII allowlist)  -->  Projection      |
  |                                                  |            |
  |                                                  v            |
  |                                          shipments table      |
  |                                          (+ quarantine on     |
  |                                           carrier collision)  |
  |                                                  |            |
  |     +--------------+--------------+--------------+            |
  |     v              v              v              v            |
  |  Exception      Dashboard      Alerts /       Reporting       |
  |  detection      + live feed    routing        + KPI capture   |
  +-------------------------------------------------------------+
          |
          |  operator-initiated only (see boundary note below)
          v
  Driver / carrier contact (WhatsApp, email)
  No arrow returns to the Lovehoney tracker or the carrier provider.

What Certin reads from

  • Lovehoney’s Excel/CSV tracker, by file upload or connected spreadsheet.
  • The carrier tracking provider’s read endpoints, plus provider-initiated webhooks.

What Certin receives

Operational and logistics fields only: identifiers, carrier, status and phase, timing, expected delivery window, service and packaging type, item count, dimensions, weight, linked shipments, tags, and a coarse event history with a city or hub label. A proof-of-delivery URL reference may be received; the document itself is never fetched or stored.

PII explicitly dropped and never persisted

Confirmed and test-enforced. Dropped at the mapper before anything reaches storage: notification emails and phone numbers; recipient, sender, to, from and return addresses and every sub-field including names, company and tax id; recipient identification and signature data; customer name and email on orders; line-item product detail; returns detail; customer ratings and feedback; collection-point addresses; invoice and label documents; commercial values including shipment value, shipping cost and cash-on-delivery; and fine-grained event geolocation including latitude and longitude.

The enforcement is structural, not procedural: the mapper is built field-by-field from an allowlist and never spreads or holds a reference to the raw provider payload, so nothing outside the allowlist can reach storage. Dedicated tests feed fixtures containing every dropped field and assert none survives. No name, email, phone, physical address or commercial value reaches Certin’s database.

How data enters Certin

Two paths. Scheduled polling every 15 minutes per enabled organisation, running on a retrying queue, with a watermark that advances only on complete success so an outage backfills on the next cycle. And provider-initiated webhooks, verified by HMAC-SHA256 over the raw body in constant time, deduplicated by body hash, acknowledged fast and processed asynchronously.

Where data is stored

PostgreSQL. Shipment records in the shared shipments table scoped by organisation; raw ingested records in a per-organisation schema; collision-quarantined records in a dedicated table. Retention follows the platform’s existing organisation-level retention configuration; no pilot-specific retention rule exists.

What Certin processes

Status normalisation, SLA deadline computation, exception detection and severity assessment, risk scoring, alert routing, KPI capture and reporting.

What Certin does not modify

Read-only boundary — operational statement

Certin consumes data from the source systems for monitoring, analysis and workflow purposes. Certin does not create, modify, cancel or delete source-system records.

Specifically: Certin does not write back to the carrier provider. It does not create, update or cancel shipments, bookings or appointments in Lovehoney’s systems. It does not modify Lovehoney’s Excel tracker — the tracker is read as an export and the original file is never written to. It does not send instructions to carriers on Lovehoney’s behalf.

This is enforced structurally for the implemented connector: the provider API client has no POST, PUT, PATCH or DELETE method against any provider resource path, so a write call cannot be introduced by accident. Confirmed in the implementation and its data-boundary document.

The one outbound path, stated plainly

Certin can send messages to a driver or carrier contact — WhatsApp or email — initiated deliberately by a Lovehoney operator from within an exception. It is never automatic, and it does not write to Lovehoney’s or the carrier provider’s systems; it is an outbound message to a contact.

This is disclosed here rather than omitted. A claim of an absolute boundary that a security review then contradicts costs more than stating the exception up front. If Lovehoney wants this disabled for the pilot, it can be feature-flagged off — to be confirmed.

No AI exposure for provider-sourced data

Confirmed and test-enforced. Provider-sourced data never reaches an LLM call site. The ingestion path explicitly skips the inference dual-write for this provider, a behavioural test proves it is never invoked for a real ingest, and a structural scan confirms no connector file references an inference call site.

Credentials, encryption and environment separation

ControlImplementationStatus
Credential storageAES-256-GCM encrypted at rest under a dedicated key per connector family; never plaintext, never reusing another connector’s key. Fails closed if the key is absent.Confirmed
Who can access themHeld server-side and never returned through any user-facing API. No Lovehoney user can read them through the interface.Confirmed
Encryption in transitHTTPS to all provider endpoints; webhook receiver is HTTPS-only.Confirmed
Database TLSServer-certificate verification against the managed CA where configured.Confirmed
Tenant isolationEvery query is organisation-scoped. Raw ingested records are held in a per-organisation schema.Confirmed
Environment separationStaging and production are separate deployments with separate databases and credentials.Confirmed
Webhook authenticationHMAC over the raw body, constant-time comparison. Every rejection returns an identical generic 401, giving no oracle for probing organisation ids or which check failed.Confirmed
AuditabilityException lifecycle actions record actor and timestamp — acknowledged, assigned and resolved, with resolution category and notes. Ingestion jobs record record counts, rejection reasons and errors. Soft deletion retains records with actor and reason.Confirmed
Per-org enablementConnector gated behind an organisation setting defaulting to off for every organisation.Confirmed
Provider data residencyWhere the provider hosts Lovehoney’s data before Certin reads it.To be confirmed

7. UAT Plan

Section 7

Execution-ready. Each scenario needs a reserved shipment reference from Lovehoney before execution. Tests run against synthetic and anonymised data first, then in shadow mode. Evidence is attached to the tracker in Section 8.

UAT-05 and UAT-06 are blocked

Both assert against the business commitment date, which the platform cannot currently store separately from the carrier ETA (Section 2.6). They are written here in full so they are ready to run, but they cannot pass until the schema change in Section 13, item 2 is complete.

Core scenarios

Test IDScenarioPreconditionsTest dataStepsExpected resultCertin behaviour / pass criteriaEvidence
UAT-01Normal shipmentWorkspace configured; SLA contract loaded for the client/route; connector enabled.One German domestic shipment, pickup date set, commitment date comfortably ahead, status progresses to delivered on time.1. Ingest tracker row. 2. Receive carrier status updates. 3. Progress to delivered.Shipment visible with correct client, carrier, route and deadline. No exception raised. Marked on time.Deadline computed from contract transit hours. sla_status stays on_track. actual_delivery recorded. Pass: no exception; on-time flag correct; deadline matches the SLA sheet.Screenshot of shipment detail; job summary.
UAT-02Delayed shipmentAs UAT-01.Shipment whose status becomes delayed, or whose deadline passes undelivered.1. Ingest. 2. Apply a delayed status or let the deadline approach. 3. Observe the exception queue.Exception raised with the correct severity; shipment appears in the operator queue; alert routed to the configured recipient.exception_flag set, exception_type populated, sla_status moves to at_risk within 6h of deadline, approaching within 24h. Pass: exception exists with correct severity and reason; alert delivered to the right recipient.Exception record; alert log; screenshot.
UAT-03Cancelled shipmentShipment already ingested and visible.The same shipment cancelled at source.1. Cancel at source. 2. Re-ingest or await the next sync. 3. Inspect the record and its history.Shipment marked cancelled. Record retained. Audit history intact. No further exceptions raised.Status normalises to cancelled. No hard delete. Pass: record present and marked cancelled; history readable; no new exceptions.Before/after screenshots; audit trail.
UAT-04Missed collectionShipment with a scheduled collection.Collection date passes with no collection event.1. Ingest with collection scheduled. 2. Let the collection window pass with no event. 3. Observe.Exception raised for missed collection; shipment does not silently sit in pending.Depends on a collection-scheduled signal being present in the feed. Detection rule to be confirmed. Pass: exception raised within the agreed window of the missed collection.Exception record; timeline.
UAT-05Fixed appointmentAs UAT-01. Blocked — Section 13, item 2.Shipment with a fixed delivery appointment that differs from the contract-derived transit time.1. Ingest with a fixed appointment. 2. Confirm the appointment, not the contract calculation, sets the deadline. 3. Move the appointment. 4. Confirm the deadline follows.Deadline equals the appointment. Moving the appointment moves the deadline. Carrier ETA displayed separately and does not drive assessment.Currently fails: where a contract matches, the per-shipment date is discarded and the contract calculation wins. Pass: deadline equals the appointment, before and after the change; ETA visible but not used for assessment.Screenshot showing both dates; deadline value.
UAT-06SLA breachAs UAT-01. Blocked — Section 13, item 2.Shipment delivered after the business commitment date but within the carrier’s revised ETA.1. Ingest with a commitment date. 2. Let the carrier revise its ETA past the commitment. 3. Deliver after the commitment. 4. Inspect assessment and exposure.Breach detected against the commitment, not the carrier ETA. Penalty exposure computed per the contract model.Currently fails: assessment uses the single stored deadline, and a revised ETA can overwrite it. Pass: breach flagged; exposure matches a hand calculation from the SLA sheet.Exception record; exposure figure; manual calculation.

Edge cases

Test IDCaseTest dataExpected resultPass criteria
UAT-07Missing dataRow with no shipment reference.Row rejected and counted; reported as "no tracking/waybill/order identifier found". The rest of the file imports.Rejection visible with reason and count.
UAT-08Duplicate shipment in fileSame reference twice in one file with different statuses.Last occurrence wins; earlier counted as a collapsed duplicate.One shipment; duplicate reported.
UAT-09Duplicate updateByte-identical webhook delivered twice.Exactly one record written.No duplicate row; no duplicate exception.
UAT-10Late status updateUpdate carrying an older source timestamp than the stored version.Update skipped; reported as older than the stored version. Newer data not overwritten.Stored values unchanged; skip reported.
UAT-11Invalid statusStatus value outside the agreed vocabulary.From the carrier feed, mapped to needs_review with the raw value preserved. From the tracker, passed through and not driving SLA logic.Shipment visible; raw value retrievable; not silently dropped.
UAT-12Delayed integration updateProvider outage spanning more than one poll cycle.Watermark not advanced; next successful cycle backfills the whole gap.No shipments missing after recovery.
UAT-13Missing eventWebhook exhausts its retries and is dropped.Poller backfills within the overlap window.Shipment reaches correct state without the webhook.
UAT-14Incorrect appointment timeAppointment with a timezone-ambiguous or malformed time.Invalid date treated as absent; deadline falls back. No silent misinterpretation.Either correct interpretation or a visible fallback; never a wrong deadline shown as correct.
UAT-15SLA threshold crossingShipment crossing 24h then 6h from its deadline.Status moves on_track → approaching → at_risk → breached.Each transition observed at the right time.
UAT-16Recovery after breachBreached shipment subsequently delivered.Delivery recorded; breach history retained, not erased.Both the breach and the delivery are visible.
UAT-17Data correctionCorrected row re-issued with a newer source timestamp.Correction applied; fields not present in the correction are preserved.Corrected field updated; others unchanged.
UAT-18ReprocessingSame file uploaded twice.Identical records skipped by content hash; no duplicate shipments.Shipment count unchanged.
UAT-19API failureProvider returns 5xx.Retry with backoff; watermark held; failure recorded against the connection.No data loss; error visible.
UAT-20Authentication failureInvalid or revoked credentials.Sync fails with a clear error against the connection; watermark not advanced.Error visible and actionable; no silent stall.
UAT-21Rate-limit responseProvider returns a throttling response.Backoff and retry within the governor; no dropped records.All records eventually ingested.
UAT-22Carrier collisionSame tracking number arriving under a different carrier.Record quarantined rather than written; alert raised. Re-polls update without re-alerting.Original untouched; quarantine row and single alert present.
UAT-23Tampered webhookValid body with an invalid signature.Rejected before anything is written, with a generic 401.No record written; no information disclosed about the failure reason.

8. Issue and Defect Tracker

Section 8

In use from the first UAT run, not created afterwards. Columns below are the tracker’s own; copy directly into the shared sheet.

Classification rules

Applied in order — the first that matches wins. This keeps two people from classifying the same issue differently.

CategoryRuleTypical ownerExample
Product BugCertin behaves differently from its documented behaviour, with correct input data and correct configuration. Reproducible in a clean environment.Certin engineeringException raised at the wrong severity given the configured thresholds.
Integration IssueData fails to arrive, arrives late, or arrives malformed because of the provider connection — auth, endpoints, rate limits, webhooks, sync.Certin engineering + providerWebhook signature rejected; poll returns 404 where records are expected.
Data QualityData arrives as designed but the content is wrong, missing or inconsistent at source.LovehoneyCommitment date blank on 12% of rows; carrier name spelled three ways.
Configuration ChangePlatform behaves correctly for its current configuration, but the configuration does not match what Lovehoney needs.Certin implementationAt-risk threshold needs to be 12h rather than 6h for this lane.
SecurityAnything touching credentials, access control, data exposure or the read-only boundary. Raised at highest severity by default.Certin engineeringA field on the PII drop list appears in stored data.
AccessA user cannot reach something they should, or can reach something they should not.Certin implementationRestricted user can resolve an exception.
UAT IssueDefect in the test itself — wrong test data, wrong expected result, unavailable precondition.Whoever wrote the testReserved test shipment was modified mid-test.

Tie-breaks. Wrong data arriving correctly is Data Quality, not an Integration Issue. Correct data arriving wrongly is an Integration Issue, not a Product Bug. A Product Bug is only a Product Bug once input and configuration are both ruled out. Anything touching the read-only boundary or credentials is Security regardless of what else it looks like.

Severity definitions

SeverityDefinitionResponse
S1Blocks the end-to-end test, causes data loss, or breaches the read-only or PII boundary.Same day; blocks the 28 September gate.
S2A core scenario produces a wrong result but a workaround exists.Within 2 working days.
S3Incorrect behaviour in an edge case, or cosmetic issue with operational impact.Before go-live where possible.
S4Cosmetic or improvement suggestion.Backlog.

Tracker

IDDate raisedCategoryDescriptionEnvSeverityOwnerStatusExpected / ActualResolutionRetest
LH-0012026-09-21Product BugBusiness commitment date cannot be stored separately from carrier ETA; delivered shipments take the ETA column as actual delivery.AllS1Certin engOpenExpected: three separate dates, assessment against commitment. Actual: one date field serving three purposes.Schema plus projection change — Section 13, item 2.Pending
LH-0022026-09-21Configuration ChangeNo genuinely view-only role for restricted Lovehoney users.AllS2Certin engOpenExpected: restricted users observe only. Actual: restricted users can act.Add a role or feature-flag action surfaces — Section 13, item 3.Pending
LH-0032026-09-21Integration IssueCarrier-data provider undecided; Zencargo has no source material while Parcel Perform is built.AllS1Certin + LovehoneyOpenExpected: one agreed provider with a documented integration. Actual: two candidate providers, one undocumented.Decision required — Section 13, item 1.Pending

9. Lovehoney Platform Walkthrough Plan and Recording Script

Section 9

Built around a Lovehoney operator’s actual working day on German domestic road freight, not a feature tour. Target length 10–12 minutes. The recorder follows the script without improvising structure.

Walkthrough plan

#StageWhat is shownTimeWhy it matters to Lovehoney
1Shipment enters CertinTracker upload and the carrier feed arriving, with the import summary showing rows accepted, rejected and why.1:00Shows the tracker is still theirs — Certin reads it, does not replace it.
2Status becomes visibleDashboard with the shipment visible, its commitment date and carrier ETA side by side.1:00The two-date distinction they asked for, visible in one place.
3Certin identifies an exceptionLive feed and exception queue as a shipment moves to at-risk against its commitment.1:30The moment that replaces someone noticing in a spreadsheet.
4Operator sees the exceptionException queue sorted by severity; the day’s work in one list.1:00Replaces checking a portal shipment by shipment.
5Operator investigatesException detail: shipment history, carrier events, SLA position, contract terms.1:30Everything needed in one place instead of three systems.
6Certin provides contextAI assistant answering a question about the exception, with its answer marked internal.1:00Faster orientation; clearly separated from customer-facing replies.
7SLA risk is surfacedDeadline, hours remaining, penalty exposure under the contract.1:00Turns a delay into a number worth acting on.
8User takes actionAssign, escalate, or contact the carrier from inside the exception.1:30Action recorded against the shipment rather than lost in an inbox.
9Outcome is recordedResolution with category and notes; audit trail showing who did what and when.1:00Creates the evidence trail that feeds the KPIs.
10Reporting and KPI visibilityDashboard KPIs with period-on-period movement.1:30Connects daily work to the measures in Section 10.

Recording script

Before recording

Use anonymised Lovehoney-shaped data on German domestic road, never live customer data. Have one shipment already at-risk against its commitment date, and one delivered on time, prepared in advance. Confirm the two-date display is working — if the Section 13, item 2 work is not complete, re-cut stages 2, 7 and the SLA portion of 5, and say so rather than showing a single date as though it were the commitment.

Stage 1 · Shipment enters Certin

show: imports screen, import summary

"This is your existing tracker — the same export you produce today. Certin reads it; nothing writes back to it. When the file lands you get this summary: rows accepted, rows rejected, and the reason for each rejection. Here, four rows had no shipment reference, so they’re listed rather than silently dropped."

Understand: their process does not change, and nothing disappears without being reported.

Stage 2 · Status becomes visible

show: shipment list, then one shipment detail

"Every shipment from the tracker and the carrier feed in one list. On this shipment you can see both dates: your committed delivery date, and the carrier’s current estimate. They’re held separately, and everything Certin assesses is measured against your commitment, not the carrier’s estimate."

Understand: the distinction they specified is built in, not a reporting afterthought.

Stage 3 · Certin identifies an exception

show: live feed, then the exception appearing

"The carrier has just revised its estimate past your commitment date. Certin has raised an exception — no one had to go looking. This is the gap we measure as Time to Know: from the event happening to it being in front of you."

Understand: detection is automatic, and it is the first KPI in the framework.

Stage 4 · Operator sees the exception

show: exception queue sorted by severity

"This is the morning view. Everything needing attention, most serious first. Instead of opening the portal shipment by shipment, you start from the shipments that have a problem."

Understand: the queue replaces manual checking — the Manual-Checking Requirements KPI.

Stage 5 · Operator investigates

show: exception detail, history, SLA panel

"Opening the exception gives you the shipment’s full history, the carrier’s events, where it sits against your commitment, and the contract terms that apply. This is the information you’d currently gather from the tracker, the portal and an email thread."

Understand: one place instead of three — the Duplicate-Entry Hours KPI.

Stage 6 · Certin provides context

show: AI assistant, one question and answer

"You can ask about the shipment directly. Ask what’s driving the risk here — the answer draws on this shipment’s own data. Note the internal marker: this is a working note for your team, not a message to anyone outside it."

Understand: faster orientation, with no risk of an internal note reaching a customer.

Stage 7 · SLA risk is surfaced

show: deadline, hours remaining, exposure figure

"Certin puts a number on it: hours remaining against your commitment, and the exposure under the contract terms if it breaches. That’s what tells you whether this one is worth a phone call."

Understand: prioritisation by cost, not just by lateness.

Stage 8 · User takes action

show: assign, then escalate or contact

"From here you assign it, escalate it, or contact the carrier — without leaving the shipment. Every action is recorded against it, so the next person sees what’s already been done."

Understand: action and context stay together; nothing lives only in someone’s inbox.

Stage 9 · Outcome is recorded

show: resolution with category, then audit trail

"When it’s closed you record what actually happened and categorise it. That category matters — it’s how we measure whether Certin’s assessment was right, and it’s what builds the picture of what’s really going wrong on this lane."

Understand: the resolution step is what makes Assessment Accuracy measurable. If operators skip it, that KPI degrades silently.

Stage 10 · Reporting and KPI visibility

show: dashboard KPIs with movement

"These are the measures in your framework, moving against the previous period. During the pilot Certin runs alongside your existing process — we’re establishing the baseline, not replacing anything yet."

Understand: shadow mode is deliberate, and early numbers are a baseline rather than a verdict.

10. Lovehoney KPI Measurement Framework

Section 10 · customer-facing

Written for Lovehoney stakeholders. Where a measure depends on something Lovehoney must provide, that is stated in the row rather than assumed.

No signed agreement was available

The signed agreement was not accessible when this was prepared. Definitions below are derived from the deliverables request wording and from what the platform can actually measure. Every one must be checked line by line against the agreement before this section is sent to Lovehoney, and any target stated there replaces the placeholder here.

One target does exist in the implementation: automated coverage carries a 90% target marked "to be confirmed" in the connector’s KPI acceptance fixture. It is recorded below as found, not as agreed.

KPIDefinitionRequired dataCalculation methodFrequencyDay 0 baselineTarget / referenceNotes
Time to KnowTime from a problem occurring to it being visible to a Lovehoney operator. Clock starts at the carrier event timestamp for the underlying event. Clock stops when Certin raises the exception.Carrier event timestamp; Certin exception raised timestamp.Median and 90th percentile of (exception raised − event occurred), all exceptions in period.Weekly, monthly roll-upLovehoney’s current time from event to awareness. RequiredTo be agreed / established after Day 0 baselineReport both figures; the median the tail.
Time to ActTime from an exception becoming visible to an operator acting on it. Clock starts when the exception is raised. Clock stops at the first recorded action — acknowledge, assign or resolve.Exception raised timestamp; first acknowledged/assigned/resol ved timestamp.Median of (first action − raised), segmented by severity.WeeklyPlatform-observed from the first full week. Nothing required from Lovehoney.To be agreed / established after Day 0 baselineExpect high readings during sha when operators are not yet wor the queue. Label those weeks.d k
Operator HoursStaff hours spent monitoring shipment status and chasing exceptions on German domestic road freight.Lovehoney headcount and hours allocated, before and after.Reported hours per week against the Day 0 figure, as a percentage change.MonthlyLovehoney-supplied and mandatory. Not observable by the platform.To be agreed / established after Day 0 baselineMust be agreed in writing befor the measure cannot be reportede
Automated Status CoverageShare of shipments carrying a recent automated status update, with no person having fetched it.Count of active shipments; count with a checkpoint received in the last 24 hours.(shipments with a checkpoint in 24h ÷ active shipments) × 100. Already computed by the platform as its visibility score.Daily, weekly averageMeasured on the first day of live data.90% — recorded in the implementation as "to be confirmed"Capped by which Lovehoney car provider has onboarded — an o question. Expect a low first read refresh runs at target frequency.p
Exceptions Detected by Certin vs ManuallySplit between exceptions first surfaced by Certin and those first raised by a person.Exception origin per record — system-generated or operator-created.Count and percentage by origin.Weekly100% manual by definition.To be agreed / established after Day 0 baselineRequires operator-raised except logged in Certin. Anything handl phone or email is invisible and o Certin’s share. Shadow mode is is cleanest.i w
Assessment AccuracyShare of Certin’s assessments — severity, risk, predicted impact — that operators confirm as correct at closure. A correct assessment is one where the recorded resolution matches what Certin predicted.Certin’s assessment at raising; the operator’s recorded resolution category at closure.(confirmed correct ÷ total assessed) × 100, segmented by severity.MonthlyNot applicable — no prior equivalent exists.To be agreed / established after Day 0 baselineDepends on operators recording resolution category. If that step the measure degrades silently — the walkthrough.i
Alert PrecisionShare of alerts that represented a real problem needing action. A true positive is an alert closed with a real underlying issue; a false positive is one rejected or closed as no action needed.Total alerts raised; alerts rejected or closed as no action needed, with reason.((raised − false positives) ÷ raised) × 100.Weekly during UAT and month one, monthly afterMeasured from the first week of live alerting.To be agreed / established after Day 0 baselineThe rejection reason is what ma actionable. Report with recall w possible — precision alone impr raising fewer alerts.h o
Manual-Checking RequirementsNumber of shipments per day still needing a person to look somewhere other than Certin — portal, email or carrier — to establish status.Count of active shipments with no recent automated status; Lovehoney’s count of manual checks.Daily count of shipments with no checkpoint in 24 hours, cross-checked against operator-reported checks.WeeklyLovehoney-supplied: current manual checks per day.To be agreed / established after Day 0 baselineThe inverse of Automated Statu Report the two together.s
Duplicate-Entry HoursStaff hours spent re-keying the same shipment information into more than one system — currently the Excel tracker, the portal and email.Inventory of systems receiving the same data, and hours maintaining each.Reported hours per week against the Day 0 figure.MonthlyLovehoney-supplied and mandatory.To be agreed / established after Day 0 baselineRead-only shadow mode cannot reduce this. Set expectations ab should move.o
Demurrage ExposureCharges arising where goods or equipment are held beyond agreed free time.Free-time allowance and daily rate; actual charges invoiced.(days beyond free time × daily rate), summed.Monthly, aligned to invoicing12 months of historical charges. RequiredTo be agreed / established after Day 0 baselineScope check: demurrage is cont port terminology and may not a German domestic road at all. Co before including — an always-zea p
in a customer framework invites question.
Detention ExposureCharges arising where a vehicle or driver is held beyond agreed loading or unloading time.Free-time allowance per stop and hourly or daily waiting rate; actual charges invoiced; recorded arrival and departure times.(time beyond free time × rate), summed.Monthly12 months of historical charges. RequiredTo be agreed / established after Day 0 baselineMore likely than demurrage to b this lane. Depends on arrival an times being present in the feed confirmed.d —
Redelivery ExposureCharges arising where a delivery fails and a further attempt is required.Failed-delivery and redelivery fees; count of failed attempts.(failed attempts × applicable fee), summed. Avoided cost computed over shipments where an operator acted before the failure, reported as a clearly labelled estimate.Monthly12 months of historical charges. RequiredTo be agreed / established after Day 0 baselineMost directly relevant of the thr domestic road. Avoided cost is a counterfactual and must be labe estimate.
Predictive PerformanceHow often a predicted delay or breach actually occurred, and how much warning it gave.Prediction, its timestamp and stated confidence; the eventual actual outcome.Precision = correct predictions ÷ all predictions. Recall = predicted problems ÷ all actual problems. Lead time = median (event − prediction). False positives and negatives reported alongside.Monthly, once volume supports itNot applicable at go-live.To be agreed / established after Day 0 baselineInclude only where the capabilit support it. With a single lane at volume this is the measure mos asked about early and least able Agree the volume threshold in am t

11. Day 0 Baseline Requirements

Section 11

A baseline cannot be reconstructed after the fact. Everything below must be captured on or before 29 September, and platform-side capture must be verified as running before the first live data arrives.

BaselineData sourceOwnerMeasurement periodSample sizeCapture method
Source data snapshotLovehoney Excel trackerLovehoneyPoint-in-time at Day 0All open German domestic shipmentsSingle export retained unmodified as the reference copy.
Current shipment volumesHistorical tracker exportLovehoney12 months, 90 days minimumFull populationShipments per week and per month on the lane, from the historical export.
Current status coverageCertin, first day of live dataCertinFirst 24 hours, then first full weekAll active shipmentsPlatform visibility score. Expect a low first reading until refresh reaches target frequency.
Current exception volumesHistorical export + Lovehoney recordsBoth90 days minimumFull populationCount of delayed, failed and cancelled shipments; plus Lovehoney’s own count of issues handled outside any system.
Current operator effortLovehoney declarationLovehoneyTypical weekAll operators on the laneHeadcount × hours on monitoring and chasing. Written statement, agreed before go-live.
Existing manual checksLovehoney declarationLovehoneyTypical weekCount of shipments per day requiring a portal, phone or email check.
Existing duplicate entryLovehoney declarationLovehoneyTypical weekSystems receiving the same data, and hours maintaining each. Scope the system list precisely.
Existing SLA breachesHistorical export + SLA sheetBoth12 months, 90 days minimumFull populationRecomputed against contract terms. Requires historical commitment dates, not just carrier ETAs. Dependency.
Existing demurrage exposureLovehoney invoicesLovehoney12 monthsAll chargesCharges invoiced. Confirm first whether demurrage applies to this lane at all.
Existing detention exposureLovehoney invoicesLovehoney12 monthsAll chargesWaiting and detention charges by carrier, with the rate card.
Existing redelivery exposureLovehoney invoicesLovehoney12 monthsAll chargesFailed-delivery and redelivery fees, with count of failed attempts.
Existing predictive processLovehoney declarationLovehoneyPoint-in-timeWhether any forecasting exists today. If none, state so — the baseline is then explicitly "none" rather than blank.
Platform snapshot captureCertinCertinFrom Day 0, hourlyVerify periodic KPI snapshot capture is running against the Lovehoney organisation before first live data. Cannot be backfilled.

12. Consolidated Engineering Requirements from Lovehoney

Section 12

The single request to send. Items already requested on the call are restated as outstanding rather than re-asked. Nothing here asks for anything Engineering can obtain itself.

Required Before Configuration

RequirementWhy Engineering needs itOwnerFormat / access requiredBlocking stageStatus
Anonymised shipment tracker sampleValidates the schema, identifies the permanent key, exposes date and status formats, and surfaces edge cases synthetic data will not produce.Lovehoney.xlsx or .csv, minimum 200 rows, covering normal, delayed, cancelled and fixed-date shipments, real column structure, values may be anonymised.ConfigurationRequested on call — outstanding
Tracker column definitionsMapping is by literal header string. Without exact headers the mapping template cannot be completed.LovehoneyData dictionary: header text exactly as exported, data type, example value, and whether always populated.ConfigurationRequired
Primary Lovehoney shipment referenceBecomes the upsert key. Rows without it are rejected; an unstable one silently creates duplicates.LovehoneyWritten confirmation of which column it is, that it is unique, and that it is stable for the shipment’s whole life.ConfigurationRequested on call — outstanding
Business commitment date definitionExceptions are assessed against this date. It drives every detection, the SLA-breach and fixed-appointment scenarios, and every on-time measure.LovehoneyColumn name, how the value is set, whether it can change after booking, and its relationship to the carrier’s expected date.ConfigurationRequired — highest priority
Carrier expected delivery date columnMust be stored separately from the commitment date so a carrier’s revised estimate cannot move the assessment baseline.LovehoneyColumn name, and whether the value arrives via the tracker, the carrier system, or both.ConfigurationRequired
Actual delivery timestamp columnRequired for every on-time measure. Without a distinct column, on-time rate compares a forecast against itself.LovehoneyColumn name and format; confirmation it is populated only on actual delivery.ConfigurationRequired
SLA and transit-time sheetDelivery deadlines are derived from contract terms, never from a date in the shipment file. No contract means no deadline and no breach detection.LovehoneyTable per client and route: maximum delivery hours, penalty model (per hour or per breach), rate, any cap, valid-from and valid-until dates.ConfigurationRequested on call — outstanding
Status vocabulary and definitionsValues outside the canonical set pass through unchanged and do not drive SLA or exception logic.LovehoneyComplete list of every status the tracker and carrier feed can emit, each mapped to one of: pending, inConfigurationRequired
transit, delayed, delivered, cancelled, return, needs review.
Event definitionsDetermines which operational events are available to drive detection, particularly missed collection and appointment changes.LovehoneyList of events the tracker or carrier feed produces, with the field that carries each and its timestamp.ConfigurationRequired
Cancellation representationIf cancelled rows are deleted from the tracker rather than flagged, cancellation cannot be detected from the file at all.LovehoneyWritten statement: status change, separate flag, or row removal.ConfigurationRequired
Fixed-appointment representationA fixed appointment must override the contract-derived deadline rather than being treated as a standard commitment.LovehoneyWritten statement of how an appointment is recorded, plus the booking reference field if one exists.ConfigurationRequired
Date, time and timezone conventionsAmbiguous day/month ordering silently corrupts every deadline and every duration measure.LovehoneyWritten statement: format per date column, timezone each is expressed in, and how CET/CEST is handled across the October change.ConfigurationRequired
Germany domestic lane definitionDetermines the scope filter so out-of-lane shipments in the same tracker do not enter the workspace.LovehoneyWritten statement of in-scope origin and destination coverage, and whether cross-border movements appear in the same export.ConfigurationRequired
Carrier master dataCarrier names resolve or create carrier records. Spelling variants fragment a single carrier into several.LovehoneyList of carriers used on German domestic road, named exactly as they appear in the tracker, with any known alternate spellings.ConfigurationRequired
Client naming conventionSLA contracts resolve on an exact normalised client name. Any variation between sources produces different deadlines for the same shipment.LovehoneyThe canonical spelling, and any variants appearing across the tracker and carrier system.ConfigurationRequired
Carrier-system organisation accessCertin cannot poll the carrier feed without credentials scoped to Lovehoney’s own account.LovehoneyRead-only API credentials for the agreed carrier tracking environment, the organisation or tenant identifier, and the authentication mechanism the account uses — delivered through a secure channel, not email.ConfigurationCoordination contact requested on call — credentials outstanding
Reference correspondenceWithout it, tracker rows and carrier records cannot be reconciled and the reconciliation stage of the end-to-end test cannot be built.LovehoneyWritten statement of which carrier-system field carries the Lovehoney shipment reference.ConfigurationRequired
Exception business rulesDetermines what Certin raises, at what severity, and to whom — the severity assessment and routing stages.LovehoneyTable of conditions to severity (three levels available), and the notification recipient for each.ConfigurationRequired
Administrator and user detailsAccounts must exist before configuration can be validated or training delivered.LovehoneyName, email and intended function for the two administrators and for each restricted user.ConfigurationRequested on call — outstanding
Security approval of the read-only boundaryCredentials should not be issued before the architecture is accepted.Lovehoney — security or IT ownerWritten approval of Section 6, confirmation of acceptable data residency for EU shipment data, and confirmation of whether a data-processing agreement must be executed first. Approver not yet identified.ConfigurationRequired

Required Before Live Testing

RequirementWhy Engineering needs itOwnerFormat / access requiredBlocking stageStatus
Historical shipment dataEvery Day 0 baseline is computed from it. Without history the first weeks report no comparison and the gap cannot be filled later.LovehoneyBulk export, 12 months where available and 90 days minimum, German domestic road, same columns as the live tracker. Must include historical commitment dates and actual delivery timestamps, not only carrier ETAs.Live testing / baselineRequired
Reserved test shipmentsUAT scenarios need stable references that will not be altered mid-test.LovehoneySix shipment references — one each for normal, delayed, cancelled, missed collection, fixed appointment and SLA breach — with written agreement not to modify them during UAT.Live testingRequired
Baseline operating measuresOperator Hours, Manual-Checking Requirements and Duplicate-Entry Hours measure a reduction and are unreportable without a starting figure. The platform cannot observe these.LovehoneyWritten statement: operator headcount on shipment monitoring, hours per shift, how status checking is performed today, and which systems receive the same data more than once.Live testing / baselineRequired
Charge rate cardExposure KPIs report counts rather than currency without rates.LovehoneyRedelivery and failed-delivery fees; driver waiting or detention rates and free-time allowances; and confirmation of whether demurrage applies to German domestic road at all.Live testing / baselineRequired
Historical charge dataEstablishes the Day 0 exposure baselines.Lovehoney12 months of invoiced demurrage, detention and redelivery charges on the lane.BaselineRequired
Escalation contactsRouting has no destination without a recipient holding a role that can receive escalations.LovehoneyNamed list with email and, where in scope, mobile, mapped to severity level.Live testingRequired
UAT participants and availabilityThe 28 September gate needs named testers with time booked.LovehoneyNamed list with availability in the week to 28 September, and the environment each needs access to.Live testingRequired
Carrier-system webhook registrationPush updates cannot be received until the receiver URL is registered in the provider portal, which Certin cannot do on Lovehoney’s behalf.LovehoneyRegistration performed in the provider portal using the receiver URL and organisation identifier Certin supplies, plus the portal-generated authentication key returned securely.Live testingRequired
Carrier-system test accessCancellation and failure scenarios are safer to exercise outside production.LovehoneySandbox or non-production organisation credentials if one exists. If not, written confirmation that read-only production access is acceptable for shadow-mode testing.Live testingTo be confirmed
Provider account API versionChanges the payload shape and therefore the mapper and its test fixtures.Lovehoney / provider account teamWritten confirmation of which API version Lovehoney’s account is on.Live testingTo be confirmed
Carrier onboarding coverageDirectly caps Automated Status Coverage. The KPI cannot be interpreted without knowing the ceiling.Lovehoney / provider account teamList of which Lovehoney road carriers the tracking provider has onboarded.Live testing / baselineTo be confirmed
Network allowlistingAn IP restriction would block polling entirely and would present as an authentication failure.LovehoneyConfirmation of whether the carrier system restricts callers by IP; if so, permit Certin’s egress addresses.Live testingTo be confirmed
2FA policyIf enforced, any user who has not enrolled is blocked at the API, which presents as a broken login during UAT.LovehoneyConfirmation of whether two-factor authentication is required for the Lovehoney organisation.Live testingTo be confirmed

Useful but Non-Blocking

RequirementWhy Engineering needs itOwnerFormat / access requiredBlocking stageStatus
Carrier contact directoryLets an operator chase a carrier from inside the exception rather than leaving the platform.LovehoneyContact list per carrier: name, email, phone.NoneNon-blocking
Existing KPI reportsLets Certin reconcile its figures against Lovehoney’s and explain divergence before it is raised as a defect.LovehoneyTwo or three recent sample reports in any format.NoneNon-blocking
Historical incident logImproves predictive accuracy and lets thresholds be tuned to actual failure patterns rather than generic defaults.LovehoneyExport or written summary of recurring issues on the lane.NoneNon-blocking
Email exception samplesEmail is part of the current workflow. Samples show what operators are told today so Certin’s notifications read as recognisable.LovehoneyAnonymised samples of typical exception emails.NoneNon-blocking
Appointment booking referencesAllows fixed-appointment deliveries to be represented precisely rather than as a standard window.LovehoneyField definition and example values.NoneNon-blocking
Brand assetsFor customer-facing exports and reports.LovehoneyLogo files and colour palette.NoneNon-blocking
Out-of-scope module listLets irrelevant features be hidden by configuration so the workspace reflects the agreed scope.LovehoneyConfirmation of which platform areas should be hidden for this phase.NoneNon-blocking

13. Blockers and Open Dependencies

Section 13

#ItemDependencyImpactOwnerRequired byStatusAction
1Carrier-data provider undecidedThe request specifies Zencargo. No Zencargo material exists anywhere. A Parcel Perform connector is built and documented as "for the Lovehoney pilot".Section 4 cannot be completed for Zencargo. If Zencargo is the answer, the integration is at design stage, not build stage, and 28 September is at risk. If Parcel Perform is the answer, most of the integration is done.Engineering lead + LovehoneyTodayUrgentConfirm which provider is in scope, and whether both are. If Zencargo, obtain the API documentation today and re-plan the timeline.
2Commitment date cannot be storedOne date field serves carrier ETA, promised date and actual delivery. No business commitment field exists. Contract-derived deadlines discard per-shipment dates.Blocks UAT-05 and UAT-06, the SLA-breach and fixed-appointment scenarios, and stages 4 and 5 of the end-to-end chain. Every on-time and breach measure is computed against the wrong value until fixed.Certin engineeringToday (scope) / 25 Sep (build)UrgentScope and assign today: schema addition, three separated field mappings, commitment-date precedence over the contract calculation.
3No view-only roleThe most restricted role still reaches four modules and can send messages.Section 5 cannot be issued to Lovehoney as written. Restricted users would be able to act rather than observe, contradicting the agreed access model.Certin engineering24 SepOpenDecide: add a view-only role, or feature-flag the action surfaces for this workspace and describe that arrangement.
4Day 0 baseline capture not verifiedPeriodic KPI snapshot capture must be running against the Lovehoney organisation before the first live data.If it starts late, the first weeks report no comparison and the gap cannot be backfilled. Affects every trend-based KPI.Certin engineering29 Sep, before first dataOpenVerify capture is active for the organisation as a go-live gate.
5Signed agreement not availableSection 10 was written from the deliverables request, not from the agreement.KPI definitions and any committed targets may differ from what is contractually agreed. The section is customer-facing.Engineering leadBefore sending Section 10OpenObtain the agreement and reconcile Section 10 line by line before it goes to Lovehoney.
6Cancellation may be undetectableNothing detects a shipment disappearing from a source file.If the tracker drops cancelled rows rather than flagging them, UAT-03 fails and cancellations are never seen.Lovehoney24 SepOpenConfirm how cancellation appears in the tracker. If rows are deleted, decide between a reconciliation sweep and a documented limitation.
7Fixed at-risk thresholdsAt-risk and approaching thresholds are fixed platform-wide at 6 and 24 hours.If German domestic road warrants different windows, this needs development before go-live.Certin engineering25 SepTo be confirmedConfirm the thresholds with Lovehoney. Only build configurability if they differ.
8New status values not in reporting bucketsreturn and needs_review are not present in the analytics status buckets every reporting consumer reads.Shipments in these states are excluded from bucket metrics, understating Automated Status Coverage and problem counts.Certin engineering25 SepOpenAdd both values to the shared bucket definitions before KPI reporting is relied on.
9Cross-source field authorityWhere a shipment arrives from both the tracker and the carrier feed, per-field precedence cannot be declared.Destructive cases are already prevented and out-of-order updates are rejected where both sources carry timestamps. What remains is that the likely intent — tracker owns the commitment date, carrier owns status and ETA — is assumed rather than encoded.Certin engineering25 SepOpenConfirm the precedence with Lovehoney and encode it, or sequence the feeds so only one writes each field.
10No admin surface for connector setupEnabling the connector and setting its credentials are direct database operations; no UI or API exists.Onboarding needs an engineer. Not a blocker for one pilot customer, but it is a single point of dependency during the go-live window.Certin engineering29 SepAccepted for pilotAccept for the pilot; record as roadmap work before a second customer.

14. Submission Readiness Check

Section 14

Requested deliverableSectionComplete?Qualification
Technical onboarding checklistSection 1YesNine categories; each item marked blocking or not, with the stage it blocks.
Data-intake specificationSection 2YesComplete against the current implementation. The date-field conflict is documented rather than worked around.
Excel-to-Certin mapping templateSection 3Yes — provisionalTemplate complete and copyable. Column A cannot be filled until the tracker sample arrives.
Zencargo integration checklistSection 4Partial — blockedStructure complete; all Zencargo specifics pending documentation that does not exist in any available material. Parcel Perform documented in full as the implemented alternative. See Section 13, item 1.
User access and permissions guideSection 5YesUses the real nine-role model. The absence of a view-only role is flagged, not papered over.
Technical data-flow and security summarySection 6YesRead-only boundary stated operationally and confirmed against the implementation. The one outbound path is disclosed.
UAT planSection 7YesSix core scenarios and seventeen edge cases, execution-ready. UAT-05 and UAT-06 are written but blocked on Section 13, item 2.
Issue and defect trackerSection 8YesReady to use, with classification rules, tie-breaks, severity definitions and three issues already logged.
Platform walkthrough and recording scriptSection 9YesTen stages with timings, and a spoken script per stage.
Lovehoney KPI Measurement FrameworkSection 10Yes — pending agreement checkAll thirteen measures covered with definition, required data, calculation, frequency and Day 0 baseline. Targets marked to be agreed because the signed agreement was not available.
Day 0 baseline requirementsSection 11YesThirteen baselines with source, owner, period, sample size and capture method.
Consolidated Engineering Requirements from LovehoneySection 12YesThree tiers exactly as specified. Each item states the format required. Nothing obtainable by Engineering is asked of Lovehoney.
Blockers and open dependenciesSection 13YesTen items; two marked urgent for today.

Two items require a decision today

Section 13, item 1 — the carrier-data provider is undecided, and the request names a provider for which no material exists. Section 13, item 2 — the business commitment date cannot currently be stored, which blocks two UAT scenarios and two stages of the end-to-end chain due 28 September.

Prepared 21 September 2026. Sections 4, 10 and 12 carry explicit dependencies on material not available at the time of writing — the Zencargo API documentation, the signed agreement, and the anonymised tracker sample. These are identified in place rather than filled with assumptions.

Open Questions

These are the questions Certin needs Lovehoney to answer, grouped by when each answer is needed. Type each answer in the box under the question, then select Save at the top and send the saved file back to Certin.