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

# Extensiv (3PL Central)

> Request Extensiv API access for your warehouse so inbound receivers and outbound orders sync into Owlery automatically.

If your warehouse runs Extensiv (formerly 3PL Central), Owlery can read your inbound receivers and outbound orders directly, so appointments and shipment details line up with what's already in your WMS — no manual imports and no CSV uploads.

API access is granted by Extensiv, not by Owlery. You submit one request form to Extensiv's professional services team, they issue the credentials, and the connection is built from there.

<Info>
  **Would you rather we walk you through it?** Most warehouses set this up on a short screen share with our team. Email [support@owlery.ai](mailto:support@owlery.ai) and we'll arrange one. The steps below are here if you'd prefer to work through it yourself.
</Info>

## What This Setup Does Not Involve

* **No development work**: Owlery uses Extensiv's standard REST API. There is nothing to build.
* **No software to install**: nothing is added to your 3PL Warehouse Manager account.
* **No data exports**: Owlery reads your account directly. You never assemble spreadsheets of sample records for us.
* **No ongoing maintenance**: Owlery refreshes its access token automatically every hour. Once access is granted, it keeps working.

## Before You Start

The request form asks for two things you'll need to collect first.

### 1. Your Account TPL Number

In the Support Portal, go to **Account** and find the **Account Information** section. Your TPL number is listed there.

### 2. A Dedicated Integration User

Integrations with Extensiv require its own user account. In the Support Portal, select **Users** in the left sidebar, click **Create User**, and fill it in:

| Field      | What to enter                          |
| ---------- | -------------------------------------- |
| First name | `Owlery`                               |
| Last name  | `Developers`                           |
| Email      | `developers+yourcompanyname@owlery.ai` |
| User type  | 3PL user                               |
| Job title  | `IT`, or `Dock Scheduling Integration` |
| Role       | Full access, or `cust6`                |

<Note>
  Which role you assign depends on which version of Extensiv / 3PL Central your account is on — older versions use `cust6`, newer ones use a full access role. If only one of the two is available to you, that's the one.
</Note>

<Tip>
  Replace `yourcompanyname` with your own warehouse's name — for example, `developers+acmelogistics@owlery.ai`. All of these reach the same Owlery inbox, but the tag tells us which account a message belongs to.
</Tip>

Save the user and note its **UserID**. The API request form asks for it.

## Submitting the Request Form

Extensiv's professional services team handles API access requests through a single form.

<Card title="Extensiv API Integration Request Form" icon="clipboard-list" horizontal href="https://surveys.extensiv.com/s3/API-Integration-working">
  Fill this out once you have your TPL number and your integration UserID.
</Card>

Most of it is your own contact information. These are the fields worth calling out:

| Field                                | What to enter                                                                              |
| ------------------------------------ | ------------------------------------------------------------------------------------------ |
| TPL ID                               | Your Account TPL number, from `Support Portal → Account`                                   |
| Your Customer's Name                 | `All Customers`                                                                            |
| Customer ID in 3PL Warehouse Manager | `0` *(this means all customers)*                                                           |
| API connection                       | **External API**                                                                           |
| Developer name                       | `Owlery`                                                                                   |
| Developer phone                      | `(510) 545-9146`                                                                           |
| Developer email                      | `developers+yourcompanyname@owlery.ai` (the same address you used on the integration user) |
| Login                                | The UserID of the integration user you created                                             |
| Platform integrating                 | Select **Other**, then write in `Owlery`                                                   |
| Notes                                | Optional. You can write that you're using Owlery for dock scheduling.                      |

## What Happens Next

Extensiv's professional services team reviews the request and issues the API credentials. If those come back to you rather than to us, forward them to [support@owlery.ai](mailto:support@owlery.ai). We verify the connection and start the first sync.

<Tip>
  Ask for Production credentials rather than sandbox. Owlery works from your real records, so your team can check the sync against orders it already recognizes.
</Tip>

## What Owlery Syncs

Once access is in place, syncing runs on its own. Each cycle pulls only the records created or changed since the last run, so the connection stays incredibly light on your Extensiv instance. We read these two main data types, along with related objects so your dock operations has full visibility into what is coming and going (locations, line items, and PO numbers/reference numbers).

* **Inbound Receivers**: Receivers are Extensiv's inbound shipments. We read these to validate appointments for your inbound shipments.
* **Outbound Orders**: Outbound Orders are Extensiv's outbound shipments. We read these to validate appointments for your outbound shipments.

## Keeping the Connection Healthy

Owlery is built to stay well within Extensiv's API limits and to avoid unnecessary traffic against your instance:

* **Automatic token refresh**: Owlery requests an access token and refreshes it every hour. There is nothing for your team to renew or rotate.
* **Throttled requests**: Owlery caps its own request rate to stay inside Extensiv's limits.
* **Fewer round trips**: line items come back inline with the list request instead of one call per record.
* **Incremental sync**: every cycle filters by last modified date, so unchanged records are never re-fetched.

## Technical Reference

Everything below is handled by Owlery. It's here for teams who want to see exactly what the integration touches.

<AccordionGroup>
  <Accordion title="Authentication">
    Owlery requests an access token from Extensiv's token endpoint and refreshes it hourly. All subsequent calls use that token.

    ```text theme={null}
    POST AuthServer/api/Token
    ```
  </Accordion>

  <Accordion title="Endpoints Owlery calls">
    | Purpose                                                              | Endpoint                              |
    | -------------------------------------------------------------------- | ------------------------------------- |
    | List receivers (paginated; filtered by date, customer, and facility) | `GET inventory/receivers`             |
    | Get a single receiver                                                | `GET inventory/receivers/{id}`        |
    | Get line items for a receiver                                        | `GET inventory/receivers/{id}/items`  |
    | Create a receiver (ASN)                                              | `POST inventory/receivers`            |
    | List orders (paginated; filtered by date, customer, and facility)    | `GET orders`                          |
    | Get a single order                                                   | `GET orders/{id}`                     |
    | Get line items for an order                                          | `GET orders/{id}/items`               |
    | Create an outbound order                                             | `POST orders`                         |
    | List active customers                                                | `GET customers`                       |
    | List facilities                                                      | `GET properties/facilities`           |
    | Get facility location details                                        | `GET properties/facilities/locations` |
  </Accordion>

  <Accordion title="Sync behavior">
    * Base URL: `secure-wms.com`
    * Incremental sync filters on `LastModifiedDate`.
    * List requests pass `Detail=ReceiveItems` or `Detail=OrderItems` to return line items inline.
    * Owlery throttles its own requests to roughly 5 per second.
  </Accordion>
</AccordionGroup>

## Getting Help

Not sure whether you have Support Portal access, or would rather we run the setup with you? Email [support@owlery.ai](mailto:support@owlery.ai).

## Related Settings

* [Set up your facility profile](/facilities/facility-profile): Owlery maps your Extensiv facilities to these sites, so keep addresses and dock details current.
* [Set up dock appointment settings](/facilities/dock-appointment-settings): operating hours, appointment length, booking rules, and notifications.
