关于 shipping-rate-calculator
指导电商团队配置结账时的实时运费报价,涵盖 Shopify、WooCommerce、BigCommerce 和自定义商店。内容包括多承运商比价、分区规则、尺寸重量计算及结账选项管理。
主要功能
- 01配置承运商实时运费
- 02比较多家承运商报价
- 03设置分区与阶梯费率
- 04计算尺寸重量运费
- 05管理结账可选配送方式
适用场景
- 01在结账页显示实时运费
- 02按重量或地区创建费率表
- 03为大件轻货计算尺寸重量
- 04设置国际配送区域与报价
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill shipping-rate-calculator安装后在 Claude Code 中输入/shipping-rate-calculator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonevals/dimensional-weight-calculation/criteria.jsontask.mdevals/multi-carrier-rate-engine-with-caching-a/criteria.jsontask.mdevals/shipping-rules-and-zone-based-rate-table/criteria.jsontask.md详细介绍
运费计算器
概述
在结账时显示 UPS、FedEx、USPS、DHL 的实时运费,让客户选择首选服务,也能避免运费收取过低或过高。所有主流平台都原生支持或通过应用支持承运商计算运费;多承运商运费比价工具还能通过自动选择最便宜的选项,为你节省 15–40% 的运费成本。
何时使用此技能
- 在结账时添加承运商实时运费报价
- 构建多承运商运费比较功能
- 实施免运费门槛或分级固定运费
- 需要计算体积重量,以准确确定承运商运费
- 设置国际运输的配送区域和运费表
核心说明
第 1 步:确定你的平台并选择合适的运费工具
| 平台 | 推荐工具 | 原因 |
|---|---|---|
| Shopify | Shopify Shipping(内置)或用于运费比价的 Easyship / ShipStation | Shopify Shipping 提供折扣后的 USPS、UPS、DHL 运费;Easyship 则增加 250+ 个承运商选项并支持运费比价 |
| WooCommerce | WooCommerce Shipping(USPS/DHL)+ Table Rate Shipping,用于自定义规则 | WooCommerce Shipping 处理基础承运商运费;Table Rate Shipping 增加基于重量/区域的规则表 |
| BigCommerce | ShipperHQ 或 Easyship | ShipperHQ 是 BigCommerce 功能最强大的运费管理工具,支持按体积计算运费 |
| 自定义 / 无头 | 将 EasyPost 或 Shippo 用作承运商元 API | 两者都能通过一次 API 调用聚合 UPS、FedEx、USPS、DHL 的服务,比逐个直接集成各承运商简单得多 |
第 2 步:设置承运商计算运费
Shopify
Shopify Shipping(内置、免费,建议作为起点):
- 前往 Settings → Shipping and delivery → Manage rates
- 在国内配送区域下,点击 Add rate
- 选择 Use carrier or app to calculate rates
- 从以下承运商中选择:USPS、UPS、DHL Express
- 勾选你要提供的服务(例如,USPS Priority Mail、USPS Ground Advantage、UPS Ground、UPS 2nd Day Air)
- 可选:在承运商运费基础上添加加价或折扣百分比(可用于抵消包装材料成本)
- 保存——现在结账时将根据订单的实际重量和目的地动态显示运费
如需更多承运商选项(FedEx、区域承运商、国际承运商):
- 从 Shopify App Store 安装 Easyship 或 ShipStation
- 两者都以 Shopify“承运商计算运费”服务提供商的身份集成,并原生显示在结账页面
- Easyship 免费套餐可在结账时显示 50+ 个承运商的实时运费
- **注意:**结账时使用承运商计算运费,需要 Shopify 的 Advanced 套餐($299/mo)或更高版本,或者购买承运商计算运费附加服务(较低套餐每月 $20)
设置固定运费和免运费规则:
- 在 Shopify Shipping 中,除了使用承运商计算运费或替代此类运费外,你还可以创建固定运费选项(标准配送 $5.99、加急配送 $14.99)
- 可搭配免运费门槛:添加带有最低订单金额条件的免运费选项(参见 @free-shipping-thresholds 技能)
WooCommerce
WooCommerce Shipping(USPS + DHL,免费):
- 安装 WooCommerce Shipping 插件(由 WooCommerce 提供,免费)
- 前往 WooCommerce → Settings → Shipping → Add shipping zone,为每个地区添加配送区域
- 在每个区域下,点击 Add shipping method → 选择 USPS 或 DHL Express
- 配置结账时要显示的服务(Priority Mail、Ground Advantage 等)
- 为商品添加包装尺寸和重量,以便准确计算费率
WooCommerce Table Rate Shipping(适用于复杂规则,例如重量区间、自定义区域):
- 从 WooCommerce.com 购买 WooCommerce Table Rate Shipping 扩展
- 创建费率表,例如:0–1lb = $4.99、1–5lb = $7.99、5–20lb = $12.99
- 为国内和国际区域分别创建费率表
ShipStation for WooCommerce(多承运商费率比价):
- 安装 ShipStation for WooCommerce 插件
- 可将 ShipStation 配置为使用你协商的承运商费率,并通过 WooCommerce 的配送方式 API 在结账时显示这些费率
- 注意:ShipStation 会在其控制面板中显示费率,不一定会直接显示在客户结账页面上——请查看 ShipStation 文档,了解具体的 WooCommerce 结账费率显示功能
BigCommerce
ShipperHQ(BigCommerce 上功能最强大的选项):
- 从 BigCommerce App Marketplace 安装 ShipperHQ
- 将你的 UPS、FedEx、USPS、DHL 账户连接到 ShipperHQ(或使用 ShipperHQ 内置的承运商账户)
- ShipperHQ 会根据商品尺寸自动计算体积重量
- 配置费率比价规则:“显示最便宜的选项”“显示所有选项”或“按配送速度区间显示最便宜的选项”
- 设置加价规则:每件货物加收 $2 处理费,或所有 FedEx 费率打 85 折
BigCommerce 内置实时费率:
- 前往 Store Setup → Shipping → Add a shipping zone
- 在区域下添加实时承运商方式(通过 Endicia 接入 UPS、FedEx、USPS)
- 输入你的承运商账户凭据
- BigCommerce 会在结账时显示承运商的实时费率
自定义 / 无头架构
使用 EasyPost 或 Shippo 作为元 API,一次调用即可获取所有承运商的费率——这比单独集成 UPS、FedEx、USPS 和 DHL 简单得多:
import EasyPost from '@easypost/api';
const easypost = new EasyPost(process.env.EASYPOST_API_KEY);
// Get multi-carrier rates for a shipment
async function getShippingRates(params: {
originZip: string;
destinationZip: string;
destinationCountry: string;
weightOz: number;
lengthIn: number;
widthIn: number;
heightIn: number;
}): Promise<{ carrier: string; service: string; rateCents: number; estimatedDays: number }[]> {
const shipment = await easypost.Shipment.create({
from_address: {
zip: params.originZip,
country: 'US',
},
to_address: {
zip: params.destinationZip,
country: params.destinationCountry,
},
parcel: {
length: params.lengthIn,
width: params.widthIn,
height: params.heightIn,
weight: params.weightOz, // EasyPost uses oz
},
});
return shipment.rates.map(rate => ({
carrier: rate.carrier,
service: `${rate.carrier} ${rate.service}`,
rateCents: Math.round(parseFloat(rate.rate) * 100),
estimatedDays: rate.est_delivery_days ?? 5,
})).sort((a, b) => a.rateCents - b.rateCents);
}
// Apply store-level rules on top of carrier rates
function applyShippingRules(params: {
carrierRates: { carrier: string; service: string; rateCents: number; estimatedDays: number }[];
cartSubtotalCents: number;
freeShippingThresholdCents: number;
}): { label: string; rateCents: number; estimatedDays: number }[] {
const rates = [...params.carrierRates];
// Add free shipping option if eligible
if (params.cartSubtotalCents >= params.freeShippingThresholdCents) {
rates.unshift({ carrier: 'store', service: 'Free Shipping', rateCents: 0, estimatedDays: 7 });
}
// Show max 3 options to avoid choice paralysis:
// 1. Free (if available)
// 2. Cheapest paid option
// 3. Fastest guaranteed option
const freeOption = rates.find(r => r.rateCents === 0);
const cheapestPaid = rates.filter(r => r.rateCents > 0).sort((a, b) => a.rateCents - b.rateCents)[0];
const fastest = rates.filter(r => r.estimatedDays <= 2).sort((a, b) => a.estimatedDays - b.estimatedDays)[0];
return [freeOption, cheapestPaid, fastest]
.filter(Boolean)
.filter((r, i, arr) => arr.findIndex(x => x?.service === r?.service) === i) // deduplicate
.map(r => ({ label: r!.service, rateCents: r!.rateCents, estimatedDays: r!.estimatedDays }));
}
第 3 步:配置体积重量计算
承运商按实际重量和体积重量中的较大值收费。务必进行配置。
Shopify:
- 在每个商品变体中输入包装尺寸(Products → [Product] → Shipping section)
- Shopify 在计算承运商费率时会自动计算体积重量
WooCommerce:
- 在 WooCommerce 商品的 Shipping 标签页中输入尺寸(长度、宽度、高度,单位为英寸/厘米)
- WooCommerce Shipping 插件会使用这些尺寸计算 DHL 和 USPS 的体积费率
ShipperHQ:
- ShipperHQ 提供高级体积重量装箱模拟功能——它会确定多个商品如何装入实际包装箱,并根据装箱后的箱子而非仅根据商品重量总和计算费率
体积重量手动核算:
- DIM 系数(美国国内):每磅 139 立方英寸
- 公式:(L × W × H) / 139 = DIM 重量(磅)
- 如果 DIM 重量 > 实际重量,承运商会按 DIM 重量收费
第 4 步:在结账时显示适当数量的选项
配送选项过多会导致客户放弃结账。最佳实践:
- 最便宜的选项——始终显示此选项(通常为“Ground”或“Standard”)
- 免费配送——如果购物车符合条件,请在顶部醒目显示
- 最快的选项——为有时效需求的客户提供 1 天或 2 天航空配送
移除所有中间选项(3 天、5 天等)——客户不需要 6 个选项。
在 ShipperHQ 中:使用“Rate Filters”仅显示指定的服务等级。在 Easyship 中:配置“Checkout Rules”以限制显示的选项。
最佳实践
- 始终为承运商 API 设置超时 — 承运商费率 API 可能需要 2–5 秒;如果未能及时响应,请显示缓存费率或固定费率作为备选
- 请求费率前先验证地址 — 无效地址会导致费率错误和结账失败;大多数承运商都提供地址验证 API(Shippo 内置了此功能)
- 将包裹重量向上取整 — 承运商会将重量向上取整到下一个整磅/千克;计算费率时也应如此,避免显示的费率低于客户实际需要支付的金额
- 将免费配送作为单独选项提供,而不是通过折扣承运商费率实现 — 应将其显示为“免费配送(5–7 天)”,而不是修改承运商列出的费率
- 购物车发生变化时重新计算费率 — 添加商品、更改数量或更新配送地址时,重新获取费率
常见问题
| 问题 | 解决方案 |
|---|---|
| 承运商 API 对有效地址未返回任何费率 | 检查地址是否为邮政信箱(UPS/FedEx 不向邮政信箱配送);邮政信箱地址改用 USPS 作为备选 |
| 结账时显示的配送费用低于订单实际收取的金额 | 在订单确认逻辑中重新计算最终配送费率,而不只是购物车中;购物车与结账之间的费率可能发生变化 |
| 体积大但重量轻的商品费率较高 | 启用体积重量计算;大多数承运商会对大箱子使用体积重量 — ShipperHQ 会自动处理 |
| 费率请求导致结账缓慢(3+ 秒) | 使用承运商聚合服务(EasyPost/Shippo),而不是单独调用各承运商的 API;聚合服务的响应速度更快 |
相关技能
- @free-shipping-thresholds
- @international-shipping
- @order-fulfillment-workflow
- @checkout-flow-optimization
- @dropshipping-integration