How data flows
Session data is sent from the user’s browser to Milana’s ingest service, where it is buffered temporarily in encrypted-at-rest storage. Once a session window closes, the raw events are written to your bucket and immediately deleted from Milana’s database. Milana then processes the data in your bucket through several stages — encoding, generating transcripts, and building indexes — and writes all results back to the same bucket. Once a session is completed, no session recording data persists on Milana-managed storage. The Milana web interface loads session replays directly from your bucket in the browser (by dynamically generating pre-signed URLs). This requires your bucket to have a CORS policy allowlisting our app domain.What stays in your bucket
- Raw session replays
- Encoded session replays
- Session transcripts
- User journey transcripts
What Milana stores
Milana stores the following end-user metadata and derived data:- Metadata: session metadata, user metadata, events, product-specific configuration, etc.
- Derived data: issues, user intent, taxonomies, summary statistics, indexes, etc.
Google Cloud Storage
Create a bucket
Create a GCS bucket with the following settings.us-east4 is strongly recommended for lowest latency.
| Setting | Value |
|---|---|
| Storage class | Standard |
| Autoclass | Enabled |
| Public access prevention | Enforced |
| Access control | Uniform (bucket-level) |
| Force destroy | Disabled |
- Terraform
- CLI
Grant Milana access
Grant the following Milana service accounts access to your bucket:- Storage Object User — allows Milana to read and write session data.
- Storage Object Viewer — allows Milana’s AI to read videos directly for transcription and analysis.
- Terraform
- CLI
Configure CORS for replay access
Milana’s session replay player loads replay event data in the Milana web app using short-lived browser access. For Google Cloud Storage, that requires a bucket CORS policy that allowshttps://app.getmilana.ai.
Without this CORS policy, session replay can fail to load in the browser.
If you used the Terraform configuration above, CORS is already included in the bucket resource.
- Terraform
- CLI
Include the following
cors block in your bucket resource:Amazon S3
Create a bucket
Create an S3 bucket with the following settings.us-east-1 is strongly recommended for lowest latency.
| Setting | Value |
|---|---|
| Region | us-east-1 (recommended) |
| Block all public access | Enabled |
| Bucket Versioning | Disabled (or per your policy) |
| Default encryption | SSE-S3 or SSE-KMS |
- Terraform
- CLI
Grant Milana access
Add a bucket policy that grants Milana’s service account read and write access. Replaceyour-company-milana-data with your bucket name.
- Terraform
- CLI
Configure CORS for replay access
Milana’s session replay player loads replay event data in the browser. For S3, that requires a CORS configuration that allowshttps://app.getmilana.ai.
- Terraform
- CLI