Store Settings
Configure regions, currencies, taxes, shipping, payments, and team access
The settings section of the admin dashboard controls the global configuration for your store. Access it from the gear icon in the sidebar.
General Settings
Configure your store's basic information:
| Setting | Description |
|---|---|
| Store name | Public-facing name of your store |
| Store URL | Primary domain for your storefront |
| Contact email | Customer-facing support email |
| Default currency | Base currency for pricing |
| Default language | Default locale for the storefront |
| Timezone | Used for order timestamps and reports |
Regions and Currencies
Regions define geographic areas with their own currency, tax rules, and shipping options.
await sdk.admin.region.create({
name: 'North America',
currencyCode: 'USD',
countries: ['US', 'CA', 'MX'],
taxRate: 0,
paymentProviders: ['stripe'],
fulfillmentProviders: ['manual', 'shippo'],
})
await sdk.admin.region.create({
name: 'Europe',
currencyCode: 'EUR',
countries: ['DE', 'FR', 'ES', 'IT', 'NL', 'BE', 'AT'],
taxRate: 0,
taxInclusive: true,
paymentProviders: ['stripe'],
fulfillmentProviders: ['manual', 'shippo'],
})Each region can have:
- Its own currency and price overrides
- Tax-inclusive or tax-exclusive pricing
- Region-specific payment and fulfillment providers
- Country restrictions
Tax Configuration
Configure tax calculation per region:
// Manual tax rates
await sdk.admin.tax.createRate({
regionId: 'reg_na',
name: 'California Sales Tax',
rate: 7.25,
code: 'CA-SALES',
conditions: [
{ type: 'state', value: 'CA' },
],
})
// Automatic tax calculation via provider
await sdk.admin.tax.setProvider({
regionId: 'reg_na',
provider: 'taxjar',
config: {
apiKey: 'your_taxjar_key',
},
})| Tax Option | Description |
|---|---|
| Manual rates | Define fixed rates per region, state, or product category |
| TaxJar | Automated US sales tax calculation |
| Tax-inclusive | Prices include tax (common in EU) |
| Tax-exclusive | Tax added at checkout (common in US) |
| Tax exemptions | Exempt specific products or customer groups |
Shipping Profiles and Zones
Shipping profiles group products with similar shipping requirements:
// Create a shipping profile
await sdk.admin.shipping.createProfile({
name: 'Standard Apparel',
type: 'default',
})
// Add a shipping zone with rates
await sdk.admin.shipping.createZone({
profileId: 'sp_default',
name: 'Domestic US',
countries: ['US'],
rates: [
{ name: 'Standard', price: 599, minDeliveryDays: 5, maxDeliveryDays: 7 },
{ name: 'Express', price: 1499, minDeliveryDays: 2, maxDeliveryDays: 3 },
{ name: 'Free Shipping', price: 0, minOrderAmount: 5000 },
],
})Shipping Rate Types
- Flat rate -- fixed price regardless of cart contents
- Weight-based -- price scales with total weight
- Price-based -- rate depends on cart subtotal
- Free shipping -- no charge above a minimum order amount
- Calculated -- real-time rates from carriers (Shippo, EasyPost)
Payment Providers
Configure one or more payment providers per region:
await sdk.admin.payment.setProvider({
regionId: 'reg_na',
provider: 'stripe',
config: {
secretKey: process.env.STRIPE_SECRET_KEY,
webhookSecret: process.env.STRIPE_WEBHOOK_SECRET,
},
})Supported providers:
| Provider | Capabilities |
|---|---|
| Stripe | Cards, Apple Pay, Google Pay, ACH, Klarna |
| PayPal | PayPal balance, cards, Pay Later |
| Manual | Bank transfer, cash on delivery, invoice |
API Keys
Manage API keys for programmatic access:
- Publishable keys -- safe to use in client-side code (storefront)
- Secret keys -- server-side only, full admin access
// Create a new API key
const key = await sdk.admin.apiKey.create({
name: 'Production Storefront',
type: 'publishable',
scopes: ['store:read', 'cart:write', 'checkout:write'],
})
// List all API keys
const keys = await sdk.admin.apiKey.list()
// Revoke a key
await sdk.admin.apiKey.delete('key_abc123')Secret API keys grant full admin access. Never expose them in client-side code or public repositories.
Notifications
Configure email and webhook notifications:
| Event | Webhook | |
|---|---|---|
| Order placed | Customer + Admin | Yes |
| Payment captured | Customer | Yes |
| Order shipped | Customer | Yes |
| Order delivered | Customer | Yes |
| Return requested | Admin | Yes |
| Refund issued | Customer | Yes |
| Low stock alert | Admin | Yes |
await sdk.admin.notification.updateConfig({
email: {
provider: 'sendgrid',
fromAddress: '[email protected]',
fromName: 'Your Store',
apiKey: process.env.SENDGRID_API_KEY,
},
webhooks: [
{ url: 'https://yourapp.com/webhooks/commerce', events: ['*'] },
],
})Team Management
Invite team members and assign roles with fine-grained permissions:
Roles
| Role | Permissions |
|---|---|
| Owner | Full access, billing, team management |
| Admin | All store operations, settings |
| Manager | Products, orders, customers, fulfillment |
| Support | View orders, manage returns, customer notes |
| Viewer | Read-only access to all sections |
Inviting Members
await sdk.admin.store.inviteTeamMember({
email: '[email protected]',
role: 'manager',
})Custom Roles
Create custom roles with specific permission scopes:
await sdk.admin.store.createRole({
name: 'Fulfillment Specialist',
permissions: [
'order:read',
'fulfillment:read',
'fulfillment:write',
'inventory:read',
'inventory:write',
],
})How is this guide?
Last updated on