Skip to main content

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

  1. Log in to the Azure Portal.

  2. Navigate to Microsoft Entra ID > App registrations and click New registration.

  3. 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.
  4. Copy and save the following values from the Overview page:

    • Application (client) ID
    • Directory (tenant) ID
  5. 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 Value immediately (this secret value will not be shown again).
  6. 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 access
      • Automation.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

  1. Log in to Business Central as an Administrator.

  2. Using the search icon in the top right, search for and select Microsoft Entra Applications.

  3. 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.
  4. Add User Permission Sets at the bottom of the card:

    • Dynamics 365 Automation
    • D365 BASIC
    • D365 CUSTOMER, EDIT
    • D365 ITEM, EDIT
    • D365 SALES DOC, EDIT
    • D365 SALES DOC, READ
    • D365 SALES DOC, POST
    • D365 INV DOC, CREATE
    • D365 INV DOC, POST
  5. 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

  1. In Business Central, search for API Setup.
  2. 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.)
  3. Copy the Webhook Secret provided by Business Central and set it in your .env as BUSINESS_CENTRAL_WEBHOOK_SECRET.

WooCommerce

WooCommerce is a commerce channel for direct-to-consumer retail.

Step 1: Create API Credentials in WooCommerce

  1. Log in to your WooCommerce store as an Administrator.

  2. Navigate to Settings > Advanced > REST API.

  3. Click Create an API key.

  4. 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)
  5. Click Generate API key.

  6. Copy and save:

    • Consumer Key (API Key)
    • Consumer Secret (API Secret)
    • Webhook signing secret (if webhooks are configured)

Step 2: Configure Webhooks in WooCommerce

  1. In WooCommerce, go to Settings > Advanced > Webhooks.

  2. Click Create webhook for each event type you want to track:

    • Product Updated
    • Product Deleted
    • Order Created
    • Order Updated
    • Order Deleted
  3. For each webhook, set:

    • Delivery URL: https://{your-hub-domain}/webhooks/woocommerce
    • Topic: Select the event type
    • Status: Active
  4. 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

  1. Log in to your Shopify Admin at https://{your-store}.myshopify.com/admin.
  2. Navigate to Settings > Apps and integrations.
  3. Click Develop apps.
  4. Click Create an app.
  5. Fill out:
    • App name: Scottsdale Hub
    • App admin: Select yourself
    • Click Create app.

Step 2: Configure API Credentials

  1. In the app dashboard, go to the Configuration tab.

  2. Under Admin API, click Configuration.

  3. Select the following scopes to grant permissions:

    • write_products — Manage product catalog
    • read_products — Read product data
    • write_orders — Manage orders
    • read_orders — Read order data
    • write_inventory — Manage inventory
    • read_inventory — Read inventory data
    • write_fulfillments — Create fulfillments
    • write_webhooks — Create webhooks
    • read_webhooks — Read webhooks
  4. Click Save and then Reinstall app.

  5. 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

  1. Back in the Configuration tab, scroll to Webhooks.

  2. 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
  3. 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

  1. Log in to Amazon Seller Central at https://sellercentral.amazon.com.
  2. Navigate to Integrations > Authorize Applications.

Step 2: Create MWS (Marketplace Web Service) Keys

  1. Go to Settings > User Permissions.
  2. Click Create MWS Authorization Token.
  3. Copy and save:
    • MWS Auth Token
    • Seller ID (found under account info)
    • Marketplace ID (e.g., ATVPDKIKX0DER for US)

For better security, create an IAM user in AWS instead of using your seller account credentials:

  1. Go to AWS IAM Console > Users > Create user.
  2. Set username: scottsdale-hub-amazon
  3. Grant the user AmazonMWSFullAccess policy.
  4. Generate access keys:
    • Access Key ID
    • Secret Access Key

Step 4: Set Up Notifications

  1. In Seller Central, go to Settings > Notification Settings.
  2. Enable notifications for:
    • Order events
    • Inventory events
    • Fulfillment events
  3. 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

  1. Log in to Walmart Seller Center at https://seller.walmart.com.
  2. Navigate to Settings > API Integration.

Step 2: Generate API Keys

  1. Click Generate Key Pair.
  2. Provide:
    • Application Name: Scottsdale Hub
    • Redirect URL: https://{your-hub-domain}/oauth/walmart/callback
  3. Copy and save:
    • Consumer ID (Client ID)
    • Consumer Secret (Client Secret)
    • Channel ID

Step 3: Configure Webhooks

  1. In API Integration, go to Webhooks.

  2. 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
  3. 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

  1. Go to eBay Developer Program.
  2. Sign in or create an account.
  3. Navigate to Keyset in your account.

Step 2: Create an Application

  1. Under Application Keyset, click Create a new keyset.
  2. Provide:
    • Application Name: Scottsdale Hub
    • Application Type: Production
  3. Click Create.

Step 3: Generate OAuth Credentials

  1. 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
  2. Generate a User Token (legacy, if needed for older flows).

Step 4: Configure Notifications

  1. Go to Subscriptions in eBay Developer.
  2. 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)
  3. 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

  1. Log in to Fishbowl as an Administrator.
  2. Navigate to Admin > API Tokens.
  3. Click New Token.
  4. Configure:
    • Name: Scottsdale Hub
    • User: Select a service account or admin user
    • Expiration: Set per your policy
  5. Copy and save the generated API Token.

Step 2: Get Fishbowl Server Details

  1. In Fishbowl, go to Admin > System Settings.
  2. Note your:
    • Server Address (domain or IP)
    • Server Port (default: 28192)
    • Instance Name (default: Fishbowl)

Step 3: Set Up Webhooks (if supported)

  1. Check if your Fishbowl version supports webhooks.
  2. 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

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

  1. Log in to ShipStation at https://ss.shipstation.com.
  2. Navigate to Account > Settings > API Settings.
  3. Click Generate New API Key & Secret.
  4. Copy and save:
    • API Key
    • API Secret

Step 2: Configure Webhooks

  1. In API Settings, scroll to Webhooks.
  2. Click Add Webhook for each event type:
    • Event Type: Select (e.g., order.ship, order.create)
    • URL: https://{your-hub-domain}/webhooks/shipstation
  3. 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

  1. Never commit secrets to version control — Use environment variables or a secrets manager.
  2. Rotate API credentials regularly — Set expiration dates and generate new keys periodically.
  3. Use service accounts — Create dedicated accounts for integrations rather than personal user accounts.
  4. Restrict permissions — Grant only the minimum required scopes/permissions to each API key.
  5. Monitor webhook activity — Log and alert on suspicious webhook patterns.
  6. Use HTTPS only — All webhook endpoints must use HTTPS with valid TLS certificates.
  7. Validate signatures — Always validate webhook signatures using the shared secrets before processing.

Troubleshooting

Common Issues

IssueSolution
Authentication failedVerify credentials in .env, check token expiration, re-generate if needed.
Webhook not firingCheck webhook is enabled in source system, verify endpoint URL is reachable, check firewall/WAF rules.
Rate limit exceededImplement exponential backoff and batch requests where possible. Check API documentation for limits.
Signature validation failedVerify webhook secret matches in both systems, check timestamp validation window, inspect raw payload.
API version mismatchConfirm API version in .env matches the version supported by your account/plan.