Short answer: first build a list of every place your users' data ends up. Only then start on the forms. If an AI coding tool built your app, that list is not in your head. You never made the choices. It is in your config files, your package list, your webhook settings, and the vendor pages that name your vendors' own vendors. Build the map first. Chapter V of GDPR then tells you what each line on it needs.
We have run more than 700 audits of AI-built SaaS, websites and apps. Transfer work shows the same pattern as everything else. The code works. Nobody knows what it touches.
The rule, in plain words
GDPR splits the world in two. Inside the European Economic Area, or EEA, data moves freely. Outside it, you need a reason.
Article 44 sets the principle. You may only send personal data outside the EEA if the protection GDPR gives it travels with it. Nothing further down the chain may strip that away. The rest of Chapter V, Articles 45 to 49, lists the ways to meet that test.
Two things trip founders up here.
The first is the word transfer. It sounds like a file you send on purpose. It is far wider than that. Say a company outside the EEA stores your data. Or runs code over it. Or holds a backup copy. Or has staff who can log in and read it. Each of those is a transfer. Access counts, not just movement. A support engineer in another country opening a ticket and reading a customer record is a transfer.
The second is who is on the hook. You are. Your vendor may hold the data abroad. But you chose them, so Article 44 puts the duty on you.
Why AI-built apps are a special case
A normal engineering team picks vendors on purpose. Someone opens a sheet, argues about price and region, and signs. That leaves a trail. The transfer list is half written before anyone asks for it.
An AI-built app skips all of that. You described a product. The tool wired up a database, a host, a login provider, a mail sender, a payment page and a model API. It took each one's default settings. Defaults are picked for speed and for the biggest user base. That usually means a region outside the EEA.
So you now own a data flow you did not design. You have never seen it written down. That is not a legal problem yet. It is a hunt. And a hunt is something you can finish in an afternoon.
Find every transfer in your own app
Work through these six places in order. Write each finding into one table with four columns. The vendor. The data that reaches it. The country or region. And what makes it lawful. That last column will be empty at first. That is the point.
1. Region settings you already have
Open each vendor dashboard and find where the region is set. Database host. File storage. Login provider. Analytics. Error tracking. Background jobs. Write down what it says, not what you assumed. Projects made in a hurry sit wherever the signup flow put them.
While you are there, check whether the region can still be changed. For some services it is fixed at setup. Moving then means a full move of the data. Better to learn that now than mid-way through a customer's review.
2. Environment variables and config files
Open your .env file and the same settings on your deploy platform. Every key in there points at a company. A key you do not recognise is a vendor you forgot you had.
Look for region hints inside the values themselves. Hostnames and endpoint URLs often name the region in plain text. A client library given a URL will use it. A toggle set somewhere else does not override that.
3. Package list and SDK imports
Read your package.json or requirements.txt line by line. Then grep your source for the imports you really use. AI tools install more than they wire up. The two lists differ. Only the second one matters here.
Watch for anything that sends data out on its own. Analytics. Recording tools. Error reporting. Feature flags. Customer chat. Email and SMS. Any model or embedding API.
4. Webhooks, callbacks and outbound calls
Search your code for outbound HTTP calls. Then search your vendor dashboards for webhook URLs. People miss this one most. It sits in neither the package list nor the env file.
A signup handler that posts a new user's email to a marketing tool is a transfer. So is a payment webhook that passes on a name and address. Neither shows up anywhere but the code.
5. Logs, traces and backups
Find where your app logs go. Find where error reports go. Find where backups are written. Then check the region of each one on its own, apart from your main database.
Logs are the quiet one. Log whole request bodies and you log email addresses, names, sometimes tokens. If those logs leave the EEA, so does everything in them.
6. Your vendors' vendors
Every serious vendor lists its own vendors, called sub-processors. The list is often linked from their DPA or trust page. Open each one and read it.
Under Article 28 your processor needs your say-so before bringing in a sub-processor. It must also pass the same duties down the chain. So an EU-based vendor running on machines outside the EEA still creates a transfer. That one goes on your map, not just theirs. Our guide to DPAs with AI coding tools covers what to look for in those terms.
The region-toggle trap
Choosing an EU region is worth doing. It really does remove transfers. It just does not remove all of them. The gap between "EU region selected" and "no transfers" is wider than it looks. That gap is where a customer questionnaire tends to catch people out.
Six paths commonly survive an EU region setting:
- Logs and error reports. Often a second service, with its own region, set on its own.
- Backups and copies. Kept safe elsewhere, sometimes in another region on purpose.
- Edge and serverless code. Data can rest in the EU while the code reading it runs nearest the user.
- Support access. A vendor's staff can often read live data. They sit wherever they sit.
- Their vendors. Covered above, and invisible from your own dashboard.
- Model APIs. Send user text to a model and you send whatever the text holds.
None of this means you did something wrong. It means the map has more lines than the dashboard let on.
What each transfer needs
Now take your table and fill in the last column. There are three realistic answers.
Article 45: adequacy
The European Commission can rule that a country guards data well enough. Transfers there then need no extra safeguard. This is called adequacy. Where it covers your vendor's country, that line on your map is settled. You still owe everything else GDPR asks. You just do not need clauses.
The United Kingdom is the clearest example today. The Commission renewed its two UK decisions on 19 December 2025. The ICO records that both now run to 27 December 2031. Data can move from the EEA to the UK on that alone.
Article 46: Standard Contractual Clauses
Where adequacy does not apply, you fall back on contract terms. The Commission pre-approves a set of them, called Standard Contractual Clauses. Most large vendors put them inside their DPA. That is why signing the DPA matters. An unsigned one is a real gap.
Signing is not the end of it. You also have to check that the other country's laws will not defeat those promises. Then write down what you found. That check is called a transfer impact assessment. The EDPB's Recommendations 01/2020 set out the method in six steps, starting with knowing your transfers, which is the inventory you just built.
Serving UK users too? The UK runs its own version of this, with its own addendum. The ICO says an EU assessment can feed the UK one.
Article 49: derogations
Article 49 lists a few narrow exceptions. Explicit consent, given after a warning about the risks. A transfer needed to carry out a contract with that person. Important public interest. Legal claims. A short list of others.
It is not a route for the vendors your product runs on. The catch-all ground in Article 49(1) only covers transfers that are not repeated. They must also touch a limited number of people. Your database host runs every second of every day.
Adequacy is a decision, not a law of nature
One honest note, because it shapes how you build.
Adequacy decisions are reviewed, and they can be challenged. In July 2026 the EDPB wrote to the European Commission about the EU-US Data Privacy Framework. It asked the Commission to assess a United States Supreme Court ruling on the independence of federal agencies. Its point was that independent oversight is one of the things Article 45(2)(b) asks the Commission to weigh. That letter is a request to look again. It is not a change in the law, and the framework stands.
The lesson is not to panic about any one decision. It is to avoid a stack that stands or falls on one. Where a vendor offers both an EU region and clauses, take both. Keep the DPA and the written check on file even where adequacy covers you today. Then a change in status means an update to a file. Not an emergency move of your data.
What a scan can see, and what it cannot
Worth being straight here, because it sets how much of the work is yours.
An outside check of your live product sees the outside of your stack. It can list the services your pages load and call. It can flag missing security headers. It can name the vendors you seem to lean on. Two checks in our Compliance Score do just that: third-party SaaS identified and vendor security documentation. Between them you get a first draft of column one.
What no outside scan sees is the inside. It cannot read your backup region. Nor your log target. Nor your support-access settings. Nor your vendors' own vendor pages. Those are yours to open. A scan starts the list and catches things you forgot. It does not finish it.
It matters that the security side holds up too. Missing HTTP security headers show up in 83% of the scans we run. Contract terms do not help much if the data can be reached without going near the vendor. Safeguards and security are one job seen from two sides.
See which third-party services your app is actually calling
The free scan lists the outside services your live product loads and calls. It flags the security gaps that sit beside them. It is the fastest way to start column one of your map.
Fix checklist
- Build the four-column table. Vendor, data, country, and what makes the transfer lawful.
- Walk the six sources above. Config, packages, webhooks, logs, backups, vendor pages.
- Move to an EU region anything that offers one and is not set up yet.
- Sign the DPA with every vendor that has one. Check the clauses are in it.
- Write a transfer impact assessment for each transfer you cover with clauses.
- Stop logging whole request bodies. For most AI-built apps it is the cheapest way to cut what leaves.
- Name the transfers in your privacy policy. Article 13 says you must tell people their data goes abroad, and what guards it.
- Re-read those vendor pages on a set date. Vendors add new ones, and the notice tends to arrive by email.
Where this sits in the wider picture
Transfers are one file in a wider set. The list you build here is the same one that feeds your data map. A good map is what makes a data protection impact assessment possible. It is also what makes a subject access request answerable instead of frightening. Build it once. Use it four times.
It also ties back to choices baked into your code at the start. Privacy by design is mostly about not collecting data you never needed. The less data leaves your app, the shorter this map gets. The same logic covers tracking scripts that fire before consent. Those are a consent problem, and quietly a transfer as well.
One thing it does not tie to: the EU AI Act. That law covers how AI systems are built and disclosed, including the Article 50 duties. It says nothing about where data may travel. It gives you no route to move data outside the EEA. Two files, kept apart. Closing one does not close the other.
Want the wider view first? Start with our GDPR guide for AI-built apps, or the shorter compliance checklist. Two quick wins sit underneath all of it. Run the security headers checker, then read our note on secrets exposed in AI-built bundles. Our Replit and Bolt comparison also shows how far the defaults differ between tools.
FAQ
What counts as an international data transfer under GDPR?
It happens when data you hold under GDPR is sent to, or can be read from, a country outside the EEA. It does not have to be an export you set up on purpose. Say a vendor abroad stores your data, or works on it, or can log in and see it. Each is a transfer. Remote support access counts. So does a backup that lands in another region. So does a log line sent to a service hosted abroad.
Does picking an EU region in my hosting dashboard make me compliant?
No. A region toggle sets where your main database sits. It does not set where logs go. Nor where backups are copied. Nor which edge sites run your code. Nor which country your support staff log in from. Nor where your vendor's own vendors sit. Each is its own path. Each needs checking. Pick the EU region anyway, because it removes real transfers. Just do not treat it as the whole answer.
Can I rely on Article 49 derogations for my normal vendors?
Almost never. Article 49 covers narrow, one-off cases. One is a transfer the person agreed to after being warned of the risks. Another is a transfer needed to carry out a contract with them. Regulators read it strictly. The catch-all ground in Article 49(1) only covers transfers that are not repeated and that touch a limited number of people. Your database host, your mail sender and your model API run every day. That is Article 45 or Article 46 territory.
What is a transfer impact assessment and do I need one?
It is the written check you do before you rely on Standard Contractual Clauses. You read the other country's surveillance and access laws. You ask whether they would undercut the promises in the terms. Then you decide what more you need. The EDPB set out this six-step method in its Recommendations 01/2020. Rely on those clauses for a transfer, and you need one on file for it.
My vendor is in the EU. Am I done?
Not yet. Your vendor almost certainly uses vendors of its own. Those are called sub-processors. Under Article 28 your processor needs your say-so before bringing one in. It must pass the same duties down the chain. So an EU firm running on machines abroad still creates a transfer. Read each vendor's own vendor page, not just its head office address.
Does the EU AI Act change any of this?
No. The AI Act is a product-safety and transparency law. It does not govern where personal data may go. It gives you no route to move data outside the EEA. Transfers live in Chapter V of GDPR, Articles 44 to 49. Keep the two files apart. Work on one does not close the other.
Research sources
- GDPR-info.eu — Chapter V GDPR — Transfers of personal data to third countries or international organisations (Articles 44–50), reference for the general principle and the list of transfer tools.
- GDPR-info.eu — Art. 46 GDPR — Transfers subject to appropriate safeguards, reference for Standard Contractual Clauses as an Article 46 tool.
- GDPR-info.eu — Art. 49 GDPR — Derogations for specific situations, reference for the narrow scope and the not-repetitive limited-number condition in Article 49(1).
- GDPR-info.eu — Art. 28 GDPR — Processor, reference for sub-processor authorisation and passing duties down the chain.
- European Commission — Standard contractual clauses for international transfers, reference for what the pre-approved clauses are and who issues them.
- European Commission — Adequacy decisions, reference for how the Commission recognises a country's level of protection.
- EDPB — Recommendations 01/2020 on measures that supplement transfer tools, reference for the six-step transfer impact assessment method.
- EDPB — SME data protection guide — international data transfers, reference for the plain-language framing of when a transfer occurs.
- ICO — Receiving personal information from the EEA, reference for the renewed UK adequacy decisions adopted 19 December 2025 and running to 27 December 2031, and for the UK addendum and transfer risk assessment.
- EDPB — Letter of 31 July 2026 to the European Commission on the US Supreme Court judgment in Trump v. Slaughter, reference for the request to assess the impact on the EU-US Data Privacy Framework and for the Article 45(2)(b) point on independent supervision.
- Jai Mittal, Founder & CTO, Launch Ready Code — Proprietary data from 700+ AI-built app security audits, 2025–2026. Average Launch Readiness Score: 44/100. Missing HTTP security headers in 83% of scans.