> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usefini.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Data handling, residency and model training

> What customer data Fini processes, where it is stored and processed (US or EU), how it is encrypted and masked, who the subprocessors are, how retention works, and the DPA terms that govern it.

Fini (usefini.com) stores and processes customer data in the region you choose, the United States or the European Union, encrypts it with AES-256 at rest and TLS 1.2+ in transit, and automatically masks sensitive data, including card numbers and health details, everywhere it stores conversation data. Fini is SOC 2 Type II compliant, ISO/IEC 27001:2022 certified, PCI DSS Level 1 certified, HIPAA-compliant and BAA-eligible, and supports GDPR and CCPA. Fini does not use customer data to train foundation models. Processing is governed by Fini's [Data Processing Addendum](https://www.usefini.com/security/data-processing-addendum) (v1.0.5), which sets a 30-day subprocessor change notice and 72-hour breach notification.

## Roles

Under the [Privacy policy](https://www.usefini.com/security/privacy-policy), Fini acts in two roles:

| Data | Fini's role | Governing document |
| - | - | - |
| Customer Data: the conversations, knowledge and customer records your workspace sends to Fini | Processor | [Data Processing Addendum](https://www.usefini.com/security/data-processing-addendum) |
| Website and account data: your team's dashboard accounts, billing details, website visits | Controller | [Privacy policy](https://www.usefini.com/security/privacy-policy) |

## What data Fini processes

What reaches Fini depends on what you connect. The categories below come from the product surfaces you configure.

| Category | Examples | Where it comes from |
| - | - | - |
| Conversations | Customer messages, Fini replies, human-agent replies and internal notes mirrored from your helpdesk | Connected channels: helpdesks, widget, email, Slack, voice ([Deploy overview](/en/deploy/overview), [Inbox](/en/testing/inbox)) |
| Conversation metadata | Channel, source, tags, status, ticket links | Fini classification and your integrations |
| Customer attributes | Plan, account status, order or card records your endpoints return | [User Attributes](/en/api-reference/attributes) and [Actions](/en/api-reference/actions) you configure |
| Knowledge | Help center articles, internal documents, past tickets | [Knowledge sources](/en/knowledge/sources) you connect |
| Execution traces | Rules executed, Action inputs and outputs, guardrail verdicts, model reasoning | Generated per reply as the [AI Steps](/en/testing/inbox) trace |
| Team accounts | Names and work emails of dashboard users | Sign-up, invites or [SSO](/en/sso-login) |

You control the largest variable: which attributes your endpoints return and which documents you sync. Send the minimum each workflow needs.

## Where data is processed

| Deployment | Hosting | Residency |
| - | - | - |
| Standard | Google Cloud | Customer-designated region: United States or European Union. With EU data residency, data is stored and processed in the EU. |
| Azure via Microsoft Marketplace | Microsoft Azure, in your Azure tenant and region, with reasoning models on Azure AI Foundry and Azure OpenAI Service | Your tenant's region |

The Azure deployment is bought through [Microsoft Marketplace](https://www.usefini.com/better-together) (MACC-eligible, on a single Microsoft invoice) and supports Private Link and VNet, customer-managed encryption keys, Entra ID and Conditional Access, and Azure Monitor and Sentinel integration.

<Note>
  Calls Fini makes to your APIs (Actions) come from four static IPs in Google Cloud's europe-west4 region (Netherlands), for every workspace. See [Static IP Addresses](/en/api-reference/static-ip).
</Note>

The diagram shows how data moves in the standard deployment. Every connection uses TLS 1.2 or higher.

```mermaid theme={null}
---
title: Data flow in the standard deployment
---
flowchart LR
    subgraph CUST["YOUR CHANNELS AND SOURCES"]
        CH["Conversations<br/>helpdesk · widget · email<br/>Slack · voice"]
        KN["Knowledge sources<br/>you connect"]
    end

    subgraph GCP["FINI ON GOOGLE CLOUD<br/>your region: US or EU"]
        FINI(("Fini agent"))
        STORE[("Stored data<br/>conversations · AI Steps traces<br/>AES-256 at rest · masked")]
    end

    LLM["LLM subprocessors<br/>OpenAI · Anthropic · Gemini<br/>no foundation-model training<br/>on your data"]
    YAPI["Your APIs<br/>User Attributes · Actions"]

    CH -->|"TLS 1.2+"| FINI
    KN -->|"TLS 1.2+"| FINI
    FINI <--> STORE
    FINI <-->|"TLS 1.2+"| LLM
    FINI <-->|"from static IPs<br/>europe-west4"| YAPI

    classDef source fill:#F7F7F7,color:#131415,stroke:#E8E8E8
    classDef agent fill:#131415,color:#FFFFFF,stroke:#131415,stroke-width:3px
    classDef surface fill:#FFFFFF,color:#131415,stroke:#131415
    classDef human fill:#C3EE5E,color:#131415,stroke:#131415,stroke-width:2px

    class CH,KN source
    class FINI agent
    class STORE,LLM surface
    class YAPI human
```

The Azure deployment through Microsoft Marketplace follows a different path: Fini runs in your Azure tenant and region, with models on Azure AI Foundry and Azure OpenAI Service, as described above.

## Encryption

* **At rest:** AES-256.
* **In transit:** TLS 1.2 or higher.
* **Contact details in conversations:** email addresses and formatted phone numbers in message text are encrypted at rest, which is why Inbox text search cannot match them. See [Inbox](/en/testing/inbox#filtering-and-finding-conversations).
* **Azure deployments:** customer-managed encryption keys are supported.

The [Data protection policy](https://www.usefini.com/security/data-protection-policy) also describes role-based access to customer data and per-customer environments with PII masking. Endpoint disk encryption, data backups, access monitoring and data erasure are documented in the [Trust Center](https://security.usefini.com/).

## Masking sensitive data

Fini automatically masks sensitive data, including card numbers and health details, everywhere it stores conversation data (transcripts, Inbox and AI Steps traces). Fields you hide from the AI are also redacted in AI Steps. You do not need to build a rule for this.

Design your workflows so sensitive values never need to enter the conversation:

* **Don't ask for what you don't need.** Never ask customers for full card numbers, CVVs or health details the workflow doesn't require.
* **Route card actions through your payment provider.** Card replacement, payment updates and refunds run as [Actions](/en/api-reference/actions) against your payment provider, which holds the card data; the conversation only carries references. See [PCI DSS](/en/security/pci-dss).
* **Add Guardrails as an extra layer.** [Guardrails](/en/configuration/guardrails) check what the agent says: a **Confidential attributes** check keeps the values of selected user attributes out of replies, and a **Custom rule** can fail any reply that repeats data your policy forbids.

## Model training

Fini does not use customer data to train foundation models. Any per-customer learning happens only inside that customer's environment and only with their written authorization. Fini's LLM subprocessors are contractually barred from training on it, and the commitment is written into the DPA.

This is different from how Fini improves your own agent. Magic Articles drafts articles from transcripts and documents you provide, and they land in Review or Published depending on your **Status After Generation** setting. Your team's feedback in Inbox and Test Suite results shape your agent's configuration. Those improvements stay in your workspace; they do not train a shared model. See [Magic articles](/en/knowledge/magic-articles) and [Review](/en/knowledge/review).

## Subprocessors

Fini's subprocessors are:

| Subprocessor | Purpose |
| - | - |
| Google Cloud (including Gemini) | Hosting, AI |
| Microsoft Azure | Azure Marketplace deployments, incl. Azure AI Foundry / Azure OpenAI |
| Supabase | Managed database |
| OpenAI | LLM inference, enterprise agreement |
| Anthropic | LLM inference, enterprise agreement |
| PostHog | Product analytics, usage metrics only |
| Sentry | Error monitoring and logging |
| Stripe | Billing |
| Linear | Issue tracking |
| Google | Email |
| Langfuse | Tracing |

With EU data residency, data is stored and processed in the EU.

The DPA sets a 30-day notice period for subprocessor changes, which gives you time to review a change before it takes effect.

## Retention and deletion

You set your own retention period, and deletion removes all data.

| Situation | What happens |
| - | - |
| Retention period | Set by you |
| Deleting specific conversations | Call [Delete conversation](/en/api-reference/delete-conversation) for one ID, or [Bulk delete conversations](/en/api-reference/bulk-delete-conversations) for up to 50 IDs per request. Both need an API key with `write` scope. |
| End of contract | Customer data is deleted within 30 days of termination, under the [Terms of service](https://www.usefini.com/security/terms-of-service) |
| Data still in your systems | Deleting in Fini does not delete the source ticket in your helpdesk. Delete it there too. |

Two implementation details matter if you automate deletion:

* **Single delete returns success even for unknown IDs.** It does not confirm that the ID matched a live conversation, so verify IDs with [List conversations](/en/api-reference/list-conversations) first.
* **Bulk delete is not atomic.** If any ID is inaccessible, the request returns `406 Not Acceptable`, but the matching conversations are still removed. Retry only the IDs that failed.

## DPA terms at a glance

The [Data Processing Addendum](https://www.usefini.com/security/data-processing-addendum) (v1.0.5) is the binding text. Key terms:

| Term | Commitment |
| - | - |
| Laws covered | GDPR, CCPA and other US state privacy laws |
| Subprocessor changes | 30 days' notice |
| Breach notification | Within 72 hours |
| Model training | Fini does not use customer data to train foundation models. |
| International transfers | EU Standard Contractual Clauses, Module Two (controller to processor) and Module Three (processor to processor), with UK and Swiss addenda |
| Residency | United States or European Union |
| Audit logs | Customers can export audit logs |
| Audit | The Trust Center's **Customer Audit Rights** entry states that customers can request Fini's compliance reports, including SOC 2, ISO 27001:2022 and GDPR. See the [Trust Center](https://security.usefini.com/). For the PCI DSS Level 1 attestation (AOC), contact your Fini account team. |

## Data subject requests (GDPR and CCPA)

As your processor, Fini supports you in answering requests from your customers. You stay the controller and decide how to respond.

<Steps>
  <Step title="Find the conversations">
    In Inbox, use the **Ticket Id** filter with the customer's ticket IDs from your helpdesk, or use the [Conversations API](/en/api-reference/list-conversations) to list them programmatically. Email addresses and formatted phone numbers are encrypted at rest in Inbox, so you can't find a customer by searching for their email in the **Question** filter.
  </Step>

  <Step title="Fulfill access or portability requests">
    Export the conversations with a `read`-scoped API key, or open them in Inbox. See [API keys](/en/deploy/api-keys).
  </Step>

  <Step title="Fulfill deletion requests">
    Delete the conversations through the deletion endpoints above, then delete the source records in your helpdesk and any system your Actions wrote to.
  </Step>

  <Step title="Escalate anything else">
    For requests you can't complete yourself, contact [legal@usefini.com](mailto:legal@usefini.com). The [Data protection policy](https://www.usefini.com/security/data-protection-policy) lists the data subject rights Fini supports.
  </Step>
</Steps>

If your agent receives a data request inside a support conversation, route it to your privacy team with a Reply Rule or a Planning Prompt escalation trigger rather than letting the agent answer. See [Reply Rules](/en/automations/reply-behavior).

## Related

<CardGroup cols={2}>
  <Card title="Security overview" icon="shield-halved" href="/en/security/overview">
    Posture table, evidence and reviewer FAQ.
  </Card>

  <Card title="HIPAA and BAAs" icon="notes-medical" href="/en/security/hipaa">
    Requesting a BAA and configuring for PHI.
  </Card>

  <Card title="PCI DSS" icon="credit-card" href="/en/security/pci-dss">
    PCI DSS Level 1 certification and card data in support conversations.
  </Card>

  <Card title="Delete conversation" icon="trash" href="/en/api-reference/delete-conversation">
    API reference for single-conversation deletion.
  </Card>

  <Card title="API keys" icon="key" href="/en/deploy/api-keys">
    Scopes, rotation and revocation for programmatic access.
  </Card>
</CardGroup>


## Related topics

- [Security questionnaire answers](/en/evaluate/security-questionnaire.md)
- [Questions to ask an AI support vendor, with Fini's answers](/en/evaluate/questions-to-ask.md)
- [Security overview](/en/security/overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.