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:
- Schedule Setup: You specify FBM SKUs, available dates, and quantities
- Latency Calculation: System calculates
(available_date - today)as fulfillment latency - Automated Upload: Dedicated job uploads inventory with custom latency to Amazon
- Regular Updates: As the date approaches, latency automatically decreases each day
- 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
- Navigate to your Supplierās INV: Future Availability page from the sidebar
- Select the Available Date (when inventory will be ready to ship)
- Enter the Quantity that will be available
- Paste your FBM SKUs (comma or newline separated)
- 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:
- Check the boxes next to items you want to remove
- Click āRemove Selectedā button
- Confirm the action
- 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_skuvalues
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_latencysetting - 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:
- Slack Notifications: Real-time feed submission updates
- Supplier Attachments: Review uploaded JSON feeds
- 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
- Update, Donāt Delete: To change dates/quantities, simply create a new future availability with the same SKU
- Remove When Available: Delete future availabilities once inventory actually arrives
- Monitor Daily: Check your future availabilities page regularly as dates approach
- 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)
Related Features
- 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.