Future Availability Restock System

Overview

The Future Availability Restock system is a powerful inventory management feature that allows you to schedule future inventory restocks for your FBM (Fulfillment by Merchant) products. Instead of showing items as out-of-stock, you can specify when inventory will become available and in what quantity. The system automatically adjusts the fulfillment latency on Amazon to reflect the days until your inventory arrives, ensuring customer expectations are properly set while maintaining your listing’s visibility.

This feature is particularly valuable for suppliers who have confirmed future delivery dates from manufacturers but don’t want to mark items as out-of-stock in the meantime.

Use Cases

  • Pre-Order Management: Accept orders for products arriving from manufacturers with known delivery dates
  • Seasonal Restocking: Schedule seasonal inventory arrivals ahead of time
  • Manufacturing Delays: Communicate realistic delivery expectations when experiencing production delays
  • Supplier Lead Times: Manage inventory that’s already ordered but not yet received
  • Backorder Handling: Keep listings active for backordered items with specific availability dates
  • International Shipments: Account for long shipping times from overseas suppliers

How It Works

The Future Availability system operates through a streamlined four-stage process:

  1. Schedule Setup: You specify FBM SKUs, available dates, and quantities
  2. Latency Calculation: System calculates (available_date - today) as fulfillment latency
  3. Automated Upload: Dedicated job uploads inventory with custom latency to Amazon
  4. Regular Updates: As the date approaches, latency automatically decreases each day
  5. Automatic Transition: When the date arrives, items return to normal inventory processing

Data Flow

User Input (FBM SKUs)
  → Lookup SupplierCatalogItems
  → Create FutureAvailability Records
  → Daily Job Runs
  → Calculate Dynamic Latency
  → Upload to Amazon with Custom Latency
  → Customer Sees: "Usually ships in X days"

Getting Started

Prerequisites

  • Active FBM (Fulfillment by Merchant) listings
  • Supplier configured with dropship inventory settings
  • FBM SKUs for items you want to schedule

Setup Steps

  1. Navigate to your Supplier’s INV: Future Availability page from the sidebar
  2. Select the Available Date (when inventory will be ready to ship)
  3. Enter the Quantity that will be available
  4. Paste your FBM SKUs (comma or newline separated)
  5. Click Add Future Availabilities

The system will:

  • Validate the SKUs exist for your supplier
  • Create future availability records
  • Schedule an inventory upload job
  • Send confirmation via Slack

Configuration Options

Available Date

The date when your inventory will actually be available to ship. The system calculates fulfillment latency as:

latency_days = (available_date - Date.today).to_i

Quantity

The number of units that will be available on that date. This is uploaded to Amazon as the inventory quantity for that SKU.

FBM SKUs

You can enter multiple SKUs in any of these formats:

  • Comma-separated: SKU-123, SKU-456, SKU-789
  • Space-separated: SKU-123 SKU-456 SKU-789
  • Newline-separated (paste from Excel):
SKU-123
SKU-456
SKU-789

Feature Details

Automatic Latency Calculation

The system intelligently calculates fulfillment latency:

def calculated_latency(default_latency = 2)
  [days_until_available, default_latency].max
end

This ensures:

  • Future dates: Uses calculated days until available
  • Past dates: Falls back to supplier’s default fulfillment latency
  • Today: Uses supplier’s default fulfillment latency (typically 2 days)

Database Schema

create_table :future_availabilities do |t|
  t.bigint :supplier_catalog_item_id, null: false
  t.date :available_at, null: false
  t.integer :quantity, null: false
  t.timestamps
  t.index :supplier_catalog_item_id, unique: true
end

Key Constraints:

  • One future availability per item (unique constraint)
  • Updates override previous settings
  • Automatically deleted when removed

Job Processing

Two dedicated background jobs manage this feature:

EDIWriteMerchantFulfilledFutureAvailabilitiesInventoryJob

Runs every time future availabilities are added/removed:

# Finds all items with future availabilities
future_availabilities = FutureAvailability
  .for_supplier(current_supplier)
  .includes(:supplier_catalog_item)

# Builds feed with custom latency per item
fbm_inventory_feed_items = future_availabilities.map do |availability|
  {
    sku: availability.supplier_catalog_item.fbm_sku,
    quantity: availability.quantity,
    fulfillment_latency: availability.calculated_latency
  }
end

# Uploads to Amazon
feed_resp = spapi.upload_feed_document("JSON_LISTINGS_FEED", feed_contents)

EDIWriteMerchantFulfilledFutureAvailabilitiesStatusJob

Monitors the feed submission status and reports results via Slack.

Integration with Regular Inventory

Items with future availabilities are automatically excluded from regular inventory uploads:

# Regular inventory job excludes future availability items
items_scope = supplier.supplier_catalog_items
  .dropship_listing_scope
  .where.not(id: FutureAvailability.select(:supplier_catalog_item_id))

This prevents conflicts and ensures each item is managed by only one system at a time.

User Interface

Future Availabilities Index Page

The main interface displays:

  • Form Section:

    • Date picker for available date (defaults to 2 weeks out)
    • Number input for quantity (defaults to 100 units)
    • Text area for FBM SKUs
    • Submit button
  • Table Display:

    • FBM SKU
    • Item Model Number
    • Available Date
    • Quantity
    • Days Until Available
    • Calculated Latency
    • Remove actions
  • Visual Indicators:

    • Overdue items (past dates) highlighted with warning color
    • Tooltips showing calculation details
    • Bulk removal checkboxes

Bulk Operations

Remove multiple future availabilities at once:

  1. Check the boxes next to items you want to remove
  2. Click ā€œRemove Selectedā€ button
  3. Confirm the action
  4. System automatically triggers inventory re-upload

API Integration

While there’s no direct public API, the system can be accessed programmatically:

# Create a future availability
FutureAvailability.create!(
  supplier_catalog_item: item,
  available_at: Date.today + 14.days,
  quantity: 100
)

# Query future availabilities for a supplier
availabilities = FutureAvailability
  .for_supplier(supplier)
  .ordered

# Check if an item has a future availability
item = SupplierCatalogItem.find_by(fbm_sku: "SKU-123")
has_future_availability = item.future_availability.present?

# Get calculated latency
latency = item.future_availability&.calculated_latency(default: 2)

Troubleshooting

Common Issues

SKUs Not Found

  • Verify the SKUs are valid FBM SKUs for your supplier
  • Check for typos in the SKU names
  • Ensure items have non-empty fbm_sku values

Items Not Uploading

  • Check Slack notifications for upload errors
  • Verify supplier has dropship inventory settings configured
  • Ensure Amazon API credentials are valid

Wrong Latency Calculated

  • Verify the available date is set correctly
  • Check supplier’s default fulfillment_latency setting
  • Remember: Past dates use default latency, not negative values

Items Still Showing in Regular Inventory

  • Confirm the future availability was created successfully
  • Check that the regular inventory job ran after creating future availability
  • Verify the database unique constraint is working

Monitoring

Check upload status in:

  1. Slack Notifications: Real-time feed submission updates
  2. Supplier Attachments: Review uploaded JSON feeds
  3. Amazon Seller Central: Verify inventory and latency settings

Best Practices

When to Use Future Availability

  • āœ… Confirmed delivery dates: You have a specific, reliable delivery date from your supplier
  • āœ… Short-term restocking: Inventory arriving within 30-90 days
  • āœ… Active listings: Items that are currently selling and have demand
  • āŒ Uncertain dates: Don’t schedule if the date might change significantly
  • āŒ Long lead times: Consider temporary outages for items 90+ days out

Managing Updates

  1. Update, Don’t Delete: To change dates/quantities, simply create a new future availability with the same SKU
  2. Remove When Available: Delete future availabilities once inventory actually arrives
  3. Monitor Daily: Check your future availabilities page regularly as dates approach
  4. Communicate Changes: Update customers if delivery dates change significantly

Date Selection Strategy

  • Manufacturing delays: Set date to actual expected arrival + 2-3 buffer days
  • Overseas shipping: Account for customs clearance time
  • Weekend arrivals: Schedule for the next business day
  • Safety margins: Add buffer time for unexpected delays

Performance Considerations

  • Future availability uploads are debounced (5-minute delay) to batch multiple changes
  • One future availability per item (enforced at database level)
  • Jobs run in priority queue for timely processing
  • Automatic cleanup of old feed attachments (60+ days)
  • Temporary Outages: For items without known return dates
  • Dropship Inventory: Main inventory upload system
  • Supplier Settings: Configure fulfillment latency defaults
  • Catalog Management: Manage FBM SKU assignments

Technical Implementation

Model Relationships

# FutureAvailability
belongs_to :supplier_catalog_item
has_one :supplier, through: :supplier_catalog_item

# SupplierCatalogItem
has_one :future_availability, dependent: :destroy

Controller Actions

class FutureAvailabilitiesController < AuthenticatedController
  def index   # Display all future availabilities
  def create  # Add new future availabilities
  def destroy # Remove single availability
  def bulk_destroy # Remove multiple availabilities
end

Background Jobs

# Upload inventory with future availability latency
EDIWriteMerchantFulfilledFutureAvailabilitiesInventoryJob.new(supplier_id)

# Check upload status and report results
EDIWriteMerchantFulfilledFutureAvailabilitiesStatusJob.new(supplier_id, attachment_id, attempt)

Frequently Asked Questions

Q: What happens when the available date passes?
A: The system uses the supplier’s default fulfillment latency. You should remove the future availability once inventory arrives.

Q: Can I have different quantities for different dates?
A: No, currently only one future availability per item. To change dates/quantities, update the existing record.

Q: Does this work with FBA items?
A: No, this feature is specifically for FBM (Fulfillment by Merchant) items only.

Q: Will this affect my Buy Box chances?
A: Longer latency may reduce Buy Box eligibility, but it’s better than marking items out-of-stock.

Q: Can customers still order if I set a future date?
A: Yes! That’s the point - they can order now, and Amazon shows them the expected ship date.


For additional support or questions about Future Availability Restock, please contact the ShipmentBot support team.


Back to top

Copyright © ShipmentBot. All rights reserved.

Page last modified: Oct 28 2025 at 12:00 AM.