Skip to content

Handling data export requests

A data export gives a user a full copy of the personal data the workspace holds about them, packaged as a single downloadable file. This page walks through the full flow from request to delivery.

An export contains everything the platform stores about the user that is meaningful to them as a data subject — for example:

  • Profile details, registration information, and preferences.
  • Journal entries, AI analyses, emotion scores, and weekly summaries.
  • Routine activity, completed lessons, saved articles, and survey responses.
  • Research study participation — the user’s study enrolments and their scheduled questionnaires.
  • Chat messages, article comments, and circle activity authored by the user.
  • Booking history (with notes), consent decisions, and notification history.

The export is delivered as a single .json bundle in S3 storage. Inside the bundle is:

  • A manifest describing what is included, when it was generated, and the request it came from.
  • One section per data area listed above.
  • A SHA-256 checksum for each section so the user (or their auditor) can verify the file was not modified after download.

An export request can arrive from three places:

  1. The user filed it themselves from the mobile app or /account/privacy. It starts as Pending and runs automatically.
  2. A coach filed it on behalf of a client. It starts as Awaiting Confirmation and waits for your approval.
  3. An admin filed it on behalf of a user from the Privacy & Compliance area.

You only need to take action when a request is Awaiting Confirmation or has Failed.

  1. Open Privacy & Compliance from the sidebar and click Requests.
  2. Filter by type Export and status Awaiting Confirmation.
  3. Click any row to open its detail page.

Export request awaiting admin confirmation

On the detail page, check:

  • Target user — Is this the right person? Cross-check the email and registration date.
  • Filed by — If a coach proposed this request, the coach’s name appears here. If you have any doubt about whether the request is legitimate, contact the coach or the user before approving.
  • Reason — Coaches and admins are required to record a reason. Review it to confirm the request is appropriate.

Click Approve to move the request from Awaiting Confirmation to Pending. The platform picks it up automatically and begins generating the bundle. You will see the status move to In Progress within a few minutes.

When the request reaches Completed, open the detail page again. You will see:

  • The total bundle size.
  • A list of each section that was included.
  • The SHA-256 checksum for each section, taken from the manifest.
  • A Download button.

Use Download to fetch the bundle yourself first if you want to verify the contents before sending the link to the user. The download URL is signed and valid for one hour from the moment you generate it.

The target user is automatically emailed and pushed a notification when the export is ready. They can collect the download from /account/privacy themselves — you do not normally need to forward anything.

If the user prefers a direct link from you (for example because they no longer have access to the mobile app), use the Download button on the detail page and share the URL through a secure channel.

For admin-initiated exports, both the target user and the admin who requested the export receive the completion notification, so there is a clear paper trail.

Step 6 — Tell the user about the 7-day window

Section titled “Step 6 — Tell the user about the 7-day window”

The bundle is automatically deleted from storage 7 days after it is generated. Make this clear when you contact the user. A short message such as:

“Your data export is ready. Please download it within 7 days — after that the file is automatically removed and we will need to generate a new one.”

…is usually enough. After the bundle is removed, the request itself stays in the Completed state on the dashboard for audit purposes.

If a request reaches the Failed status:

  1. Open the request detail page.
  2. Read the failure reason shown in the timeline.
  3. If the reason is a transient issue (for example, storage temporarily unavailable), file a new export request for the same user.
  4. If the reason is unclear or persistent, raise it with your Afterglow representative — include the request ID from the URL.

The manifest is the first file inside the export bundle. It is plain JSON and tells the user exactly what they are looking at, including:

  • The date and time the bundle was generated.
  • The user the bundle belongs to.
  • A list of every section, the number of records in it, and its checksum.

You can paste the manifest contents into your reply to the user as proof of the export’s scope. There is no need to summarise individual records yourself.