> For the complete documentation index, see [llms.txt](https://docs.eesel.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eesel.ai/integrations/e-commerce/aftership.md).

# AfterShip

Set up an AI agent for AfterShip that answers where is my order from live carrier tracking, with the latest checkpoint and a plain word on stalled parcels.

Invite your AI teammate into AfterShip and it answers "where is my order" from live carrier tracking. It reads the latest checkpoint, reports it with the time and place, and says plainly when a parcel has stalled and needs a person.

If AfterShip is missing from your **Integrations** gallery, message us in the in-app chat or email <hi@eesel.app> and we will turn it on.

## Quick start

{% stepper %}
{% step %}

### Ask your agent to connect AfterShip

Open the chat in your dashboard and ask it to connect AfterShip. It points you at your **Integrations** page and lists what it will be able to do once connected.

Open **Integrations > AfterShip** in the left sidebar. **Connect** is in the top right. If AfterShip is not in the list, it has not been turned on for your workspace yet. Ask us first.
{% endstep %}

{% step %}

### Enter your AfterShip API key

**Connect** opens a window from Pipedream, the service that holds the connection. It asks for an AfterShip API key. Create one in AfterShip under **Settings > API keys** and paste it into the Pipedream window. The key goes to Pipedream and never into the chat.

A person does this step in the browser.
{% endstep %}

{% step %}

### Confirm the connection

The window confirms the account is connected and returns you to the integration page.

**Check it worked.** The integration page header reads **Connected**, and the left sidebar lists AfterShip. From a terminal, `eesel status` lists AfterShip as connected.
{% endstep %}

{% step %}

### Try it on a real shipment

Ask your agent in the chat where a shipment is, with the order or tracking number. It matches the shipment against the tracking records in AfterShip and reports the latest checkpoint: what the carrier scanned, where, and when.
{% endstep %}

{% step %}

### Put it to work

AfterShip has no event that wakes your agent on its own, so it does its tracking work inside the conversations it already handles. Tell it in its [instructions](/instructions-and-memory/instructions-and-memory.md) how to answer delivery questions, and it uses this action when a customer asks in your helpdesk, in Slack or on your site. For a routine check on a known set of shipments, a [schedule](/automations-and-schedules/automations-and-schedules.md) runs the same work on a clock.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
**From Claude Code, Cursor or a terminal.** `eesel login`, then `eesel integrations connect aftership` prints the connect link for a person to open, and `eesel status` shows the connection. `eesel integrations aftership actions` lists every action available on your workspace. A held action returns an approval link that a person opens. Full command reference: [The eesel CLI](/apis-and-developer-resources/cli.md). From Claude Code or another MCP client: [Claude Code and MCP clients](/apis-and-developer-resources/claude-code-and-mcp-clients.md).
{% endhint %}

## Sources, triggers and actions

### Sources

AfterShip adds no knowledge source. Your agent reads tracking live, at the moment it is asked, and answers from everything else you have connected.

### Triggers

AfterShip has no triggers. Nothing in AfterShip wakes your agent. It acts on AfterShip when a customer asks in a connected channel, or on a [schedule](/automations-and-schedules/automations-and-schedules.md).

### Actions

Actions are what it can do.

|             | Action          | What it does                                                                                               |
| ----------- | --------------- | ---------------------------------------------------------------------------------------------------------- |
| **Look up** | Get tracking    | Reads one tracking record: carrier, latest checkpoint, history and any estimated delivery the carrier gave |
| **Manage**  | Create tracking | Adds a shipment to AfterShip so it is tracked                                                              |
|             | Update tracking | Edits a tracking record                                                                                    |

You stay in control the whole way. Adjust your AI agent's access to knowledge and its action permissions to your liking. See [Actions and Approvals](/instructions-and-memory/actions-and-approvals.md).

Two things your agent has been taught about AfterShip:

* **A scan is the carrier's version of events, not the parcel's location.** Checkpoints lag, and a "delivered" scan sometimes lands before the parcel does. Your agent reports the latest checkpoint with its time and place, and never invents a delivery date the carrier did not give.
* **A parcel that has not moved in days is a signal for a person.** It usually means a customs hold, a failed delivery or a lost shipment, so your agent says so plainly instead of restating the tracking.

The write actions are for your operations team setting up tracking records. Answering a customer only ever needs the read.

## Troubleshooting

<details>

<summary>AfterShip is not in my Integrations gallery?</summary>

Message us in the in-app chat or email <hi@eesel.app> and we will turn AfterShip on for your workspace.

</details>

<details>

<summary>Your agent cannot find the shipment?</summary>

Get tracking takes AfterShip's own tracking id, not the order number and not the carrier's tracking number. Your agent first matches what the customer gave against the tracking records in AfterShip. If nothing matches, it says the shipment could not be located rather than reporting on the wrong parcel.

</details>

## FAQ

<details>

<summary>Can my agent tell a customer when the parcel will arrive?</summary>

Only when the carrier has given an estimate. Otherwise it reports the last known checkpoint and what normally happens next.

</details>

## Related pages

* [E-commerce Sales Rep](/use-cases/e-commerce-sales-rep.md) for the job your teammate takes on in a store
* [Shopify](/integrations/e-commerce/shopify.md) for order look-ups from the store itself
* [Actions and Approvals](/instructions-and-memory/actions-and-approvals.md) for choosing what your agent may do
* [Set up from Claude Code or the terminal](/getting-started/set-up-from-a-coding-agent.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.eesel.ai/integrations/e-commerce/aftership.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
