About ecommerce
A skill for managing online stores associated with a Hostinger account through the Hostinger Ecommerce API. It documents store listing, creation, and sales channel setup.
Key features
- 01Paginated store listing
- 02Store creation
- 03Automatic primary sales channel creation
- 04Linking external sales channels
Use cases
- 01Review stores in an account
- 02Create an online store for a new business
- 03Connect a store to an external system
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ hostinger/ hostinger-agent-skills --skill ecommerceAfter installing, type/ecommercein Claude Code to confirm it loaded.
Details
From the project READMEHostinger Ecommerce
The Ecommerce API manages online stores associated with your Hostinger account. You can list existing stores and create new ones — creating a store also provisions a primary sales channel for it.
Table of Contents
Core Concepts
Stores
A store is the top-level ecommerce entity tied to your account. Each store carries company details (name, email, country) and a default language used for the storefront.
Sales Channels
Every store has at least one sales channel — the surface through which products are sold. When you create a store, a primary sales channel is created alongside it. You can supply a sales_channel object (e.g., type: custom with an external_id) to link the store to an external system.
Common Patterns
List Stores
curl -X GET "https://developers.hostinger.com/api/ecommerce/v1/stores" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN"
# Paginate
curl -X GET "https://developers.hostinger.com/api/ecommerce/v1/stores?page=2" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN"
Python SDK:
from hostinger_api import Hostinger
client = Hostinger(api_token="YOUR_API_TOKEN")
stores = client.ecommerce.stores.list()
for store in stores:
print(store.name)
TypeScript SDK:
import { Hostinger } from "hostinger-api-sdk";
const client = new Hostinger({ apiToken: "YOUR_API_TOKEN" });
const stores = await client.ecommerce.stores.list();
for (const store of stores) {
console.log(store.name);
}
PHP SDK:
use Hostinger\Api\HostingerApi;
$client = new HostingerApi('YOUR_API_TOKEN');
$stores = $client->ecommerce->stores->list();
foreach ($stores as $store) {
echo $store->name . "\n";
}
Create a Store
curl -X POST "https://developers.hostinger.com/api/ecommerce/v1/stores" \
-H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Store",
"country_code": "us",
"company_email": "[email protected]",
"company_name": "My Company",
"language": "en",
"sales_channel": {
"type": "custom",
"external_id": "ext-12345"
}
}'
A primary sales channel is created automatically with the store. The
sales_channelobject is optional — omit it to use the default.
API Reference
Stores
| Method | Endpoint | Description |
|---|---|---|
GET | /api/ecommerce/v1/stores | Get stores (paginated via page) |
POST | /api/ecommerce/v1/stores | Create a store (also creates a primary sales channel) |
Create Store Body
| Field | Type | Description |
|---|---|---|
name | string | Store name |
country_code | string | ISO country code (e.g., us) |
company_email | string | Company contact email |
company_name | string | Company name |
language | string | Default storefront language (e.g., en) |
sales_channel | object | Optional. { "type": "custom", "external_id": "..." } |
Best Practices
Store Setup
- Set
country_codeandlanguageto match your target market — they drive storefront defaults - Use a monitored
company_email— it receives store-related notifications - Provide a
sales_channel.external_idwhen integrating with an external system so you can reconcile records later
Listing
- Paginate with
pagewhen an account has many stores rather than assuming a single page
Troubleshooting
401 Unauthorized
- Verify your API token is valid and not expired
- Check the
Authorization: Bearer <token>header format
422 Unprocessable Content
- Invalid
country_code(use a valid ISO code likeus) or malformedcompany_email - Missing or malformed
sales_channelobject when one is provided
Store Not Appearing After Creation
- Re-list stores — propagation may take a moment
- Confirm the create request returned a success status and a store ID