> ## Documentation Index
> Fetch the complete documentation index at: https://docs.withterminal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Preparing for Production

> A guide to help ensure your Terminal implementation is ready for production.

This guide outlines what to have in place before going to production. Not every section will apply — focus on the areas relevant to your use case.

## Consent Flow Implementation

How you integrate the [Link component](/link-component) depends on your onboarding flow:

* **Digital onboarding flow**: Use the [SDK](/link-component#react-sdk) to embed the Link component in your application. Ensure you're handling the `onSuccess` callback and [exchanging the public token](/api-reference/authentication/public-token-exchange) for a connection token.
* **Manual outreach** (email, text, etc.): Use the [Hosted Page](/link-component#hosted-page) and send the link directly to fleets.

Regardless of approach, ensure you have a way to capture new connections — whether via redirect handling, the [`connection.created` webhook](/api-reference/webhook-events/connection-created), [listing connections](/api-reference/connections/list-connections) from the API, or managing them via the dashboard.

You should also have a strategy for mapping connections to entities in your system, either by using [`externalId` or `tags`](/terminal-platform/custom-identifiers), or by storing the Terminal connection ID.

## Connection Lifecycle

* Store [connection tokens](/api-reference/authentication#connection-tokens) securely and associate them with the relevant entity in your system.
* Have a process for when a [connection becomes disconnected](/guides/disconnected-connections) — whether that's an automated notification, manual outreach, or an in-app prompt.
* Ensure fleets can [re-connect](/link-component#re-authenticating-a-connection) when needed.

## Data Access

*Depending on whether you're using the [API directly](/guides/syncing-data) or [Data Delivery](/destinations/s3):*

### If using the API

* Know which endpoints you're using and what data you're ingesting.
* Handle [pagination](/api-reference/pagination) for list endpoints.
* Track what data you've already synced (e.g., using `modifiedAfter` checkpoints).

### If using Data Delivery

* Confirm where and how data is being delivered.
* Have a process for ingesting incoming data.

### For historical data use cases

* Account for late-arriving data with appropriate lookback windows.
* Handle updates to previously-synced records.

## Webhooks (if applicable)

If you're using [webhooks](/terminal-platform/webhooks), consider which events are relevant to your use case. Key events include:

* **Connection lifecycle**: [`connection.created`](/api-reference/webhook-events/connection-created), [`connection.disconnected`](/api-reference/webhook-events/connection-disconnected)
* **Sync lifecycle**: [`sync.completed`](/api-reference/webhook-events/sync-completed), [`sync.failed`](/api-reference/webhook-events/sync-failed)
* **Data Delivery lifecycle**: [`delivery.completed`](/api-reference/webhook-events/delivery-completed), [`delivery.failed`](/api-reference/webhook-events/delivery-failed)
* **Data changes**: [`vehicle.added`](/api-reference/webhook-events/vehicle-added), [`driver.added`](/api-reference/webhook-events/driver-added), [`safety_event.added`](/api-reference/webhook-events/safety-event-added)

See the [full list of events](/api-reference/webhook-events/overview) for more options.

## Product Integration

* How does Terminal data fit into your product experience?
* What does your user see or do when they connect their telematics?
* What happens in your product when data lands?

## Validation

Before going to production, verify that:

* Your consent flow works end-to-end (new connections and re-connections)
* Data flows into your system after sync completes
* You have a process for handling disconnected connections
* Terminal data surfaces correctly in your product
