> 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

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.

You stay in control the whole way. The two write actions ask you first until you change that. Reads run on their own.

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 with its approval setting. 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. Each runs on its own, asks you first, or stays off. The read action runs on its own from the start. The write actions ask you first until you change that.

|             | 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                                                                                    |

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>

<details>

<summary>How is this billed?</summary>

Pay-as-you-go. A conversation your agent handles is one task, however many look-ups it makes in it. Chats you run yourself from the eesel dashboard are free. See [Pricing](/pricing/overview.md).

</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 setting each action to run on its own, ask you first, or stay off
* [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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
