A Medusa plugin for integrating Base.com (formerly BaseLinker) ERP system. Synchronizes products, inventory, and automatically creates orders in Base.com. Created and maintained by u11d.
# npm
npm install @u11d/medusa-base
# yarn
yarn add @u11d/medusa-baseAdd the plugin to your medusa-config.ts:
import { defineConfig } from "@medusajs/framework/utils";
export default defineConfig({
plugins: [
{
resolve: "@u11d/medusa-base",
options: {
api_key: process.env.BASE_API_KEY,
order_status_id: parseInt(process.env.BASE_ORDER_STATUS_ID || "1"),
custom_source_id: parseInt(process.env.BASE_CUSTOM_SOURCE_ID || "1"),
},
},
],
});Add to your .env file:
BASE_API_KEY=your_base_api_key_here
BASE_ORDER_STATUS_ID=1 # Default order status in Base.com
BASE_CUSTOM_SOURCE_ID=1 # Custom source ID for ordersAfter configuring your Medusa setup, run the database migration to create the required tables:
npx medusa db:migrateThis creates the following helper tables:
base_location- Maps Base.com warehouse IDs to Medusa stock location IDsbase_product_variant- Maps Base.com product/variant IDs to Medusa product variant IDs
npm run devAccess your Base.com dashboard to obtain the required API credentials
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
api_key |
string |
✅ | - | Your Base.com API key |
order_status_id |
number |
✅ | 1 |
Default order status ID in Base.com |
custom_source_id |
number |
✅ | 1 |
Custom source ID for orders created in Base.com |
The syncProductsWorkflow synchronizes products from Base.com to Medusa, including:
- Product information (title, description, images)
- Product variants
- Pricing
- Stock levels across warehouses
Trigger product synchronization manually via API:
POST /admin/base/productsExample:
curl -X POST http://localhost:9000/admin/base/products \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-H "Content-Type: application/json"Create a scheduled job in src/jobs/sync-base-products.ts:
import type { MedusaContainer } from "@medusajs/framework/types";
import { syncProductsWorkflow } from "@u11d/medusa-base/workflows";
export default async function syncBaseProducts(container: MedusaContainer) {
await syncProductsWorkflow(container).run();
}
export const config = {
name: "sync-base-products",
schedule: "0 */6 * * *", // Every 6 hours
};Orders are automatically created in Base.com when placed in Medusa. The createBaseOrderWorkflow is triggered automatically via the order.placed event.
No additional configuration needed - the subscription is registered by the plugin.
Order Creation Flow:
- Fetches the Medusa order details
- Maps Medusa products to Base.com products using helper entities
- Creates the order in Base.com with configured status and source
If you encounter errors about missing tables:
relation "base_product_variant" does not exist
relation "base_location" does not exist
Solution: Run the database migration:
npx medusa db:migrateIf products are not syncing correctly:
- Check application logs for any error messages related to Base.com API calls
- Verify API credentials in your
.envfile - Check Base.com inventory - ensure products exist in your Base.com account
- Test API connection - verify your API key has proper permissions in Base.com dashboard
- Review Base.com API limits - ensure you're not hitting rate limits
If orders are not being created in Base.com:
- Verify
order_status_idexists in your Base.com account - Check
custom_source_idis configured correctly - Ensure product mapping - verify products were synced and exist in
base_product_varianttable - Review order logs - check Medusa logs for detailed error messages
- Test Base.com order creation - try creating an order manually in Base.com to verify permissions
If you encounter any issues or need assistance with this plugin, please visit our GitHub Issues page. Our team actively monitors and responds to bug reports, feature requests, and questions from the community. We aim to provide timely support to ensure your integration with Base.com runs smoothly.
Need expert assistance or want our team to support your Medusa project? We're here to help! Contact us at https://u11d.com/contact/ for professional support and consultation services.