Security and your data
How NAMA keeps each agency's data separate, where it is stored and who can see what. This page lists only what the product does today.
Each agency's data is kept separate
- Every record carries your agency's ID, and every database query is filtered by it.
- Your agency comes from your signed login, set from your user account. It is never taken from the web address, a page or a form.
- If someone asks for another agency's record, NAMA answers "not found", so they cannot tell that it exists.
- Database queries written by AI are refused unless every table in them is limited to your agency.
- Background jobs run for one agency at a time.
- A shared quote or customer-portal link opens only its own record, through a signed link.
- The separation is tested on every code change against a real Postgres database.
Who can see what
- Your admin decides who can do what, with roles for admins, sales, operations and finance, custom roles, and per-person overrides.
- By default, sales staff do not see supplier cost and operations staff do not see the selling price on bookings. Admins and finance see both. Your admin can change this.
- Customers only ever see your selling price. Cost fields are removed on the server before any customer page or PDF is built.
- Your admin chooses whether each role sees only its own leads or every lead.
- Customer logins reach only their own profile and portal, never your workspace.
- Logging out, a password reset, a role change or deactivation ends that person's sessions.
- Changes in your workspace are written to an audit log that your admin can export.
- NAMA's own platform administrators can see account-level information across agencies, such as agency names, user email addresses and record counts. There is no feature that lets anyone sign in as your agency.
Where your data is stored
- Database: Postgres, hosted by Neon.
- Application servers: Railway. Web pages: Vercel.
- Files: S3-compatible object storage. Private documents open through short-lived signed links. Images you place in itineraries and quotes use long, unguessable links.
- Email that NAMA sends goes through Resend. You can also connect your own mailbox.
- Payments: card details are typed into the payment gateway's own checkout. NAMA does not store card numbers.
- Error reports from the app, and recordings of a sample of app sessions with text and form inputs masked, go to Sentry, in its EU region.
- AI requests go to the provider of your own key, or to NAMA's provider account.
- WhatsApp runs on Meta's WhatsApp Cloud API, with each agency's access token stored encrypted. WhatsApp is rolling out.
How data is protected
- All traffic uses HTTPS, with HSTS.
- Passwords are hashed with bcrypt.
- Login attempts are limited to 5 a minute from each IP address.
- Your session uses a short-lived access token held in memory and a refresh token in a secure, HttpOnly cookie that is replaced each time it is used.
- Stored secrets, such as your AI keys, mailbox passwords and WhatsApp tokens, are encrypted.
Your data, your control
- Export: you can export your data as a file at any time, and an admin can export the whole agency.
- Deletion: a deletion request is reviewed first, then carried out table by table. Afterwards only a hashed copy of the email address is kept, as a record of the request.
Report a security issue
Email security@getnama.app with the steps to reproduce. Please do not open public GitHub issues for security findings.
In scope: getnama.app and www.getnama.app, the API under /api/v1, the customer portal and the website widget. Out of scope: services we do not run, such as Vercel, Railway, Neon, Resend, Sentry, Razorpay and Meta. Please report those to the provider.
Machine-readable contact: security.txt. Service status: status page.