
This example shows how to pull redirect entries from Contentful at build time, write them to a bulk redirects file, and publish them with the new vercel.ts config. The demo uses an e-commerce catalog so marketing can rotate seasonal URLs without shipping code.
https://cms-bulk-redirects.vercel.app
You can choose from one of the following two methods to use this repository:
Deploy the example using Vercel:
Execute create-next-app with npm or Yarn to bootstrap the example:
pnpm create next-app --example https://github.com/vercel/examples/tree/main/cdn/cms-bulk-redirects
Next, run Next.js in development mode:
pnpm dev
CONTENTFUL_SPACE_ID – Contentful space IDCONTENTFUL_ACCESS_TOKEN – Content Delivery API token (CDA)The example ships a small generated-redirects.json for local runs. When the environment variables are present, vercel.ts fetches real entries from Contentful and rewrites the bulk redirects file before build.
vercel.ts runs at build time. It pulls redirect entries from Contentful, transforms them into Vercel bulk redirect objects, and writes generated-redirects.json.config exported from vercel.ts sets bulkRedirectsPath to that file. Vercel publishes the redirects without touching Next.js routing, middleware, or edge functions./catalog/fall-2025 or /catalog/limited-edition. Legacy vanity paths such as /catalog/fall or /products/daybreak-pack are captured by bulk redirects.You can extend this pattern to any CMS: swap the fetch logic, keep the same bulkRedirectsPath.