Skip to content

Systems and records

Why attachments go missing from SaaS exports, and how to get them

By SourceX Editorial · Updated

Short answer

Attachments go missing from SaaS exports because most exports are built from database rows, while files sit in separate storage and come back only as links or optional extras. To get them, use the backup or bulk tool that includes files, or the API, and save every file with its parent record ID and a manifest.

Key takeaways

  • A CSV export describes records; the files attached to them usually need a separate step.
  • A link in an export is not a copy of the file and often stops working once the account closes.
  • Several vendors include attachments only when you tick an option or use a fuller backup tool.
  • Every downloaded file should carry its parent record ID, or it cannot be tied back to its ticket, task or deal.
  • Attachments often hold the most sensitive content in a system and need their own privacy review.

Why do exports leave attachments out?#

Exports leave attachments out because they are generated from the database tables that hold records, while attached files live in separate object storage. A CSV can hold a ticket's subject and status, but not a PDF, so vendors skip the file, add a link or make files an optional extra.

Size is the other reason. Files can far outweigh the text records, and an export with files takes longer to build and download. Salesforce, for example, notes that adding images, documents and attachments to its Data Export Service increases processing time.

Permissions are the third reason. Files may sit in private projects, come from guests or live in someone's personal drive, and an export run by one admin can skip files that admin cannot open. Check whether an export runs with account-wide rights or only with the rights of the person who starts it.

Where attachments live, by system type#

Attachments live in different places depending on the kind of system, and the standard export rarely tells you so. The table summarizes what vendor documentation says for common tools; confirm the current options in each admin console.

Where attachments live, by system type
SystemWhat the standard export givesHow to get the files
SlackMessages with links to files, not the filesDownload from each link while the workspace is live; Free plans export file links only from the last 90 days
Microsoft TeamsMessages through compliance toolsChat files sit in the sharer's OneDrive and channel files in the team's SharePoint site, so collect from both
SalesforceZip files of CSVsTick the Data Export Service options for images, documents, attachments and Salesforce Files
HubSpotRecord properties and associationsExport activities such as calls and notes with a separate method, and pull files through the API
IntercomConversations data sent to your Amazon S3 bucketChoose the separate Attachments option in the S3 data export
AsanaOrganization export in JSONChoose text plus attachments rather than text only
SmartsheetSheet exports without attachmentsRequest a backup, noting that files linked from Google Drive, OneDrive, Box or Dropbox are still excluded
ClickUpCSV with attachment hyperlinksDownload each hyperlink into a folder named by task ID
Jira and ConfluenceSite backupsSelect the attachments option in Backup manager
ProcoreProject Archive or Extracts outputExtracts keeps documents and photos in their original file type; some Project Archive tools include attachments without a choice
  1. 01Your work records
  2. 02Personal details removed
  3. 03You approve the release
  4. 04Licensed to AI developers
How it works with SourceX: Your work records → Personal details removed → You approve the release → Licensed to AI developers.Illustrative

A link in an export points to a file that still lives in the vendor's storage, behind the vendor's login. Slack's workspace export includes links to files rather than the files themselves, and ClickUp's task export carries attachment hyperlinks.

Links fail in predictable ways: the account closes, the uploader is deactivated, the plan changes, or the link needs a session the archive will never have. Download files while the account is active, and treat any export that holds only links as incomplete.

Files linked from other storage add a second layer. A task that points to a Google Drive or Dropbox document depends on that service's permissions, and Smartsheet's backups, for instance, exclude attachments from online sources such as Google Drive, OneDrive, Box and Dropbox.

How to pull attachments with their parent IDs#

The goal is a file set that rejoins its records without guesswork. These steps work for most systems, whether the files come from a backup tool or the API.

  • Export the records first, with their native IDs and timestamps.
  • Pull attachment metadata: file ID, parent record ID, parent type, file name, uploader, upload date and size.
  • Download each file into a folder path built from parent IDs, such as project, then task, then file ID.
  • Keep original file names in the manifest, not only in the path, because names repeat and change.
  • Compute a checksum for each file so duplicates and corrupt downloads stand out.
  • Reconcile counts: records with attachments in the system against files on disk.
  • Log failures and retry them; a known gap is far better than a silent one.

What the attachment manifest should record#

The attachment manifest is the index that proves the file set is complete and explains where each file came from. Keep it as a plain CSV beside the files.

What the attachment manifest should record
FieldWhy it matters
Parent record ID and typeTies the file to its ticket, task, deal or RFI
File ID from the source systemDistinguishes files with identical names
Original file name and typeKeeps the context people used at the time
Uploader and upload dateShows who added the file and when in the workflow
Size and checksumProves completeness and catches corrupt downloads
Source export and run dateRecords provenance for audits and later reuse

Illustrative: a manufacturer recovers inspection photos before a tool change#

Illustrative: a fictional precision machining company tracked nonconformances and supplier corrective actions in a work management tool for years. Quality engineers attached inspection photos, measurement reports and supplier responses to each task.

When the company moves quality records into a new QMS, the first CSV export lists every nonconformance but holds only hyperlinks to the files. The quality manager has IT run the vendor's fuller backup with attachments, then builds a manifest keyed by task ID and the NCR number kept in a custom field.

The outcome: each NCR in the new QMS links to its original photos and reports, the counts reconcile, and the old account closes only after a spot check passes. Drawings owned by customers are flagged in the manifest so they stay out of any later reuse.

Attachments need their own privacy and rights review#

Attachments need their own review because they often hold the most sensitive content in a system: signed contracts, ID scans, invoices with bank details, screenshots of customer screens and drawings that belong to customers. A field-level redaction plan for records does nothing for a scanned PDF.

SourceX handles attachments in the Preparation step of the SourceX five-step transaction (Supply, Rights, Preparation, Approval, Delivery). Files are reviewed by type, customer-owned material is carved out, and personal and confidential details are removed before the company approves anything. Large file sets stay in the company's own storage or ship on encrypted drives, and the manifest feeds the SourceX Evidence Packet.

Frequently asked questions

Should we keep every attachment?

Not necessarily. Keep files that explain a decision or an outcome, such as inspection reports, approved change orders and correspondence that resolved an issue. Email signature images, duplicates and auto-generated files add volume without context. Decide by file type and record family, and write the rule down.

Can we rely on the vendor to send attachments after we cancel?

Do not assume it. Post-termination windows are often short, and some contracts promise only data, not files in a usable folder structure tied to their records. Run the attachment export during the active term, check a sample of files against their records, and only then give notice.

What about inline images in emails and comments?

Inline images are often stored as separate files referenced from the message body, and some exports drop them or keep only a placeholder. Check a sample of messages that contained screenshots after the export. If images are missing, pull them through the API using the message or comment ID.

Do attachments raise the value of licensed records?

They can, when they complete the story of a record: the photo that shows the defect or the report that closed the issue. They also raise preparation cost, since files need review and redaction. The SourceX Enterprise Data Value Framework weighs both drivers.

How do we size the file pull before we start?

Check the storage figure in each admin console where one is shown, then add room for duplicates, versions and the manifest. Decide where the files will land before the pull begins. A volume estimate also tells you whether files should move over the network or ship on encrypted drives.

Sources

  • Salesforce's Data Export Service has options to include images, documents and attachments and to include Salesforce Files and CRM Content document versions; adding this content increases export processing time, and the export arrives as zip files of CSVs. Source
  • Slack's workspace export includes links to files in Slack rather than the files themselves, and workspaces on the Free plan can only export links to files from the last 90 days. Source
  • Files shared in Teams chats are stored in the OneDrive account of the user who shared them, while files uploaded to channels are stored in the team's SharePoint site. Source
  • HubSpot's export-records article says activities such as calls and notes must be exported with a separate method, not the standard record export. Source
  • Intercom's Data Export feature sends Conversations data to the customer's Amazon S3 bucket and offers Historical export, Periodic exports and Attachments. Source
  • Asana super admins can request a full export of their organization's data as a JSON file, text only or text plus attachments. Source
  • Smartsheet's export of a sheet, report, workspace or folder excludes attachments, and Smartsheet suggests creating a backup if attachments are needed. Source
  • Smartsheet backups exclude attachments from online sources such as Google Drive, OneDrive, Box and Dropbox. Source
  • ClickUp's task data export includes task fields and properties such as attachment hyperlinks. Source
  • In Confluence Cloud, admins create a site backup from Backup manager with optional attachments. Source
  • Jira Cloud's Backup manager can include attachments, avatars and logos. Source
  • Procore's Extracts documentation says most Procore items download as PDFs, while documents and photos keep their original file type. Source
  • For some tools in Procore's Project Archive tool, you cannot choose whether attachments are included. Source

Related resources

See if your company qualifies

A short company assessment. No data uploads are needed.

See if your company qualifies