Skip to main content

Copy Transcripts to Your Own Storage

Ticket Tool can copy each ticket transcript to a bucket or a Google Drive folder you own. You choose the destination per category, files are named by server, category and ticket number, and the copy is yours to keep for as long as you like, independent of Ticket Tool's own retention.

Pro feature

Transcript copies are part of Integrations, available on the Pro plan. The plan is checked when you save the settings and again before every upload, so copies stop if the server leaves the Pro plan.

Any S3-compatible service works. This page walks through AWS S3, Cloudflare R2 and Backblaze B2, and Google Drive, which connects with a Google sign-in instead of keys.

How it works

  1. A ticket closes and its auto-transcript is generated.
  2. Ticket Tool prepares a self-contained HTML copy, with archived images and files embedded, and queues it.
  3. The copy is uploaded to your bucket or Drive folder, usually within a minute.
  4. The ticket's Recent activity shows Copied to storage with the file path, or the error if it failed.

While Auto Transcript on Close is on, transcripts saved by hand with /transcript or the Transcript button are copied too.

If an upload fails, Ticket Tool retries after 1, 5, 30, 120 and 360 minutes, six attempts in all. Settings problems such as a wrong key or a missing bucket are not retried; the connection is marked as needing attention instead. Every copy, delivered or failed, is written to the server's audit log.

File names

Files are saved as:

<path prefix>/<server>/<category>/ticket-<number>-<date>-<ref>.html

for example transcripts/Acme-Gaming/Billing/ticket-42-2026-10-15-k3x9q2ab.html. In Google Drive there is no path prefix: the server and category are subfolders of the connection's folder. Names are reduced to letters, numbers, dots, dashes and underscores, so spaces become dashes and accents are dropped. A name with no usable characters falls back to its Discord ID. The date is the day the ticket closed, in UTC, and <ref> is the end of the ticket's internal ID, so tickets with the same number never share a file. Saving the same ticket again on the same day replaces the file.

Connect your bucket

Open Connections

In the dashboard, go to Automations → Connections and pick S3-compatible storage under Storage.

Fill in the settings

FieldWhat to enter
EndpointThe service's S3 API URL. It must use https and be reachable on the internet.
RegionThe bucket's region. Cloudflare R2 uses auto.
BucketThe bucket name.
Access key IDThe key's ID.
Secret access keyThe key's secret. It is encrypted when saved and never shown again.
Path prefixOptional. A folder inside the bucket, such as transcripts.

Test upload

Select Test upload. Ticket Tool writes a small file named .ticket-tool-test-…txt under your prefix and then deletes it. If your key can write but not delete, the test still passes and tells you which file to remove.

Connect

Select Connect. Ticket Tool runs the same test again before saving, so a connection that can't write is never saved.

Private addresses are refused

The endpoint must resolve to a public address. Ticket Tool refuses endpoints on private, loopback or link-local addresses, and plain http.

Turn it on for a category

Edit the category

Open Categories, edit the category, and turn on Auto Transcript on Close on its Logging & Transcripts tab.

Choose the connection

Under Also copy to, pick your storage connection. It sits next to the channel and DM destinations, and works alongside them.

Decide whether to keep a copy in Ticket Tool

Turn on Copy only, don't keep in Ticket Tool to have the transcript and its messages removed from Ticket Tool once the copy is delivered. If every attempt fails, nothing is removed, and the transcript follows your normal retention instead.

Stopping copies, and what stays in your bucket

Choosing Don't copy on a category, or disconnecting the storage connection, stops future copies straight away, including any still waiting to retry. Files already delivered stay in your bucket: they belong to you, and deleting a ticket, a category or the connection in Ticket Tool doesn't remove them. Manage or delete them with your storage provider's own tools.

Use a write-only key

Ticket Tool only ever needs to write new files. Give it a key that can't read or list your bucket, so a leaked key can't be used to read your transcripts.

The policy below, for AWS IAM, allows writing under the transcripts/ prefix and deleting only the test file. Replace the bucket name and prefix with yours:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "WriteTicketTranscripts",
      "Effect": "Allow",
      "Action": ["s3:PutObject", "s3:AbortMultipartUpload"],
      "Resource": "arn:aws:s3:::my-ticket-transcripts/transcripts/*"
    },
    {
      "Sid": "RemoveConnectionTestFile",
      "Effect": "Allow",
      "Action": "s3:DeleteObject",
      "Resource": "arn:aws:s3:::my-ticket-transcripts/transcripts/.ticket-tool-test-*"
    }
  ]
}

s3:AbortMultipartUpload lets an interrupted upload of a large transcript clean up after itself. Leave out the second statement if you'd rather delete test files yourself.

AWS S3

  1. In the S3 console, create a bucket. Keep Block all public access on.
  2. In IAM, create a user for Ticket Tool with no console access, and attach the write-only policy above as an inline policy.
  3. Create an access key for that user (use case: application running outside AWS).
  4. In Ticket Tool, enter:
    • Endpoint: https://s3.<region>.amazonaws.com, for example https://s3.eu-west-1.amazonaws.com
    • Region: the bucket's region, for example eu-west-1
    • Bucket, Access key ID and Secret access key from the steps above.

Cloudflare R2

  1. In the Cloudflare dashboard, go to R2 and create a bucket.
  2. Under Manage API tokens, create an Account API token with Object Read & Write permission, and under Specify bucket(s) apply it to this bucket only.
  3. Copy the Access Key ID, Secret Access Key and the S3 endpoint shown after creating the token.
  4. In Ticket Tool, enter:
    • Endpoint: https://<account-id>.r2.cloudflarestorage.com (without the bucket name)
    • Region: auto
    • Bucket, Access key ID and Secret access key from the token.

R2 tokens don't offer a write-only permission, so scoping the token to one bucket is the narrowest option.

Backblaze B2

  1. In Backblaze, create a Private bucket and note its endpoint, for example s3.us-west-004.backblazeb2.com.
  2. Under Application Keys, add a key with Allow access to Bucket(s) set to this bucket and Type of Access set to Write Only. Optionally set File name prefix to your path prefix.
  3. In Ticket Tool, enter:
    • Endpoint: https://s3.<region>.backblazeb2.com, for example https://s3.us-west-004.backblazeb2.com
    • Region: the region part of the endpoint, for example us-west-004
    • Bucket: the bucket name
    • Access key ID: the key's keyID, and Secret access key: its applicationKey.

With a write-only key the test upload passes with a note that the test file couldn't be deleted. Remove it from the B2 file browser.

Google Drive

Google Drive connects with a Google sign-in, so there are no keys to create.

Connect Google Drive

In Automations → Connections, pick Google Drive under Storage and select Connect. Sign in to the Google account whose Drive should hold the transcripts, and allow access.

Find the folder

Ticket Tool creates a folder called Ticket Tool transcripts in that account's My Drive. Copies go into it as <server>/<category>/ticket-<number>-<date>-<ref>.html, with the server and category as subfolders. The connection on the Connections page links straight to the folder.

You can rename the folder or move it to another place in your My Drive; copies follow it. Shared drives aren't supported. Use Test upload on the connection to check it still works.

Choose it for a category

Pick the Google Drive connection under Also copy to in the category's transcript settings, the same as a bucket.

What Ticket Tool can see

Ticket Tool asks only for Google's drive.file permission. With it, Ticket Tool can see and change only the files and folders it created itself, never the rest of your Drive, and it uses that access only to save transcript copies. You can remove access at any time from your Google Account under Security → Your connections to third-party apps & services.

The Google consent screen lets you clear the Drive permission's checkbox. If you do, the connection isn't saved; connect again and leave it checked.

Reconnect

Copies stop and the connection shows Reconnect if Ticket Tool loses access: you removed it in your Google Account, or deleted the Ticket Tool transcripts folder. The server overview also shows a Google Drive needs reconnecting alert to anyone who can manage settings. Select Reconnect and sign in again: Ticket Tool keeps using the same folder when that account can still reach it, and creates a new one otherwise.

Copies that failed while access was lost are not uploaded again after you reconnect. Those transcripts stay in Ticket Tool under your normal retention, even with Copy only on.

Files stay in your Drive

Disconnecting Google Drive in Ticket Tool stops future copies and removes Ticket Tool's access to your Google account, unless another server still uses the same Google account for its copies. Files already in your Drive stay there and count toward your Google storage.

Troubleshooting

MessageWhat to check
The secret access key is wrong.Copy the secret again; it is shown only once by most providers.
The access key ID was not recognized.The key was deleted, or belongs to a different account or endpoint.
The bucket does not exist.Check the bucket name, and that the endpoint is for the bucket's region.
The region does not match the bucket.Set Region to the bucket's region (auto for R2).
Access denied.The key's policy doesn't allow s3:PutObject on the bucket and prefix.
Endpoint rejectedThe endpoint uses http, or resolves to a private address.
Transcript storage needs the Pro plan.The server is no longer on Pro. Copies resume once it is.
Google Drive access was revoked or has expired.Select Reconnect on the Google Drive connection and sign in again.
The folder is gone from Google Drive.The folder was deleted. Reconnect to create a new one.
The folder is in the Google Drive trash.Restore it from the trash, or Reconnect to create a new one.
Your Google Drive is full.Free up space or add storage; later copies are retried.

Questions

Can Ticket Tool save Discord ticket transcripts to my own S3 bucket?
Yes, on the Pro plan. Connect any S3-compatible bucket (AWS S3, Cloudflare R2, Backblaze B2 and others) under Automations, Connections, then pick it under Also copy to in a category's transcript settings.
Can Ticket Tool save transcripts to Google Drive?
Yes, on the Pro plan. Connect Google Drive under Automations, Connections and Ticket Tool creates a Ticket Tool transcripts folder in your Drive. It can only see the files it creates there.
Does deleting a ticket delete the copy in my bucket?
No. Copies already delivered belong to you and stay in your bucket. Disconnecting the storage or turning the setting off only stops future copies.
Does Ticket Tool need to read my bucket?
No. It only writes new files, so you can give it a write-only key. The test upload also tries to delete its own test file, but passes without that permission.