diff --git a/docs.json b/docs.json
index 8274bbec..7b9a9bf1 100644
--- a/docs.json
+++ b/docs.json
@@ -493,7 +493,13 @@
"group": "DATA OUT",
"icon": "/icons/data-out.svg",
"pages": [
- "docs/export-methods",
+ {
+ "group": "Export Methods",
+ "root": "docs/export-methods",
+ "pages": [
+ "docs/export-methods/export-all-data"
+ ]
+ },
{
"group": "Real-Time Event Streams",
"tag": "BETA",
diff --git a/docs/export-methods.mdx b/docs/export-methods.mdx
index 3328b6b1..924c1847 100644
--- a/docs/export-methods.mdx
+++ b/docs/export-methods.mdx
@@ -10,6 +10,8 @@ This page provides a high-level overview of your options for exporting event dat
You can export data from your project using a variety of methods, including lightweight CSVs generated from the UI, large volume raw data export from our APIs, and data syncs to external destinations through [Cohort Syncs](/docs/cohort-sync) and [Data Pipelines](/docs/data-pipelines).
+To take a full copy of a project, see [Export All Your Data](/docs/export-methods/export-all-data).
+
For GDPR/CCPA-compliant exports, please [see the End User Data Management page](/docs/privacy/end-user-data-management).
diff --git a/docs/export-methods/export-all-data.mdx b/docs/export-methods/export-all-data.mdx
new file mode 100644
index 00000000..4787e366
--- /dev/null
+++ b/docs/export-methods/export-all-data.mdx
@@ -0,0 +1,117 @@
+---
+title: "Export All Your Data"
+description: "Take a full copy of your Mixpanel events and profiles at any time. Covers the Raw Event Export API, the Engage API, Data Pipelines, plan availability, rate limits, and retention."
+---
+
+Your event and profile data belongs to you, and you can take a full copy of it out of Mixpanel at any time. Use this page when you want a backup, a copy in your own warehouse, or everything you need to move to another tool.
+
+For request parameters and response formats, follow the links to the API reference.
+
+## What You Can Export
+
+| Data | One-time export | Continuous sync |
+|---|---|---|
+| Raw events, with all properties and original timestamps | [Raw Event Export API](/reference/raw-event-export) | [Data Pipelines](/docs/data-pipelines) |
+| User profiles | [Engage API](/reference/engage-query) | [Data Pipelines](/docs/data-pipelines) |
+| Group profiles | [Engage API](/reference/engage-query) with `data_group_id` | |
+| Identity mappings (the IDs Mixpanel merged into one user) | | [Data Pipelines](/docs/data-pipelines/json-pipelines#identity-mappings) |
+
+You can also download smaller sets of events, profiles, and report results as CSV from the UI. See [Export Methods](/docs/export-methods) for every option, including report exports.
+
+## Plan Availability
+
+| Method | Free | Growth | Enterprise |
+|---|---|---|---|
+| Raw Event Export API | Yes | Yes | Yes |
+| Engage API (user and group profiles) | Yes | Yes | Yes |
+| CSV export from the Events and Users pages | Yes | Yes | Yes |
+| Query API (formatted report data) | No | Yes | Yes |
+| Data Pipelines | No | Paid add-on | Paid add-on |
+
+Data Pipelines comes with a 30-day trial. See [how the trial works](/docs/data-pipelines#how-does-the-free-trial-work) for its limits.
+
+
+ A few projects on older Free plans don't include the Raw Event Export API. If the API returns "Your plan does not support raw data export", [contact support](https://mixpanel.com/get-support).
+
+
+## Rate Limits
+
+Export limits apply per project. The Raw Event Export API limits are the same on every plan.
+
+| API | Limits |
+|---|---|
+| Raw Event Export API | 60 queries per hour, 3 queries per second, 100 concurrent queries |
+| Engage API | 60 queries per hour, 5 concurrent queries |
+
+If you go over a limit, the API returns a `429` error. See [Rate Limits](/reference/rate-limits) for details.
+
+## Data Retention
+
+Mixpanel deletes events 2 years after the event date. Projects created before September 1, 2025 keep events for 5 years, until the project changes plan or moves to the Free plan. After that, the 2-year period applies.
+
+If you want to keep history older than your retention period, export it before it ages out. User data is kept for the duration of an active subscription plan. Read the full [data retention policy](/docs/privacy/gdpr-compliance#data-retention-policy).
+
+## Export Everything at Once
+
+This recipe takes a one-time copy of a whole project: events, user profiles, and group profiles.
+
+
+
+ Create a [service account](/reference/service-accounts) with access to the project, or use your [project secret](/reference/project-secret). With a service account, include `project_id` in every request. If your project has [classified data](/docs/data-governance/data-views-and-classification#data-classification), the service account needs permission to access it. See [Raw Event Export authentication](/reference/raw-data-export-api-authentication).
+
+
+ For the Raw Event Export API, use `data.mixpanel.com` for most projects. Use `data-eu.mixpanel.com` if your project is in EU Data Residency, or `data-in.mixpanel.com` for India Data Residency.
+
+ ```bash
+ # Set this to the server for your project's region.
+ EXPORT_HOST="data.mixpanel.com"
+ ```
+
+
+ Split your history into date ranges and send one [Raw Event Export](/reference/raw-event-export) request per range. Smaller ranges are easier to retry if a request fails. Each response is JSONL, with one event per line.
+
+ ```bash
+ # Export one date range per request and save each to its own file.
+ # Waiting 60 seconds between requests keeps you under 60 queries per hour.
+ # --fail stops on an HTTP error (such as 429) instead of saving the error as data.
+ # Each range downloads to a temporary file, so a failed retry never replaces a good export.
+ failed=""
+ while read -r from_date to_date; do
+ out="events_${from_date}_${to_date}.jsonl"
+ if ! curl -sS --fail --get "https://${EXPORT_HOST}/api/2.0/export" \
+ -u "$SERVICE_ACCOUNT_USERNAME:$SERVICE_ACCOUNT_SECRET" \
+ --data-urlencode "project_id=$PROJECT_ID" \
+ --data-urlencode "from_date=$from_date" \
+ --data-urlencode "to_date=$to_date" \
+ -o "$out.tmp" || ! mv "$out.tmp" "$out"; then
+ rm -f "$out.tmp"
+ echo "Export failed for $from_date to $to_date. Retry this range." >&2
+ failed="yes"
+ break
+ fi
+ sleep 60
+ done <<'EOF'
+ 2025-01-01 2025-01-31
+ 2025-02-01 2025-02-28
+ EOF
+ # Exit non-zero if any range failed, so a scheduled job doesn't treat a partial export as complete.
+ [ -z "$failed" ]
+ ```
+
+ Raw exports aren't deduplicated. Deduplicate on event name, `distinct_id`, timestamp, and `$insert_id` before you load the data anywhere else. For projects created before January 1, 2023, timestamps are in your project timezone. For newer projects, they're in UTC.
+
+
+ Call the [Engage API](/reference/engage-query) with no filter to return every user profile. Results come back one page at a time. Pass the `session_id` from the first response and increase `page` until a response returns fewer records than `page_size`.
+
+
+ Repeat the Engage API export once for each group key, passing its `data_group_id`. You can find each `data_group_id` in your project settings. See [Group Profile Export via API](/docs/export-methods#group-profile-export-via-api).
+
+
+
+The Raw Event Export API and the Engage API return the canonical distinct ID shown in the UI. Data Pipelines exports events as Mixpanel ingested them, so use the [identity mappings table](/docs/data-pipelines/json-pipelines#user-identity-resolution) to match Mixpanel's unique user counts.
+
+## Keep a Continuous Copy
+
+[Data Pipelines](/docs/data-pipelines) exports events, user profiles, and identity mappings on a schedule. It writes to Amazon S3, Google Cloud Storage, Azure Blob Storage, BigQuery, Databricks, Redshift Spectrum, or Snowflake.
+
+When you create a pipeline, you can backfill up to 6 months of history. For older events, use the Raw Event Export API for those dates.
diff --git a/docs/migration.mdx b/docs/migration.mdx
index 83eedd8e..cff869fb 100644
--- a/docs/migration.mdx
+++ b/docs/migration.mdx
@@ -94,6 +94,12 @@ After the migration, we recommend you focus on longer term goals like:
You can read more about how we do this [here](https://mixpanel.com/blog/establish-a-product-analytics-practice/).
+## Moving Data Out of Mixpanel
+
+Migration works in both directions. You can export your raw events, user profiles, and group profiles at any time, on any current plan, including Free. Use the Raw Event Export API and the Engage API for a one-time copy. To keep a continuous copy in your own warehouse or cloud storage, use Data Pipelines, a paid add-on on Growth and Enterprise plans.
+
+See [Export All Your Data](/docs/export-methods/export-all-data) for what each plan includes, rate limits, and a step-by-step recipe.
+
## Not sure where to start or need help?
Mixpanel’s Customer Success team has worked with 10,000\+ customers over the past 10\+ years to help drive outcomes with product analytics. We’re always happy to discuss your team’s individual needs, our migration process, the support you’ll receive, or any other question you have — drop us a line at [success@mixpanel.com](mailto:success@mixpanel.com).