API Connections & Setup Guide
This guide provides step-by-step instructions for obtaining API credentials and configuring connections to all upstream and downstream systems integrated with Scottsdale Hub.
Overview
Scottsdale Hub connects to the following systems:
- Master Catalog: Business Central
- Commerce Channels: WooCommerce, Shopify, Amazon, Walmart, eBay
- Fulfillment: Fishbowl, ShipStation
- Webhooks & Callbacks: Each system requires signature secret configuration
Business Central (Master Catalog)
Business Central is the master catalog source for products, pricing, and inventory.
Step 1: Azure Portal (Entra ID) Configuration
-
Log in to the Azure Portal.
-
Navigate to Microsoft Entra ID > App registrations and click New registration.
-
Fill out the registration form:
- Name: Enter an application name (e.g.,
Scottsdale Hub Integration). - Supported account types: Select Accounts in this organizational directory only (Single tenant).
- Redirect URI: Select Web and enter:
https://businesscentral.dynamics.com/OAuthLanding.htm - Click Register.
- Name: Enter an application name (e.g.,
-
Copy and save the following values from the Overview page:
- Application (client) ID
- Directory (tenant) ID
-
Create a Client Secret:
- In the left menu, select Certificates & secrets > Client secrets > New client secret.
- Add a description (e.g.,
Scottsdale Hub), select an expiration period, and click Add. - Copy the
Valueimmediately (this secret value will not be shown again).
-
Configure API Permissions:
- Select API permissions > Add a permission > Dynamics 365 Business Central.
- Select Application permissions (do NOT select Delegated permissions).
- Check the following permissions:
API.ReadWrite.All— Full API read/write accessAutomation.ReadWrite.All— Automation and batch operations
- Click Add permissions.
- Click Grant admin consent for [Your Organization] and confirm.
- Ensure green checkmarks appear under the Status column.
Step 2: Business Central App Registration & Authorization
-
Log in to Business Central as an Administrator.
-
Using the search icon in the top right, search for and select Microsoft Entra Applications.
-
Click New in the top action bar:
- Client ID: Paste the Application (client) ID from Azure.
- Description: Enter a label (e.g.,
Scottsdale Hub Integration Service). - State: Leave set to Disabled while assigning permissions.
-
Add User Permission Sets at the bottom of the card:
Dynamics 365 AutomationD365 BASICD365 CUSTOMER, EDITD365 ITEM, EDITD365 SALES DOC, EDITD365 SALES DOC, READD365 SALES DOC, POSTD365 INV DOC, CREATED365 INV DOC, POST
-
Finish Approval:
- In the top action bar, click Grant Consent and sign in with an admin account if prompted.
- Change the State dropdown to Enabled.
Step 3: Scottsdale Hub Configuration
Add the following to your .env file:
# Business Central OAuth
BC_TENANT_ID=<Directory (tenant) ID from Azure>
BC_CLIENT_ID=<Application (client) ID from Azure>
BC_CLIENT_SECRET=<Client Secret Value from Azure>
BC_ENVIRONMENT=Production # or Sandbox for testing
BC_API_BASE_URL=https://api.businesscentral.dynamics.com/v2.0
# Webhook signature validation
BUSINESS_CENTRAL_WEBHOOK_SECRET=<generate-a-strong-random-secret>
Step 4: Set Up Webhooks in Business Central
- In Business Central, search for API Setup.
- Create a new API entry:
- API Name:
Scottsdale Hub - URL:
https://{your-hub-domain}/webhooks/business-central - Events: Select events you want to subscribe to (product changes, inventory updates, etc.)
- API Name:
- Copy the Webhook Secret provided by Business Central and set it in your
.envasBUSINESS_CENTRAL_WEBHOOK_SECRET.
WooCommerce
WooCommerce is a commerce channel for direct-to-consumer retail.
Step 1: Create API Credentials in WooCommerce
-
Log in to your WooCommerce store as an Administrator.
-
Navigate to Settings > Advanced > REST API.
-
Click Create an API key.
-
Fill out the form:
- Description:
Scottsdale Hub Integration - User: Select the user or create a dedicated service user
- Permissions: Select Read/Write
- Expiration: Set according to your security policy (or No expiration)
- Description:
-
Click Generate API key.
-
Copy and save:
- Consumer Key (API Key)
- Consumer Secret (API Secret)
- Webhook signing secret (if webhooks are configured)
Step 2: Configure Webhooks in WooCommerce
-
In WooCommerce, go to Settings > Advanced > Webhooks.
-
Click Create webhook for each event type you want to track:
- Product Updated
- Product Deleted
- Order Created
- Order Updated
- Order Deleted
-
For each webhook, set:
- Delivery URL:
https://{your-hub-domain}/webhooks/woocommerce - Topic: Select the event type
- Status: Active
- Delivery URL:
-
Copy the Signing Secret and save it for
.env.
Step 3: Scottsdale Hub Configuration
Add the following to your .env file:
# WooCommerce REST API
WOOCOMMERCE_STORE_URL=https://your-store.com
WOOCOMMERCE_API_KEY=<Consumer Key>
WOOCOMMERCE_API_SECRET=<Consumer Secret>
WOOCOMMERCE_API_VERSION=wc/v3
# Webhook signature validation
WOOCOMMERCE_WEBHOOK_SECRET=<Signing Secret from WooCommerce>
Shopify
Shopify is an e-commerce platform for multi-channel sales.
Step 1: Create a Shopify App
- Log in to your Shopify Admin at
https://{your-store}.myshopify.com/admin. - Navigate to Settings > Apps and integrations.
- Click Develop apps.
- Click Create an app.
- Fill out:
- App name:
Scottsdale Hub - App admin: Select yourself
- Click Create app.
- App name:
Step 2: Configure API Credentials
-
In the app dashboard, go to the Configuration tab.
-
Under Admin API, click Configuration.
-
Select the following scopes to grant permissions:
write_products— Manage product catalogread_products— Read product datawrite_orders— Manage ordersread_orders— Read order datawrite_inventory— Manage inventoryread_inventory— Read inventory datawrite_fulfillments— Create fulfillmentswrite_webhooks— Create webhooksread_webhooks— Read webhooks
-
Click Save and then Reinstall app.
-
In the Overview tab, copy and save:
- API Credentials > Admin API access token
- Admin API credentials > API Key
- Admin API credentials > API Secret Password
Step 3: Set Up Webhooks
-
Back in the Configuration tab, scroll to Webhooks.
-
Click Create webhook for each event type:
- Topic: Select event (e.g.,
products/update,orders/create) - Delivery URL:
https://{your-hub-domain}/webhooks/shopify - API version: Latest stable version
- Topic: Select event (e.g.,
-
For each webhook, Shopify will provide a webhook secret in the response.
Step 4: Scottsdale Hub Configuration
Add the following to your .env file:
# Shopify API
SHOPIFY_STORE_URL=https://your-store.myshopify.com
SHOPIFY_API_KEY=<API Key from Shopify>
SHOPIFY_API_PASSWORD=<API Secret Password from Shopify>
SHOPIFY_ACCESS_TOKEN=<Admin API access token>
SHOPIFY_API_VERSION=2024-01 # Use latest stable version
# Webhook signature validation
SHOPIFY_WEBHOOK_SECRET=<Webhook secret from Shopify>
Amazon
Amazon is a marketplace for multi-vendor retail.
Step 1: Set Up Seller Central Account
- Log in to Amazon Seller Central at
https://sellercentral.amazon.com. - Navigate to Integrations > Authorize Applications.
Step 2: Create MWS (Marketplace Web Service) Keys
- Go to Settings > User Permissions.
- Click Create MWS Authorization Token.
- Copy and save:
- MWS Auth Token
- Seller ID (found under account info)
- Marketplace ID (e.g.,
ATVPDKIKX0DERfor US)
Step 3: Create an IAM User (Recommended)
For better security, create an IAM user in AWS instead of using your seller account credentials:
- Go to AWS IAM Console > Users > Create user.
- Set username:
scottsdale-hub-amazon - Grant the user AmazonMWSFullAccess policy.
- Generate access keys:
- Access Key ID
- Secret Access Key
Step 4: Set Up Notifications
- In Seller Central, go to Settings > Notification Settings.
- Enable notifications for:
- Order events
- Inventory events
- Fulfillment events
- Set the Webhook/SNS Topic URL to:
https://{your-hub-domain}/webhooks/amazon
Step 5: Scottsdale Hub Configuration
Add the following to your .env file:
# Amazon MWS / Selling Partner API
AMAZON_REGION=US # US, EU, FE, etc.
AMAZON_SELLER_ID=<Seller ID>
AMAZON_MWS_AUTH_TOKEN=<MWS Auth Token>
AMAZON_ACCESS_KEY=<IAM Access Key ID>
AMAZON_SECRET_KEY=<IAM Secret Access Key>
AMAZON_MARKETPLACE_ID=ATVPDKIKX0DER # US marketplace
# Webhook signature validation
AMAZON_WEBHOOK_SECRET=<generated-secret-for-SNS>
Walmart
Walmart is a marketplace for high-volume retail operations.
Step 1: Create Walmart Seller Account
- Log in to Walmart Seller Center at
https://seller.walmart.com. - Navigate to Settings > API Integration.
Step 2: Generate API Keys
- Click Generate Key Pair.
- Provide:
- Application Name:
Scottsdale Hub - Redirect URL:
https://{your-hub-domain}/oauth/walmart/callback
- Application Name:
- Copy and save:
- Consumer ID (Client ID)
- Consumer Secret (Client Secret)
- Channel ID
Step 3: Configure Webhooks
-
In API Integration, go to Webhooks.
-
Click Register Webhook for each event:
- Event Type: Select (e.g.,
ORDER.CREATED,INVENTORY.CHANGED) - Endpoint URL:
https://{your-hub-domain}/webhooks/walmart - Secret: Generate a strong secret and save it
- Event Type: Select (e.g.,
-
Walmart will provide a Webhook Token for signature validation.
Step 4: Scottsdale Hub Configuration
Add the following to your .env file:
# Walmart Seller Center API
WALMART_CONSUMER_ID=<Consumer ID>
WALMART_CONSUMER_SECRET=<Consumer Secret>
WALMART_CHANNEL_ID=<Channel ID>
WALMART_API_BASE_URL=https://marketplace.walmart.com/v3
# Webhook signature validation
WALMART_WEBHOOK_SECRET=<Webhook Token>
eBay
eBay is a marketplace for auction and fixed-price listings.
Step 1: Create an eBay Developer Account
- Go to eBay Developer Program.
- Sign in or create an account.
- Navigate to Keyset in your account.
Step 2: Create an Application
- Under Application Keyset, click Create a new keyset.
- Provide:
- Application Name:
Scottsdale Hub - Application Type:
Production
- Application Name:
- Click Create.
Step 3: Generate OAuth Credentials
-
In the keyset, copy and save:
- App ID (Client ID)
- Cert ID (Client Secret)
- Dev ID (Developer ID)
- Redirect URL for OAuth: Set to
https://{your-hub-domain}/oauth/ebay/callback
-
Generate a User Token (legacy, if needed for older flows).
Step 4: Configure Notifications
- Go to Subscriptions in eBay Developer.
- Create a subscription for your production application:
- Endpoint URL:
https://{your-hub-domain}/webhooks/ebay - Events to Subscribe: Select relevant event types (e.g., Order placed, Item sold)
- Endpoint URL:
- Copy the Verification Token for webhook signature validation.
Step 5: Scottsdale Hub Configuration
Add the following to your .env file:
# eBay API
EBAY_APP_ID=<App ID>
EBAY_CERT_ID=<Cert ID>
EBAY_DEV_ID=<Dev ID>
EBAY_REDIRECT_URL=https://{your-hub-domain}/oauth/ebay/callback
EBAY_API_BASE_URL=https://api.ebay.com # Production
EBAY_SANDBOX_URL=https://api.sandbox.ebay.com # For testing
# Webhook signature validation
EBAY_WEBHOOK_SECRET=<Verification Token>
EBAY_SIGNATURE_KEY=<Signature key from eBay notifications>
Fishbowl
Fishbowl is an inventory management system for fulfillment and stock tracking.
Step 1: Create API Token in Fishbowl
- Log in to Fishbowl as an Administrator.
- Navigate to Admin > API Tokens.
- Click New Token.
- Configure:
- Name:
Scottsdale Hub - User: Select a service account or admin user
- Expiration: Set per your policy
- Name:
- Copy and save the generated API Token.
Step 2: Get Fishbowl Server Details
- In Fishbowl, go to Admin > System Settings.
- Note your:
- Server Address (domain or IP)
- Server Port (default: 28192)
- Instance Name (default: Fishbowl)
Step 3: Set Up Webhooks (if supported)
- Check if your Fishbowl version supports webhooks.
- If yes, configure:
- Webhook URL:
https://{your-hub-domain}/webhooks/fishbowl - Events: Inventory changes, shipment updates, etc.
- Secret: Generate a strong secret for HMAC validation
- Webhook URL:
Step 4: Scottsdale Hub Configuration
Add the following to your .env file:
# Fishbowl Inventory API
FISHBOWL_SERVER=<Server Address or IP>
FISHBOWL_PORT=28192
FISHBOWL_INSTANCE=Fishbowl
FISHBOWL_API_TOKEN=<API Token>
FISHBOWL_API_BASE_URL=https://your-fishbowl-server.com/api
# Webhook signature validation (if webhooks enabled)
FISHBOWL_WEBHOOK_SECRET=<Webhook Secret>
ShipStation
ShipStation is a shipping management platform for order fulfillment.
Step 1: Create API Credentials in ShipStation
- Log in to ShipStation at
https://ss.shipstation.com. - Navigate to Account > Settings > API Settings.
- Click Generate New API Key & Secret.
- Copy and save:
- API Key
- API Secret
Step 2: Configure Webhooks
- In API Settings, scroll to Webhooks.
- Click Add Webhook for each event type:
- Event Type: Select (e.g.,
order.ship,order.create) - URL:
https://{your-hub-domain}/webhooks/shipstation
- Event Type: Select (e.g.,
- ShipStation will provide a Webhook Key for signature validation.
Step 3: Scottsdale Hub Configuration
Add the following to your .env file:
# ShipStation API
SHIPSTATION_API_KEY=<API Key>
SHIPSTATION_API_SECRET=<API Secret>
SHIPSTATION_API_BASE_URL=https://ssapi.shipstation.com
# Webhook signature validation
SHIPSTATION_WEBHOOK_KEY=<Webhook Key>
Summary: Environment File Template
Here's a complete template combining all integration credentials:
###############################################
# MASTER CATALOG
###############################################
BC_TENANT_ID=
BC_CLIENT_ID=
BC_CLIENT_SECRET=
BC_ENVIRONMENT=Production
BC_API_BASE_URL=https://api.businesscentral.dynamics.com/v2.0
###############################################
# COMMERCE CHANNELS
###############################################
# WooCommerce
WOOCOMMERCE_STORE_URL=
WOOCOMMERCE_API_KEY=
WOOCOMMERCE_API_SECRET=
WOOCOMMERCE_API_VERSION=wc/v3
# Shopify
SHOPIFY_STORE_URL=
SHOPIFY_API_KEY=
SHOPIFY_API_PASSWORD=
SHOPIFY_ACCESS_TOKEN=
SHOPIFY_API_VERSION=2024-01
# Amazon
AMAZON_REGION=US
AMAZON_SELLER_ID=
AMAZON_MWS_AUTH_TOKEN=
AMAZON_ACCESS_KEY=
AMAZON_SECRET_KEY=
AMAZON_MARKETPLACE_ID=
# Walmart
WALMART_CONSUMER_ID=
WALMART_CONSUMER_SECRET=
WALMART_CHANNEL_ID=
WALMART_API_BASE_URL=https://marketplace.walmart.com/v3
# eBay
EBAY_APP_ID=
EBAY_CERT_ID=
EBAY_DEV_ID=
EBAY_REDIRECT_URL=
EBAY_API_BASE_URL=https://api.ebay.com
###############################################
# FULFILLMENT
###############################################
# Fishbowl
FISHBOWL_SERVER=
FISHBOWL_PORT=28192
FISHBOWL_INSTANCE=Fishbowl
FISHBOWL_API_TOKEN=
# ShipStation
SHIPSTATION_API_KEY=
SHIPSTATION_API_SECRET=
SHIPSTATION_API_BASE_URL=https://ssapi.shipstation.com
###############################################
# WEBHOOK SECRETS (HMAC Validation)
###############################################
BUSINESS_CENTRAL_WEBHOOK_SECRET=
WOOCOMMERCE_WEBHOOK_SECRET=
SHOPIFY_WEBHOOK_SECRET=
AMAZON_WEBHOOK_SECRET=
WALMART_WEBHOOK_SECRET=
EBAY_WEBHOOK_SECRET=
FISHBOWL_WEBHOOK_SECRET=
SHIPSTATION_WEBHOOK_KEY=
Security Best Practices
- Never commit secrets to version control — Use environment variables or a secrets manager.
- Rotate API credentials regularly — Set expiration dates and generate new keys periodically.
- Use service accounts — Create dedicated accounts for integrations rather than personal user accounts.
- Restrict permissions — Grant only the minimum required scopes/permissions to each API key.
- Monitor webhook activity — Log and alert on suspicious webhook patterns.
- Use HTTPS only — All webhook endpoints must use HTTPS with valid TLS certificates.
- Validate signatures — Always validate webhook signatures using the shared secrets before processing.
Troubleshooting
Common Issues
| Issue | Solution |
|---|---|
| Authentication failed | Verify credentials in .env, check token expiration, re-generate if needed. |
| Webhook not firing | Check webhook is enabled in source system, verify endpoint URL is reachable, check firewall/WAF rules. |
| Rate limit exceeded | Implement exponential backoff and batch requests where possible. Check API documentation for limits. |
| Signature validation failed | Verify webhook secret matches in both systems, check timestamp validation window, inspect raw payload. |
| API version mismatch | Confirm API version in .env matches the version supported by your account/plan. |
Related Documentation
- Environment Variables — Full reference of all
.envconfiguration options - Architecture — Integration topology and queue architecture
- Local Usage — Running Scottsdale Hub locally with webhook testing via ngrok