Skip to content

Troubleshooting

This page lists the issues we see most often and the fastest way through them.

"REST returns 404 / nothing loads in the admin"

Symptom: The admin React shell shows blank panels; the network tab shows 404 for /wp-json/yatra/v1/....

Cause: Pretty permalinks are off, or a security plugin is blocking REST.

Fix:

  1. Go to Settings → Permalinks. Pick Post name (or any non-Plain). Click Save Changes.
  2. Visit /wp-json/yatra/v1/ in a browser. You should see JSON, not 404.
  3. If you have Wordfence, iThemes Security, etc., temporarily allow wp-json for your IP.

Symptom: /trips/, /booking/, /my-account/ all return 404.

Fix: Open Settings → Permalinks and click Save Changes (no need to change anything; saving flushes rewrite rules). Or run wp rewrite flush via WP-CLI.

"Stripe is locked at checkout" PRO

Symptom: PayPal works fine, but Stripe is greyed out / says "available with Pro".

Cause: Stripe is registered with Pro tier. It only activates at checkout when a Pro license is active.

Fix: Install Yatra Pro and activate your license under Yatra → License.

PROUnlock Stripe + 6 more gateways
Compare Pro plans →

"PayPal webhook shows but no booking is confirmed"

Symptom: PayPal logs show 200 from your site, but the booking stays pending.

Cause: Webhook ID mismatch (sandbox vs live), missing client id / secret, or REST routes blocked by security.

Fix:

  1. Open Yatra → Settings → Payment → PayPal. Confirm Mode matches the webhook (sandbox vs live), and Webhook ID matches the PayPal dashboard.
  2. Confirm REST is reachable — visit /wp-json/yatra/v1/webhooks/paypal (you should get a 405 method-not-allowed for GET, not 403).
  3. Check Yatra → Tools → Logs → Payment for webhook errors.

"Stripe webhook signature mismatch"

Symptom: Stripe says webhook delivery failed; Yatra logs say "invalid signature".

Cause: Webhook secret in Yatra doesn't match Stripe's webhook signing secret.

Fix:

  1. In Stripe → Developers → Webhooks → click your endpoint → Reveal secret under Signing secret (whsec_...).
  2. Paste it into Yatra → Settings → Payment → Stripe → Webhook secret.
  3. Save. Re-send a test event in Stripe.

"Emails aren't arriving"

Symptom: No booking confirmation / receipt / cancellation emails reach the customer.

Fix:

  1. Install a transactional email plugin: WP Mail SMTP, FluentSMTP, or Post SMTP.
  2. Connect to a transactional ESP: SendGrid, Postmark, Amazon SES, Mailgun.
  3. Set From name and From email to a noreply@ on your sending domain.
  4. Configure SPF, DKIM, and DMARC on the From domain.
  5. Test deliverability via mail-tester.com.
PROEmail Automation logs

With Email Automation on, the Email logs tab shows every send, recipient, status, and ESP response code — invaluable for debugging delivery.

Unlock email automation →

Symptom: [yatra_trip featured_priority="featured"] returns nothing.

Cause: Trips don't have Featured Priority set. The legacy featured toggle was migrated to featured_priority, but if the trip has neither, no rows match.

Fix:

  1. Open the trip → Categories & Attributes → set Featured Priority to featured, sticky, or high-priority.
  2. Save.

The legacy featured="1" attribute is also accepted as an alias for featured_priority="featured".

"Setup wizard never finishes"

Symptom: After activation, you can't get past the setup wizard.

Fix:

  1. Make sure your account has manage_options.
  2. Disable WAF / Security plugins temporarily, run the wizard, re-enable.
  3. If still stuck: visit /wp-admin/admin.php?page=yatra-setup directly.

"I deactivated Pro and lost some data"

Symptom: After turning off Yatra Pro, dynamic pricing / trip consent / additional services disappear.

Cause: Pro features render only when their module is on. Stored data is preserved.

Fix: Re-enable the module under Yatra → Modules to bring back the UI.

"Cache plugin breaks checkout / login"

Symptom: Login form keeps showing logged-out state; booking flow looks blank.

Cause: Page cache is serving the logged-out version of a session-specific page.

Fix: Exclude these from your page cache:

  • /booking/, /my-account/
  • /wp-json/yatra/v1/checkout/*, /wp-json/yatra/v1/me/*

"PHP fatal errors after enabling Pro"

Symptom: White screen of death right after activating Yatra Pro.

Cause: Mismatched plugin versions, or Pro was activated before Free.

Fix:

  1. Add define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); to wp-config.php.
  2. Re-read the error in wp-content/debug.log.
  3. Update both plugins to the latest versions.
  4. Activate Yatra first, then Yatra Pro.

"I'm on a case-sensitive Linux host and templates don't load"

Symptom: A template override in your theme isn't picked up.

Cause: macOS dev is case-insensitive; production Linux is case-sensitive. A template with the wrong case in the path silently fails.

Fix: Match Yatra's exact casing — templates/single-trip.php, templates/partials/trip-card.php, etc.

"REST returns 403 for an admin user"

Symptom: Admin REST routes return rest_forbidden.

Cause: Cookie session expired, missing X-WP-Nonce, or a role plugin removed a capability.

Fix:

  1. Refresh the WordPress admin page (re-issues a fresh nonce).
  2. Confirm your user has manage_options.
  3. Check that a role plugin (Members, User Role Editor) didn't remove Yatra capabilities from administrator.

"Pro license shows valid in wpyatra.com dashboard but Yatra says invalid"

Symptom: Account dashboard says Active; Yatra → License says invalid.

Cause: License key activated on too many sites, or the site URL differs (www. mismatch).

Fix:

  1. Open the wpyatra.com account dashboard and confirm site limits.
  2. Deactivate old / dev URLs.
  3. Click Check status in Yatra → License.

"Dynamic pricing rules don't apply to bookings" PRO

Symptom: Rules look right in the admin, but customer prices don't change.

Fix:

  1. Open Yatra → Dynamic Pricing → Settings. Confirm Enable Dynamic Pricing is on.
  2. Open the rule. Confirm Status is active (not trash or draft).
  3. Confirm the rule's conditions match the trip / departure / dates being booked. Use the Analytics tab to see if rules fired.
  4. Clear any object cache (Redis, Memcached) — pricing math is cached briefly.

"Bulk delete dynamic pricing rules fails"

Symptom: Bulk action runs but rules stay.

Fix: This was fixed in a recent release — update Yatra Pro to the latest. The fix uses Promise.allSettled so any failed row doesn't block the rest.

Diagnostics tools

  • Yatra → Tools → System Status — PHP, WP, server, plugin versions.
  • Yatra → Tools → Jobs — background export/import job progress.
  • Yatra → Tools → Logs — Error / Payment / Booking / System tabs.
  • Yatra → Tools → Migration — schema / data migration utilities.

When to file a bug

Before filing, please:

  1. Update both Yatra and Yatra Pro to the latest.
  2. Disable other plugins one by one to rule out conflicts.
  3. Switch to a default theme briefly to rule out theme conflicts.
  4. Capture the exact steps + a WP_DEBUG log of the error.

Then file a bug on GitHub (free) or open a priority support ticket (Pro).

What's next