Troubleshooting
This page covers common issues you may encounter when embedding Seva components on your website.
Authentication issues
Section titled “Authentication issues””Not a member of this organization”
Section titled “”Not a member of this organization””The user has an account but is not a member of your organization.
Fix: Add the user as a member in the admin dashboard under Members → Add Member, using the same email address they signed up with.
Session not persisting after page refresh
Section titled “Session not persisting after page refresh”Seva stores authentication tokens in localStorage. If the user is in private/incognito browsing mode or their browser blocks storage, the session will work but won’t persist across page refreshes.
Components not syncing after sign-in
Section titled “Components not syncing after sign-in”All Seva components communicate via browser events (seva:authenticated, seva:signed-out). If <seva-auth> is on the page but <seva-event-register> doesn’t update after sign-in:
- Verify both components have the same
tenant-slugvalue. - Make sure no JavaScript on the page is calling
event.stopPropagation()on Seva events.
Popup blocked during Google sign-in
Section titled “Popup blocked during Google sign-in”Google OAuth opens a popup window. If the browser blocks it, the user sees an error. Ask users to allow popups for your site.
Configuration issues
Section titled “Configuration issues”Missing tenant-slug
Section titled “Missing tenant-slug”Every Seva component requires the tenant-slug attribute. Without it, API calls fail and authentication won’t persist.
<!-- Correct --><seva-auth tenant-slug="my-club"></seva-auth>
<!-- Wrong — missing tenant-slug --><seva-auth></seva-auth>Wrong api-url for local development
Section titled “Wrong api-url for local development”Components default to the production API (https://api.seva.tools). For local development, pass the local URL explicitly to every component:
<seva-auth tenant-slug="my-club" api-url="http://localhost:8787"></seva-auth>“Event not found” error
Section titled ““Event not found” error”The <seva-event-register> component shows this when the event slug doesn’t match a published, active event. Check that:
- The
event-slugattribute matches the slug in the admin dashboard. - The event is Published (see Publishing Events).
- The event is Active.
- The current date is within the registration window (between Registration Begin and Registration End).
Payment & checkout issues
Section titled “Payment & checkout issues””Payment configuration error”
Section titled “”Payment configuration error””This means the Stripe keys are not configured on the API. Contact the system administrator to verify that STRIPE_SECRET_KEY is set in the API environment.
Stripe checkout not loading
Section titled “Stripe checkout not loading”If the payment form area appears blank:
- Check the browser console for network errors loading the Stripe library.
- Verify your Stripe publishable key matches the environment (test vs. live).
Component communication
Section titled “Component communication”Events not reaching other components
Section titled “Events not reaching other components”Seva components dispatch CustomEvents with bubbles: true and composed: true, so they cross Shadow DOM boundaries and bubble up to document. If events aren’t being received:
- Confirm all components are in the DOM (not hidden behind a conditional that removes them).
- Check that no JavaScript on the page stops event propagation.
Cart not updating after adding tickets
Section titled “Cart not updating after adding tickets”The <seva-cart> component listens for seva:add-to-cart events. Make sure:
<seva-cart>is in the DOM before the user adds tickets.- Both
<seva-event-register>and<seva-cart>share the sametenant-slug.
Guest vs. member cart
Section titled “Guest vs. member cart”The cart uses separate storage for guests and authenticated members. When a user signs in or out, the cart switches automatically. Items do not transfer between guest and member carts.
Browser compatibility
Section titled “Browser compatibility”Seva components are built with Lit and target modern browsers (ES2022). They are not compatible with Internet Explorer or older browser versions. Supported browsers include current versions of Chrome, Firefox, Safari, and Edge.
Getting help
Section titled “Getting help”If you’re stuck on an issue not covered here, check:
- Wiring Components Together — How to connect components on a page
- Full Page Example — A working reference implementation