This page lists every custom command in backend/app/Console/Commands. Use it to find
the right command, then follow the link for the details. Queue commands (queue:*) are
covered in Queue Commands .
Locally: cd backend && ./vendor/bin/sail artisan <command>
Staging / production: open a shell on the ops-runner instance and run
sudo docker exec -it app-php-fpm-1 php artisan <command> — see Server Access .
Check the safety mode before you run anything in production
Repair commands do not share one convention. Some are dry-run unless you pass --apply,
some unless you pass --force, and some write by default unless you pass --dry-run.
The Mode column below tells you which. Always run the preview first.
Legend for Mode : 🔍 read-only · --apply / --force = dry-run until you pass that flag ·
--dry-run = writes by default · ✍️ always writes · ⏰ also runs on the schedule.
Command
What it does
Mode
Docs
offers:auto-generate
Generate offers from completed flight-cache entries.
✍️ ⏰ every 15 min
Offers
offers:diagnose --product=ID
Explain why a product is not generating offers (weekday mismatch, blackout, route/cache/land-price gates). First thing to run when offers are missing.
🔍
Offers
offers:audit-cache-gaps
List the domestic-leg cache gaps that stop auto-offers from being created. --product=, --show-creatable.
🔍
Offers
offers:audit-domestic-dates
Report domestic legs off the tour date or outside their departure window. --notify alerts admins.
🔍 ⏰ 06:45 Madrid
Offers
offers:fix-domestic-dates
Rebind drifted domestic legs to the tour-correct date and reprice. Queues missing cache searches even without --apply.
--apply
Offers
offers:fix-domestic-windows
Re-point off-window domestic legs to the in-window flight of the same fare (no price change).
--apply
Offers
offers:rebind-unbound
Rebind orphaned offer_flights to the best correct cache row (pairs with flights:cleanup-wrong-nights).
--dry-run
—
offers:queue-departure-rules
Expand active departure rules and queue their flight searches.
--dry-run
—
offers:draft-released
Move active offers inside the supplier release-days window to Draft (booked ones stay).
--dry-run ⏰ daily
Offers
offers:draft-blacked-out
Move active offers whose trip runs into a supplier blackout to Draft.
--dry-run
Offers
offers:recalculate-prices
Recalculate land prices with each supplier’s current currency and exchange rate.
--apply
Offers History
offers:migrate-margin-basis
Convert cost-basis offers to margin-on-sale. Run market by market with the business.
--apply
Offers History
offers:classify-package-alternatives
Propose which of a tour’s packages are alternatives of each other.
--apply
Suppliers
offers:verify-flights
Walk activated offers and ask whether to verify each against live search. Interactive.
✍️
Flight Search
Command
What it does
Mode
Docs
flights:mark-stale-searching-as-failed
Flip cache rows stuck in SEARCHING to FAILED so they can be retried.
✍️ ⏰ every 5 min
Dynamic Flight Cache
flights:protect-expiring-fares
Re-price reservations whose fare is about to expire.
✍️ ⏰ hourly
AerTicket
flight-cache:ensure-pending-entries
Create missing routes and pending cache rows for every active route and in-window date.
--dry-run
Dynamic Flight Cache
flight-cache:recompute-primary
Backfill primary-itinerary snapshots on old cache rows.
--dry-run
Dynamic Flight Cache
flight-cache:cleanup-routes
Deactivate cache routes no active flight config uses.
--force
—
flights:rerank-cache
Recompute fare_position with the current ranking policy. No AerTicket calls.
--dry-run
—
flights:cleanup-wrong-nights
Invalidate cache rows that give the wrong number of nights at destination. --route=.
--dry-run
—
flights:repair-overnight-deltas
Unstick routes caught in the cold-start overnight deadlock. --route=*, --product=.
--dry-run
—
aerticket:test-connection
Guide for testing the AerTicket connection.
🔍
AerTicket
aerticket:fixtures:capture / :list / :purge
Record real AerTicket responses as local fixtures, list or delete them.
✍️ local only
AerTicket
Command
What it does
Mode
Docs
bookings:send-balance-reminders
Chase outstanding balances before departure and escalate overdue ones.
✍️ ⏰ 08:00 Madrid
Payment
bookings:send-pre-departure
Send the pre-departure email for trips leaving in the next 15 days.
✍️ ⏰ 09:00 Madrid
Notifications
bookings:replace-domestic-legs {booking}
Replace drifted domestic legs in a booking’s flight selection.
--apply
Offers
bookings:repair-domestic-flight-selection
Repair corrupted domestic legs in bookings.flight_selection. --booking=.
--apply
—
Command
What it does
Mode
Docs
products:check-leading-price
Snapshot each product’s “desde” price and alert marketing when it rises.
✍️ ⏰ 07:00 Madrid
Notifications
products:backfill-slug-aliases
Create 301 aliases for old product slugs from the activity log.
--apply
—
products:import-slug-aliases {file}
Import slug aliases from a GA-derived CSV.
--apply
—
tours:clear-orphan-assignments
Remove hotel/activity assignments left on 0-night days of reshaped tours.
--dry-run
Suppliers
suppliers:contracts:generate
Generate a supplier contract from a tour’s service assignments.
✍️
Suppliers
last-seats:sync-prices
Re-price Last Seats departures whose discount changed.
--dry-run ⏰ every 15 min
Last Seats
Command
What it does
Mode
Docs
pipedrive:*
Set up, sync, retry, reconcile and clean up the Pipedrive CRM sync.
varies
Pipedrive
netsuite:*
Sync, retry and reconcile records with NetSuite.
varies
NetSuite
activecampaign:sync-subscribers
Queue newsletter subscribers that have no ActiveCampaign contact yet.
✍️
Newsletter Subscriptions
currency:sync-rates
Pull the latest exchange rates.
✍️ ⏰ daily
Currency Exchange
emails:sync-resend-status
Store Resend’s delivery status on sent emails.
✍️ ⏰ hourly
Email Copies
intermundial:test-connection
Authenticate against Intermundial and list policies.
🔍
Insurance
Command
What it does
Mode
Docs
db:prune [target]
Delete garbage rows from high-churn tables. --list shows targets.
--force
—
internal:generate-token
Create the Sanctum token the Web uses to call the API.
✍️
Client Auth
mcp:agent-token
Issue or revoke a token for an AI agent using the Arkana MCP.
✍️
Arkana MCP
mcp:revoke-oauth
Revoke a person’s Arkana MCP OAuth sessions.
✍️
Arkana MCP
activity-log:check
Check activity-log configuration across models.
🔍
Activity Log
notification:test
Send a test email notification.
✍️
Notifications
Command
What it does
products:generate
Create test product templates and products by market.
suppliers:hotels:generate, suppliers:activities:generate, suppliers:services:generate
Create test supplier data.
airports:download
Download airport seed data from S3.
app:diagnose-supplier-utf8
Find non-UTF-8 data that would break json_encode.
Scheduled entries live in backend/routes/console.php and run on the ops-runner host. The full
list, with cadences and the daily database backup, is in
Docker Health Monitoring › Scheduler Container .