Shipkit
DocsFeaturesPricing
DocsFeaturesPricing

Shipkit DocumentationBuild memory optimizationDevelopment GuideEnvironment VariablesError HandlingFile StructureMiddlewareRebranding Guide

Vercel Deployment Checks

Development GuideCLIDependency UpdatesDevToolsFeature FlagsAI PromptsSetup RequirementsSupply chaintRPCWeb Workers

FeaturesAIAnalytics IntegrationAuthenticationCMSDatabaseEmailHapticsPaymentsComponent RegistryStorageUIVisual BuilderWaitlist Feature

Quick StartDeploymentEnvironment VariablesFile StructureSetup Wizard

Caching & Rate LimitingContent ManagementError HandlingMarkdown and MDXMiddlewareProxy-Safe Server ActionsRebranding GuideWebhook Security Implementation GuideMulti-Zone ArchitectureVercel Deployment

IntegrationsPayload CMSDataFast Analytics IntegrationGoogle Analytics IntegrationGoogle Tag Manager IntegrationPostHogStatSig IntegrationUmami Analytics IntegrationAuth.js IntegrationBetter AuthClerkStack Auth IntegrationSupabase Authentication IntegrationBuilder.io IntegrationPayload CMS IntegrationAWS S3 IntegrationResend Email IntegrationUpstash Redis IntegrationVercel Blob IntegrationLemon SqueezyPolarStripe

API RoutesComponentsAPI Route SnippetsAuthentication SnippetsComponent SnippetsForm Handling SnippetsSnippets Introduction

    Storage

    Two storage backends: AWS S3 and Vercel Blob. Either (or both) can be enabled. Payload CMS uses whichever is available for media uploads.

    AWS S3

    AWS_REGION=us-east-1
    AWS_ACCESS_KEY_ID=AKIA...
    AWS_SECRET_ACCESS_KEY=...
    AWS_BUCKET_NAME=my-bucket
    

    Enables S3_ENABLED. Uses presigned URLs for uploads.

    Vercel Blob

    VERCEL_BLOB_READ_WRITE_TOKEN=vercel_blob_...
    

    Enables VERCEL_BLOB_ENABLED. Zero-config if you're on Vercel.

    How It's Used

    • Payload CMS media — uploads go to whichever storage is configured (@payloadcms/storage-s3 or @payloadcms/storage-vercel-blob)
    • File service — src/server/services/file.ts handles file operations
    • S3 service — src/server/services/s3.ts for direct S3 operations

    The FILE_UPLOAD_ENABLED flag is true when either S3 or Vercel Blob is configured.

    Key Files

    FilePurpose
    src/server/services/s3.tsS3 client + presigned URL generation
    src/server/services/file.tsFile upload/download logic
    src/server/actions/file.tsFile server actions
    src/payload.config.tsPayload storage adapter config